[*] Binary protection state of zabbix_agentd
Full RELRO Canary found NX enabled PIE enabled No RPATH No RUNPATH No Symbols
[*] Function sprintf tear down of zabbix_agentd
; assembly | /* r2dec pseudo code output */
| /* /logs/firmware/patool_extraction/rootfs.img_unblob_extracted/rootfs.img_extract/0-80367616.squashfs_v4_le_extract/usr/sbin/zabbix_agentd @ 0x15710 */
| #include <stdint.h>
|
; (fcn) fcn.00015710 () | void fcn_00015710 (int16_t arg_288h, int16_t arg_360h, int16_t arg_398h, int16_t arg1, int16_t arg2, uint32_t arg3, int16_t arg4) {
| int16_t var_0h_2;
| int16_t var_4h_2;
| int16_t var_ch_2;
| int16_t var_64h;
| int16_t var_140h;
| int16_t var_264h;
| int16_t var_268h;
| int16_t var_280h;
| r0 = arg1;
| r1 = arg2;
| r2 = arg3;
| r3 = arg4;
0x00015710 push.w {r4, r5, r6, r7, r8, sb, sl, lr} |
0x00015714 cmp.w r2, 0x200 |
0x00015718 ldr r5, [pc, 0x108] |
0x0001571a sub.w sp, sp, 0x268 |
0x0001571e ldr r4, [pc, 0x108] | r4 = *(0x1582a);
0x00015720 add r5, pc | r5 = 0x2af48;
0x00015722 ldrd sb, r8, [sp, 0x288] | __asm ("ldrd sb, r8, [arg_288h]");
0x00015726 ldr r4, [r5, r4] |
0x00015728 ldr r4, [r4] | r4 = *(0x2af48);
0x0001572a str r4, [sp, 0x264] | var_264h = r4;
0x0001572c mov.w r4, 0 | r4 = 0;
| if (r2 > 0x200) {
0x00015730 bgt 0x157e6 | goto label_1;
| }
0x00015732 movs r5, 0 | r5 = 0;
0x00015734 mov r7, r3 | r7 = r3;
0x00015736 mov r4, r2 | r4 = r2;
0x00015738 mov r3, r5 | r3 = r5;
0x0001573a mov r2, r1 | r2 = r1;
0x0001573c str r5, [sp] | *(sp) = r5;
0x0001573e mov sl, r0 | sl = r0;
0x00015740 mov r6, r1 | r6 = r1;
0x00015742 blx 0xe128 | fcn_0000e128 ();
0x00015746 cmp.w r1, -1 |
0x0001574a it eq |
| if (r1 == -1) {
0x0001574c cmpeq r0, -1 | __asm ("cmpeq r0, -1");
| }
| if (r1 == -1) {
0x00015750 beq 0x157fa | goto label_2;
| }
0x00015752 mov r0, sl | r0 = sl;
0x00015754 add.w sl, sp, 0x64 | sl += var_64h;
0x00015758 mov.w r3, 0x200 | r3 = 0x200;
0x0001575c mov r2, r4 | r2 = r4;
0x0001575e mov r1, sl | r1 = sl;
0x00015760 blx 0xdf38 | r0 = fcn_0000df38 ();
0x00015764 cmp r4, r0 |
0x00015766 mov r6, r0 | r6 = r0;
| if (r4 != r0) {
0x00015768 bne 0x157a2 | goto label_3;
| }
0x0001576a add r6, sp, 0xc | r6 += var_ch_2;
0x0001576c mov r0, r6 | r0 = r6;
0x0001576e bl 0x4a220 | zbx_md5_init ();
0x00015772 mov r2, r4 | r2 = r4;
0x00015774 mov r1, sl | r1 = sl;
0x00015776 mov r0, r6 | r0 = r6;
0x00015778 bl 0x4a250 | zbx_md5_append ();
0x0001577c mov r0, r6 | r0 = r6;
0x0001577e mov r1, r7 | r1 = r7;
0x00015780 bl 0x4a318 | zbx_md5_finish ();
0x00015784 mov r0, r5 | r0 = r5;
| do {
0x00015786 ldr r2, [pc, 0xa4] |
0x00015788 ldr r3, [pc, 0x9c] | r3 = *(0x15828);
0x0001578a add r2, pc | r2 = 0x2afbc;
0x0001578c ldr r3, [r2, r3] | r3 = *(0x2afbc);
0x0001578e ldr r2, [r3] | r2 = *(0x2afbc);
0x00015790 ldr r3, [sp, 0x264] | r3 = var_264h;
0x00015792 eors r2, r3 | r2 ^= r3;
0x00015794 mov.w r3, 0 | r3 = 0;
| if (r2 != r3) {
0x00015798 bne 0x15820 | goto label_4;
| }
0x0001579a add.w sp, sp, 0x268 |
0x0001579e pop.w {r4, r5, r6, r7, r8, sb, sl, pc} |
| label_3:
0x000157a2 adds r3, r0, 1 | r3 = r0 + 1;
0x000157a4 ldr.w r5, [r8] | r5 = *(r8);
| if (r3 == r0) {
0x000157a8 beq 0x157c6 | goto label_5;
| }
0x000157aa ldr r1, [pc, 0x84] |
0x000157ac mov r3, sb | r3 = sb;
0x000157ae mov r2, r4 | r2 = r4;
0x000157b0 mov r0, r5 | r0 = r5;
0x000157b2 str r6, [sp] | *(sp) = r6;
0x000157b4 add r1, pc | r1 = 0x2afea;
0x000157b6 bl 0x44820 | r0 = zbx_dsprintf ()
0x000157ba mov r3, r0 | r3 = r0;
| label_0:
0x000157bc mov.w r0, -1 | r0 = -1;
0x000157c0 str.w r3, [r8] | __asm ("str.w r3, [r8]");
0x000157c4 b 0x15786 |
| } while (1);
| label_5:
0x000157c6 blx 0xe3d4 | r0 = fcn_0000e3d4 ();
0x000157ca ldr r0, [r0] | r0 = *(r0);
0x000157cc bl 0x30b74 | r0 = zbx_strerror ();
0x000157d0 mov r1, r0 | r1 = r0;
0x000157d2 mov r3, sb | r3 = sb;
0x000157d4 str r1, [sp] | *(sp) = r1;
0x000157d6 mov r2, r4 | r2 = r4;
0x000157d8 ldr r1, [pc, 0x58] |
0x000157da mov r0, r5 | r0 = r5;
0x000157dc add r1, pc | r1 = 0x2b014;
0x000157de bl 0x44820 | r0 = zbx_dsprintf ()
0x000157e2 mov r3, r0 | r3 = r0;
0x000157e4 b 0x157bc | goto label_0;
| label_1:
0x000157e6 ldr r1, [pc, 0x50] |
0x000157e8 mov.w r3, 0x200 | r3 = 0x200;
0x000157ec ldr.w r0, [r8] | r0 = *(r8);
0x000157f0 add r1, pc | r1 = 0x2b02e;
0x000157f2 bl 0x44820 | r0 = zbx_dsprintf ()
0x000157f6 mov r3, r0 | r3 = r0;
0x000157f8 b 0x157bc | goto label_0;
| label_2:
0x000157fa blx 0xe3d4 | r0 = fcn_0000e3d4 ();
0x000157fe ldr r0, [r0] | r0 = *(r0);
0x00015800 ldr.w r4, [r8] | r4 = *(r8);
0x00015804 bl 0x30b74 | zbx_strerror ();
0x00015808 ldr r1, [pc, 0x30] |
0x0001580a mov r3, r5 | r3 = r5;
0x0001580c str r0, [sp, 4] | var_4h_2 = r0;
0x0001580e mov r2, r6 | r2 = r6;
0x00015810 mov r0, r4 | r0 = r4;
0x00015812 str.w sb, [sp] | __asm ("str.w sb, [sp]");
0x00015816 add r1, pc | r1 = 0x2b056;
0x00015818 bl 0x44820 | r0 = zbx_dsprintf ()
0x0001581c mov r3, r0 | r3 = r0;
0x0001581e b 0x157bc | goto label_0;
| label_4:
0x00015820 blx 0xe158 | fcn_0000e158 ();
0x00015824 str r0, [r7, 0x48] | *((r7 + 0x48)) = r0;
0x00015826 movs r4, r0 | r4 = r0;
0x00015828 lsls r4, r2, 0xe | r4 = r2 << 0xe;
0x0001582a movs r0, r0 |
0x0001582c str r6, [r1, 0x44] | *((r1 + 0x44)) = r6;
0x0001582e movs r4, r0 | r4 = r0;
0x00015830 ldr r1, [sp, 0x280] | r1 = var_280h;
0x00015832 movs r3, r0 | r3 = r0;
0x00015834 ldr r1, [sp, 0x140] | r1 = var_140h;
0x00015836 movs r3, r0 | r3 = r0;
0x00015838 ldr r0, [sp, 0x360] | r0 = *(arg_360h);
0x0001583a movs r3, r0 | r3 = r0;
0x0001583c ldr r0, [sp, 0x398] | r0 = *(arg_398h);
0x0001583e movs r3, r0 | r3 = r0;
| }
; assembly | /* r2dec pseudo code output */
| /* /logs/firmware/patool_extraction/rootfs.img_unblob_extracted/rootfs.img_extract/0-80367616.squashfs_v4_le_extract/usr/sbin/zabbix_agentd @ 0x1596c */
| #include <stdint.h>
|
; (fcn) fcn.0001596c () | void fcn_0001596c (int16_t arg1, int16_t arg2) {
| r0 = arg1;
| r1 = arg2;
0x0001596c invalid |
0x00015970 movs r1, 0 | r1 = 0;
0x00015972 mov r6, r0 | r6 = r0;
0x00015974 blx 0xe030 | r0 = fcntl64 ();
0x00015978 mov r4, r0 | r4 = r0;
0x0001597a adds r0, 1 | r0++;
| if (r0 != 1) {
0x0001597c beq 0x15982 |
0x0001597e mov r0, r4 | r0 = r4;
0x00015980 pop {r3, r4, r5, r6, r7, pc} |
| }
0x00015982 blx 0xe3d4 | r0 = fcn_0000e3d4 ();
0x00015986 ldr r0, [r0] | r0 = *(r0);
0x00015988 ldr r7, [r5] | r7 = *(r5);
0x0001598a bl 0x30b74 | zbx_strerror ();
0x0001598e ldr r1, [pc, 0x14] |
0x00015990 mov r3, r0 | r3 = r0;
0x00015992 mov r2, r6 | r2 = r6;
0x00015994 mov r0, r7 | r0 = r7;
0x00015996 add r1, pc | r1 = 0x2b340;
0x00015998 bl 0x44820 | zbx_dsprintf ()
0x0001599c str r0, [r5] | *(r5) = r0;
0x0001599e mov r0, r4 | r0 = r4;
0x000159a0 pop {r3, r4, r5, r6, r7, pc} |
| }
; assembly | /* r2dec pseudo code output */
| /* /logs/firmware/patool_extraction/rootfs.img_unblob_extracted/rootfs.img_extract/0-80367616.squashfs_v4_le_extract/usr/sbin/zabbix_agentd @ 0x159a8 */
| #include <stdint.h>
|
; (fcn) fcn.000159a8 () | void fcn_000159a8 (int16_t arg_d0h, int16_t arg_e8h, int16_t arg_f8h, int16_t arg_120h, int16_t arg_160h, int16_t arg_188h, int16_t arg_230h, int16_t arg_2a8h, int16_t arg_2d0h, int16_t arg_348h, int16_t arg_8000h, int16_t arg1, int16_t arg2, int16_t arg3, int16_t arg4) {
| int16_t var_a4h;
| int16_t var_0h;
| int16_t var_4h;
| int16_t var_8h;
| int16_t var_ch;
| int16_t var_34h;
| int16_t var_38h;
| int16_t var_3ch;
| int16_t var_40h;
| int16_t var_44h;
| int16_t var_48h;
| int16_t var_4ch;
| int16_t var_50h;
| int16_t var_54h;
| int16_t var_6ch;
| int16_t var_70h;
| r0 = arg1;
| r1 = arg2;
| r2 = arg3;
| r3 = arg4;
0x000159a8 push.w {r4, r5, r6, r7, r8, sb, sl, fp, lr} |
0x000159ac mov sb, r2 | sb = r2;
0x000159ae ldr r2, [pc, 0x3b4] |
0x000159b0 mov r8, r3 | r8 = r3;
0x000159b2 sub.w sp, sp, 0x8000 |
0x000159b6 ldr r3, [pc, 0x3b0] | r3 = *(0x15d6a);
0x000159b8 sub sp, 0x74 |
0x000159ba add r2, pc | r2 = 0x2b724;
0x000159bc str r0, [sp, 0x44] | var_44h = r0;
0x000159be str r1, [sp, 0x4c] | var_4ch = r1;
0x000159c0 add.w r1, sp, 0x8000 | r1 += arg_8000h;
0x000159c4 ldr r3, [r2, r3] |
0x000159c6 adds r1, 0x6c | r1 += 0x6c;
0x000159c8 add.w r4, sp, 0x8000 | r4 += arg_8000h;
0x000159cc ldr r0, [r0] | r0 = *(r0);
0x000159ce adds r4, 0x98 | r4 += 0x98;
0x000159d0 ldr r3, [r3] | r3 = *(0x2b724);
0x000159d2 str r3, [r1] | *(r1) = r3;
0x000159d4 mov.w r3, 0 | r3 = 0;
0x000159d8 add.w r3, sp, 0x8000 | r3 += arg_8000h;
0x000159dc ldr.w r1, [r3, 0x9c] | r1 = *((r3 + 0x9c));
0x000159e0 adds r3, 0x9c | r3 += 0x9c;
0x000159e2 ldr r3, [pc, 0x388] |
0x000159e4 ldr r4, [r4] | r4 = *(r4);
0x000159e6 str r1, [sp, 0x48] | var_48h = r1;
0x000159e8 add r3, pc | r3 = 0x2b75a;
0x000159ea str r3, [sp, 0x50] | var_50h = r3;
0x000159ec bl 0x1596c | r0 = fcn_0001596c (r0, r1);
0x000159f0 adds r1, r0, 1 | r1 = r0 + 1;
| if (r1 == r0) {
0x000159f2 beq.w 0x15c6c | goto label_6;
| }
0x000159f6 add r5, sp, 0x70 | r5 += var_70h;
0x000159f8 mov r7, r0 | r7 = r0;
0x000159fa sub.w r3, r5, 0x14 | r3 = r5 - 0x14;
0x000159fe mov r0, r4 | r0 = r4;
0x00015a00 sub.w r2, r5, 0xc | r2 = r5 - 0xc;
0x00015a04 sub.w r1, r5, 0x10 | r1 = r5 - 0x10;
0x00015a08 bl 0x3fa2c | find_cr_lf_szbyte ();
0x00015a0c ldr r3, [sp, 0x4c] | r3 = var_4ch;
0x00015a0e ldr r2, [r5, -0x14] | r2 = *((r5 - 0x14));
0x00015a12 ldr r1, [r3] | r1 = *(r3);
0x00015a14 ldr r4, [r3, 4] | r4 = *((r3 + 4));
0x00015a16 cmp r2, 1 |
0x00015a18 mov r6, r1 | r6 = r1;
0x00015a1a str r1, [sp, 0x3c] | var_3ch = r1;
0x00015a1c str r4, [sp, 0x40] | var_40h = r4;
| if (r2 >= 1) {
0x00015a1e bls 0x15a32 |
0x00015a20 mov r0, r1 | r0 = r1;
0x00015a22 movs r3, 0 | r3 = 0;
0x00015a24 mov r1, r4 | r1 = r4;
0x00015a26 bl 0x4c760 | fcn_0004c760 (r0, r1, r2, r3);
0x00015a2a orrs.w r1, r3, r2 | r1 = r3 | r2;
| if (r1 != r3) {
0x00015a2e bne.w 0x15b78 | goto label_7;
| }
| }
0x00015a32 ldr r3, [sp, 0x3c] | r3 = var_3ch;
0x00015a34 str r3, [sp, 0x38] | var_38h = r3;
0x00015a36 ldr r3, [sp, 0x40] | r3 = var_40h;
0x00015a38 str r3, [sp, 0x34] | var_34h = r3;
| label_0:
0x00015a3a movs r3, 0 | r3 = 0;
0x00015a3c mov r0, r7 | r0 = r7;
0x00015a3e str r3, [sp] | *(sp) = r3;
0x00015a40 ldrd r3, r2, [sp, 0x34] | __asm ("ldrd r3, r2, [var_34h]");
0x00015a44 blx 0xe128 | fcn_0000e128 ();
0x00015a48 cmp.w r1, -1 |
0x00015a4c it eq |
| if (r1 == -1) {
0x00015a4e cmpeq r0, -1 | __asm ("cmpeq r0, -1");
| }
| if (r1 == -1) {
0x00015a52 beq.w 0x15c78 | goto label_8;
| }
0x00015a56 sub.w r3, r5, 8 | r3 = r5 - 8;
0x00015a5a str.w sb, [sp, 0x54] | __asm ("str.w sb, [var_54h]");
0x00015a5e ldrd sl, fp, [sp, 0x34] | __asm ("ldrd sl, fp, [var_34h]");
0x00015a62 add r6, sp, 0x6c | r6 += var_6ch;
0x00015a64 mov sb, r3 | sb = r3;
0x00015a66 b 0x15a96 |
| while (r2 != r0) {
0x00015a68 cmp r0, 0 |
| if (r0 == 0) {
0x00015a6a beq.w 0x15b92 | goto label_9;
| }
0x00015a6e ldr r3, [r5, -0x14] | r3 = *((r5 - 0x14));
0x00015a72 adds r2, r6, r0 | r2 = r6 + r0;
0x00015a74 mov r1, sb | r1 = sb;
0x00015a76 mov r0, r6 | r0 = r6;
0x00015a78 str r3, [sp, 4] | var_4h = r3;
0x00015a7a ldr r3, [r5, -0xc] | r3 = *((r5 - 0xc));
0x00015a7e str r3, [sp] | *(sp) = r3;
0x00015a80 ldr r3, [r5, -0x10] | r3 = *((r5 - 0x10));
0x00015a84 bl 0x15620 | r0 = fcn_00015620 (r0, r1, r2, r3, r4, r5, r6);
0x00015a88 cmp r0, 0 |
| if (r0 != 0) {
0x00015a8a bne.w 0x15c4c | goto label_10;
| }
0x00015a8e adds.w fp, r4, fp |
0x00015a92 adc.w sl, sl, r4, asr 31 | __asm ("adc.w sl, sl, r4, asr 31");
0x00015a96 mov.w r2, 0x8000 | r2 = 0x8000;
0x00015a9a mov r1, r6 | r1 = r6;
0x00015a9c mov r0, r7 | r0 = r7;
0x00015a9e blx 0xde54 | r0 = fcn_0000de54 ();
0x00015aa2 adds r2, r0, 1 | r2 = r0 + 1;
0x00015aa4 mov r4, r0 | r4 = r0;
0x00015aa6 bne 0x15a68 |
| }
0x00015aa8 ldr r3, [sp, 0x48] | r3 = var_48h;
0x00015aaa ldr r4, [r3] | r4 = *(r3);
0x00015aac blx 0xe3d4 | fcn_0000e3d4 ();
0x00015ab0 ldr r3, [sp, 0x44] | r3 = var_44h;
0x00015ab2 ldr r0, [r0] | r0 = *(r0);
0x00015ab4 ldr r6, [r3] | r6 = *(r3);
0x00015ab6 bl 0x30b74 | zbx_strerror ();
0x00015aba ldr r1, [pc, 0x2b4] |
0x00015abc mov r3, r0 | r3 = r0;
0x00015abe mov r2, r6 | r2 = r6;
0x00015ac0 mov r0, r4 | r0 = r4;
0x00015ac2 add r1, pc | r1 = 0x2b838;
0x00015ac4 bl 0x44820 | zbx_dsprintf ()
| label_1:
0x00015ac8 ldr r3, [sp, 0x48] | r3 = var_48h;
0x00015aca mov.w r4, -1 | r4 = -1;
0x00015ace str r0, [r3] | *(r3) = r0;
| label_2:
0x00015ad0 ldr r3, [sp, 0x44] | r3 = var_44h;
0x00015ad2 mov r0, r7 | r0 = r7;
0x00015ad4 ldr r6, [r3] | r6 = *(r3);
0x00015ad6 blx 0xe0ac | r0 = fcn_0000e0ac ();
0x00015ada cmp r0, 0 |
| if (r0 != 0) {
0x00015adc bne.w 0x15cee | goto label_11;
| }
0x00015ae0 ldr r3, [pc, 0x290] |
0x00015ae2 ldr r2, [sp, 0x50] | r2 = var_50h;
0x00015ae4 ldr r3, [r2, r3] | r3 = *((r2 + r3));
0x00015ae6 ldr r3, [r3] | r3 = *(0x15d74);
0x00015ae8 cmp r3, 3 |
| if (r3 > 3) {
0x00015aea ble 0x15b50 |
0x00015aec ldr r3, [sp, 0x48] | r3 = var_48h;
0x00015aee ldr r7, [r3] | r7 = *(r3);
0x00015af0 cmp r4, 0 |
| if (r4 != 0) {
0x00015af2 bne.w 0x15ce4 | goto label_12;
| }
0x00015af6 ldr r6, [pc, 0x280] |
0x00015af8 add r6, pc | r6 = 0x2b876;
| label_5:
0x00015afa ldr r8, [r5, -0x14] | r8 = *((r5 - 0x14));
0x00015afe ldr r1, [sp, 0x4c] | r1 = var_4ch;
0x00015b00 ldrd r0, r5, [sp, 0x38] | __asm ("ldrd r0, r5, [var_38h]");
0x00015b04 ldr r2, [sp, 0x40] | r2 = var_40h;
0x00015b06 ldrd r3, r1, [r1] | __asm ("ldrd r3, r1, [r1]");
0x00015b0a subs.w lr, r0, r5 | lr = r0 - r5;
0x00015b0e ldr r5, [sp, 0x34] | r5 = var_34h;
0x00015b10 sbc.w ip, r5, r2 | __asm ("sbc.w ip, r5, r2");
0x00015b14 subs r5, r3, r0 | r5 = r3 - r0;
0x00015b16 ldr r0, [sp, 0x34] | r0 = var_34h;
0x00015b18 sbc.w r0, r1, r0 | __asm ("sbc.w r0, r1, r0");
0x00015b1c cmp r7, 0 |
| if (r7 == 0) {
0x00015b1e beq.w 0x15c72 | goto label_13;
| }
| label_4:
0x00015b22 strd r3, r1, [sp, 0x18] | __asm ("strd r3, r1, [sp, 0x18]");
0x00015b26 mov r2, r8 | r2 = r8;
0x00015b28 ldr r3, [sp, 0x38] | r3 = var_38h;
0x00015b2a strd r5, r0, [sp, 0x20] | __asm ("strd r5, r0, [sp, 0x20]");
0x00015b2e ldr r0, [sp, 0x3c] | r0 = var_3ch;
0x00015b30 ldr r1, [pc, 0x248] |
0x00015b32 str r3, [sp, 8] | var_8h = r3;
0x00015b34 str r0, [sp] | *(sp) = r0;
0x00015b36 ldr r3, [sp, 0x34] | r3 = var_34h;
0x00015b38 add r1, pc | r1 = 0x2b8b8;
0x00015b3a ldr r0, [sp, 0x40] | r0 = var_40h;
0x00015b3c strd r6, r7, [sp, 0x28] | __asm ("strd r6, r7, [sp, 0x28]");
0x00015b40 str r3, [sp, 0xc] | var_ch = r3;
0x00015b42 movs r3, 0 | r3 = 0;
0x00015b44 str r0, [sp, 4] | var_4h = r0;
0x00015b46 movs r0, 4 | r0 = 4;
0x00015b48 strd lr, ip, [sp, 0x10] | __asm ("strd lr, ip, [sp, 0x10]");
0x00015b4c bl 0x30d1c | zbx_zabbix_log ();
| }
| label_3:
0x00015b50 ldr r2, [pc, 0x22c] |
0x00015b52 add.w r1, sp, 0x8000 | r1 += arg_8000h;
0x00015b56 ldr r3, [pc, 0x210] | r3 = *(0x15d6a);
0x00015b58 adds r1, 0x6c | r1 += 0x6c;
0x00015b5a add r2, pc | r2 = 0x2b8de;
0x00015b5c ldr r3, [r2, r3] | r3 = *(0x2b8de);
0x00015b5e ldr r2, [r3] | r2 = *(0x2b8de);
0x00015b60 ldr r3, [r1] | r3 = *(r1);
0x00015b62 eors r2, r3 | r2 ^= r3;
0x00015b64 mov.w r3, 0 | r3 = 0;
| if (r2 != r3) {
0x00015b68 bne.w 0x15d5e | goto label_14;
| }
0x00015b6c mov r0, r4 | r0 = r4;
0x00015b6e add.w sp, sp, 0x8000 |
0x00015b72 add sp, 0x74 |
0x00015b74 pop.w {r4, r5, r6, r7, r8, sb, sl, fp, pc} |
| label_7:
0x00015b78 subs r2, r6, r2 | r2 = r6 - r2;
0x00015b7a sbc.w sl, r4, r3 | __asm ("sbc.w sl, r4, r3");
0x00015b7e cmp r2, sb |
0x00015b80 mov r3, sl | r3 = sl;
0x00015b82 strd sl, r2, [sp, 0x34] | __asm ("strd sl, r2, [sp, 0x34]");
0x00015b86 sbcs.w r3, r3, r8 | __asm ("sbcs.w r3, r3, r8");
0x00015b8a it lo |
| if (r2 < sb) {
0x00015b8c strdlo r8, sb, [sp, 0x34] | __asm ("strdlo r8, sb, [sp, 0x34]");
| }
0x00015b90 b 0x15a3a | goto label_0;
| label_9:
0x00015b92 ldr.w sb, [sp, 0x54] | sb = var_54h;
0x00015b96 ldrd sl, fp, [sp, 0x34] | __asm ("ldrd sl, fp, [var_34h]");
0x00015b9a b 0x15bda |
| while (r1 != -1) {
0x00015b9c mov.w r2, 0x8000 | r2 = 0x8000;
0x00015ba0 mov r1, r6 | r1 = r6;
0x00015ba2 mov r0, r7 | r0 = r7;
0x00015ba4 blx 0xde54 | r0 = fcn_0000de54 ();
0x00015ba8 adds r3, r0, 1 | r3 = r0 + 1;
| if (r3 == r0) {
0x00015baa beq 0x15c9e | goto label_15;
| }
0x00015bac cmp r0, 0 |
| if (r0 == 0) {
0x00015bae beq.w 0x15cc0 | goto label_16;
| }
0x00015bb2 ldr r3, [r5, -0x14] | r3 = *((r5 - 0x14));
0x00015bb6 adds r2, r6, r0 | r2 = r6 + r0;
0x00015bb8 sub.w r1, r5, 8 | r1 = r5 - 8;
0x00015bbc mov r0, r6 | r0 = r6;
0x00015bbe str r3, [sp, 4] | var_4h = r3;
0x00015bc0 ldr r3, [r5, -0xc] | r3 = *((r5 - 0xc));
0x00015bc4 str r3, [sp] | *(sp) = r3;
0x00015bc6 ldr r3, [r5, -0x10] | r3 = *((r5 - 0x10));
0x00015bca bl 0x15620 | r0 = fcn_00015620 (r0, r1, r2, r3, r4, r5, r6);
0x00015bce cmp r0, 0 |
| if (r0 != 0) {
0x00015bd0 bne 0x15cd2 | goto label_17;
| }
0x00015bd2 cmp sl, r8 |
0x00015bd4 it eq |
| if (sl == r8) {
0x00015bd6 cmpeq fp, sb | __asm ("cmpeq fp, sb");
| }
| if (sl == r8) {
0x00015bd8 beq 0x15c5c | goto label_18;
| }
0x00015bda cmp.w fp, 0x8000 |
0x00015bde sbcs r3, sl, 0 | __asm ("sbcs r3, sl, 0");
0x00015be2 itt lo |
| if (fp >= fcn.00000004) {
0x00015be4 movlo fp, sb |
| }
| if (fp >= fcn.00000004) {
0x00015be6 movlo sl, r8 | sl = r8;
| }
| if (fp > fcn.00000004) {
0x00015be8 blo 0x15c0e |
0x00015bea subs.w r3, fp, sb | r3 = fp - sb;
0x00015bee movw r1, 0x8001 | r1 = 0x8001;
0x00015bf2 sbc.w r2, sl, r8 | __asm ("sbc.w r2, sl, r8");
0x00015bf6 cmp r3, r1 |
0x00015bf8 sbcs r1, r2, 0 | __asm ("sbcs r1, r2, 0");
0x00015bfc itt hs |
| if (r3 < r1) {
0x00015bfe movhs r3, 0x8000 | r3 = 0x8000;
| }
| if (r3 >= r1) {
0x00015c02 movs r2, 0 | r2 = 0;
| }
0x00015c04 subs.w r3, fp, r3 | r3 = fp - r3;
0x00015c08 sbc.w sl, sl, r2 | __asm ("sbc.w sl, sl, r2");
0x00015c0c mov fp, r3 |
| }
0x00015c0e mov r2, fp | r2 = fp;
0x00015c10 mov r3, sl | r3 = sl;
0x00015c12 mov r0, r7 | r0 = r7;
0x00015c14 str r4, [sp] | *(sp) = r4;
0x00015c16 blx 0xe128 | fcn_0000e128 ();
0x00015c1a cmp.w r1, -1 |
0x00015c1e it eq |
| if (r1 == -1) {
0x00015c20 cmpeq r0, -1 | __asm ("cmpeq r0, -1");
| }
0x00015c24 bne 0x15b9c |
| }
0x00015c26 blx 0xe3d4 | fcn_0000e3d4 ();
0x00015c2a ldr r3, [sp, 0x48] | r3 = var_48h;
0x00015c2c ldr r0, [r0] | r0 = *(r0);
0x00015c2e ldr r4, [r3] | r4 = *(r3);
0x00015c30 ldr r3, [sp, 0x44] | r3 = var_44h;
0x00015c32 ldr r6, [r3] | r6 = *(r3);
0x00015c34 bl 0x30b74 | zbx_strerror ();
0x00015c38 ldr r1, [pc, 0x148] |
0x00015c3a strd r6, r0, [sp] | __asm ("strd r6, r0, [sp]");
0x00015c3e mov r0, r4 | r0 = r4;
0x00015c40 ldrd r3, r2, [sp, 0x34] | __asm ("ldrd r3, r2, [var_34h]");
0x00015c44 add r1, pc | r1 = 0x2b9cc;
0x00015c46 bl 0x44820 | zbx_dsprintf ()
0x00015c4a b 0x15ac8 | goto label_1;
| label_10:
0x00015c4c ldr r1, [r5, -0x8] | r1 = *((r5 - 0x8));
0x00015c50 sub.w r8, r1, r6 | r8 = r1 - r6;
0x00015c54 adds.w sb, r8, fp | sb = r8 + fp;
0x00015c58 adc.w r8, sl, r8, asr 31 | __asm ("adc.w r8, sl, r8, asr 31");
| do {
| label_18:
0x00015c5c ldr r3, [sp, 0x4c] | r3 = var_4ch;
0x00015c5e movs r4, 0 | r4 = 0;
0x00015c60 strd sb, r8, [r3] | __asm ("strd sb, r8, [r3]");
0x00015c64 ldr r3, [sp, 0x44] | r3 = var_44h;
0x00015c66 strd sb, r8, [r3, 0x38] | __asm ("strd sb, r8, [r3, 0x38]");
0x00015c6a b 0x15ad0 | goto label_2;
| label_6:
0x00015c6c mov.w r4, -1 | r4 = -1;
0x00015c70 b 0x15b50 | goto label_3;
| label_13:
0x00015c72 ldr r7, [pc, 0x114] |
0x00015c74 add r7, pc | r7 = 0x2ba02;
0x00015c76 b 0x15b22 | goto label_4;
| label_8:
0x00015c78 blx 0xe3d4 | fcn_0000e3d4 ();
0x00015c7c ldr r3, [sp, 0x48] | r3 = var_48h;
0x00015c7e ldr r0, [r0] | r0 = *(r0);
0x00015c80 ldr r4, [r3] | r4 = *(r3);
0x00015c82 ldr r3, [sp, 0x44] | r3 = var_44h;
0x00015c84 ldr r6, [r3] | r6 = *(r3);
0x00015c86 bl 0x30b74 | zbx_strerror ();
0x00015c8a ldr r1, [pc, 0x100] |
0x00015c8c strd r6, r0, [sp] | __asm ("strd r6, r0, [sp]");
0x00015c90 mov r0, r4 | r0 = r4;
0x00015c92 ldrd r3, r2, [sp, 0x34] | __asm ("ldrd r3, r2, [var_34h]");
0x00015c96 add r1, pc | r1 = 0x2ba28;
0x00015c98 bl 0x44820 | zbx_dsprintf ()
0x00015c9c b 0x15ac8 | goto label_1;
| label_15:
0x00015c9e ldr r3, [sp, 0x48] | r3 = var_48h;
0x00015ca0 ldr r4, [r3] | r4 = *(r3);
0x00015ca2 blx 0xe3d4 | fcn_0000e3d4 ();
0x00015ca6 ldr r3, [sp, 0x44] | r3 = var_44h;
0x00015ca8 ldr r0, [r0] | r0 = *(r0);
0x00015caa ldr r6, [r3] | r6 = *(r3);
0x00015cac bl 0x30b74 | zbx_strerror ();
0x00015cb0 ldr r1, [pc, 0xdc] |
0x00015cb2 mov r3, r0 | r3 = r0;
0x00015cb4 mov r2, r6 | r2 = r6;
0x00015cb6 mov r0, r4 | r0 = r4;
0x00015cb8 add r1, pc | r1 = 0x2ba4c;
0x00015cba bl 0x44820 | zbx_dsprintf ()
0x00015cbe b 0x15ac8 | goto label_1;
| label_16:
0x00015cc0 ldr r3, [sp, 0x44] | r3 = var_44h;
0x00015cc2 ldr r1, [pc, 0xd0] |
0x00015cc4 ldr r2, [r3] | r2 = *(r3);
0x00015cc6 ldr r3, [sp, 0x48] | r3 = var_48h;
0x00015cc8 add r1, pc | r1 = 0x2ba62;
0x00015cca ldr r0, [r3] | r0 = *(r3);
0x00015ccc bl 0x44820 | zbx_dsprintf ()
0x00015cd0 b 0x15ac8 | goto label_1;
| label_17:
0x00015cd2 ldr r2, [r5, -0x8] | r2 = *((r5 - 0x8));
0x00015cd6 sub.w r8, r2, r6 | r8 = r2 - r6;
0x00015cda adds.w sb, r8, fp | sb = r8 + fp;
0x00015cde adc.w r8, sl, r8, asr 31 | __asm ("adc.w r8, sl, r8, asr 31");
0x00015ce0 ldrb r0, [r5, 3] | r0 = *((r5 + 3));
0x00015ce2 b 0x15c5c |
| } while (1);
| label_12:
0x00015ce4 ldr r6, [pc, 0xb0] |
0x00015ce6 mov.w r4, -1 | r4 = -1;
0x00015cea add r6, pc | r6 = 0x2ba86;
0x00015cec b 0x15afa | goto label_5;
| label_11:
0x00015cee ldr r3, [sp, 0x48] | r3 = var_48h;
0x00015cf0 ldr r7, [r3] | r7 = *(r3);
| if (r7 == 0) {
0x00015cf2 cbz r7, 0x15d2a | goto label_19;
| }
0x00015cf4 ldr r3, [pc, 0x7c] |
0x00015cf6 ldr r2, [sp, 0x50] | r2 = var_50h;
0x00015cf8 ldr r3, [r2, r3] | r3 = *((r2 + r3));
0x00015cfa ldr r3, [r3] | r3 = *(0x15d74);
0x00015cfc cmp r3, 3 |
| if (r3 <= 3) {
0x00015cfe ble 0x15c6c | goto label_6;
| }
0x00015d00 ldr r2, [sp, 0x4c] | r2 = var_4ch;
0x00015d02 ldr r4, [sp, 0x40] | r4 = var_40h;
0x00015d04 ldr r6, [pc, 0x94] |
0x00015d06 ldrd r3, r1, [r2] | __asm ("ldrd r3, r1, [r2]");
0x00015d0a ldrd r2, r0, [sp, 0x38] | __asm ("ldrd r2, r0, [var_38h]");
0x00015d0e ldr r8, [r5, -0x14] | r8 = *((r5 - 0x14));
0x00015d12 add r6, pc | r6 = 0x2bab2;
0x00015d14 subs.w lr, r2, r0 | lr = r2 - r0;
0x00015d18 ldr r0, [sp, 0x34] | r0 = var_34h;
0x00015d1a sbc.w ip, r0, r4 | __asm ("sbc.w ip, r0, r4");
0x00015d1e subs r5, r3, r2 | r5 = r3 - r2;
0x00015d20 mov.w r4, -1 | r4 = -1;
0x00015d24 sbc.w r0, r1, r0 | __asm ("sbc.w r0, r1, r0");
0x00015d28 b 0x15b22 | goto label_4;
| label_19:
0x00015d2a blx 0xe3d4 | r0 = fcn_0000e3d4 ();
0x00015d2e ldr r0, [r0] | r0 = *(r0);
0x00015d30 bl 0x30b74 | zbx_strerror ();
0x00015d34 ldr r1, [pc, 0x68] |
0x00015d36 mov r3, r0 | r3 = r0;
0x00015d38 mov r2, r6 | r2 = r6;
0x00015d3a mov r0, r7 | r0 = r7;
0x00015d3c add r1, pc | r1 = 0x2bae0;
0x00015d3e bl 0x44820 | zbx_dsprintf ()
0x00015d42 ldr r3, [sp, 0x48] | r3 = var_48h;
0x00015d44 mov r7, r0 | r7 = r0;
0x00015d46 ldr r2, [sp, 0x50] | r2 = var_50h;
0x00015d48 str r0, [r3] | *(r3) = r0;
0x00015d4a ldr r3, [pc, 0x28] |
0x00015d4c ldr r3, [r2, r3] | r3 = *((r2 + r3));
0x00015d4e ldr r3, [r3] | r3 = *(0x15d76);
0x00015d50 cmp r3, 3 |
| if (r3 <= 3) {
0x00015d52 ble 0x15c6c | goto label_6;
| }
0x00015d54 ldr r6, [pc, 0x4c] |
0x00015d56 mov.w r4, -1 | r4 = -1;
0x00015d5a add r6, pc | r6 = 0x2bb02;
0x00015d5c b 0x15afa | goto label_5;
| label_14:
0x00015d5e blx 0xe158 | fcn_0000e158 ();
0x00015d62 nop |
0x00015d64 str r6, [r3, 0x20] | *((r3 + 0x20)) = r6;
0x00015d66 movs r4, r0 | r4 = r0;
0x00015d68 lsls r4, r2, 0xe | r4 = r2 << 0xe;
0x00015d6a movs r0, r0 |
0x00015d6c str r0, [r6, 0x1c] | *((r6 + 0x1c)) = r0;
0x00015d6e movs r4, r0 | r4 = r0;
0x00015d70 str r7, [sp, 0xf8] | *(arg_f8h) = r7;
0x00015d72 movs r3, r0 | r3 = r0;
0x00015d74 lsls r4, r7, 0xe | r4 = r7 << 0xe;
0x00015d76 movs r0, r0 |
0x00015d78 str r6, [sp, 0x2d0] | *(arg_2d0h) = r6;
0x00015d7a movs r3, r0 | r3 = r0;
0x00015d7c str r7, [sp, 0xd0] | *(arg_d0h) = r7;
0x00015d7e movs r3, r0 | r3 = r0;
0x00015d80 str r6, [r7, 4] | *((r7 + 4)) = r6;
0x00015d82 movs r4, r0 | r4 = r0;
0x00015d84 str r5, [sp, 0x230] | *(arg_230h) = r5;
0x00015d86 movs r3, r0 | r3 = r0;
0x00015d88 itt lt |
| if (r3 >= r0) {
0x00015d8a movlt r3, r0 | r3 = r0;
| }
| if (r3 >= r0) {
0x00015d8c strlt r5, [sp, 0xe8] | *(arg_e8h) = r5;
| }
0x00015d8e movs r3, r0 | r3 = r0;
0x00015d90 str r5, [sp, 0x120] | *(arg_120h) = r5;
0x00015d92 movs r3, r0 | r3 = r0;
0x00015d94 str r5, [sp, 0x160] | *(arg_160h) = r5;
0x00015d96 movs r3, r0 | r3 = r0;
0x00015d98 str r4, [sp, 0x348] | *(arg_348h) = r4;
0x00015d9a movs r3, r0 | r3 = r0;
0x00015d9c str r4, [sp, 0x2a8] | *(arg_2a8h) = r4;
0x00015d9e movs r3, r0 | r3 = r0;
0x00015da0 str r5, [sp, 0x50] | var_50h = r5;
0x00015da2 movs r3, r0 | r3 = r0;
0x00015da4 str r4, [sp, 0x188] | *(arg_188h) = r4;
0x00015da6 movs r3, r0 | r3 = r0;
| }
; assembly | /* r2dec pseudo code output */
| /* /logs/firmware/patool_extraction/rootfs.img_unblob_extracted/rootfs.img_extract/0-80367616.squashfs_v4_le_extract/usr/sbin/zabbix_agentd @ 0x15ea4 */
| #include <stdint.h>
|
; (fcn) fcn.00015ea4 () | void fcn_00015ea4 (int16_t arg_90h, int16_t arg_94h, int16_t arg_98h, int16_t arg1, int16_t arg2, int16_t arg3, int16_t arg4) {
| int16_t var_60h;
| int16_t var_5ch;
| int16_t var_54h;
| int16_t var_40h;
| int16_t var_bp_38h;
| int16_t var_30h;
| int16_t var_bp_28h;
| int16_t var_20h;
| int16_t var_bp_1ch;
| int16_t var_8h;
| int16_t var_0h;
| int16_t var_4h;
| int16_t var_14h;
| int16_t var_18h;
| int16_t var_1ch;
| int16_t var_sp_20h;
| int16_t var_24h;
| int16_t var_28h;
| int16_t var_2ch;
| int16_t var_38h;
| int16_t var_sp_40h;
| int16_t var_44h;
| int16_t var_48h;
| int16_t var_4ch;
| int16_t var_sp_54h;
| int16_t var_64h;
| r0 = arg1;
| r1 = arg2;
| r2 = arg3;
| r3 = arg4;
0x00015ea4 svcmi 0xf0e92d | __asm ("svcmi 0xf0e92d");
0x00015ea8 sub sp, 0x6c |
0x00015eaa str r2, [sp, 0x2c] | var_2ch = r2;
0x00015eac mov r5, r2 | r5 = r2;
0x00015eae mov sl, r0 | sl = r0;
0x00015eb0 mov r7, r1 | r7 = r1;
0x00015eb2 ldr.w r2, [pc, 0xbf4] |
0x00015eb6 movw r1, 0x54c | r1 = 0x54c;
0x00015eba str r3, [sp, 0x1c] | var_1ch = r3;
0x00015ebc ldr.w r3, [pc, 0xbec] | r3 = *(0x16aac);
0x00015ec0 add r2, pc | r2 = 0x2c96e;
0x00015ec2 ldr.w r0, [pc, 0xbec] |
0x00015ec6 ldr r4, [sp, 0x98] | r4 = *(arg_98h);
0x00015ec8 ldr r3, [r2, r3] |
0x00015eca movs r2, 0 | r2 = 0;
0x00015ecc ldr.w sb, [pc, 0xbe4] | sb = *(0x00016ab4);
0x00015ed0 add r0, pc | r0 = 0x2c986;
0x00015ed2 ldr r3, [r3] | r3 = *(0x2c96e);
0x00015ed4 str r3, [sp, 0x64] | var_64h = r3;
0x00015ed6 mov.w r3, 0 | r3 = 0;
0x00015eda ldr r3, [sp, 0x90] | r3 = *(arg_90h);
0x00015edc str r4, [sp, 0x24] | var_24h = r4;
0x00015ede add sb, pc | sb += pc;
0x00015ee0 mul r3, r5, r3 | r3 = r5 * r3;
0x00015ee4 bl 0x40dd8 | zbx_malloc2 ();
0x00015ee8 cmp r5, 0 |
0x00015eea mov r4, r0 | r4 = r0;
| if (r5 <= 0) {
0x00015eec ble.w 0x165ac | goto label_60;
| }
0x00015ef0 movs r3, 0 | r3 = 0;
0x00015ef2 ldr.w ip, [sp, 0x90] | ip = *(arg_90h);
0x00015ef6 str r3, [sp, 0x20] | var_sp_20h = r3;
0x00015ef8 adds r7, 0x60 | r7 += 0x60;
0x00015efa ldr r3, [sp, 0x94] | r3 = *(arg_94h);
0x00015efc mov r5, r0 | r5 = r0;
0x00015efe mov fp, r7 |
0x00015f00 mov r8, sb | r8 = sb;
0x00015f02 str r0, [sp, 0x28] | var_28h = r0;
0x00015f04 subs r3, 1 | r3--;
0x00015f06 str.w sl, [sp, 0x14] | __asm ("str.w sl, [var_14h]");
0x00015f0a str r3, [sp, 0x18] | var_18h = r3;
| label_0:
0x00015f0c cmp.w ip, 0 |
0x00015f10 it le |
| if (ip > 0) {
0x00015f12 addle r5, ip | r5 += ip;
| }
| if (ip <= 0) {
0x00015f14 ble 0x15fc8 | goto label_61;
| }
0x00015f16 sub.w r3, fp, 0x60 | r3 = fp - 0x60;
0x00015f1a mov sb, r5 | sb = r5;
0x00015f1c str r3, [sp, 0x30] | var_60h = r3;
0x00015f1e add.w r6, r5, ip | r6 = r5 + ip;
0x00015f22 ldr r3, [sp, 0x1c] | r3 = var_1ch;
0x00015f24 str.w ip, [sp, 0x90] | __asm ("str.w ip, [arg_90h]");
0x00015f28 add.w sl, r3, 0x60 | sl = r3 + 0x60;
| do {
0x00015f2c ldr r3, [sp, 0x14] | r3 = var_14h;
0x00015f2e sub.w r7, sl, 0x60 | r7 = sl - 0x60;
0x00015f32 cmp r3, 1 |
| if (r3 == 1) {
0x00015f34 beq.w 0x1604e | goto label_62;
| }
0x00015f38 ldr r3, [sp, 0x18] | r3 = var_18h;
0x00015f3a cmp r3, 1 |
| if (r3 < 1) {
0x00015f3c bls 0x15fdc | goto label_63;
| }
| label_2:
0x00015f3e ldr r0, [fp, -0x30] | r0 = var_30h;
0x00015f42 ldr r2, [sl, -0x30] | r2 = *((sl - 0x30));
0x00015f46 ldr r5, [fp, -0x2c] | r5 = var_64h;
0x00015f4a ldr r3, [sl, -0x2c] | r3 = *((sl - 0x2c));
0x00015f4e cmp r2, r0 |
0x00015f50 sbcs.w r1, r3, r5 | __asm ("sbcs.w r1, r3, r5");
| if (r2 <= r0) {
0x00015f54 blo 0x15ffc | goto label_3;
| }
0x00015f56 ldrd r4, r1, [fp, -0x28] | __asm ("ldrd r4, r1, [var_bp_28h]");
0x00015f5a cmp r2, r4 |
0x00015f5c sbcs.w r1, r3, r1 | __asm ("sbcs.w r1, r3, r1");
| if (r2 <= r4) {
0x00015f60 blo 0x15ffc | goto label_3;
| }
0x00015f62 cmp r5, r3 |
0x00015f64 it eq |
| if (r5 == r3) {
0x00015f66 cmpeq r0, r2 | __asm ("cmpeq r0, r2");
| }
0x00015f68 ldr r4, [fp, -0x20] | r4 = var_20h;
| if (r5 == r3) {
0x00015f6c beq.w 0x16168 | goto label_64;
| }
| label_4:
0x00015f70 adds r2, r4, 1 | r2 = r4 + 1;
| if (r2 == r4) {
0x00015f72 beq 0x15ffc | goto label_3;
| }
0x00015f74 ldr r2, [sl, -0x20] | r2 = *((sl - 0x20));
0x00015f78 sub.w r3, r2, -1 | r3 = r2 - -1;
0x00015f7c clz r3, r3 | r3 &= r3;
0x00015f80 lsrs r3, r3, 5 | r3 >>= 5;
0x00015f82 cmp r2, r4 |
0x00015f84 it lt |
| if (r2 >= r4) {
0x00015f86 orrlt r3, r3, 1 | r3 |= 1;
| }
| if (r3 != 0) {
0x00015f8a cbnz r3, 0x15ffc | goto label_3;
| }
0x00015f8c cmp r2, r4 |
| if (r2 == r4) {
0x00015f8e beq.w 0x162c0 | goto label_65;
| }
| label_9:
0x00015f92 cmp r4, 0 |
| if (r4 > 0) {
0x00015f94 bgt.w 0x161ba | goto label_66;
| }
| label_6:
0x00015f98 invalid |
0x00015f9a subs r3, 0x1c | r3 -= 0x1c;
0x00015f9c ldr.w r4, [r8, r3] | r4 = *((r8 + r3));
0x00015fa0 ldr r3, [fp, -0x54] | r3 = var_54h;
| label_5:
0x00015fa4 cmp r3, 1 |
| if (r3 == 1) {
0x00015fa6 beq.w 0x162b2 | goto label_67;
| }
| label_8:
0x00015faa movs r3, 0x31 | r3 = 0x31;
0x00015fac strb.w r3, [sb] | *(sb) = r3;
| label_14:
0x00015fb0 ldr r3, [r4] | r3 = *(r4);
0x00015fb2 cmp r3, 3 |
| if (r3 > 3) {
0x00015fb4 bgt 0x16010 | goto label_68;
| }
| label_1:
0x00015fb6 add.w sb, sb, 1 | sb++;
0x00015fba add.w sl, sl, 0x70 | sl += 0x70;
0x00015fbe cmp r6, sb |
0x00015fc0 mov r5, r6 | r5 = r6;
0x00015fc2 bne 0x15f2c |
| } while (r6 != sb);
0x00015fc4 ldr.w ip, [sp, 0x90] | ip = *(arg_90h);
| label_61:
0x00015fc8 ldr r3, [sp, 0x20] | r3 = var_sp_20h;
0x00015fca add.w fp, fp, 0x70 |
0x00015fce ldr r2, [sp, 0x2c] | r2 = var_2ch;
0x00015fd0 adds r3, 1 | r3++;
0x00015fd2 cmp r2, r3 |
| if (r2 == r3) {
0x00015fd4 beq.w 0x168f0 | goto label_69;
| }
0x00015fd8 str r3, [sp, 0x20] | var_sp_20h = r3;
0x00015fda b 0x15f0c | goto label_0;
| label_63:
0x00015fdc ldrd r0, r2, [fp, -0x40] | __asm ("ldrd r0, r2, [var_40h]");
0x00015fe0 ldrd r1, r3, [sl, -0x40] | __asm ("ldrd r1, r3, [sl, -0x40]");
0x00015fe4 cmp r2, r3 |
0x00015fe6 it eq |
| if (r2 == r3) {
0x00015fe8 cmpeq r0, r1 | __asm ("cmpeq r0, r1");
| }
| if (r2 == r3) {
0x00015fea bne 0x15ffc |
0x00015fec ldrd r0, r2, [fp, -0x48] | __asm ("ldrd r0, r2, [var_48h]");
0x00015ff0 ldrd r1, r3, [sl, -0x48] | __asm ("ldrd r1, r3, [sl, -0x48]");
0x00015ff4 cmp r2, r3 |
0x00015ff6 it eq |
| if (r2 == r3) {
0x00015ff8 cmpeq r0, r1 | __asm ("cmpeq r0, r1");
| }
| if (r2 == r3) {
0x00015ffa beq 0x16036 | goto label_70;
| }
| }
| label_3:
0x00015ffc invalid |
0x00015ffe subs r2, 0xb8 | r2 -= 0xb8;
0x00016000 ldr.w r4, [r8, r3] | r4 = *((r8 + r3));
| label_7:
0x00016004 movs r3, 0x30 | r3 = 0x30;
0x00016006 strb.w r3, [sb] | *(sb) = r3;
0x0001600a ldr r3, [r4] | r3 = *(r4);
0x0001600c cmp r3, 3 |
| if (r3 <= 3) {
0x0001600e ble 0x15fb6 | goto label_1;
| }
| label_68:
0x00016010 ldrb.w r2, [sb] | r2 = *(sb);
0x00016014 movs r0, 4 | r0 = 4;
0x00016016 ldr r3, [fp, -0x60] | r3 = var_60h;
0x0001601a str r2, [sp, 4] | var_4h = r2;
0x0001601c ldr r1, [sl, -0x60] | r1 = *((sl - 0x60));
0x00016020 ldr.w r2, [pc, 0xa98] | r2 = *(0x00016abc);
0x00016024 str r1, [sp] | *(sp) = r1;
0x00016026 ldr.w r1, [pc, 0xa98] | r1 = *(0x00016ac0);
0x0001602a add r2, pc | r2 += pc;
0x0001602c adds r2, 0xc | r2 += 0xc;
0x0001602e add r1, pc | r1 += pc;
0x00016030 bl 0x30d1c | zbx_zabbix_log ();
0x00016034 b 0x15fb6 | goto label_1;
| label_70:
0x00016036 ldr r3, [sp, 0x94] | r3 = *(arg_94h);
0x00016038 cmp r3, 2 |
| if (r3 != 2) {
0x0001603a bne 0x15f3e | goto label_2;
| }
0x0001603c ldrd r0, r2, [fp, -0x38] | __asm ("ldrd r0, r2, [var_bp_38h]");
0x00016040 ldrd r1, r3, [sl, -0x38] | __asm ("ldrd r1, r3, [sl, -0x38]");
0x00016044 cmp r2, r3 |
0x00016046 it eq |
| if (r2 != r3) {
0x00016048 cmpeq r0, r1 | __asm ("cmpeq r0, r1");
| goto label_71;
| }
| if (r2 != r3) {
| label_71:
0x0001604a bne 0x15ffc | goto label_3;
| }
0x0001604c b 0x15f3e | goto label_2;
| label_62:
0x0001604e ldr r2, [fp, -0x5c] | r2 = var_5ch;
0x00016052 ldr r3, [sl, -0x5c] | r3 = *((sl - 0x5c));
0x00016056 cmp r2, r3 |
| if (r2 > r3) {
0x00016058 bgt 0x15ffc | goto label_3;
| }
0x0001605a ldr r2, [fp, -0x20] | r2 = var_20h;
0x0001605e adds r0, r2, 1 | r0 = r2 + 1;
| if (r0 == r2) {
0x00016060 beq 0x15ffc | goto label_3;
| }
0x00016062 ldr r3, [sl, -0x20] | r3 = *((sl - 0x20));
0x00016066 adds r1, r3, 1 | r1 = r3 + 1;
| if (r1 == r3) {
0x00016068 beq 0x15ffc | goto label_3;
| }
0x0001606a ldr r1, [sp, 0x94] | r1 = *(arg_94h);
0x0001606c subs r1, 1 | r1--;
0x0001606e cmp r1, 1 |
0x00016070 str r1, [sp, 0x3c] | var_54h = r1;
0x00016072 it hi |
| if (r1 <= 1) {
0x00016074 movhi r5, -1 | r5 = -1;
| }
| if (r1 < 1) {
0x00016078 bls.w 0x162fc | goto label_72;
| }
| label_11:
0x0001607c cmp r2, r3 |
| if (r2 == r3) {
0x0001607e beq.w 0x1651e | goto label_73;
| }
0x00016082 cmp r2, 0 |
0x00016084 it ne |
| if (r2 != 0) {
0x00016086 cmpne r3, 0 | __asm ("cmpne r3, 0");
| }
0x00016088 ite eq |
| if (r2 != 0) {
0x0001608a moveq r1, 1 | r1 = 1;
| }
| if (r2 != 0) {
0x0001608c movne r1, 0 | r1 = 0;
| goto label_74;
| }
| if (r2 == 0) {
| label_74:
0x0001608e beq 0x15ffc | goto label_3;
| }
0x00016090 cmp r2, r3 |
| if (r2 < r3) {
0x00016092 blt.w 0x16534 | goto label_75;
| }
0x00016096 str.w sb, [sp, 0x44] | __asm ("str.w sb, [var_44h]");
0x0001609a mov r5, r1 | r5 = r1;
0x0001609c str.w r8, [sp, 0x48] | __asm ("str.w r8, [var_48h]");
0x000160a0 add r2, sp, 0x54 | r2 += var_sp_54h;
0x000160a2 ldr r7, [sp, 0x1c] | r7 = var_1ch;
0x000160a4 ldr.w sb, [sp, 0x24] | sb = var_24h;
0x000160a8 ldr.w r8, [sp, 0x90] | r8 = *(arg_90h);
0x000160ac str r1, [sp, 0x40] | var_sp_40h = r1;
0x000160ae str r1, [sp, 0x34] | var_5ch = r1;
0x000160b0 str r2, [sp, 0x38] | var_38h = r2;
0x000160b2 str r6, [sp, 0x4c] | var_4ch = r6;
| do {
0x000160b4 ldrd r0, r2, [r7, 0x30] | __asm ("ldrd r0, r2, [r7, 0x30]");
0x000160b8 asrs r1, r3, 0x1f | r1 = r3 >> 0x1f;
0x000160ba cmp r0, r3 |
0x000160bc sbcs r2, r1 | __asm ("sbcs r2, r1");
| if (r0 > r3) {
0x000160be blo 0x16158 |
0x000160c0 ldr r4, [sl, -0x60] | r4 = *((sl - 0x60));
0x000160c4 ldr r0, [fp, -0x60] | r0 = var_60h;
0x000160c8 mov r1, r4 | r1 = r4;
0x000160ca blx 0xe3b0 | fcn_0000e3b0 ();
0x000160cc ldrd r2, r8, [r2, -0x0]! | __asm ("ldrd r2, r8, [r2, -0x0]!");
| if (r0 == r3) {
0x000160d0 beq.w 0x164ce | goto label_76;
| }
0x000160d4 mov r1, r4 | r1 = r4;
0x000160d6 ldr r4, [r7] | r4 = *(r7);
0x000160d8 mov r0, r4 | r0 = r4;
0x000160da blx 0xe3b0 | r0 = fcn_0000e3b0 ();
0x000160de cmp r0, 0 |
| if (r0 == 0) {
0x000160e0 beq.w 0x164ce | goto label_76;
| }
0x000160e4 mov r0, r4 | r0 = r4;
0x000160e6 mov r1, sb | r1 = sb;
0x000160e8 bl 0x1596c | r0 = fcn_0001596c (r0, r1);
0x000160ec adds r4, r0, 1 | r4 = r0 + 1;
0x000160ee mov r6, r0 | r6 = r0;
| if (r4 == r0) {
0x000160f0 beq.w 0x162f8 | goto label_22;
| }
0x000160f4 ldr r2, [sl, -0x20] | r2 = *((sl - 0x20));
0x000160f8 movs r1, 0 | r1 = 0;
0x000160fa str.w sb, [sp, 4] | __asm ("str.w sb, [var_4h]");
0x000160fe ldr r3, [r7] | r3 = *(r7);
0x00016100 str r3, [sp] | *(sp) = r3;
0x00016102 ldr r3, [sp, 0x38] | r3 = var_38h;
0x00016104 bl 0x15710 | fcn_00015710 (r0, r1, r2, r3, r4, r5, r6);
0x00016108 str r0, [sp, 0x40] | var_sp_40h = r0;
| if (r0 == 0) {
0x0001610a cbnz r0, 0x1614c |
0x0001610c ldr r1, [sp, 0x38] | r1 = var_38h;
0x0001610e movs r2, 0x10 | r2 = 0x10;
0x00016110 sub.w r0, sl, 0x1c | r0 = sl - 0x1c;
0x00016114 blx 0xdbec | sysconf ();
0x00016118 ldr r3, [sp, 0x3c] | r3 = var_54h;
0x0001611a cmp r3, 1 |
| if (r3 < 1) {
0x0001611c bls.w 0x16356 | goto label_77;
| }
| label_39:
0x00016120 cmp r0, 0 |
| if (r0 != 0) {
0x00016122 bne.w 0x164ec | goto label_40;
| }
0x00016126 movs r2, 1 | r2 = 1;
| label_41:
0x00016128 ldrd r1, r3, [sl, -0x8] | __asm ("ldrd r1, r3, [sl, -0x8]");
0x0001612c orrs r3, r1 | r3 |= r1;
| if (r3 == r1) {
0x0001612e beq.w 0x168b2 | goto label_78;
| }
0x00016132 ldr r2, [sl, -0x20] | r2 = *((sl - 0x20));
0x00016136 mov r0, r6 | r0 = r6;
0x00016138 str.w sb, [sp, 4] | __asm ("str.w sb, [var_4h]");
0x0001613c ldr r3, [r7] | r3 = *(r7);
0x0001613e str r3, [sp] | *(sp) = r3;
0x00016140 ldr r3, [sp, 0x38] | r3 = var_38h;
0x00016142 bl 0x15710 | r0 = fcn_00015710 (r0, r1, r2, r3, r4, r5, r6);
0x00016146 cmp r0, 0 |
| if (r0 == 0) {
0x00016148 beq.w 0x164d4 | goto label_79;
| }
| }
| label_13:
0x0001614c mov r0, r6 | r0 = r6;
0x0001614e blx 0xe0ac | fcn_0000e0ac ();
| label_20:
0x00016152 mov.w r3, -1 | r3 = -1;
0x00016156 str r3, [sp, 0x40] | var_sp_40h = r3;
| }
| label_17:
0x00016158 adds r5, 1 | r5++;
0x0001615a adds r7, 0x70 | r7 += 0x70;
0x0001615c cmp r8, r5 |
| if (r8 == r5) {
0x0001615e beq.w 0x16772 | goto label_80;
| }
0x00016162 ldr r3, [sl, -0x20] | r3 = *((sl - 0x20));
0x00016166 b 0x160b4 |
| } while (1);
| label_64:
0x00016168 ldr r2, [fp, -0x5c] | r2 = var_5ch;
0x0001616c ldr r3, [sl, -0x5c] | r3 = *((sl - 0x5c));
0x00016170 cmp r2, r3 |
| if (r2 >= r3) {
0x00016172 bge.w 0x15f70 | goto label_4;
| }
0x00016176 cmp r4, 0 |
| if (r4 > 0) {
0x00016178 ble 0x16184 |
0x0001617a ldr r3, [sl, -0x20] | r3 = *((sl - 0x20));
0x0001617e cmp r3, r4 |
| if (r3 == r4) {
0x00016180 beq.w 0x166d2 | goto label_81;
| }
| }
| label_28:
0x00016184 ldr r3, [fp, -0x54] | r3 = var_54h;
0x00016188 cmp r3, 0 |
| if (r3 == 0) {
0x0001618a beq.w 0x1685e | goto label_82;
| }
0x0001618e ldr r2, [sp, 0x14] | r2 = var_14h;
0x00016190 cmp r2, 3 |
| if (r2 != 3) {
0x00016192 bne 0x16290 | goto label_29;
| }
0x00016194 ldr.w r2, [pc, 0x920] | r2 = *(0x16ab8);
0x00016198 ldr.w r4, [r8, r2] | r4 = *((r8 + r2));
0x0001619c ldr r2, [r4] | r2 = *(r4);
0x0001619e cmp r2, 2 |
| if (r2 <= 2) {
0x000161a0 ble.w 0x15fa4 | goto label_5;
| }
0x000161a4 ldr.w r1, [pc, 0x91c] | r1 = *(0x00016ac4);
0x000161a8 ldr r2, [fp, -0x60] | r2 = var_60h;
0x000161ac ldr r0, [sp, 0x14] | r0 = var_14h;
0x000161ae add r1, pc | r1 += pc;
0x000161b0 bl 0x30d1c | zbx_zabbix_log ();
0x000161b4 ldr r3, [fp, -0x54] | r3 = var_54h;
0x000161b8 b 0x15fa4 | goto label_5;
| label_66:
0x000161ba ldr r4, [sp, 0x24] | r4 = var_24h;
0x000161bc ldr r0, [sl, -0x60] | r0 = *((sl - 0x60));
0x000161c0 mov r1, r4 | r1 = r4;
0x000161c2 bl 0x1596c | r0 = fcn_0001596c (r0, r1);
0x000161c6 adds r3, r0, 1 | r3 = r0 + 1;
0x000161c8 mov r5, r0 | r5 = r0;
| if (r3 == r0) {
0x000161ca beq.w 0x162f8 | goto label_22;
| }
0x000161cc strh r5, [r2, 4] | *((r2 + 4)) = r5;
0x000161ce ldr r2, [fp, -0x20] | r2 = var_20h;
0x000161d2 movs r1, 0 | r1 = 0;
0x000161d4 str r4, [sp, 4] | var_4h = r4;
0x000161d6 add r4, sp, 0x54 | r4 += var_sp_54h;
0x000161d8 ldr r3, [sl, -0x60] | r3 = *((sl - 0x60));
0x000161dc str r3, [sp] | *(sp) = r3;
0x000161de mov r3, r4 | r3 = r4;
0x000161e0 bl 0x15710 | r0 = fcn_00015710 (r0, r1, r2, r3, r4, r5, r6);
0x000161e4 cmp r0, 0 |
| if (r0 != 0) {
0x000161e6 bne.w 0x1641a | goto label_83;
| }
0x000161ea movs r2, 0x10 | r2 = 0x10;
0x000161ec mov r1, r4 | r1 = r4;
0x000161ee sub.w r0, fp, 0x1c | r0 = fp - 0x1c;
0x000161f2 blx 0xdbec | r0 = sysconf ();
0x000161f6 cmp r0, 0 |
| if (r0 != 0) {
0x000161f8 bne.w 0x1684e | goto label_84;
| }
0x000161fc ldrd r1, r3, [fp, -0x8] | __asm ("ldrd r1, r3, [fp, -0x8]");
0x00016200 orrs r3, r1 | r3 |= r1;
| if (r3 != r1) {
0x00016202 beq 0x16230 |
0x00016204 ldr r3, [sp, 0x24] | r3 = var_24h;
0x00016206 mov r0, r5 | r0 = r5;
0x00016208 ldr r2, [fp, -0x20] | r2 = var_20h;
0x0001620c str r3, [sp, 4] | var_4h = r3;
0x0001620e ldr r3, [sl, -0x60] | r3 = *((sl - 0x60));
0x00016212 str r3, [sp] | *(sp) = r3;
0x00016214 mov r3, r4 | r3 = r4;
0x00016216 bl 0x15710 | r0 = fcn_00015710 (r0, r1, r2, r3, r4, r5, r6);
0x0001621a cmp r0, 0 |
| if (r0 != 0) {
0x0001621c bne.w 0x1641a | goto label_83;
| }
0x00016220 mov r1, r4 | r1 = r4;
0x00016222 movs r2, 0x10 | r2 = 0x10;
0x00016224 mov r0, fp | r0 = fp;
0x00016226 blx 0xdbec | r0 = sysconf ();
0x0001622a cmp r0, 0 |
| if (r0 != 0) {
0x0001622c bne.w 0x1684e | goto label_84;
| }
| }
0x00016230 mov r0, r5 | r0 = r5;
0x00016232 blx 0xe0ac | r0 = fcn_0000e0ac ();
0x00016236 cmp r0, 0 |
| if (r0 == 0) {
0x00016238 beq.w 0x15f98 | goto label_6;
| }
| label_37:
0x0001623c mov fp, r7 |
0x0001623e ldrd r7, r4, [sp, 0x24] | __asm ("ldrd r7, r4, [var_24h]");
0x00016242 blx 0xe3d4 | r0 = fcn_0000e3d4 ();
0x00016246 ldr r0, [r0] | r0 = *(r0);
0x00016248 ldr r5, [r7] | r5 = *(r7);
0x0001624a ldr.w r6, [fp] | r6 = *(fp);
0x0001624e bl 0x30b74 | zbx_strerror ();
0x00016252 ldr.w r1, [pc, 0x874] |
0x00016256 mov r3, r0 | r3 = r0;
0x00016258 mov r2, r6 | r2 = r6;
0x0001625a mov r0, r5 | r0 = r5;
0x0001625c add r1, pc | r1 = 0x2cd2a;
0x0001625e bl 0x44820 | zbx_dsprintf ()
0x00016262 str r0, [r7] | *(r7) = r0;
| if (r4 != 0) {
| label_10:
0x00016264 cbz r4, 0x1626c |
| label_15:
0x00016266 mov r0, r4 | r0 = r4;
0x00016268 blx 0xde30 | fcn_0000de30 ();
| }
| label_16:
0x0001626c movs r4, 0 | r4 = 0;
| label_23:
0x0001626e ldr.w r2, [pc, 0x85c] | r2 = *(0x00016acc);
0x00016272 ldr.w r3, [pc, 0x838] | r3 = *(0x16aae);
0x00016276 add r2, pc | r2 += pc;
0x00016278 ldr r3, [r2, r3] | r3 = *((r2 + r3));
0x0001627a ldr r2, [r3] | r2 = *(0x16aae);
0x0001627c ldr r3, [sp, 0x64] | r3 = var_64h;
0x0001627e eors r2, r3 | r2 ^= r3;
0x00016280 mov.w r3, 0 | r3 = 0;
| if (r2 != r3) {
0x00016284 bne.w 0x16b42 | goto label_85;
| }
0x00016288 mov r0, r4 | r0 = r4;
0x0001628a add sp, 0x6c |
0x0001628c pop.w {r4, r5, r6, r7, r8, sb, sl, fp, pc} |
| label_29:
0x00016290 ldr.w r3, [pc, 0x824] | r3 = *(0x16ab8);
0x00016294 ldr.w r4, [r8, r3] | r4 = *((r8 + r3));
0x00016298 ldr r3, [r4] | r3 = *(r4);
0x0001629a cmp r3, 2 |
| if (r3 <= 2) {
0x0001629c ble.w 0x16004 | goto label_7;
| }
0x000162a0 ldr.w r1, [pc, 0x82c] | r1 = *(0x00016ad0);
0x000162a4 movs r0, 3 | r0 = 3;
0x000162a6 ldr r2, [fp, -0x60] | r2 = var_60h;
0x000162aa add r1, pc | r1 += pc;
0x000162ac bl 0x30d1c | zbx_zabbix_log ();
0x000162b0 b 0x16004 | goto label_7;
| label_67:
0x000162b2 ldr r3, [r4] | r3 = *(r4);
0x000162b4 cmp r3, 3 |
| if (r3 > 3) {
0x000162b6 bgt 0x1633c | goto label_86;
| }
| label_12:
0x000162b8 movs r3, 0 | r3 = 0;
0x000162ba str r3, [fp, -0x54] | var_54h = r3;
0x000162be b 0x15faa | goto label_8;
| label_65:
0x000162c0 movs r2, 0x10 | r2 = 0x10;
0x000162c2 sub.w r1, sl, 0x1c | r1 = sl - 0x1c;
0x000162c6 sub.w r0, fp, 0x1c | r0 = fp - 0x1c;
0x000162ca blx 0xdbec | r0 = sysconf ();
0x000162ce cmp r0, 0 |
| if (r0 != 0) {
0x000162d0 bne.w 0x15ffc | goto label_3;
| }
0x000162d4 ldrd r0, r2, [fp, -0x8] | __asm ("ldrd r0, r2, [fp, -0x8]");
0x000162d8 ldrd r1, r3, [sl, -0x8] | __asm ("ldrd r1, r3, [sl, -0x8]");
0x000162dc cmp r2, r3 |
0x000162de it eq |
| if (r2 != r3) {
0x000162e0 cmpeq r0, r1 | __asm ("cmpeq r0, r1");
| goto label_87;
| }
| if (r2 != r3) {
| label_87:
0x000162e2 bne.w 0x15f92 | goto label_9;
| }
0x000162e6 movs r2, 0x10 | r2 = 0x10;
0x000162e8 mov r1, sl | r1 = sl;
0x000162ea mov r0, fp | r0 = fp;
0x000162ec blx 0xdbec | r0 = sysconf ();
0x000162f0 cmp r0, 0 |
| if (r0 != 0) {
0x000162f2 bne.w 0x15f92 | goto label_9;
| }
0x000162f6 b 0x15f98 | goto label_6;
| label_22:
0x000162f8 invalid |
0x000162fa b 0x16264 | goto label_10;
| label_72:
0x000162fc ldrd r5, r0, [fp, -0x40] | __asm ("ldrd r5, r0, [var_40h]");
0x00016300 ldrd r4, r1, [sl, -0x40] | __asm ("ldrd r4, r1, [sl, -0x40]");
0x00016304 cmp r0, r1 |
0x00016306 it eq |
| if (r0 == r1) {
0x00016308 cmpeq r5, r4 | __asm ("cmpeq r5, r4");
| }
| if (r0 != r1) {
0x0001630a bne.w 0x16416 | goto label_88;
| }
0x0001630e ldrd r5, r0, [fp, -0x48] | __asm ("ldrd r5, r0, [var_48h]");
0x00016312 ldrd r4, r1, [sl, -0x48] | __asm ("ldrd r4, r1, [sl, -0x48]");
0x00016316 cmp r0, r1 |
0x00016318 it eq |
| if (r0 == r1) {
0x0001631a cmpeq r5, r4 | __asm ("cmpeq r5, r4");
| }
| if (r0 != r1) {
0x0001631c bne 0x16416 | goto label_88;
| }
0x0001631e ldr r1, [sp, 0x94] | r1 = *(arg_94h);
0x00016320 cmp r1, 2 |
| if (r1 != 2) {
0x00016322 bne.w 0x168be | goto label_89;
| }
0x00016326 ldrd r5, r0, [fp, -0x38] | __asm ("ldrd r5, r0, [var_bp_38h]");
0x0001632a ldrd r4, r1, [sl, -0x38] | __asm ("ldrd r4, r1, [sl, -0x38]");
0x0001632e cmp r0, r1 |
0x00016330 it eq |
| if (r0 == r1) {
0x00016332 cmpeq r5, r4 | __asm ("cmpeq r5, r4");
| }
0x00016334 ite eq |
| if (r0 != r1) {
0x00016336 moveq r5, 1 | r5 = 1;
| }
| if (r0 == r1) {
0x00016338 movne r5, 0 | r5 = 0;
| }
0x0001633a b 0x1607c | goto label_11;
| label_86:
0x0001633c ldr.w r2, [pc, 0x794] | r2 = *(0x00016ad4);
0x00016340 movs r0, 4 | r0 = 4;
0x00016342 ldr.w r1, [pc, 0x794] | r1 = *(0x00016ad8);
0x00016344 asrs r4, r2, 0x1e | r4 = r2 >> 0x1e;
0x00016346 ldr r3, [fp, -0x60] | r3 = var_60h;
0x0001634a add r2, pc | r2 += pc;
0x0001634c adds r2, 0xc | r2 += 0xc;
0x0001634e add r1, pc | r1 += pc;
0x00016350 bl 0x30d1c | zbx_zabbix_log ();
0x00016354 b 0x162b8 | goto label_12;
| label_77:
0x00016356 ldrd r4, r2, [fp, -0x40] | __asm ("ldrd r4, r2, [var_40h]");
0x0001635a ldrd r1, r3, [r7, 0x20] | __asm ("ldrd r1, r3, [r7, 0x20]");
0x0001635e cmp r2, r3 |
0x00016360 it eq |
| if (r2 == r3) {
0x00016362 cmpeq r4, r1 | __asm ("cmpeq r4, r1");
| }
| if (r2 == r3) {
0x00016364 beq.w 0x1687e | goto label_90;
| }
0x00016368 cmp r0, 0 |
| if (r0 != 0) {
0x0001636a bne.w 0x164ec | goto label_40;
| }
0x0001636e ldrd r1, r3, [sl, -0x8] | __asm ("ldrd r1, r3, [sl, -0x8]");
0x00016372 orrs r3, r1 | r3 |= r1;
| if (r3 == r1) {
0x00016374 beq 0x163d8 | goto label_91;
| }
0x00016376 ldr r2, [sl, -0x20] | r2 = *((sl - 0x20));
0x0001637a mov r0, r6 | r0 = r6;
0x0001637c str.w sb, [sp, 4] | __asm ("str.w sb, [var_4h]");
0x00016380 ldr r3, [r7] | r3 = *(r7);
0x00016382 str r3, [sp] | *(sp) = r3;
0x00016384 ldr r3, [sp, 0x38] | r3 = var_38h;
0x00016386 bl 0x15710 | r0 = fcn_00015710 (r0, r1, r2, r3, r4, r5, r6);
0x0001638a cmp r0, 0 |
| if (r0 != 0) {
0x0001638c bne.w 0x1614c | goto label_13;
| }
0x00016390 ldr r1, [sp, 0x38] | r1 = var_38h;
0x00016392 movs r2, 0x10 | r2 = 0x10;
0x00016394 mov r0, sl | r0 = sl;
0x00016396 blx 0xdbec | r0 = sysconf ();
0x0001639a mov r3, r0 | r3 = r0;
| label_18:
0x0001639c ldrd r4, r1, [fp, -0x40] | __asm ("ldrd r4, r1, [var_40h]");
0x000163a0 ldrd r0, r2, [r7, 0x20] | __asm ("ldrd r0, r2, [r7, 0x20]");
0x000163a4 cmp r1, r2 |
0x000163a6 it eq |
| if (r1 == r2) {
0x000163a8 cmpeq r4, r0 | __asm ("cmpeq r4, r0");
| }
| if (r1 == r2) {
0x000163aa bne 0x163d2 |
0x000163ac ldrd r4, r1, [fp, -0x48] | __asm ("ldrd r4, r1, [var_48h]");
0x000163b0 ldrd r0, r2, [r7, 0x18] | __asm ("ldrd r0, r2, [r7, 0x18]");
0x000163b4 cmp r1, r2 |
0x000163b6 it eq |
| if (r1 == r2) {
0x000163b8 cmpeq r4, r0 | __asm ("cmpeq r4, r0");
| }
| if (r1 != r2) {
0x000163ba bne 0x163d2 | goto label_92;
| }
0x000163bc ldr r2, [sp, 0x94] | r2 = *(arg_94h);
0x000163be cmp r2, 2 |
| if (r2 != 2) {
0x000163c0 bne 0x16424 | goto label_93;
| }
0x000163c2 ldrd r4, r1, [fp, -0x38] | __asm ("ldrd r4, r1, [var_bp_38h]");
0x000163c6 ldrd r0, r2, [r7, 0x28] | __asm ("ldrd r0, r2, [r7, 0x28]");
0x000163ca cmp r1, r2 |
0x000163cc it eq |
| if (r1 == r2) {
0x000163ce cmpeq r4, r0 | __asm ("cmpeq r4, r0");
| }
| if (r1 == r2) {
0x000163d0 beq 0x16424 | goto label_93;
| }
| }
| label_92:
0x000163d2 cmp r3, 0 |
| if (r3 != 0) {
0x000163d4 bne.w 0x164ec | goto label_40;
| }
| label_91:
0x000163d8 mov r4, r6 | r4 = r6;
0x000163da ldr.w sb, [sp, 0x44] | sb = var_44h;
0x000163de mov r0, r4 | r0 = r4;
0x000163e0 ldrd r8, r6, [sp, 0x48] | __asm ("ldrd r8, r6, [var_48h]");
0x000163e4 blx 0xe0ac | r0 = fcn_0000e0ac ();
0x000163e8 cmp r0, 0 |
| if (r0 == 0) {
0x000163ea beq 0x1649a | goto label_56;
| }
| do {
0x000163ec mov fp, r7 |
0x000163ee ldrd r7, r4, [sp, 0x24] | __asm ("ldrd r7, r4, [var_24h]");
0x000163f2 blx 0xe3d4 | r0 = fcn_0000e3d4 ();
0x000163f6 ldr r0, [r0] | r0 = *(r0);
0x000163f8 ldr r5, [r7] | r5 = *(r7);
0x000163fa ldr.w r6, [fp] | r6 = *(fp);
0x000163fe bl 0x30b74 | zbx_strerror ();
0x00016402 ldr.w r1, [pc, 0x6d8] |
0x00016406 mov r3, r0 | r3 = r0;
0x00016408 mov r2, r6 | r2 = r6;
0x0001640a mov r0, r5 | r0 = r5;
0x0001640c add r1, pc | r1 = 0x2ceee;
0x0001640e bl 0x44820 | zbx_dsprintf ()
0x00016412 str r0, [r7] | *(r7) = r0;
0x00016414 b 0x16264 | goto label_10;
| label_88:
0x00016416 movs r5, 0 | r5 = 0;
0x00016418 b 0x1607c | goto label_11;
| label_83:
0x0001641a mov r0, r5 | r0 = r5;
0x0001641c ldr r4, [sp, 0x28] | r4 = var_28h;
0x0001641e blx 0xe0ac | fcn_0000e0ac ();
0x00016422 b 0x16264 | goto label_10;
| label_93:
0x00016424 cmp r3, 0 |
| if (r3 != 0) {
0x00016426 bne 0x164ec | goto label_40;
| }
| label_19:
0x00016428 mov r4, r6 | r4 = r6;
0x0001642a ldr.w sb, [sp, 0x44] | sb = var_44h;
0x0001642e ldrd r8, r6, [sp, 0x48] | __asm ("ldrd r8, r6, [var_48h]");
0x00016432 movs r2, 1 | r2 = 1;
| label_42:
0x00016434 mov r0, r4 | r0 = r4;
0x00016436 str r2, [sp, 0x34] | var_5ch = r2;
0x00016438 blx 0xe0ac | r0 = fcn_0000e0ac ();
0x0001643c cmp r0, 0 |
0x0001643e bne 0x163ec |
| } while (r0 != 0);
0x00016440 ldr r2, [sp, 0x34] | r2 = var_5ch;
0x00016442 str r2, [sp, 0x40] | var_sp_40h = r2;
| label_34:
0x00016444 ldr r3, [sp, 0x40] | r3 = var_sp_40h;
0x00016446 adds r3, 1 | r3++;
0x00016448 cmp r3, 5 |
| if (r3 > 5) {
0x0001644a bhi 0x164c4 | goto label_94;
| }
0x0001644c adr r2, 8 | r2 = 8;
0x0001644e ldr.w r3, [r2, r3, lsl 2] | offset_0 = r3 << 2;
| r3 = *((r2 + offset_0));
0x00016452 add r2, r3 | r2 += r3;
| /* switch table (6 cases) at 0x16458 */
0x00016454 bx r2 | return uint32_t (*r2)() ();
| label_21:
0x00016470 movs r2, 0x10 | r2 = 0x10;
0x00016472 sub.w r1, sl, 0x1c | r1 = sl - 0x1c;
0x00016476 sub.w r0, fp, 0x1c | r0 = fp - 0x1c;
0x0001647a blx 0xdbec | r0 = sysconf ();
0x0001647e cmp r0, 0 |
| if (r0 != 0) {
0x00016480 bne.w 0x15ffc | goto label_3;
| }
0x00016484 movs r2, 0x10 | r2 = 0x10;
0x00016486 mov r1, sl | r1 = sl;
0x00016488 mov r0, fp | r0 = fp;
0x0001648a blx 0xdbec | r0 = sysconf ();
0x0001648e cmp r0, 0 |
| if (r0 != 0) {
0x00016490 bne.w 0x15ffc | goto label_3;
| }
0x00016494 cmp r5, 0 |
| if (r5 != 0) {
0x00016496 bne.w 0x15f98 | goto label_6;
| }
| label_56:
0x0001649a movs r2, 0x32 | r2 = 0x32;
0x0001649c ldr.w r3, [pc, 0x618] | r3 = *(0x16ab8);
0x000164a0 strb.w r2, [sb] | *(sb) = r2;
0x000164a4 ldr r2, [sp, 0x20] | r2 = var_sp_20h;
0x000164a6 str r2, [sl, -0x4c] | *((sl - 0x4c)) = r2;
0x000164aa ldr.w r4, [r8, r3] | r4 = *((r8 + r3));
0x000164ae b 0x15fb0 | goto label_14;
| label_30:
0x000164b6 movs r3, 1 | r3 = 1;
0x000164b8 str.w r3, [r8, 0xc] | __asm ("str.w r3, [r8, 0xc]");
0x000164bc cmp r4, 0 |
| if (r4 != 0) {
0x000164be bne.w 0x16266 | goto label_15;
| }
0x000164c2 b 0x1626c | goto label_16;
| label_94:
0x000164c4 ldr.w r3, [pc, 0x5f0] | r3 = *(0x16ab8);
0x000164c8 ldr.w r4, [r8, r3] | r4 = *((r8 + r3));
0x000164cc b 0x15fb0 | goto label_14;
| label_76:
0x000164ce movs r3, 1 | r3 = 1;
0x000164d0 str r3, [sp, 0x34] | var_5ch = r3;
0x000164d2 b 0x16158 | goto label_17;
| label_79:
0x000164d4 movs r2, 0x10 | r2 = 0x10;
0x000164d6 ldr r1, [sp, 0x38] | r1 = var_38h;
0x000164d8 mov r0, sl | r0 = sl;
0x000164da blx 0xdbec | sysconf ();
0x000164de ldr r2, [sp, 0x3c] | r2 = var_54h;
0x000164e0 mov r3, r0 | r3 = r0;
0x000164e2 cmp r2, 1 |
| if (r2 < 1) {
0x000164e4 bls.w 0x1639c | goto label_18;
| }
0x000164e8 cmp r0, 0 |
| if (r0 == 0) {
0x000164ea beq 0x16428 | goto label_19;
| }
| label_40:
0x000164ec mov r0, r6 | r0 = r6;
0x000164ee blx 0xe0ac | r0 = fcn_0000e0ac ();
0x000164f2 cmp r0, 0 |
| if (r0 == 0) {
0x000164f4 beq.w 0x16158 | goto label_17;
| }
0x000164f8 blx 0xe3d4 | r0 = fcn_0000e3d4 ();
0x000164fc ldr r0, [r0] | r0 = *(r0);
0x000164fe ldr.w r4, [sb] | r4 = *(sb);
0x00016502 ldr r6, [r7] | r6 = *(r7);
0x00016504 bl 0x30b74 | zbx_strerror ();
0x00016508 ldr.w r1, [pc, 0x5d4] | r1 = *(0x00016ae0);
0x0001650c mov r3, r0 | r3 = r0;
0x0001650e mov r2, r6 | r2 = r6;
0x00016510 mov r0, r4 | r0 = r4;
0x00016512 add r1, pc | r1 += pc;
0x00016514 bl 0x44820 | zbx_dsprintf ()
0x00016518 str.w r0, [sb] | __asm ("str.w r0, [sb]");
0x0001651c b 0x16152 | goto label_20;
| label_73:
0x0001651e ldrd r4, r1, [fp, -0x8] | __asm ("ldrd r4, r1, [fp, -0x8]");
0x00016522 ldrd r0, r3, [sl, -0x8] | __asm ("ldrd r0, r3, [sl, -0x8]");
0x00016526 cmp r1, r3 |
0x00016528 it eq |
| if (r1 != r3) {
0x0001652a cmpeq r4, r0 | __asm ("cmpeq r4, r0");
| goto label_95;
| }
| if (r1 == r3) {
| label_95:
0x0001652c beq 0x16470 | goto label_21;
| }
0x0001652e cmp r2, 0 |
| if (r2 == 0) {
0x00016530 beq.w 0x15ffc | goto label_3;
| }
| label_75:
0x00016534 ldr r0, [sl, -0x60] | r0 = *((sl - 0x60));
0x00016538 ldr r1, [sp, 0x24] | r1 = var_24h;
0x0001653a bl 0x1596c | r0 = fcn_0001596c (r0, r1);
0x0001653e adds r3, r0, 1 | r3 = r0 + 1;
0x00016540 mov r4, r0 | r4 = r0;
| if (r3 == r0) {
0x00016542 beq.w 0x162f8 | goto label_22;
| }
0x00016546 ldr r3, [sp, 0x24] | r3 = var_24h;
0x00016548 movs r1, 0 | r1 = 0;
0x0001654a ldr r2, [fp, -0x20] | r2 = var_20h;
0x0001654e str r3, [sp, 4] | var_4h = r3;
0x00016550 ldr r3, [sl, -0x60] | r3 = *((sl - 0x60));
0x00016554 str r3, [sp] | *(sp) = r3;
0x00016556 add r3, sp, 0x54 | r3 += var_sp_54h;
0x00016558 str r3, [sp, 0x34] | var_5ch = r3;
0x0001655a bl 0x15710 | r0 = fcn_00015710 (r0, r1, r2, r3, r4, r5, r6);
0x0001655e cmp r0, 0 |
| if (r0 != 0) {
0x00016560 bne.w 0x168c4 | goto label_54;
| }
0x00016564 ldr r1, [sp, 0x34] | r1 = var_5ch;
0x00016566 movs r2, 0x10 | r2 = 0x10;
0x00016568 sub.w r0, fp, 0x1c | r0 = fp - 0x1c;
0x0001656c blx 0xdbec | r0 = sysconf ();
0x00016570 cmp r0, 0 |
| if (r0 == 0) {
0x00016572 beq.w 0x168ce | goto label_96;
| }
| label_55:
0x00016576 mov r0, r4 | r0 = r4;
0x00016578 blx 0xe0ac | r0 = fcn_0000e0ac ();
0x0001657c cmp r0, 0 |
| if (r0 == 0) {
0x0001657e beq.w 0x15ffc | goto label_3;
| }
| label_43:
0x00016582 mov fp, r7 |
0x00016584 ldrd r7, r4, [sp, 0x24] | __asm ("ldrd r7, r4, [var_24h]");
0x00016588 blx 0xe3d4 | r0 = fcn_0000e3d4 ();
0x0001658c ldr r0, [r0] | r0 = *(r0);
0x0001658e ldr r5, [r7] | r5 = *(r7);
0x00016590 ldr.w r6, [fp] | r6 = *(fp);
0x00016594 bl 0x30b74 | zbx_strerror ();
0x00016598 ldr.w r1, [pc, 0x548] | r1 = *(0x00016ae4);
0x0001659c mov r3, r0 | r3 = r0;
0x0001659e mov r2, r6 | r2 = r6;
0x000165a0 mov r0, r5 | r0 = r5;
0x000165a2 add r1, pc | r1 += pc;
0x000165a4 bl 0x44820 | zbx_dsprintf ()
0x000165a8 str r0, [r7] | *(r7) = r0;
0x000165aa b 0x16264 | goto label_10;
| label_60:
0x000165ac cmp.w sl, 1 |
| if (sl == 1) {
0x000165b0 beq.w 0x1626e | goto label_23;
| }
0x000165b4 ldr r3, [sp, 0x90] | r3 = *(arg_90h);
0x000165b6 cmp r3, 1 |
| if (r3 <= 1) {
0x000165b8 ble.w 0x1626e | goto label_23;
| }
| label_44:
0x000165bc ldr.w r3, [pc, 0x4f8] |
0x000165c0 ldr.w r3, [sb, r3] | r3 = *((sb + r3));
0x000165c4 ldr r3, [r3] | r3 = *(0x16ab8);
0x000165c6 cmp r3, 3 |
| if (r3 > 3) {
0x000165c8 bgt.w 0x16a12 | goto label_97;
| }
| label_53:
0x000165cc ldr.w r5, [pc, 0x518] |
0x000165d0 movs r6, 1 | r6 = 1;
0x000165d2 ldr r7, [sp, 0x2c] | r7 = var_2ch;
0x000165d4 movs r2, 0 | r2 = 0;
0x000165d6 movw r1, 0x4ad | r1 = 0x4ad;
0x000165da str r6, [sp] | *(sp) = r6;
0x000165dc add r5, pc | r5 = 0x2d0c8;
0x000165de mov r3, r7 | r3 = r7;
0x000165e0 mov r0, r5 | r0 = r5;
0x000165e2 bl 0x40d3c | r0 = zbx_calloc2 ();
0x000165e6 mov r3, r0 | r3 = r0;
0x000165e8 movs r2, 0 | r2 = 0;
0x000165ea mov r0, r5 | r0 = r5;
0x000165ec movw r1, 0x4ae | r1 = 0x4ae;
0x000165f0 mov r5, r3 | r5 = r3;
0x000165f2 str r6, [sp] | *(sp) = r6;
0x000165f4 ldr r3, [sp, 0x90] | r3 = *(arg_90h);
0x000165f6 bl 0x40d3c | zbx_calloc2 ();
0x000165fa cmp r7, 0 |
0x000165fc mov sb, r0 | sb = r0;
| if (r7 <= 0) {
0x000165fe ble.w 0x16a5c | goto label_98;
| }
0x00016602 ldr r3, [sp, 0x90] | r3 = *(arg_90h);
0x00016604 mov r1, r5 | r1 = r5;
0x00016606 strd sb, r5, [sp, 0x14] | __asm ("strd sb, r5, [var_14h]");
0x0001660a rsb.w lr, r4, 0 | lr = r4 - ;
0x0001660e mov ip, r4 |
0x00016610 subs r6, r3, 1 | r6 = r3 - 1;
0x00016612 ldr r3, [sp, 0x2c] | r3 = var_2ch;
0x00016614 adds r0, r4, r6 | r0 = r4 + r6;
0x00016616 str r6, [sp, 0x1c] | var_1ch = r6;
0x00016618 add.w fp, r5, r3 |
0x0001661c ldr r5, [sp, 0x90] | r5 = *(arg_90h);
0x0001661e mov sb, r3 | sb = r3;
| label_25:
0x00016620 cmp r5, 0 |
| if (r5 <= 0) {
0x00016622 ble 0x16660 | goto label_31;
| }
0x00016624 add.w r3, ip, -1 | r3 = ip + -1;
0x00016628 mov.w r7, -1 | r7 = -1;
0x0001662c movs r6, 0 | r6 = 0;
0x0001662e add.w r8, lr, 1 | r8 = lr + 1;
0x00016632 b 0x1663a |
| while (r2 > 1) {
| label_24:
0x00016634 cmp r0, r3 |
| if (r0 == r3) {
0x00016636 beq.w 0x16740 | goto label_99;
| }
0x0001663a mov sl, r3 | sl = r3;
0x0001663c ldrb r2, [r3, 1]! | r2 = *((r3 += 1));
0x00016640 subs r2, 0x31 | r2 -= 0x31;
0x00016642 cmp r2, 1 |
0x00016644 bhi 0x16634 |
| }
| if (r6 == 0) {
0x00016646 cbnz r6, 0x16660 |
0x00016648 add.w r7, r8, sl | r7 = r8 + sl;
0x0001664c movs r6, 1 | r6 = 1;
0x0001664e b 0x16634 | goto label_24;
| label_32:
0x00016650 cmp.w sl, -1 |
0x00016654 itttt ne |
| if (sl == -1) {
0x00016656 ldrne r3, [sp, 0x14] | r3 = var_14h;
| }
| if (sl == -1) {
0x00016658 movne r2, 0x31 | r2 = 0x31;
| }
| if (sl == -1) {
0x0001665a strbne r2, [r1] | *(r1) = r2;
| }
| if (sl != -1) {
0x0001665c strbne r2, [r3, r8] | *((r3 + r8)) = r2;
| goto label_31;
| }
| }
| label_31:
0x00016660 adds r1, 1 | r1++;
0x00016662 add r0, r5 | r0 += r5;
0x00016664 cmp fp, r1 |
0x00016666 add ip, r5 |
0x00016668 sub.w lr, lr, r5 | lr -= r5;
| if (fp != r1) {
0x0001666c bne 0x16620 | goto label_25;
| }
0x0001666e ldr r3, [sp, 0x90] | r3 = *(arg_90h);
0x00016670 ldr r2, [sp, 0x2c] | r2 = var_2ch;
0x00016672 ldrd sb, r5, [sp, 0x14] | __asm ("ldrd sb, r5, [var_14h]");
0x00016676 ldr r6, [sp, 0x1c] | r6 = var_1ch;
0x00016678 cmp r3, r2 |
| if (r3 < r2) {
0x0001667a blt.w 0x169c6 | goto label_100;
| }
0x0001667e mov r8, r2 | r8 = r2;
0x00016680 ldr r2, [sp, 0x90] | r2 = *(arg_90h);
0x00016682 subs r6, r4, 1 | r6 = r4 - 1;
0x00016684 movs r3, 0 | r3 = 0;
| label_27:
0x00016686 ldrb r1, [r5, r3] | r1 = *((r5 + r3));
0x00016688 cmp r1, 0x31 |
| if (r1 == 0x31) {
0x0001668a beq 0x166b6 | goto label_101;
| }
0x0001668c mov r0, r6 | r0 = r6;
0x0001668e movs r1, 0 | r1 = 0;
0x00016690 b 0x16698 |
| while (r7 > 1) {
| label_26:
0x00016692 adds r1, 1 | r1++;
0x00016694 cmp r2, r1 |
| if (r2 <= r1) {
0x00016696 ble 0x166b6 | goto label_101;
| }
0x00016698 ldrb r7, [r0, 1]! | r7 = *((r0 += 1));
0x0001669c subs r7, 0x31 | r7 -= 0x31;
0x0001669e cmp r7, 1 |
0x000166a0 bhi 0x16692 |
| }
0x000166a2 ldrb.w r7, [sb, r1] | r7 = *((sb + r1));
0x000166a6 cmp r7, 0x31 |
| if (r7 == 0x31) {
0x000166a8 beq 0x16692 | goto label_26;
| }
0x000166aa stm.w sp, {r1, r5, sb} | *(sp) = r1;
| *((sp + 4)) = r5;
| *((sp + 8)) = sb;
0x000166ae mov r0, r4 | r0 = r4;
0x000166b0 mov r1, r8 | r1 = r8;
0x000166b2 bl 0x15390 | fcn_00015390 (r0, r1, r2, r3, r4, r5);
| label_101:
0x000166b6 adds r3, 1 | r3++;
0x000166b8 add r6, r2 | r6 += r2;
0x000166ba cmp r8, r3 |
| if (r8 != r3) {
0x000166bc bne 0x16686 | goto label_27;
| }
| label_52:
0x000166be cmp.w sb, 0 |
| if (sb != 0) {
0x000166c2 beq 0x166ca |
0x000166c4 mov r0, sb | r0 = sb;
0x000166c6 blx 0xde30 | fcn_0000de30 ();
| }
| label_57:
0x000166ca mov r0, r5 | r0 = r5;
0x000166cc blx 0xde30 | fcn_0000de30 ();
0x000166d0 b 0x1626e | goto label_23;
| label_81:
0x000166d2 movs r2, 0x10 | r2 = 0x10;
0x000166d4 sub.w r1, sl, 0x1c | r1 = sl - 0x1c;
0x000166d8 sub.w r0, fp, 0x1c | r0 = fp - 0x1c;
0x000166dc blx 0xdbec | r0 = sysconf ();
0x000166e0 cmp r0, 0 |
| if (r0 != 0) {
0x000166e2 bne.w 0x15ffc | goto label_3;
| }
0x000166e6 ldrd r0, r2, [fp, -0x8] | __asm ("ldrd r0, r2, [fp, -0x8]");
0x000166ea ldrd r1, r3, [sl, -0x8] | __asm ("ldrd r1, r3, [sl, -0x8]");
0x000166ee cmp r2, r3 |
0x000166f0 it eq |
| if (r2 != r3) {
0x000166f2 cmpeq r0, r1 | __asm ("cmpeq r0, r1");
| goto label_102;
| }
| if (r2 != r3) {
| label_102:
0x000166f4 bne.w 0x16184 | goto label_28;
| }
0x000166f8 movs r2, 0x10 | r2 = 0x10;
0x000166fa mov r1, sl | r1 = sl;
0x000166fc mov r0, fp | r0 = fp;
0x000166fe blx 0xdbec | r0 = sysconf ();
0x00016702 cmp r0, 0 |
| if (r0 != 0) {
0x00016704 bne.w 0x15ffc | goto label_3;
| }
0x00016708 ldr r2, [sp, 0x14] | r2 = var_14h;
0x0001670a ldr r3, [fp, -0x54] | r3 = var_54h;
0x0001670e cmp r2, 3 |
| if (r2 == 3) {
0x00016710 beq.w 0x16874 | goto label_103;
| }
0x00016714 cmp r3, 0 |
| if (r3 != 0) {
0x00016716 bne.w 0x16290 | goto label_29;
| }
0x0001671a mov sb, r8 | sb = r8;
0x0001671c ldr r4, [sp, 0x28] | r4 = var_28h;
0x0001671e ldr.w r8, [sp, 0x30] | r8 = var_60h;
| label_38:
0x00016722 ldr r3, [pc, 0x394] |
0x00016724 ldr.w r3, [sb, r3] | r3 = *((sb + r3));
0x00016728 ldr r3, [r3] | r3 = *(0x16aba);
0x0001672a cmp r3, 2 |
| if (r3 <= 2) {
0x0001672c ble.w 0x164b6 | goto label_30;
| }
0x00016730 ldr r1, [pc, 0x3b8] |
0x00016732 movs r0, 3 | r0 = 3;
0x00016734 ldr.w r2, [r8] | r2 = *(r8);
0x00016738 add r1, pc | r1 = 0x2d228;
0x0001673a bl 0x30d1c | zbx_zabbix_log ();
0x0001673e b 0x164b6 | goto label_30;
| label_99:
0x00016740 adds r6, r7, 1 | r6 = r7 + 1;
| if (r6 == r7) {
0x00016742 beq 0x16660 | goto label_31;
| }
0x00016744 mov r3, r7 | r3 = r7;
0x00016746 movs r2, 0 | r2 = 0;
0x00016748 adds r6, r4, r7 | r6 = r4 + r7;
0x0001674a mov.w sl, -1 | sl = -1;
0x0001674e mov r7, r2 | r7 = r2;
0x00016750 mov r8, r3 | r8 = r3;
0x00016752 b 0x1675e | goto label_104;
| label_33:
0x00016754 adds r2, 1 | r2++;
0x00016756 add r6, r5 | r6 += r5;
0x00016758 cmp sb, r2 |
| if (sb == r2) {
0x0001675a beq.w 0x16650 | goto label_32;
| }
| label_104:
0x0001675e ldrb r3, [r6] | r3 = *(r6);
0x00016760 subs r3, 0x31 | r3 -= 0x31;
0x00016762 cmp r3, 1 |
| if (r3 > 1) {
0x00016764 bhi 0x16754 | goto label_33;
| }
0x00016766 cmp r7, 0 |
| if (r7 != 0) {
0x00016768 bne.w 0x16660 | goto label_31;
| }
0x0001676c mov sl, r2 | sl = r2;
0x0001676e movs r7, 1 | r7 = 1;
0x00016770 b 0x16754 | goto label_33;
| label_80:
0x00016772 ldr r3, [sp, 0x34] | r3 = var_5ch;
0x00016774 ldrd sb, r8, [sp, 0x44] | __asm ("ldrd sb, r8, [var_44h]");
0x00016778 ldr r6, [sp, 0x4c] | r6 = var_4ch;
0x0001677a cmp r3, 0 |
| if (r3 != 0) {
0x0001677c bne.w 0x16444 | goto label_34;
| }
0x00016780 ldr r1, [sp, 0x24] | r1 = var_24h;
0x00016782 ldr r0, [fp, -0x60] | r0 = var_60h;
0x00016786 bl 0x1596c | r0 = fcn_0001596c (r0, r1);
0x0001678a adds r1, r0, 1 | r1 = r0 + 1;
0x0001678c mov r5, r0 | r5 = r0;
| if (r1 == r0) {
0x0001678e beq.w 0x15ffc | goto label_3;
| }
0x00016792 ldr r3, [sp, 0x24] | r3 = var_24h;
0x00016794 ldr r2, [sl, -0x20] | r2 = *((sl - 0x20));
0x00016798 ldr r1, [sp, 0x34] | r1 = var_5ch;
0x0001679a str r3, [sp, 4] | var_4h = r3;
0x0001679c ldr r3, [fp, -0x60] | r3 = var_60h;
0x000167a0 str r3, [sp] | *(sp) = r3;
0x000167a2 add r3, sp, 0x54 | r3 += var_sp_54h;
0x000167a4 str r3, [sp, 0x34] | var_5ch = r3;
0x000167a6 bl 0x15710 | fcn_00015710 (r0, r1, r2, r3, r4, r5, r6);
0x000167a8 vtbl.8 d2, {d3}, d0 | __asm ("vtbl.8 d2, {d3}, d0");
| if (r1 != r0) {
0x000167ac bne.w 0x169b8 | goto label_58;
| }
0x000167b0 ldr r1, [sp, 0x34] | r1 = var_5ch;
0x000167b2 movs r2, 0x10 | r2 = 0x10;
0x000167b4 sub.w r0, sl, 0x1c | r0 = sl - 0x1c;
0x000167b8 blx 0xdbec | sysconf ();
0x000167bc ldr r3, [sp, 0x3c] | r3 = var_54h;
0x000167be cmp r3, 1 |
| if (r3 < 1) {
0x000167c0 bls 0x1680c | goto label_105;
| }
| label_35:
0x000167c2 cmp r0, 0 |
| if (r0 != 0) {
0x000167c4 bne.w 0x169b8 | goto label_58;
| }
0x000167c8 movs r3, 1 | r3 = 1;
0x000167ca str r3, [sp, 0x40] | var_sp_40h = r3;
| label_36:
0x000167cc ldrd r1, r3, [sl, -0x8] | __asm ("ldrd r1, r3, [sl, -0x8]");
0x000167d0 orrs r3, r1 | r3 |= r1;
| if (r3 != r1) {
0x000167d2 bne.w 0x16a6a | goto label_106;
| }
0x000167d6 mov r0, r5 | r0 = r5;
0x000167d8 blx 0xe0ac | r0 = fcn_0000e0ac ();
0x000167dc cmp r0, 0 |
| if (r0 == 0) {
0x000167de beq.w 0x16444 | goto label_34;
| }
| label_49:
0x000167e2 ldrd r7, r4, [sp, 0x24] | __asm ("ldrd r7, r4, [var_24h]");
0x000167e6 ldr.w r8, [sp, 0x30] | r8 = var_60h;
0x000167ea blx 0xe3d4 | r0 = fcn_0000e3d4 ();
0x000167ee ldr r0, [r0] | r0 = *(r0);
0x000167f0 ldr r5, [r7] | r5 = *(r7);
0x000167f2 ldr.w r6, [r8] | r6 = *(r8);
0x000167f6 bl 0x30b74 | zbx_strerror ();
0x000167fa ldr r1, [pc, 0x2f4] |
0x000167fc mov r3, r0 | r3 = r0;
0x000167fe mov r2, r6 | r2 = r6;
0x00016800 mov r0, r5 | r0 = r5;
0x00016802 add r1, pc | r1 = 0x2d2f8;
0x00016804 bl 0x44820 | zbx_dsprintf ()
0x00016808 str r0, [r7] | *(r7) = r0;
0x0001680a b 0x16264 | goto label_10;
| label_105:
0x0001680c ldrd r4, r1, [fp, -0x40] | __asm ("ldrd r4, r1, [var_40h]");
0x00016810 ldrd r3, r2, [sl, -0x40] | __asm ("ldrd r3, r2, [sl, -0x40]");
0x00016814 cmp r1, r2 |
0x00016816 it eq |
| if (r1 == r2) {
0x00016818 cmpeq r4, r3 | __asm ("cmpeq r4, r3");
| }
| if (r1 != r2) {
0x0001681a bne 0x16842 | goto label_107;
| }
0x0001681c ldrd r4, r1, [fp, -0x48] | __asm ("ldrd r4, r1, [var_48h]");
0x00016820 ldrd r3, r2, [sl, -0x48] | __asm ("ldrd r3, r2, [sl, -0x48]");
0x00016824 cmp r1, r2 |
0x00016826 it eq |
| if (r1 == r2) {
0x00016828 cmpeq r4, r3 | __asm ("cmpeq r4, r3");
| }
| if (r1 != r2) {
0x0001682a bne 0x16842 | goto label_107;
| }
0x0001682c ldr r3, [sp, 0x94] | r3 = *(arg_94h);
0x0001682e cmp r3, 2 |
| if (r3 != 2) {
0x00016830 bne 0x167c2 | goto label_35;
| }
0x00016832 ldrd r4, r1, [fp, -0x38] | __asm ("ldrd r4, r1, [var_bp_38h]");
0x00016836 ldrd r3, r2, [sl, -0x38] | __asm ("ldrd r3, r2, [sl, -0x38]");
0x0001683a cmp r1, r2 |
0x0001683c it eq |
| if (r1 != r2) {
0x0001683e cmpeq r4, r3 | __asm ("cmpeq r4, r3");
| goto label_108;
| }
| if (r1 == r2) {
| label_108:
0x00016840 beq 0x167c2 | goto label_35;
| }
| label_107:
0x00016842 cmp r0, 0 |
| if (r0 != 0) {
0x00016844 bne.w 0x169b8 | goto label_58;
| }
0x00016848 movs r3, 4 | r3 = 4;
0x0001684a str r3, [sp, 0x40] | var_sp_40h = r3;
0x0001684c b 0x167cc | goto label_36;
| label_84:
0x0001684e mov r0, r5 | r0 = r5;
0x00016850 blx 0xe0ac | r0 = fcn_0000e0ac ();
0x00016854 cmp r0, 0 |
| if (r0 != 0) {
0x00016856 bne.w 0x1623c | goto label_37;
| }
0x0001685a b.w 0x15ffc | goto label_3;
| label_82:
0x0001685e ldr.w sl, [sp, 0x14] | sl = var_14h;
0x00016862 mov sb, r8 | sb = r8;
0x00016864 ldr r4, [sp, 0x28] | r4 = var_28h;
0x00016866 ldr.w r8, [sp, 0x30] | r8 = var_60h;
0x0001686a cmp.w sl, 3 |
| if (sl == 3) {
0x0001686e beq.w 0x164b6 | goto label_30;
| }
0x00016872 b 0x16722 | goto label_38;
| label_103:
0x00016874 ldr r2, [pc, 0x240] | r2 = *(0x16ab8);
0x00016876 ldr.w r4, [r8, r2] | r4 = *((r8 + r2));
0x0001687a b.w 0x15fa4 | goto label_5;
| label_90:
0x0001687e ldrd r4, r2, [fp, -0x48] | __asm ("ldrd r4, r2, [var_48h]");
0x00016882 ldrd r1, r3, [r7, 0x18] | __asm ("ldrd r1, r3, [r7, 0x18]");
0x00016886 cmp r2, r3 |
0x00016888 it eq |
| if (r2 == r3) {
0x0001688a cmpeq r4, r1 | __asm ("cmpeq r4, r1");
| }
| if (r2 != r3) {
0x0001688c bne 0x168a8 | goto label_109;
| }
0x0001688e ldr r3, [sp, 0x94] | r3 = *(arg_94h);
0x00016890 cmp r3, 2 |
| if (r3 != 2) {
0x00016892 bne.w 0x16120 | goto label_39;
| }
0x00016896 ldrd r4, r2, [fp, -0x38] | __asm ("ldrd r4, r2, [var_bp_38h]");
0x0001689a ldrd r1, r3, [r7, 0x28] | __asm ("ldrd r1, r3, [r7, 0x28]");
0x0001689e cmp r2, r3 |
0x000168a0 it eq |
| if (r2 != r3) {
0x000168a2 cmpeq r4, r1 | __asm ("cmpeq r4, r1");
| goto label_110;
| }
| if (r2 == r3) {
| label_110:
0x000168a4 beq.w 0x16120 | goto label_39;
| }
| label_109:
0x000168a8 cmp r0, 0 |
| if (r0 != 0) {
0x000168aa bne.w 0x164ec | goto label_40;
| }
0x000168ae movs r2, 4 | r2 = 4;
0x000168b0 b 0x16128 | goto label_41;
| label_78:
0x000168b2 mov r4, r6 | r4 = r6;
0x000168b4 ldr.w sb, [sp, 0x44] | sb = var_44h;
0x000168b8 ldrd r8, r6, [sp, 0x48] | __asm ("ldrd r8, r6, [var_48h]");
0x000168bc b 0x16434 | goto label_42;
| label_89:
0x000168be ldr r5, [sp, 0x14] | r5 = var_14h;
0x000168c0 b.w 0x1607c | goto label_11;
| label_54:
0x000168c4 mov r0, r4 | r0 = r4;
0x000168c6 ldr r4, [sp, 0x28] | r4 = var_28h;
0x000168c8 blx 0xe0ac | fcn_0000e0ac ();
0x000168cc b 0x16264 | goto label_10;
| label_96:
0x000168ce ldrd r1, r3, [fp, -0x8] | __asm ("ldrd r1, r3, [fp, -0x8]");
0x000168d2 cmp r5, 0 |
0x000168d4 ite eq |
| if (r5 != 0) {
0x000168d6 moveq r2, 4 | r2 = 4;
| }
| if (r5 == 0) {
0x000168d8 movne r2, 1 | r2 = 1;
| }
0x000168da str r2, [sp, 0x40] | var_sp_40h = r2;
0x000168dc orrs r3, r1 | r3 |= r1;
| if (r3 != r1) {
0x000168de bne.w 0x16a1e | goto label_111;
| }
0x000168e2 mov r0, r4 | r0 = r4;
0x000168e4 blx 0xe0ac | r0 = fcn_0000e0ac ();
0x000168e8 cmp r0, 0 |
| if (r0 == 0) {
0x000168ea beq.w 0x16444 | goto label_34;
| }
0x000168ee b 0x16582 | goto label_43;
| label_69:
0x000168f0 ldr.w sl, [sp, 0x14] | sl = var_14h;
0x000168f4 mov sb, r8 | sb = r8;
0x000168f6 ldr r4, [sp, 0x28] | r4 = var_28h;
0x000168f8 cmp.w sl, 1 |
| if (sl == 1) {
0x000168fc beq.w 0x1626e | goto label_23;
| }
0x00016900 ldr r3, [sp, 0x2c] | r3 = var_2ch;
0x00016902 ldr r2, [sp, 0x90] | r2 = *(arg_90h);
0x00016904 cmp r2, 1 |
0x00016906 it le |
| if (r2 > 1) {
0x00016908 cmple r3, 1 | __asm ("cmple r3, 1");
| goto label_112;
| }
| if (r2 <= 1) {
| label_112:
0x0001690a ble.w 0x1626e | goto label_23;
| }
0x0001690e cmp r2, 0 |
0x00016910 add.w r0, r2, -1 | r0 = r2 + -1;
0x00016914 add r0, r4 | r0 += r4;
0x00016916 mov r1, r4 | r1 = r4;
0x00016918 rsb.w ip, r4, 0 |
| if (r2 <= 0) {
0x0001691c ble.w 0x165bc | goto label_44;
| }
0x00016920 ldr.w sl, [sp, 0x20] | sl = var_sp_20h;
0x00016924 mov.w lr, 0 | lr = 0;
0x00016928 mov r5, r2 | r5 = r2;
| label_46:
0x0001692a subs r3, r1, 1 | r3 = r1 - 1;
0x0001692c mov.w r7, -1 | r7 = -1;
0x00016930 movs r6, 0 | r6 = 0;
0x00016932 add.w r8, ip, 1 | r8 = ip + 1;
0x00016936 b 0x1693c |
| while (r2 > 1) {
| label_45:
0x00016938 cmp r0, r3 |
| if (r0 == r3) {
0x0001693a beq 0x16956 | goto label_113;
| }
0x0001693c mov fp, r3 |
0x0001693e ldrb r2, [r3, 1]! | r2 = *((r3 += 1));
0x00016942 subs r2, 0x31 | r2 -= 0x31;
0x00016944 cmp r2, 1 |
0x00016946 bhi 0x16938 |
| }
0x00016948 cmp r6, 0 |
| if (r6 != 0) {
0x0001694a bne.w 0x165bc | goto label_44;
| }
0x0001694e add.w r7, r8, fp | r7 = r8 + fp;
0x00016952 movs r6, 1 | r6 = 1;
0x00016954 b 0x16938 | goto label_45;
| label_113:
0x00016956 adds r7, 1 | r7++;
| if (r7 == 1) {
0x00016958 beq.w 0x165bc | goto label_44;
| }
0x0001695c cmp sl, lr |
0x0001695e add r0, r5 | r0 += r5;
0x00016960 add r1, r5 | r1 += r5;
0x00016962 sub.w ip, ip, r5 |
0x00016966 add.w r3, lr, 1 | r3 = lr + 1;
| if (sl != lr) {
0x0001696a beq 0x16970 |
0x0001696c mov lr, r3 | lr = r3;
0x0001696e b 0x1692a | goto label_46;
| }
0x00016970 ldr r3, [sp, 0x90] | r3 = *(arg_90h);
0x00016972 mov r1, r4 | r1 = r4;
0x00016974 ldr r0, [sp, 0x2c] | r0 = var_2ch;
0x00016976 mov lr, r4 | lr = r4;
0x00016978 adds r7, r4, r3 | r7 = r4 + r3;
0x0001697a mov r5, r3 | r5 = r3;
| label_48:
0x0001697c movs r2, 0 | r2 = 0;
0x0001697e mov.w ip, -1 |
0x00016982 mov r6, r2 | r6 = r2;
0x00016984 b 0x1698e |
| while (r3 > 1) {
| label_47:
0x00016986 adds r2, 1 | r2++;
0x00016988 add r1, r5 | r1 += r5;
0x0001698a cmp r0, r2 |
| if (r0 == r2) {
0x0001698c beq 0x169a2 | goto label_114;
| }
0x0001698e ldrb r3, [r1] | r3 = *(r1);
0x00016990 subs r3, 0x31 | r3 -= 0x31;
0x00016992 cmp r3, 1 |
0x00016994 bhi 0x16986 |
| }
0x00016996 cmp r6, 0 |
| if (r6 != 0) {
0x00016998 bne.w 0x165bc | goto label_44;
| }
0x0001699c mov ip, r2 |
0x0001699e movs r6, 1 | r6 = 1;
0x000169a0 b 0x16986 | goto label_47;
| label_114:
0x000169a2 cmp.w ip, -1 |
| if (ip == -1) {
0x000169a6 beq.w 0x165bc | goto label_44;
| }
0x000169aa add.w lr, lr, 1 | lr++;
0x000169ae cmp r7, lr |
| if (r7 == lr) {
0x000169b0 beq.w 0x1626e | goto label_23;
| }
0x000169b4 mov r1, lr | r1 = lr;
0x000169b6 b 0x1697c | goto label_48;
| label_58:
0x000169b8 mov r0, r5 | r0 = r5;
0x000169ba blx 0xe0ac | r0 = fcn_0000e0ac ();
0x000169be cmp r0, 0 |
| if (r0 == 0) {
0x000169c0 beq.w 0x15ffc | goto label_3;
| }
0x000169c4 b 0x167e2 | goto label_49;
| label_100:
0x000169c6 ldr r2, [sp, 0x90] | r2 = *(arg_90h);
0x000169c8 ldr r3, [sp, 0x2c] | r3 = var_2ch;
0x000169ca add.w r8, r4, r2 | r8 = r4 + r2;
0x000169ce subs r3, 1 | r3--;
0x000169d0 mul r7, r2, r3 | r7 = r2 * r3;
| label_51:
0x000169d4 ldrb r1, [r5, r3] | r1 = *((r5 + r3));
0x000169d6 cmp r1, 0x31 |
| if (r1 == 0x31) {
0x000169d8 beq 0x16a08 | goto label_115;
| }
0x000169da cmp r6, 0 |
0x000169dc mov r0, r6 | r0 = r6;
| if (r6 < 0) {
0x000169de blt 0x16a08 | goto label_115;
| }
0x000169e0 add.w ip, r8, r7 |
0x000169e4 b 0x169ea |
| while (r1 > 1) {
| label_50:
0x000169e6 subs r0, 1 | r0--;
| if (r0 <= 1) {
0x000169e8 blo 0x16a08 | goto label_115;
| }
0x000169ea ldrb r1, [ip, -0x1]! | r1 = *((ip -= 0x1));
0x000169ee subs r1, 0x31 | r1 -= 0x31;
0x000169f0 cmp r1, 1 |
0x000169f2 bhi 0x169e6 |
| }
0x000169f4 ldrb.w r1, [sb, r0] | r1 = *((sb + r0));
0x000169f8 cmp r1, 0x31 |
| if (r1 == 0x31) {
0x000169fa beq 0x169e6 | goto label_50;
| }
0x000169fc stm.w sp, {r0, r5, sb} | *(sp) = r0;
| *((sp + 4)) = r5;
| *((sp + 8)) = sb;
0x00016a00 mov r0, r4 | r0 = r4;
0x00016a02 ldr r1, [sp, 0x2c] | r1 = var_2ch;
0x00016a04 bl 0x15390 | fcn_00015390 (r0, r1, r2, r3, r4, r5);
| label_115:
0x00016a08 subs r3, 1 | r3--;
0x00016a0a subs r7, r7, r2 | r7 -= r2;
0x00016a0c adds r1, r3, 1 | r1 = r3 + 1;
| if (r1 != r3) {
0x00016a0e bne 0x169d4 | goto label_51;
| }
0x00016a10 b 0x166be | goto label_52;
| label_97:
0x00016a12 ldr r1, [pc, 0xe0] |
0x00016a14 movs r0, 4 | r0 = 4;
0x00016a16 add r1, pc | r1 = 0x2d510;
0x00016a18 bl 0x30d1c | zbx_zabbix_log ();
0x00016a1c b 0x165cc | goto label_53;
| label_111:
0x00016a1e ldr r3, [sp, 0x24] | r3 = var_24h;
0x00016a20 mov r0, r4 | r0 = r4;
0x00016a22 ldr r2, [fp, -0x20] | r2 = var_20h;
0x00016a26 str r3, [sp, 4] | var_4h = r3;
0x00016a28 ldr r3, [sl, -0x60] | r3 = *((sl - 0x60));
0x00016a2c str r3, [sp] | *(sp) = r3;
0x00016a2e ldr r3, [sp, 0x34] | r3 = var_5ch;
0x00016a30 bl 0x15710 | r0 = fcn_00015710 (r0, r1, r2, r3, r4, r5, r6);
0x00016a34 cmp r0, 0 |
| if (r0 != 0) {
0x00016a36 bne.w 0x168c4 | goto label_54;
| }
0x00016a3a ldr r1, [sp, 0x34] | r1 = var_5ch;
0x00016a3c movs r2, 0x10 | r2 = 0x10;
0x00016a3e mov r0, fp | r0 = fp;
0x00016a40 blx 0xdbec | r0 = sysconf ();
0x00016a44 cmp r0, 0 |
| if (r0 != 0) {
0x00016a46 bne.w 0x16576 | goto label_55;
| }
0x00016a4a mov r0, r4 | r0 = r4;
0x00016a4c cmp r5, 0 |
| if (r5 != 0) {
0x00016a4e bne 0x16b46 | goto label_116;
| }
0x00016a50 blx 0xe0ac | r0 = fcn_0000e0ac ();
0x00016a54 cmp r0, 0 |
| if (r0 != 0) {
0x00016a56 bne.w 0x16582 | goto label_43;
| }
0x00016a5a b 0x1649a | goto label_56;
| if (r0 != 0) {
| label_98:
0x00016a5c cbz r0, 0x16a62 |
0x00016a5e blx 0xde30 | fcn_0000de30 ();
| }
0x00016a62 cmp r5, 0 |
| if (r5 == 0) {
0x00016a64 beq.w 0x1626e | goto label_23;
| }
0x00016a68 b 0x166ca | goto label_57;
| label_106:
0x00016a6a ldr r3, [sp, 0x24] | r3 = var_24h;
0x00016a6c mov r0, r5 | r0 = r5;
0x00016a6e str r3, [sp, 4] | var_4h = r3;
0x00016a70 ldr r3, [fp, -0x60] | r3 = var_60h;
0x00016a74 str r3, [sp] | *(sp) = r3;
0x00016a76 ldr r3, [sp, 0x34] | r3 = var_5ch;
0x00016a78 ldr r2, [sl, -0x20] | r2 = *((sl - 0x20));
0x00016a7c bl 0x15710 | r0 = fcn_00015710 (r0, r1, r2, r3, r4, r5, r6);
0x00016a80 cmp r0, 0 |
| if (r0 != 0) {
0x00016a82 bne 0x169b8 | goto label_58;
| }
0x00016a84 ldr r1, [sp, 0x34] | r1 = var_5ch;
0x00016a86 movs r2, 0x10 | r2 = 0x10;
0x00016a88 mov r0, sl | r0 = sl;
0x00016a8a blx 0xdbec | sysconf ();
0x00016a8e ldr r3, [sp, 0x3c] | r3 = var_54h;
0x00016a90 cmp r3, 1 |
| if (r3 < 1) {
0x00016a92 bls 0x16af8 | goto label_117;
| }
| label_59:
0x00016a94 cmp r0, 0 |
| if (r0 != 0) {
0x00016a96 bne 0x169b8 | goto label_58;
| }
0x00016a98 mov r0, r5 | r0 = r5;
0x00016a9a blx 0xe0ac | r0 = fcn_0000e0ac ();
0x00016a9e cmp r0, 0 |
| if (r0 == 0) {
0x00016aa0 beq.w 0x15f98 | goto label_6;
| }
0x00016aa4 b 0x167e2 | goto label_49;
| label_117:
0x00016af8 ldrd r4, r1, [fp, -0x40] | __asm ("ldrd r4, r1, [var_40h]");
0x00016afc ldrd r3, r2, [sl, -0x40] | __asm ("ldrd r3, r2, [sl, -0x40]");
0x00016b00 cmp r1, r2 |
0x00016b02 it eq |
| if (r1 == r2) {
0x00016b04 cmpeq r4, r3 | __asm ("cmpeq r4, r3");
| }
| if (r1 != r2) {
0x00016b06 bne 0x16b2e | goto label_118;
| }
0x00016b08 ldrd r4, r1, [fp, -0x48] | __asm ("ldrd r4, r1, [var_48h]");
0x00016b0c ldrd r3, r2, [sl, -0x48] | __asm ("ldrd r3, r2, [sl, -0x48]");
0x00016b10 cmp r1, r2 |
0x00016b12 it eq |
| if (r1 == r2) {
0x00016b14 cmpeq r4, r3 | __asm ("cmpeq r4, r3");
| }
| if (r1 != r2) {
0x00016b16 bne 0x16b2e | goto label_118;
| }
0x00016b18 ldr r3, [sp, 0x94] | r3 = *(arg_94h);
0x00016b1a cmp r3, 2 |
| if (r3 != 2) {
0x00016b1c bne 0x16a94 | goto label_59;
| }
0x00016b1e ldrd r4, r1, [fp, -0x38] | __asm ("ldrd r4, r1, [var_bp_38h]");
0x00016b22 ldrd r3, r2, [sl, -0x38] | __asm ("ldrd r3, r2, [sl, -0x38]");
0x00016b26 cmp r1, r2 |
0x00016b28 it eq |
| if (r1 != r2) {
0x00016b2a cmpeq r4, r3 | __asm ("cmpeq r4, r3");
| goto label_119;
| }
| if (r1 == r2) {
| label_119:
0x00016b2c beq 0x16a94 | goto label_59;
| }
| label_118:
0x00016b2e cmp r0, 0 |
| if (r0 != 0) {
0x00016b30 bne.w 0x169b8 | goto label_58;
| }
0x00016b34 mov r0, r5 | r0 = r5;
0x00016b36 blx 0xe0ac | r0 = fcn_0000e0ac ();
0x00016b3a cmp r0, 0 |
| if (r0 == 0) {
0x00016b3c beq.w 0x1649a | goto label_56;
| }
0x00016b40 b 0x167e2 | goto label_49;
| label_85:
0x00016b42 blx 0xe158 | fcn_0000e158 ();
| label_116:
0x00016b46 blx 0xe0ac | r0 = fcn_0000e0ac ();
0x00016b4a cmp r0, 0 |
| if (r0 != 0) {
0x00016b4c bne.w 0x16582 | goto label_43;
| }
0x00016b50 b.w 0x15f98 | goto label_6;
| }
r2dec has crashed (info: /logs/firmware/patool_extraction/rootfs.img_unblob_extracted/rootfs.img_extract/0-80367616.squashfs_v4_le_extract/usr/sbin/zabbix_agentd @ 0x1927c).
Please report the bug at https://github.com/radareorg/r2dec-js/issues
Use the option '--issue' or the command 'pddi' to generate
the needed data for the issue.
; assembly | /* r2dec pseudo code output */
| /* /logs/firmware/patool_extraction/rootfs.img_unblob_extracted/rootfs.img_extract/0-80367616.squashfs_v4_le_extract/usr/sbin/zabbix_agentd @ 0x197f0 */
| #include <stdint.h>
|
; (fcn) fcn.000197f0 () | void fcn_000197f0 (int16_t arg1, int16_t arg2) {
| int16_t var_0h_2;
| int16_t var_8h;
| int16_t var_18h;
| int16_t var_74h_2;
| r0 = arg1;
| r1 = arg2;
0x000197f0 ldr r2, [pc, 0xc8] |
0x000197f2 ldr r3, [pc, 0xcc] | r3 = *(0x198c2);
0x000197f4 push {r4, r5, r6, r7, lr} |
0x000197f6 mov r7, r1 | r7 = r1;
0x000197f8 add r2, pc | r2 = 0x330b8;
0x000197fa sub sp, 0x7c |
0x000197fc mov.w r1, 0x1c0 | r1 = 0x1c0;
0x00019800 mov r6, r0 | r6 = r0;
0x00019802 ldr r3, [r2, r3] |
0x00019804 ldr r3, [r3] | r3 = *(0x330b8);
0x00019806 str r3, [sp, 0x74] | var_74h_2 = r3;
0x00019808 mov.w r3, 0 | r3 = 0;
0x0001980c blx 0xdb78 | fcn_0000db78 ();
0x00019810 ldr r2, [pc, 0xb0] |
0x00019812 add r2, pc | r2 = 0x330da;
| if (r0 == 0) {
0x00019814 cbz r0, 0x19856 | goto label_2;
| }
0x00019816 blx 0xe3d4 | r0 = fcn_0000e3d4 ();
0x0001981a mov r5, r0 | r5 = r0;
0x0001981c ldr r0, [r0] | r0 = *(r0);
0x0001981e cmp r0, 0x11 |
| if (r0 != 0x11) {
0x00019820 bne 0x19874 | goto label_3;
| }
0x00019822 add r1, sp, 8 | r1 += var_8h;
0x00019824 mov r0, r6 | r0 = r6;
0x00019826 blx 0xe1c4 | r0 = fcn_0000e1c4 ();
0x0001982a mov r4, r0 | r4 = r0;
0x0001982c cmp r0, 0 |
| if (r0 != 0) {
0x0001982e bne 0x198a2 | goto label_4;
| }
0x00019830 ldr r3, [sp, 0x18] | r3 = var_18h;
0x00019832 and r3, r3, 0xf000 | r3 &= 0xf000;
0x00019836 cmp.w r3, 0x4000 |
| if (r3 != 0x4000) {
0x0001983a bne 0x19896 | goto label_5;
| }
| do {
| label_0:
0x0001983c ldr r2, [pc, 0x88] |
0x0001983e ldr r3, [pc, 0x80] | r3 = *(0x198c2);
0x00019840 add r2, pc | r2 = 0x3310c;
0x00019842 ldr r3, [r2, r3] | r3 = *(0x3310c);
0x00019844 ldr r2, [r3] | r2 = *(0x3310c);
0x00019846 ldr r3, [sp, 0x74] | r3 = var_74h_2;
0x00019848 eors r2, r3 | r2 ^= r3;
0x0001984a mov.w r3, 0 | r3 = 0;
| if (r2 != r3) {
0x0001984e bne 0x198b8 | goto label_6;
| }
0x00019850 mov r0, r4 | r0 = r4;
0x00019852 add sp, 0x7c |
0x00019854 pop {r4, r5, r6, r7, pc} |
| label_2:
0x00019856 ldr r3, [pc, 0x74] |
0x00019858 mov r4, r0 | r4 = r0;
0x0001985a ldr r3, [r2, r3] | r3 = *((r2 + r3));
0x0001985c ldr r3, [r3] | r3 = *(0x198ce);
0x0001985e cmp r3, 3 |
0x00019860 ble 0x1983c |
| } while (r3 <= 3);
0x00019862 ldr r2, [pc, 0x6c] |
0x00019864 mov r3, r6 | r3 = r6;
0x00019866 ldr r1, [pc, 0x6c] |
0x00019868 movs r0, 4 | r0 = 4;
0x0001986a add r2, pc | r2 = 0x33140;
0x0001986c add r1, pc | r1 = 0x33146;
0x0001986e bl 0x30d1c | zbx_zabbix_log ();
0x00019872 b 0x1983c | goto label_0;
| label_3:
0x00019874 ldr r4, [r7] | r4 = *(r7);
0x00019876 bl 0x30b74 | zbx_strerror ();
0x00019878 invalid |
0x0001987c ldr r2, [pc, 0x58] |
0x0001987e str r1, [sp] | *(sp) = r1;
0x00019880 mov r3, r6 | r3 = r6;
0x00019882 ldr r1, [pc, 0x58] |
0x00019884 mov r0, r4 | r0 = r4;
0x00019886 add r2, pc | r2 = 0x33162;
0x00019888 add r1, pc | r1 = 0x3316a;
0x0001988a bl 0x44820 | zbx_dsprintf ()
| do {
| label_1:
0x0001988e mov.w r4, -1 | r4 = -1;
0x00019892 str r0, [r7] | *(r7) = r0;
0x00019894 b 0x1983c | goto label_0;
| label_5:
0x00019896 ldr r1, [pc, 0x48] |
0x00019898 ldr r0, [r7] | r0 = *(r7);
0x0001989a add r1, pc | r1 = 0x33180;
0x0001989c bl 0x44820 | zbx_dsprintf ()
0x000198a0 b 0x1988e |
| } while (1);
| label_4:
0x000198a2 ldr r0, [r5] | r0 = *(r5);
0x000198a4 ldr r4, [r7] | r4 = *(r7);
0x000198a6 bl 0x30b74 | zbx_strerror ();
0x000198aa ldr r1, [pc, 0x38] |
0x000198ac mov r2, r0 | r2 = r0;
0x000198ae mov r0, r4 | r0 = r4;
0x000198b0 add r1, pc | r1 = 0x3319a;
0x000198b2 bl 0x44820 | zbx_dsprintf ()
0x000198b6 b 0x1988e | goto label_1;
| label_6:
0x000198b8 blx 0xe158 | fcn_0000e158 ();
0x000198bc movs r3, 0xe0 | r3 = 0xe0;
0x000198be movs r4, r0 | r4 = r0;
0x000198c0 lsls r4, r2, 0xe | r4 = r2 << 0xe;
0x000198c2 movs r0, r0 |
0x000198c4 movs r3, 0xc6 | r3 = 0xc6;
0x000198c6 movs r4, r0 | r4 = r0;
0x000198c8 movs r3, 0x98 | r3 = 0x98;
0x000198ca movs r4, r0 | r4 = r0;
0x000198cc lsls r4, r7, 0xe | r4 = r7 << 0xe;
0x000198ce movs r0, r0 |
0x000198d0 ldr r2, [r5, 0x70] | r2 = *((r5 + 0x70));
0x000198d2 movs r3, r0 | r3 = r0;
0x000198d4 ldr r4, [r6, 0x20] | r4 = *((r6 + 0x20));
0x000198d6 movs r3, r0 | r3 = r0;
0x000198d8 ldr r6, [r1, 0x70] | r6 = *((r1 + 0x70));
0x000198da movs r3, r0 | r3 = r0;
0x000198dc ldr r0, [r6, 0x1c] | r0 = *((r6 + 0x1c));
0x000198de movs r3, r0 | r3 = r0;
0x000198e0 ldr r2, [r7, 0x18] | r2 = *((r7 + 0x18));
0x000198e2 movs r3, r0 | r3 = r0;
0x000198e4 ldr r4, [r7, 0x14] | r4 = *((r7 + 0x14));
0x000198e6 movs r3, r0 | r3 = r0;
| }
; assembly | /* r2dec pseudo code output */
| /* /logs/firmware/patool_extraction/rootfs.img_unblob_extracted/rootfs.img_extract/0-80367616.squashfs_v4_le_extract/usr/sbin/zabbix_agentd @ 0x1e558 */
| #include <stdint.h>
|
; (fcn) fcn.0001e558 () | void fcn_0001e558 (int16_t arg1) {
| int16_t var_0h_2;
| int16_t var_ch_2;
| int16_t var_20h;
| int16_t var_28h;
| int16_t var_40h;
| int16_t var_4ch;
| r0 = arg1;
0x0001e558 blmi 0x1330e8c | __asm ("blmi aav.0x0003d678");
0x0001e55c push {r4, r5, r6, r7, lr} |
0x0001e55e mov r4, r0 | r4 = r0;
0x0001e560 add r2, pc | r2 += pc;
0x0001e562 ldr r1, [pc, 0x12c] |
0x0001e564 sub sp, 0x54 |
0x0001e566 ldr r0, [pc, 0x12c] |
0x0001e568 ldr r3, [r2, r3] | r3 = *((r2 + r3));
0x0001e56a add r1, pc | r1 = 0x3cc00;
0x0001e56c add r0, pc | r0 = 0x3cc06;
0x0001e56e ldr r3, [r3] | r3 = *(r3);
0x0001e570 str r3, [sp, 0x4c] | var_4ch = r3;
0x0001e572 mov.w r3, 0 | r3 = 0;
0x0001e576 blx 0xdf90 | fcn_0000df90 ();
0x0001e578 stc p6, c4, [ip, -0x14] | __asm ("stc p6, c4, [ip, -0x14]");
0x0001e57c cmp r0, 0 |
| if (r0 == 0) {
0x0001e57e beq 0x1e664 | goto label_3;
| }
0x0001e580 ldr r6, [pc, 0x114] |
0x0001e582 mov r7, sp | r7 = sp;
0x0001e584 ldr r1, [pc, 0x114] |
0x0001e586 mov r3, r7 | r3 = r7;
0x0001e588 add r6, pc | r6 = 0x3cc24;
0x0001e58a mov r2, r6 | r2 = r6;
0x0001e58c add r1, pc | r1 = 0x3cc2c;
0x0001e58e bl 0x21570 | r0 = byte_value_from_proc_file ();
0x0001e592 adds r2, r0, 1 | r2 = r0 + 1;
| if (r2 == r0) {
0x0001e594 beq 0x1e608 | goto label_4;
| }
| if (r0 != 0) {
0x0001e596 cbnz r0, 0x1e5ca | goto label_5;
| }
0x0001e598 ldr r2, [r4, 0x28] | r2 = *((r4 + 0x28));
0x0001e59a ldrd r3, r1, [sp] | __asm ("ldrd r3, r1, [sp]");
0x0001e59e orr r2, r2, 1 | r2 |= 1;
0x0001e5a2 str r2, [r4, 0x28] | *((r4 + 0x28)) = r2;
| do {
0x0001e5a4 movs r6, 0 | r6 = 0;
0x0001e5a6 strd r3, r1, [r4, 8] | __asm ("strd r3, r1, [r4, 8]");
| label_0:
0x0001e5aa mov r0, r5 | r0 = r5;
0x0001e5ac blx 0xdc8c | fcn_0000dc8c ();
| label_2:
0x0001e5b0 ldr r2, [pc, 0xec] |
0x0001e5b2 ldr r3, [pc, 0xd8] | r3 = *(0x1e68e);
0x0001e5b4 add r2, pc | r2 = 0x3cc58;
0x0001e5b6 ldr r3, [r2, r3] | r3 = *(0x3cc58);
0x0001e5b8 ldr r2, [r3] | r2 = *(0x3cc58);
0x0001e5ba ldr r3, [sp, 0x4c] | r3 = var_4ch;
0x0001e5bc eors r2, r3 | r2 ^= r3;
0x0001e5be mov.w r3, 0 | r3 = 0;
| if (r2 != r3) {
0x0001e5c2 bne 0x1e660 | goto label_6;
| }
0x0001e5c4 mov r0, r6 | r0 = r6;
0x0001e5c6 add sp, 0x54 |
0x0001e5c8 pop {r4, r5, r6, r7, pc} |
| label_5:
0x0001e5ca mov r3, r7 | r3 = r7;
0x0001e5cc movs r2, 0 | r2 = 0;
0x0001e5ce mov r1, r6 | r1 = r6;
0x0001e5d0 mov r0, r5 | r0 = r5;
0x0001e5d2 bl 0x21570 | r0 = byte_value_from_proc_file ();
0x0001e5d6 adds r3, r0, 1 | r3 = r0 + 1;
| if (r3 == r0) {
0x0001e5d8 beq 0x1e646 | goto label_7;
| }
0x0001e5da adds r0, 2 | r0 += 2;
| if (r0 == 2) {
0x0001e5dc bne 0x1e5e6 |
0x0001e5de vmov.i32 d16, 0 | __asm ("vmov.i32 d16, 0");
0x0001e5e2 vstr d16, [sp] | __asm ("vstr d16, [sp]");
0x0001e5e4 lsrs r0, r0, 0xc | r0 >>= 0xc;
| }
0x0001e5e6 add r0, sp, 0xc | r0 += var_ch_2;
0x0001e5e8 blx 0xe364 | r0 = fcn_0000e364 ();
| if (r0 != 0) {
0x0001e5ec cbnz r0, 0x1e626 | goto label_8;
| }
0x0001e5ee ldr r3, [r4, 0x28] | r3 = *((r4 + 0x28));
0x0001e5f0 ldr r1, [sp, 0x28] | r1 = var_28h;
0x0001e5f2 ldr r2, [sp, 0x20] | r2 = var_20h;
0x0001e5f4 orr r3, r3, 1 | r3 |= 1;
0x0001e5f8 ldr r0, [sp, 0x40] | r0 = var_40h;
0x0001e5fa str r3, [r4, 0x28] | *((r4 + 0x28)) = r3;
0x0001e5fc add r2, r1 | r2 += r1;
0x0001e5fe ldrd r3, r1, [sp] | __asm ("ldrd r3, r1, [sp]");
0x0001e602 umlal r3, r1, r2, r0 | __asm ("umlal r3, r1, r2, r0");
0x0001e606 b 0x1e5a4 |
| } while (1);
| label_4:
0x0001e608 ldr r1, [r4, 0x28] | r1 = *((r4 + 0x28));
0x0001e60a movs r2, 0 | r2 = 0;
0x0001e60c ldr r3, [pc, 0x94] |
0x0001e60e ldr r0, [pc, 0x98] |
0x0001e610 orr r1, r1, 0x20 | r1 |= 0x20;
0x0001e614 str r1, [r4, 0x28] | *((r4 + 0x28)) = r1;
0x0001e616 add r3, pc | r3 = 0x3ccbe;
0x0001e618 add r0, pc | r0 = 0x3ccc6;
0x0001e61a movs r1, 0x7b | r1 = 0x7b;
0x0001e61c bl 0x40ed8 | zbx_strdup2 ();
| do {
| label_1:
0x0001e620 movs r6, 1 | r6 = 1;
0x0001e622 str r0, [r4, 0x20] | *((r4 + 0x20)) = r0;
0x0001e624 b 0x1e5aa | goto label_0;
| label_8:
0x0001e626 ldr r3, [r4, 0x28] | r3 = *((r4 + 0x28));
0x0001e628 orr r3, r3, 0x20 | r3 |= 0x20;
0x0001e62c str r3, [r4, 0x28] | *((r4 + 0x28)) = r3;
0x0001e62e blx 0xe3d4 | r0 = fcn_0000e3d4 ();
0x0001e632 ldr r0, [r0] | r0 = *(r0);
0x0001e634 bl 0x30b74 | zbx_strerror ();
0x0001e638 ldr r1, [pc, 0x70] |
0x0001e63a mov r2, r0 | r2 = r0;
0x0001e63c movs r0, 0 | r0 = 0;
0x0001e63e add r1, pc | r1 = 0x3ccee;
0x0001e640 bl 0x44820 | zbx_dsprintf ()
0x0001e644 b 0x1e620 |
| } while (1);
| label_7:
0x0001e646 ldr r1, [r4, 0x28] | r1 = *((r4 + 0x28));
0x0001e648 movs r2, 0 | r2 = 0;
0x0001e64a ldr r3, [pc, 0x64] |
0x0001e64c ldr r0, [pc, 0x64] |
0x0001e64e orr r1, r1, 0x20 | r1 |= 0x20;
0x0001e652 str r1, [r4, 0x28] | *((r4 + 0x28)) = r1;
0x0001e654 add r3, pc | r3 = 0x3cd0a;
0x0001e656 movs r1, 0x88 | r1 = 0x88;
0x0001e658 add r0, pc | r0 = 0x3cd10;
0x0001e65a bl 0x40ed8 | zbx_strdup2 ();
0x0001e65e b 0x1e620 | goto label_1;
| label_6:
0x0001e660 blx 0xe158 | fcn_0000e158 ();
| label_3:
0x0001e664 ldr r3, [r4, 0x28] | r3 = *((r4 + 0x28));
0x0001e666 movs r6, 1 | r6 = 1;
0x0001e668 orr r3, r3, 0x20 | r3 |= 0x20;
0x0001e66c str r3, [r4, 0x28] | *((r4 + 0x28)) = r3;
0x0001e66e blx 0xe3d4 | r0 = fcn_0000e3d4 ();
0x0001e672 ldr r0, [r0] | r0 = *(r0);
0x0001e674 bl 0x30b74 | zbx_strerror ();
0x0001e678 ldr r1, [pc, 0x3c] |
0x0001e67a mov r2, r0 | r2 = r0;
0x0001e67c mov r0, r5 | r0 = r5;
0x0001e67e add r1, pc | r1 = 0x3cd3a;
0x0001e680 bl 0x44820 | zbx_dsprintf ()
0x0001e684 str r0, [r4, 0x20] | *((r4 + 0x20)) = r0;
0x0001e686 b 0x1e5b0 | goto label_2;
| }
; assembly | /* r2dec pseudo code output */
| /* /logs/firmware/patool_extraction/rootfs.img_unblob_extracted/rootfs.img_extract/0-80367616.squashfs_v4_le_extract/usr/sbin/zabbix_agentd @ 0x1ecf8 */
| #include <stdint.h>
|
; (fcn) fcn.0001ecf8 () | void fcn_0001ecf8 (int16_t arg1, int16_t arg2, int16_t arg3) {
| int32_t var_0h_2;
| int32_t var_0h_3;
| int32_t var_8h;
| int32_t var_8h_2;
| int32_t var_10h;
| int32_t var_10h_2;
| int32_t var_18h;
| int32_t var_18h_2;
| int32_t var_20h;
| int32_t var_20h_2;
| int32_t var_28h;
| int32_t var_28h_2;
| int32_t var_30h;
| int32_t var_30h_2;
| int16_t var_38h;
| int16_t var_44h;
| int16_t var_844h;
| int16_t var_1040h;
| int32_t var_0h;
| r0 = arg1;
| r1 = arg2;
| r2 = arg3;
0x0001ecf8 push.w {r4, r5, r6, r7, r8, sb, sl, lr} |
0x0001ecfc mov sb, r2 | sb = r2;
0x0001ecfe ldr r2, [pc, 0x15c] |
0x0001ed00 sub.w sp, sp, 0x1040 |
0x0001ed04 sub sp, 8 |
0x0001ed06 mov r4, r1 | r4 = r1;
0x0001ed08 ldr r3, [pc, 0x154] | r3 = *(0x1ee60);
0x0001ed0a add.w r1, sp, 0x1040 | r1 += var_1040h;
0x0001ed0e add r2, pc | r2 = 0x3db70;
0x0001ed10 adds r1, 4 | r1 += 4;
0x0001ed12 ldr r3, [r2, r3] |
0x0001ed14 ldr r3, [r3] | r3 = *(0x3db70);
0x0001ed16 str r3, [r1] | *(r1) = r3;
0x0001ed18 mov.w r3, 0 | r3 = 0;
| if (r0 != 0) {
0x0001ed1c cbz r0, 0x1ed24 |
0x0001ed1e ldrb r3, [r0] | r3 = *(r0);
0x0001ed20 mov r7, r0 | r7 = r0;
| if (r3 != 0) {
0x0001ed22 cbnz r3, 0x1ed62 | goto label_3;
| }
| }
0x0001ed24 ldr r3, [pc, 0x13c] |
0x0001ed26 movs r2, 0 | r2 = 0;
0x0001ed28 ldr r0, [pc, 0x13c] |
0x0001ed2a movs r1, 0xf1 | r1 = 0xf1;
0x0001ed2c add r3, pc | r3 = 0x3db94;
0x0001ed2e add r0, pc | r0 = 0x3db9a;
0x0001ed30 bl 0x40ed8 | zbx_strdup2 ();
| label_2:
0x0001ed34 mov.w sl, 1 | sl = 1;
0x0001ed38 str.w r0, [sb] | __asm ("str.w r0, [sb]");
| label_1:
0x0001ed3c ldr r2, [pc, 0x12c] |
0x0001ed3e add.w r1, sp, 0x1040 | r1 += var_1040h;
0x0001ed42 ldr r3, [pc, 0x11c] | r3 = *(0x1ee62);
0x0001ed44 adds r1, 4 | r1 += 4;
0x0001ed46 add r2, pc | r2 = 0x3dbb6;
0x0001ed48 ldr r3, [r2, r3] | r3 = *(0x3dbb6);
0x0001ed4a ldr r2, [r3] | r2 = *(0x3dbb6);
0x0001ed4c ldr r3, [r1] | r3 = *(r1);
0x0001ed4e eors r2, r3 | r2 ^= r3;
0x0001ed50 mov.w r3, 0 | r3 = 0;
| if (r2 != r3) {
0x0001ed54 bne 0x1ee40 | goto label_4;
| }
0x0001ed56 mov r0, sl | r0 = sl;
0x0001ed58 add.w sp, sp, 0x1040 |
0x0001ed5c add sp, 8 |
0x0001ed5e pop.w {r4, r5, r6, r7, r8, sb, sl, pc} |
| label_3:
0x0001ed62 ldr r1, [pc, 0x10c] |
0x0001ed64 ldr r0, [pc, 0x10c] |
0x0001ed66 add r1, pc | r1 = 0x3dbdc;
0x0001ed68 add r0, pc | r0 = 0x3dbe0;
0x0001ed6a blx 0xdf90 | r0 = fcn_0000df90 ();
0x0001ed6e mov r6, r0 | r6 = r0;
0x0001ed70 cmp r0, 0 |
| if (r0 == 0) {
0x0001ed72 beq 0x1ee44 | goto label_5;
| }
0x0001ed74 ldr.w r8, [pc, 0x100] | r8 = *(0x0001ee78);
0x0001ed78 add r5, sp, 0x44 | r5 += var_44h;
0x0001ed7a add r8, pc | r8 += pc;
| do {
| label_0:
0x0001ed7c mov r2, r6 | r2 = r6;
0x0001ed7e mov.w r1, 0x800 | r1 = 0x800;
0x0001ed82 mov r0, r5 | r0 = r5;
0x0001ed84 blx 0xdc98 | r0 = fcn_0000dc98 ();
0x0001ed88 mov sl, r0 | sl = r0;
0x0001ed8a cmp r0, 0 |
| if (r0 == 0) {
0x0001ed8c beq 0x1ee26 | goto label_6;
| }
0x0001ed8e movs r1, 0x3a | r1 = 0x3a;
0x0001ed90 mov r0, r5 | r0 = r5;
0x0001ed92 blx 0xdcd4 | r0 = fcn_0000dcd4 ();
0x0001ed96 cmp r0, 0 |
0x0001ed98 beq 0x1ed7c |
| } while (r0 == 0);
0x0001ed9a mov.w ip, 9 |
0x0001ed9e add.w r1, r4, 0x78 | r1 = r4 + 0x78;
0x0001eda2 add.w r2, r4, 0x70 | r2 = r4 + 0x70;
0x0001eda6 add.w r3, r4, 0x60 | r3 = r4 + 0x60;
0x0001edaa strb.w ip, [r0] | *(r0) = ip;
0x0001edae add.w ip, r4, 0x68 |
0x0001edb2 strd r3, r2, [sp, 0x30] | __asm ("strd r3, r2, [var_30h]");
0x0001edb6 add.w r0, r4, 0x58 | r0 = r4 + 0x58;
0x0001edba add.w r3, r4, 0x48 | r3 = r4 + 0x48;
0x0001edbc lsls r0, r1, 0xd | r0 = r1 << 0xd;
0x0001edbe str r1, [sp, 0x38] | var_38h = r1;
0x0001edc0 add.w r1, r4, 0x50 | r1 = r4 + 0x50;
0x0001edc4 strd r0, ip, [sp, 0x28] | __asm ("strd r0, ip, [var_28h]");
0x0001edc8 strd r3, r1, [sp, 0x20] | __asm ("strd r3, r1, [var_20h]");
0x0001edcc add.w r2, r4, 0x40 | r2 = r4 + 0x40;
0x0001edd0 add.w ip, r4, 0x38 |
0x0001edd4 add.w r0, r4, 0x30 | r0 = r4 + 0x30;
0x0001edd8 add.w r3, r4, 0x28 | r3 = r4 + 0x28;
0x0001eddc strd ip, r2, [sp, 0x18] | __asm ("strd ip, r2, [var_18h]");
0x0001ede0 strd r3, r0, [sp, 0x10] | __asm ("strd r3, r0, [var_10h]");
0x0001ede4 add.w r1, r4, 0x20 | r1 = r4 + 0x20;
0x0001ede8 add.w r2, r4, 0x18 | r2 = r4 + 0x18;
0x0001edec add.w ip, r4, 0x10 |
0x0001edf0 add.w r0, r4, 8 | r0 = r4 + 8;
0x0001edf4 addw sl, sp, 0x844 | __asm ("addw sl, var_844h");
0x0001edf8 strd r2, r1, [sp, 8] | __asm ("strd r2, r1, [var_8h]");
0x0001edfc mov r3, r4 | r3 = r4;
0x0001edfe strd r0, ip, [sp] | __asm ("strd r0, ip, [sp]");
0x0001ee02 mov r2, sl | r2 = sl;
0x0001ee04 mov r1, r8 | r1 = r8;
0x0001ee06 mov r0, r5 | r0 = r5;
0x0001ee08 blx 0xdc68 | r0 = fcn_0000dc68 ();
0x0001ee0c cmp r0, 0x11 |
| if (r0 != 0x11) {
0x0001ee0e bne 0x1ed7c | goto label_0;
| }
0x0001ee10 mov r0, sl | r0 = sl;
0x0001ee12 mov r1, r7 | r1 = r7;
0x0001ee14 blx 0xe3b0 | r0 = fcn_0000e3b0 ();
0x0001ee18 mov sl, r0 | sl = r0;
0x0001ee1a cmp r0, 0 |
| if (r0 != 0) {
0x0001ee1c bne 0x1ed7c | goto label_0;
| }
0x0001ee1e mov r0, r6 | r0 = r6;
0x0001ee20 blx 0xdc8c | fcn_0000dc8c ();
0x0001ee24 b 0x1ed3c | goto label_1;
| label_6:
0x0001ee26 mov r0, r6 | r0 = r6;
0x0001ee28 blx 0xdc8c | fcn_0000dc8c ();
0x0001ee2c ldr r3, [pc, 0x4c] |
0x0001ee2e mov r2, sl | r2 = sl;
0x0001ee30 ldr r0, [pc, 0x4c] |
0x0001ee32 mov.w r1, 0x128 | r1 = 0x128;
0x0001ee36 add r3, pc | r3 = 0x3dcb6;
0x0001ee38 add r0, pc | r0 = 0x3dcbc;
0x0001ee3a bl 0x40ed8 | zbx_strdup2 ();
0x0001ee3e b 0x1ed34 | goto label_2;
| label_4:
0x0001ee40 blx 0xe158 | fcn_0000e158 ();
| label_5:
0x0001ee44 blx 0xe3d4 | r0 = fcn_0000e3d4 ();
0x0001ee48 ldr r0, [r0] | r0 = *(r0);
0x0001ee4a bl 0x30b74 | zbx_strerror ();
0x0001ee4e ldr r1, [pc, 0x34] |
0x0001ee50 mov r2, r0 | r2 = r0;
0x0001ee52 mov r0, r6 | r0 = r6;
0x0001ee54 add r1, pc | r1 = 0x3dcde;
0x0001ee56 bl 0x44820 | zbx_dsprintf ()
0x0001ee5a b 0x1ed34 | goto label_2;
| }
; assembly | /* r2dec pseudo code output */
| /* /logs/firmware/patool_extraction/rootfs.img_unblob_extracted/rootfs.img_extract/0-80367616.squashfs_v4_le_extract/usr/sbin/zabbix_agentd @ 0x1efe8 */
| #include <stdint.h>
|
; (fcn) fcn.0001efe8 () | void fcn_0001efe8 (int16_t arg_48h, int16_t arg1, int16_t arg2, int16_t arg3, int16_t arg4) {
| int16_t var_14h;
| int16_t var_64h;
| int16_t var_14h_2;
| int16_t var_18h;
| int16_t var_24h;
| r0 = arg1;
| r1 = arg2;
| r2 = arg3;
| r3 = arg4;
0x0001efe8 push.w {r4, r5, r6, r7, r8, sb, sl, lr} |
0x0001efec mov r6, r2 | r6 = r2;
0x0001efee ldr r2, [pc, 0x234] |
0x0001eff0 mov r8, r3 | r8 = r3;
0x0001eff2 sub sp, 0x28 |
0x0001eff4 mov r4, r1 | r4 = r1;
0x0001eff6 ldr r3, [pc, 0x230] | r3 = *(0x1f22a);
0x0001eff8 mov r5, r0 | r5 = r0;
0x0001effa add r2, pc | r2 = 0x3e224;
0x0001effc ldr.w sb, [sp, 0x48] | sb = *(arg_48h);
0x0001f000 ldr r3, [r2, r3] |
0x0001f002 ldr r3, [r3] | r3 = *(0x3e224);
0x0001f004 str r3, [sp, 0x24] | var_24h = r3;
0x0001f006 mov.w r3, 0 | r3 = 0;
| if (r0 != 0) {
0x0001f00a cbz r0, 0x1f010 |
0x0001f00c ldrb r3, [r0] | r3 = *(r0);
| if (r3 != 0) {
0x0001f00e cbnz r3, 0x1f038 | goto label_9;
| }
| }
| if (r4 == 0) {
0x0001f010 cbz r4, 0x1f018 | goto label_3;
| }
0x0001f012 ldrb r3, [r4] | r3 = *(r4);
0x0001f014 cmp r3, 0 |
0x0001f016 bne 0x1f082 |
| while (r0 == 0) {
| label_3:
0x0001f018 movs r6, 0 | r6 = 0;
| label_0:
0x0001f01a ldr r2, [pc, 0x210] |
0x0001f01c ldr r3, [pc, 0x208] | r3 = *(0x1f228);
0x0001f01e add r2, pc | r2 = 0x3e250;
0x0001f020 ldr r3, [r2, r3] | r3 = *(0x3e250);
0x0001f022 ldr r2, [r3] | r2 = *(0x3e250);
0x0001f024 ldr r3, [sp, 0x24] | r3 = var_24h;
0x0001f026 eors r2, r3 | r2 ^= r3;
0x0001f028 mov.w r3, 0 | r3 = 0;
| if (r2 != r3) {
0x0001f02c bne.w 0x1f21e | goto label_10;
| }
0x0001f030 mov r0, r6 | r0 = r6;
0x0001f032 add sp, 0x28 |
0x0001f034 pop.w {r4, r5, r6, r7, r8, sb, sl, pc} |
| label_9:
0x0001f038 mov r3, r0 | r3 = r0;
0x0001f03a ldr r0, [pc, 0x1f4] |
0x0001f03c movs r2, 0 | r2 = 0;
0x0001f03e movw r1, 0x3df | r1 = 0x3df;
0x0001f040 adds r1, 0xdf | r1 += 0xdf;
0x0001f042 mov.w r7, -1 | r7 = -1;
0x0001f046 add r0, pc | r0 = 0x3e27c;
0x0001f048 str r7, [sp, 0x14] | var_14h_2 = r7;
0x0001f04a bl 0x40ed8 | zbx_strdup2 ();
0x0001f04e movs r1, 0x2f | r1 = 0x2f;
0x0001f050 mov r7, r0 | r7 = r0;
0x0001f052 blx 0xdcd4 | r0 = fcn_0000dcd4 ();
0x0001f056 mov sl, r0 | sl = r0;
0x0001f058 cmp r0, 0 |
| if (r0 == 0) {
0x0001f05a beq 0x1f102 | goto label_11;
| }
0x0001f05c movs r3, 0 | r3 = 0;
0x0001f05e add r2, sp, 0x14 | r2 += var_14h_2;
0x0001f060 strb r3, [sl], 1 | *(sl) = r3;
| sl++;
0x0001f064 mov r0, r7 | r0 = r7;
0x0001f066 mov r1, sl | r1 = sl;
0x0001f068 bl 0x37df8 | validate_cidr ();
0x0001f06c adds r0, 1 | r0++;
| if (r0 == 1) {
0x0001f06e beq.w 0x1f1cc | goto label_12;
| }
| if (r4 != 0) {
| label_1:
0x0001f072 cbz r4, 0x1f07c |
0x0001f074 ldrb r3, [r4] | r3 = *(r4);
0x0001f076 cmp r3, 0 |
| if (r3 != 0) {
0x0001f078 bne.w 0x1f1e6 | goto label_13;
| }
| }
| label_7:
0x0001f07c mov.w sl, 0 | sl = 0;
0x0001f080 b 0x1f0ba | goto label_14;
0x0001f082 vmov.i64 d17, 0xffff | __asm ("vmov.i64 d17, 0xffff");
0x0001f086 movs r3, 2 | r3 = 2;
0x0001f088 vmov.i32 d16, 0 | __asm ("vmov.i32 d16, 0");
0x0001f08c add.w r2, r8, 4 | r2 = r8 + 4;
0x0001f090 mov.w r1, -1 | r1 = -1;
0x0001f094 mov r0, r4 | r0 = r4;
0x0001f096 vstr d17, [sp, 8] | __asm ("vstr d17, [sp, 8]");
0x0001f09a movs r7, 0 | r7 = 0;
0x0001f09c vstr d16, [sp] | __asm ("vstr d16, [sp]");
0x0001f0a0 bl 0x419a8 | r0 = is_uint_n_range ();
0x0001f0a4 cmp r0, 0 |
0x0001f0a6 beq 0x1f018 |
| }
| label_8:
0x0001f0a8 movs r2, 0xa | r2 = 0xa;
0x0001f0aa movs r1, 0 | r1 = 0;
0x0001f0ac mov r0, r4 | r0 = r4;
0x0001f0ae mov sl, r4 | sl = r4;
0x0001f0b0 blx 0xdfe8 | r0 = waitpid ();
0x0001f0b4 cmp r0, 0 |
| if (r0 != 0) {
0x0001f0b6 bne.w 0x1f20e | goto label_15;
| }
| label_14:
0x0001f0ba mov r2, r6 | r2 = r6;
0x0001f0bc mov r3, r8 | r3 = r8;
0x0001f0be mov r1, sl | r1 = sl;
0x0001f0c0 mov r0, r7 | r0 = r7;
0x0001f0c2 blx 0xdf14 | r0 = fcn_0000df14 ();
0x0001f0c6 cmn.w r0, 8 |
0x0001f0ca mov r6, r0 | r6 = r0;
| if (r0 == 8) {
0x0001f0cc beq 0x1f19a | goto label_16;
| }
0x0001f0ce cmp r0, 0 |
| if (r0 != 0) {
0x0001f0d0 bne 0x1f17c | goto label_17;
| }
0x0001f0d2 ldr.w r5, [r8] | r5 = *(r8);
0x0001f0d6 ldr r3, [r5, 4] | r3 = *((r5 + 4));
0x0001f0d8 cmp r3, 0xa |
| if (r3 == 0xa) {
0x0001f0da beq 0x1f11c | goto label_18;
| }
0x0001f0dc cmp r7, 0 |
| if (r7 == 0) {
0x0001f0de beq 0x1f15e | goto label_19;
| }
0x0001f0e0 ldr r4, [sp, 0x14] | r4 = var_14h_2;
0x0001f0e2 adds r3, r4, 1 | r3 = r4 + 1;
| if (r3 == r4) {
0x0001f0e4 beq 0x1f1aa | goto label_20;
| }
0x0001f0e6 cmp.w sl, 0 |
| if (sl != 0) {
0x0001f0ea beq 0x1f0f6 |
0x0001f0ec ldr r2, [r5, 0x14] | r2 = *((r5 + 0x14));
0x0001f0ee ldrh r2, [r2, 2] | r2 = *((r2 + 2));
0x0001f0f0 rev16 r2, r2 | __asm ("rev16 r2, r2");
0x0001f0f2 strh.w r2, [r8, 4] | *((r8 + 4)) = r2;
| }
| label_2:
0x0001f0f6 str.w r4, [r8, 8] | __asm ("str.w r4, [r8, 8]");
| label_4:
0x0001f0fa mov r0, r7 | r0 = r7;
0x0001f0fc blx 0xde30 | fcn_0000de30 ();
0x0001f100 b 0x1f01a | goto label_0;
| label_11:
0x0001f102 mov r0, r7 | r0 = r7;
0x0001f104 bl 0x413f0 | is_supported_ip ();
0x0001f106 invalid |
| if (sl != 0) {
0x0001f10a bne 0x1f072 | goto label_1;
| }
0x0001f10c ldr r1, [pc, 0x124] |
0x0001f10e mov r2, r5 | r2 = r5;
0x0001f110 ldr.w r0, [sb] | r0 = *(sb);
0x0001f114 add r1, pc | r1 = 0x3e34c;
0x0001f116 bl 0x44820 | zbx_dsprintf ()
0x0001f11a b 0x1f1dc | goto label_21;
| label_18:
0x0001f11c ldr r3, [pc, 0x118] |
0x0001f11e add.w ip, sp, 0x18 |
0x0001f122 add r3, pc | r3 = 0x3e35e;
0x0001f124 ldm.w r3, {r0, r1, r2} | r0 = *(r3);
| r1 = *((r3 + 4));
| r2 = *((r3 + 8));
0x0001f128 stm.w ip, {r0, r1, r2} | *(ip) = r0;
| *((ip + 4)) = r1;
| *((ip + 8)) = r2;
| if (r7 == 0) {
0x0001f12c cbz r7, 0x1f15e | goto label_19;
| }
0x0001f12e ldr r4, [sp, 0x14] | r4 = var_14h_2;
0x0001f130 mov r1, ip | r1 = ip;
0x0001f132 ldr r5, [r5, 0x14] | r5 = *((r5 + 0x14));
0x0001f134 adds r2, r4, 1 | r2 = r4 + 1;
0x0001f136 mov.w r2, 0xc | r2 = 0xc;
0x0001f13a it eq |
| if (r2 != r4) {
0x0001f13c moveq r4, 0x80 | r4 = 0x80;
| }
0x0001f13e add.w r0, r5, 8 | r0 = r5 + 8;
0x0001f142 it eq |
| if (r2 != r4) {
0x0001f144 streq r4, [sp, 0x14] | var_14h_2 = r4;
| }
0x0001f146 blx 0xdbec | r0 = sysconf ();
0x0001f14a cmp r0, 0 |
| if (r0 == 0) {
0x0001f14c beq 0x1f1be | goto label_22;
| }
0x0001f14e cmp.w sl, 0 |
| if (sl == 0) {
0x0001f152 beq 0x1f0f6 | goto label_2;
| }
| label_6:
0x0001f154 ldrh r2, [r5, 2] | r2 = *((r5 + 2));
0x0001f156 rev16 r2, r2 | __asm ("rev16 r2, r2");
0x0001f158 strh.w r2, [r8, 4] | *((r8 + 4)) = r2;
0x0001f15c b 0x1f0f6 | goto label_2;
| label_19:
0x0001f15e cmp.w sl, 0 |
| if (sl != 0) {
0x0001f162 beq 0x1f16e |
0x0001f164 ldr r3, [r5, 0x14] | r3 = *((r5 + 0x14));
0x0001f166 ldrh r3, [r3, 2] | r3 = *((r3 + 2));
0x0001f168 rev16 r3, r3 | __asm ("rev16 r3, r3");
0x0001f16a strh.w r3, [r8, 4] | *((r8 + 4)) = r3;
| }
0x0001f16e mov r0, r5 | r0 = r5;
0x0001f170 blx 0xdd90 | strrchr (r0, r1);
0x0001f174 movs r3, 0 | r3 = 0;
0x0001f176 str.w r3, [r8] | __asm ("str.w r3, [r8]");
0x0001f17a b 0x1f018 | goto label_3;
| label_17:
0x0001f17c ldr r1, [pc, 0xbc] |
0x0001f17e mov r2, r5 | r2 = r5;
0x0001f180 ldr.w r0, [sb] | r0 = *(sb);
0x0001f184 add r1, pc | r1 = 0x3e3c4;
0x0001f186 bl 0x44820 | zbx_dsprintf ()
| label_5:
0x0001f18a mov.w r6, -1 | r6 = -1;
0x0001f18e str.w r0, [sb] | __asm ("str.w r0, [sb]");
0x0001f192 cmp r7, 0 |
| if (r7 == 0) {
0x0001f194 beq.w 0x1f01a | goto label_0;
| }
0x0001f198 b 0x1f0fa | goto label_4;
| label_16:
0x0001f19a ldr r1, [pc, 0xa4] |
0x0001f19c mov r2, r4 | r2 = r4;
0x0001f19e ldr.w r0, [sb] | r0 = *(sb);
0x0001f1a2 add r1, pc | r1 = 0x3e3e8;
0x0001f1a4 bl 0x44820 | zbx_dsprintf ()
0x0001f1a8 b 0x1f18a | goto label_5;
| label_20:
0x0001f1aa cmp.w sl, 0 |
| if (sl != 0) {
0x0001f1ae beq 0x1f1ba |
0x0001f1b0 ldr r3, [r5, 0x14] | r3 = *((r5 + 0x14));
0x0001f1b2 ldrh r3, [r3, 2] | r3 = *((r3 + 2));
0x0001f1b4 rev16 r3, r3 | __asm ("rev16 r3, r3");
0x0001f1b6 strh.w r3, [r8, 4] | *((r8 + 4)) = r3;
| }
0x0001f1ba movs r4, 0x20 | r4 = 0x20;
0x0001f1bc b 0x1f0f6 | goto label_2;
| label_22:
0x0001f1be movs r3, 1 | r3 = 1;
0x0001f1c0 strb.w r3, [r8, 0xc] | *((r8 + 0xc)) = r3;
0x0001f1c4 cmp.w sl, 0 |
| if (sl != 0) {
0x0001f1c8 bne 0x1f154 | goto label_6;
| }
0x0001f1ca b 0x1f0f6 | goto label_2;
| label_12:
0x0001f1cc ldr r1, [pc, 0x74] |
0x0001f1ce mov r3, sl | r3 = sl;
0x0001f1d0 ldr.w r0, [sb] | r0 = *(sb);
0x0001f1d4 mov r2, r7 | r2 = r7;
0x0001f1d6 add r1, pc | r1 = 0x3e41e;
0x0001f1d8 bl 0x44820 | zbx_dsprintf ()
| label_21:
0x0001f1dc mov.w r6, -1 | r6 = -1;
0x0001f1e0 str.w r0, [sb] | __asm ("str.w r0, [sb]");
0x0001f1e4 b 0x1f0fa | goto label_4;
| label_13:
0x0001f1e6 vmov.i64 d17, 0xffff | __asm ("vmov.i64 d17, 0xffff");
0x0001f1ea movs r3, 2 | r3 = 2;
0x0001f1ec vmov.i32 d16, 0 | __asm ("vmov.i32 d16, 0");
0x0001f1f0 add.w r2, r8, 4 | r2 = r8 + 4;
0x0001f1f4 mov.w r1, -1 | r1 = -1;
0x0001f1f8 mov r0, r4 | r0 = r4;
0x0001f1fa vstr d17, [sp, 8] | __asm ("vstr d17, [sp, 8]");
0x0001f1fe vstr d16, [sp] | __asm ("vstr d16, [sp]");
0x0001f202 bl 0x419a8 | r0 = is_uint_n_range ();
0x0001f206 cmp r0, 0 |
| if (r0 == 0) {
0x0001f208 beq.w 0x1f07c | goto label_7;
| }
0x0001f20c b 0x1f0a8 | goto label_8;
| label_15:
0x0001f20e ldr r1, [pc, 0x38] |
0x0001f210 mov r2, r4 | r2 = r4;
0x0001f212 ldr.w r0, [sb] | r0 = *(sb);
0x0001f216 add r1, pc | r1 = 0x3e464;
0x0001f218 bl 0x44820 | zbx_dsprintf ()
0x0001f21c b 0x1f18a | goto label_5;
| label_10:
0x0001f21e blx 0xe158 | fcn_0000e158 ();
0x0001f222 nop |
0x0001f224 ldm r3, {r1, r2, r3, r4, r6, r7} | r1 = *(r3);
| r2 = *((r3 + 4));
| r3 = *((r3 + 8));
| r4 = *((r3 + 12));
| r6 = *((r3 + 16));
| r7 = *((r3 + 20));
0x0001f226 movs r3, r0 | r3 = r0;
0x0001f228 lsls r4, r2, 0xe | r4 = r2 << 0xe;
0x0001f22a movs r0, r0 |
0x0001f22c ldm r3, {r1, r3, r4, r5, r7} | r1 = *(r3);
| r3 = *((r3 + 4));
| r4 = *((r3 + 8));
| r5 = *((r3 + 12));
| r7 = *((r3 + 16));
0x0001f22e movs r3, r0 | r3 = r0;
0x0001f230 movs r5, 0xa2 | r5 = 0xa2;
0x0001f232 movs r3, r0 | r3 = r0;
0x0001f234 movs r5, 0xc8 | r5 = 0xc8;
0x0001f236 movs r3, r0 | r3 = r0;
0x0001f238 cmp r1, 0xb2 |
0x0001f23a movs r3, r0 | r3 = r0;
0x0001f23c movs r5, 0x58 | r5 = 0x58;
0x0001f23e movs r3, r0 | r3 = r0;
0x0001f240 movs r5, 0x6e | r5 = 0x6e;
0x0001f242 movs r3, r0 | r3 = r0;
0x0001f244 movs r4, 0xe6 | r4 = 0xe6;
0x0001f246 movs r3, r0 | r3 = r0;
0x0001f248 movs r4, 0xe2 | r4 = 0xe2;
0x0001f24a movs r3, r0 | r3 = r0;
| }
; assembly | /* r2dec pseudo code output */
| /* /logs/firmware/patool_extraction/rootfs.img_unblob_extracted/rootfs.img_extract/0-80367616.squashfs_v4_le_extract/usr/sbin/zabbix_agentd @ 0x1f24c */
| #include <stdint.h>
|
; (fcn) fcn.0001f24c () | void fcn_0001f24c (int16_t arg_4h, int16_t arg_48h, int16_t arg_98h, int16_t arg_9ch, int16_t arg_80h, int16_t arg_84h, int16_t arg_88h, int16_t arg_8ch, int16_t arg_97h_2, int16_t arg_98h_2, int16_t arg_9ah_2, int16_t arg_9ch_2, int16_t arg_a4h, int16_t arg_11ch_2, int16_t arg_124h_2, int16_t arg_19ch_2, int16_t arg_99ch, int16_t arg_9c8h, int16_t arg_9cch, int16_t arg1, int16_t arg2, int16_t arg3, int16_t arg4) {
| r0 = arg1;
| r1 = arg2;
| r2 = arg3;
| r3 = arg4;
0x0001f24c svcmi 0xf0e92d | __asm ("svcmi 0xf0e92d");
0x0001f250 mov fp, r2 |
0x0001f252 subw sp, sp, 0x9a4 | __asm ("subw sp, sp, 0x9a4");
0x0001f256 ldr r2, [pc, 0x1b8] |
0x0001f258 mov r4, r0 | r4 = r0;
0x0001f25a str r3, [sp, 0x80] | *(arg_80h) = r3;
0x0001f25c ldr r3, [pc, 0x1b4] | r3 = *(0x1f414);
0x0001f25e add r2, pc | r2 = 0x3e674;
0x0001f260 str r1, [sp, 0x84] | *(arg_84h) = r1;
0x0001f262 ldr r1, [pc, 0x1b4] |
0x0001f264 ldr r3, [r2, r3] |
0x0001f266 ldr.w r5, [sp, 0x9cc] | r5 = *(arg_9cch);
0x0001f26a add r1, pc | r1 = 0x3e688;
0x0001f26c ldr r3, [r3] | r3 = *(0x3e674);
0x0001f26e str.w r3, [sp, 0x99c] | __asm ("str.w r3, [arg_99ch]");
0x0001f272 mov.w r3, 0 | r3 = 0;
0x0001f276 ldr.w r3, [sp, 0x9c8] | r3 = *(arg_9c8h);
0x0001f27a str r3, [sp, 0x88] | *(arg_88h) = r3;
0x0001f27c blx 0xdf90 | r0 = fcn_0000df90 ();
0x0001f280 mov r6, r0 | r6 = r0;
0x0001f282 cmp r0, 0 |
| if (r0 == 0) {
0x0001f284 beq.w 0x1f3e8 | goto label_1;
| }
0x0001f288 ldr.w sb, [pc, 0x190] | sb = *(0x0001f41c);
0x0001f28c add r5, sp, 0x19c | r5 += arg_19ch_2;
0x0001f28e movs r3, 0xa | r3 = 0xa;
0x0001f290 add.w sl, sp, 0x11c | sl += arg_11ch_2;
0x0001f294 add r7, sp, 0x9c | r7 += arg_9ch_2;
0x0001f296 strh.w r3, [sl] | *(sl) = r3;
0x0001f29a add sb, pc | sb += pc;
0x0001f29c strh r3, [r7] | *(r7) = r3;
| do {
| label_0:
0x0001f29e mov r2, r6 | r2 = r6;
0x0001f2a0 mov.w r1, 0x800 | r1 = 0x800;
0x0001f2a4 mov r0, r5 | r0 = r5;
0x0001f2a6 blx 0xdc98 | r0 = fcn_0000dc98 ();
0x0001f2aa cmp r0, 0 |
| if (r0 == 0) {
0x0001f2ac beq.w 0x1f3c0 | goto label_2;
| }
0x0001f2b0 movs r1, 0x3a | r1 = 0x3a;
0x0001f2b2 mov r0, r5 | r0 = r5;
0x0001f2b4 blx 0xdcd4 | r0 = fcn_0000dcd4 ();
0x0001f2b8 mov r4, r0 | r4 = r0;
0x0001f2ba cmp r0, 0 |
0x0001f2bc beq 0x1f29e |
| } while (r0 == 0);
0x0001f2be blx 0xdf68 | r0 = fcn_0000df68 ();
0x0001f2c2 cmp r0, 0x4f |
| if (r0 < 0x4f) {
0x0001f2c4 bls 0x1f29e | goto label_0;
| }
0x0001f2c6 mov r1, r7 | r1 = r7;
0x0001f2c8 adds r0, r4, 2 | r0 = r4 + 2;
0x0001f2ca bl 0x1eca8 | r0 = fcn_0001eca8 (r0, r1);
0x0001f2ce cmp r0, 0 |
| if (r0 != 0) {
0x0001f2d0 bne 0x1f29e | goto label_0;
| }
0x0001f2d2 add.w r8, sp, 0x98 | r8 += arg_98h_2;
0x0001f2d6 mov r1, sb | r1 = sb;
0x0001f2d8 mov r2, r8 | r2 = r8;
0x0001f2da add.w r0, r4, 0x22 | r0 = r4 + 0x22;
0x0001f2de blx 0xdc68 | r0 = fcn_0000dc68 ();
0x0001f2e2 cmp r0, 1 |
| if (r0 != 1) {
0x0001f2e4 bne 0x1f29e | goto label_0;
| }
0x0001f2e6 mov r1, sl | r1 = sl;
0x0001f2e8 add.w r0, r4, 0x28 | r0 = r4 + 0x28;
0x0001f2ec bl 0x1eca8 | r0 = fcn_0001eca8 (r0, r1);
0x0001f2f0 cmp r0, 0 |
| if (r0 != 0) {
0x0001f2f2 bne 0x1f29e | goto label_0;
| }
0x0001f2f4 ldr r1, [pc, 0x128] |
0x0001f2f6 add.w r0, r4, 0x48 | r0 = r4 + 0x48;
0x0001f2fa add.w r4, sp, 0x9a | r4 += arg_9ah_2;
0x0001f2fe add.w r3, sp, 0x97 | r3 += arg_97h_2;
0x0001f302 mov r2, r4 | r2 = r4;
0x0001f304 str r3, [sp, 0x8c] | *(arg_8ch) = r3;
0x0001f306 add r1, pc | r1 = 0x3e72a;
0x0001f308 blx 0xdc68 | r0 = fcn_0000dc68 ();
0x0001f30c cmp r0, 2 |
| if (r0 != 2) {
0x0001f30e bne 0x1f29e | goto label_0;
| }
0x0001f310 ldrh.w r2, [fp, 4] | r2 = *(arg_4h);
0x0001f314 ldr r3, [sp, 0x8c] | r3 = *(arg_8ch);
| if (r2 == 0) {
0x0001f316 cbz r2, 0x1f320 | goto label_3;
| }
0x0001f318 ldrh.w r1, [sp, 0x98] | r1 = *(arg_98h_2);
0x0001f31c cmp r1, r2 |
| if (r1 != r2) {
0x0001f31e bne 0x1f29e | goto label_0;
| }
| label_3:
0x0001f320 ldr r2, [sp, 0x80] | r2 = *(arg_80h);
0x0001f322 ldrh r2, [r2, 4] | r2 = *((r2 + 4));
| if (r2 == 0) {
0x0001f324 cbz r2, 0x1f32c | goto label_4;
| }
0x0001f326 ldrh r1, [r4] | r1 = *(r4);
0x0001f328 cmp r1, r2 |
| if (r1 != r2) {
0x0001f32a bne 0x1f29e | goto label_0;
| }
| label_4:
0x0001f32c ldr r2, [sp, 0x84] | r2 = *(arg_84h);
| if (r2 == 0) {
0x0001f32e cbz r2, 0x1f336 | goto label_5;
| }
0x0001f330 ldrb r3, [r3] | r3 = *(r3);
0x0001f332 cmp r3, r2 |
| if (r3 != r2) {
0x0001f334 bne 0x1f29e | goto label_0;
| }
| label_5:
0x0001f336 ldr.w r4, [fp] | r4 = *(fp);
| if (r4 == 0) {
0x0001f33a cbz r4, 0x1f370 | goto label_6;
| }
0x0001f33c ldr.w r8, [fp, 8] | r8 = *(arg_98h);
0x0001f340 movs r2, 0x78 | r2 = 0x78;
0x0001f342 ldrb.w ip, [fp, 0xc] | ip = *(arg_9ch);
0x0001f346 add r1, sp, 0xa4 | r1 += arg_a4h;
0x0001f348 mov r0, sp | r0 = sp;
0x0001f34a clz r3, r8 | r3 &= r8;
0x0001f34e lsrs r3, r3, 5 | r3 >>= 5;
0x0001f350 cmp.w ip, 1 |
0x0001f354 it ne |
| if (ip == 1) {
0x0001f356 orrne r3, r3, 1 | r3 |= 1;
| }
0x0001f35a str r3, [sp, 0x78] | *(arg_9ch) = r3;
0x0001f35c blx 0xdf84 | fcn_0000df84 ();
0x0001f360 ldm.w r7, {r2, r3} | r2 = *(r7);
| r3 = *((r7 + 4));
0x0001f364 mov r1, r4 | r1 = r4;
0x0001f366 mov r0, r8 | r0 = r8;
0x0001f368 bl 0x37c94 | zbx_ip_cmp ();
0x0001f36c adds r0, 1 | r0++;
| if (r0 == 1) {
0x0001f36e beq 0x1f29e | goto label_0;
| }
| label_6:
0x0001f370 ldr r3, [sp, 0x80] | r3 = *(arg_80h);
0x0001f372 ldr r4, [r3] | r4 = *(r3);
| if (r4 == 0) {
0x0001f374 cbz r4, 0x1f3ae | goto label_7;
| }
0x0001f376 ldr r3, [sp, 0x80] | r3 = *(arg_80h);
0x0001f378 movs r2, 0x78 | r2 = 0x78;
0x0001f37a add r1, sp, 0x124 | r1 += arg_124h_2;
0x0001f37c mov r0, sp | r0 = sp;
0x0001f37e ldr.w r8, [r3, 8] | r8 = *((r3 + 8));
0x0001f382 ldrb.w ip, [r3, 0xc] | ip = *((r3 + 0xc));
0x0001f386 clz r3, r8 | r3 &= r8;
0x0001f38a lsrs r3, r3, 5 | r3 >>= 5;
0x0001f38c cmp.w ip, 1 |
0x0001f390 it ne |
| if (ip == 1) {
0x0001f392 orrne r3, r3, 1 | r3 |= 1;
| }
0x0001f396 str r3, [sp, 0x78] | *(arg_9ch) = r3;
0x0001f398 blx 0xdf84 | fcn_0000df84 ();
0x0001f39c ldm.w sl, {r2, r3} | r2 = *(sl);
| r3 = *((sl + 4));
0x0001f3a0 mov r1, r4 | r1 = r4;
0x0001f3a2 mov r0, r8 | r0 = r8;
0x0001f3a4 bl 0x37c94 | zbx_ip_cmp ();
0x0001f3a8 adds r0, 1 | r0++;
| if (r0 == 1) {
0x0001f3aa beq.w 0x1f29e | goto label_0;
| }
| label_7:
0x0001f3ae ldr r2, [sp, 0x88] | r2 = *(arg_88h);
0x0001f3b0 ldr r3, [r2] | r3 = *(r2);
0x0001f3b2 adds r3, 1 | r3++;
0x0001f3b4 str r3, [r2] | *(r2) = r3;
0x0001f3b6 ldr r3, [r2, 4] | r3 = *((r2 + 4));
0x0001f3b8 adc r3, r3, 0 | __asm ("adc r3, r3, 0");
0x0001f3bc str r3, [r2, 4] | *((r2 + 4)) = r3;
0x0001f3be b 0x1f29e | goto label_0;
| label_2:
0x0001f3c0 mov r4, r0 | r4 = r0;
0x0001f3c2 mov r0, r6 | r0 = r6;
0x0001f3c4 blx 0xdc8c | fcn_0000dc8c ();
0x0001f3c8 mov r0, r4 | r0 = r4;
| do {
0x0001f3ca ldr r2, [pc, 0x58] |
0x0001f3cc ldr r3, [pc, 0x44] | r3 = *(0x1f414);
0x0001f3ce add r2, pc | r2 = 0x3e7f8;
0x0001f3d0 ldr r3, [r2, r3] | r3 = *(0x3e7f8);
0x0001f3d2 ldr r2, [r3] | r2 = *(0x3e7f8);
0x0001f3d4 ldr.w r3, [sp, 0x99c] | r3 = *(arg_99ch);
0x0001f3d8 eors r2, r3 | r2 ^= r3;
0x0001f3da mov.w r3, 0 | r3 = 0;
| if (r2 != r3) {
0x0001f3de bne 0x1f40a | goto label_8;
| }
0x0001f3e0 addw sp, sp, 0x9a4 | __asm ("addw sp, sp, 0x9a4");
0x0001f3e4 pop.w {r4, r5, r6, r7, r8, sb, sl, fp, pc} |
| label_1:
0x0001f3e8 blx 0xe3d4 | r0 = fcn_0000e3d4 ();
0x0001f3ec ldr r0, [r0] | r0 = *(r0);
0x0001f3ee bl 0x30b74 | zbx_strerror ();
0x0001f3f2 ldr r1, [pc, 0x34] |
0x0001f3f4 mov r3, r0 | r3 = r0;
0x0001f3f6 mov r2, r4 | r2 = r4;
0x0001f3f8 mov r0, r6 | r0 = r6;
0x0001f3fa add r1, pc | r1 = 0x3e828;
0x0001f3fc bl 0x44820 | r0 = zbx_dsprintf ()
0x0001f400 mov r3, r0 | r3 = r0;
0x0001f402 mov.w r0, -1 | r0 = -1;
0x0001f404 adds r0, 0xff | r0 += 0xff;
0x0001f406 str r3, [r5] | *(r5) = r3;
0x0001f408 b 0x1f3ca |
| } while (1);
| label_8:
0x0001f40a blx 0xe158 | fcn_0000e158 ();
0x0001f40e nop |
0x0001f410 ldm r1, {r1, r3, r4, r5, r6} | r1 = *(r1);
| r3 = *((r1 + 4));
| r4 = *((r1 + 8));
| r5 = *((r1 + 12));
| r6 = *((r1 + 16));
0x0001f412 movs r3, r0 | r3 = r0;
0x0001f414 lsls r4, r2, 0xe | r4 = r2 << 0xe;
0x0001f416 movs r0, r0 |
0x0001f418 movs r0, 0xa6 | r0 = 0xa6;
0x0001f41a movs r3, r0 | r3 = r0;
0x0001f41c movs r4, 0xce | r4 = 0xce;
0x0001f41e movs r3, r0 | r3 = r0;
0x0001f420 movs r4, 0x6a | r4 = 0x6a;
0x0001f422 movs r3, r0 | r3 = r0;
0x0001f424 ldm r0!, {r1, r3} | r1 = *(r0!);
| r3 = *((r0! + 4));
0x0001f426 movs r3, r0 | r3 = r0;
0x0001f428 movs r3, 0x5a | r3 = 0x5a;
0x0001f42a movs r3, r0 | r3 = r0;
| }
; assembly | /* r2dec pseudo code output */
| /* /logs/firmware/patool_extraction/rootfs.img_unblob_extracted/rootfs.img_extract/0-80367616.squashfs_v4_le_extract/usr/sbin/zabbix_agentd @ 0x1f42c */
| #include <stdint.h>
|
; (fcn) fcn.0001f42c () | void fcn_0001f42c (int16_t arg_4h, int16_t arg_48h, int16_t arg_97h, int16_t arg_98h, int16_t arg_9ah, int16_t arg_9ch, int16_t arg_a0h, int16_t arg_80h, int16_t arg_11ch, int16_t arg_120h, int16_t arg_124h, int16_t arg_19ch, int16_t arg_99ch_2, int16_t arg_9c8h_2, int16_t arg_9cch_2, int16_t arg1, int16_t arg2, int16_t arg3, int16_t arg4) {
| int16_t var_0h;
| int16_t var_4h;
| int16_t var_8h;
| int16_t var_ch;
| int16_t var_14h;
| int16_t var_18h;
| int16_t var_20h;
| int16_t var_2ch;
| int16_t var_30h;
| int16_t var_3ch;
| int16_t var_40h;
| int16_t var_44h;
| int16_t var_64h;
| int16_t var_78h;
| int16_t var_80h;
| int16_t var_84h;
| int16_t var_88h;
| int16_t var_8ch;
| r0 = arg1;
| r1 = arg2;
| r2 = arg3;
| r3 = arg4;
0x0001f42c svcmi 0xf0e92d | __asm ("svcmi 0xf0e92d");
0x0001f430 mov r8, r2 | r8 = r2;
0x0001f432 ldr r2, [pc, 0x198] |
0x0001f434 mov sb, r3 | sb = r3;
0x0001f436 subw sp, sp, 0x9a4 | __asm ("subw sp, sp, 0x9a4");
0x0001f43a mov r4, r0 | r4 = r0;
0x0001f43c ldr r3, [pc, 0x190] | r3 = *(0x1f5d0);
0x0001f43e str r1, [sp, 0x84] | var_84h = r1;
0x0001f440 add r2, pc | r2 = 0x3ea12;
0x0001f442 ldr r1, [pc, 0x190] |
0x0001f444 ldr r3, [r2, r3] |
0x0001f446 ldr.w fp, [sp, 0x9c8] | fp = *(arg_9c8h_2);
0x0001f44a add r1, pc | r1 = 0x3ea24;
0x0001f44c ldr.w r6, [sp, 0x9cc] | r6 = *(arg_9cch_2);
0x0001f450 ldr r3, [r3] | r3 = *(0x3ea12);
0x0001f452 str.w r3, [sp, 0x99c] | __asm ("str.w r3, [arg_99ch_2]");
0x0001f456 mov.w r3, 0 | r3 = 0;
0x0001f45a blx 0xdf90 | r0 = fcn_0000df90 ();
0x0001f45e mov r5, r0 | r5 = r0;
0x0001f460 cmp r0, 0 |
| if (r0 == 0) {
0x0001f462 beq.w 0x1f5a6 | goto label_9;
| }
0x0001f466 movs r3, 2 | r3 = 2;
0x0001f468 add r2, sp, 0x11c | r2 += arg_11ch;
0x0001f46a strh.w r3, [sp, 0x11c] | *(arg_11ch) = r3;
0x0001f46e add r4, sp, 0x19c | r4 += arg_19ch;
0x0001f470 strh.w r3, [sp, 0x9c] | *(arg_9ch) = r3;
0x0001f474 ldr r3, [pc, 0x160] |
0x0001f476 str r2, [sp, 0x8c] | var_8ch = r2;
0x0001f478 add r2, sp, 0x9c | r2 += arg_9ch;
0x0001f47a str r2, [sp, 0x88] | var_88h = r2;
0x0001f47c add r3, pc | r3 = 0x3ea58;
0x0001f47e str r3, [sp, 0x80] | var_80h = r3;
| do {
| label_0:
0x0001f480 mov r2, r5 | r2 = r5;
0x0001f482 mov.w r1, 0x800 | r1 = 0x800;
0x0001f486 mov r0, r4 | r0 = r4;
0x0001f488 blx 0xdc98 | r0 = fcn_0000dc98 ();
0x0001f48c cmp r0, 0 |
| if (r0 == 0) {
0x0001f48e beq 0x1f57e | goto label_10;
| }
| label_1:
0x0001f490 movs r1, 0x3a | r1 = 0x3a;
0x0001f492 mov r0, r4 | r0 = r4;
0x0001f494 blx 0xdcd4 | r0 = fcn_0000dcd4 ();
0x0001f498 cmp r0, 0 |
0x0001f49a beq 0x1f480 |
| } while (r0 == 0);
0x0001f49c add r3, sp, 0x120 | r3 += arg_120h;
0x0001f49e add r6, sp, 0x98 | r6 += arg_98h;
0x0001f4a0 add.w sl, sp, 0x97 | sl += arg_97h;
0x0001f4a4 add.w r7, sp, 0x9a | r7 += arg_9ah;
0x0001f4a8 str r3, [sp] | *(sp) = r3;
0x0001f4aa add r2, sp, 0xa0 | r2 += arg_a0h;
0x0001f4ac ldr r1, [sp, 0x80] | r1 = var_80h;
0x0001f4ae mov r3, r6 | r3 = r6;
0x0001f4b0 str.w sl, [sp, 8] | __asm ("str.w sl, [var_8h]");
0x0001f4b4 str r7, [sp, 4] | *(arg_4h) = r7;
0x0001f4b6 blx 0xdc68 | r0 = fcn_0000dc68 ();
0x0001f4ba cmp r0, 5 |
| if (r0 != 5) {
0x0001f4bc bne 0x1f480 | goto label_0;
| }
0x0001f4be ldrh.w r3, [r8, 4] | r3 = *((r8 + 4));
| if (r3 == 0) {
0x0001f4c2 cbz r3, 0x1f4cc | goto label_11;
| }
0x0001f4c4 ldrh.w r2, [sp, 0x98] | r2 = *(arg_98h);
0x0001f4c8 cmp r2, r3 |
| if (r2 != r3) {
0x0001f4ca bne 0x1f480 | goto label_0;
| }
| label_11:
0x0001f4cc ldrh.w r3, [sb, 4] | r3 = *((sb + 4));
| if (r3 == 0) {
0x0001f4d0 cbz r3, 0x1f4d8 | goto label_12;
| }
0x0001f4d2 ldrh r2, [r7] | r2 = *(r7);
0x0001f4d4 cmp r2, r3 |
| if (r2 != r3) {
0x0001f4d6 bne 0x1f480 | goto label_0;
| }
| label_12:
0x0001f4d8 ldr r2, [sp, 0x84] | r2 = var_84h;
| if (r2 == 0) {
0x0001f4da cbz r2, 0x1f4e4 | goto label_13;
| }
0x0001f4dc ldrb.w r3, [sl] | r3 = *(sl);
0x0001f4e0 cmp r3, r2 |
| if (r3 != r2) {
0x0001f4e2 bne 0x1f480 | goto label_0;
| }
| label_13:
0x0001f4e4 ldr.w r6, [r8] | r6 = *(r8);
| if (r6 == 0) {
0x0001f4e8 cbz r6, 0x1f51e | goto label_14;
| }
0x0001f4ea ldr.w r7, [r8, 8] | r7 = *((r8 + 8));
0x0001f4ee movs r2, 0x78 | r2 = 0x78;
0x0001f4f0 ldrb.w ip, [r8, 0xc] | ip = *((r8 + 0xc));
0x0001f4f4 add r1, sp, 0xa4 | r1 += arg_80h;
0x0001f4f6 mov r0, sp | r0 = sp;
0x0001f4f8 clz r3, r7 | r3 &= r7;
0x0001f4fc lsrs r3, r3, 5 | r3 >>= 5;
0x0001f4fe cmp.w ip, 1 |
0x0001f502 it ne |
| if (ip == 1) {
0x0001f504 orrne r3, r3, 1 | r3 |= 1;
| }
0x0001f508 str r3, [sp, 0x78] | var_78h = r3;
0x0001f50a blx 0xdf84 | fcn_0000df84 ();
0x0001f50e ldr r3, [sp, 0x88] | r3 = var_88h;
0x0001f510 mov r1, r6 | r1 = r6;
0x0001f512 mov r0, r7 | r0 = r7;
0x0001f514 ldm r3, {r2, r3} | r2 = *(r3);
| r3 = *((r3 + 4));
0x0001f516 bl 0x37c94 | zbx_ip_cmp ();
0x0001f51a adds r0, 1 | r0++;
| if (r0 == 1) {
0x0001f51c beq 0x1f480 | goto label_0;
| }
| label_14:
0x0001f51e ldr.w r6, [sb] | r6 = *(sb);
| if (r6 == 0) {
0x0001f522 cbz r6, 0x1f558 | goto label_15;
| }
0x0001f524 ldr.w r7, [sb, 8] | r7 = *((sb + 8));
0x0001f528 movs r2, 0x78 | r2 = 0x78;
0x0001f52a ldrb.w ip, [sb, 0xc] | ip = *((sb + 0xc));
0x0001f52e add r1, sp, 0x124 | r1 += arg_124h;
0x0001f530 mov r0, sp | r0 = sp;
0x0001f532 clz r3, r7 | r3 &= r7;
0x0001f536 lsrs r3, r3, 5 | r3 >>= 5;
0x0001f538 cmp.w ip, 1 |
0x0001f53c it ne |
| if (ip == 1) {
0x0001f53e orrne r3, r3, 1 | r3 |= 1;
| }
0x0001f542 str r3, [sp, 0x78] | var_78h = r3;
0x0001f544 blx 0xdf84 | fcn_0000df84 ();
0x0001f548 ldr r3, [sp, 0x8c] | r3 = var_8ch;
0x0001f54a mov r1, r6 | r1 = r6;
0x0001f54c mov r0, r7 | r0 = r7;
0x0001f54e ldm r3, {r2, r3} | r2 = *(r3);
| r3 = *((r3 + 4));
0x0001f550 bl 0x37c94 | zbx_ip_cmp ();
0x0001f554 adds r0, 1 | r0++;
| if (r0 == 1) {
0x0001f556 beq 0x1f480 | goto label_0;
| }
| label_15:
0x0001f558 ldr.w r3, [fp] | r3 = *(fp);
0x0001f55c mov r2, r5 | r2 = r5;
0x0001f55e mov.w r1, 0x800 | r1 = 0x800;
0x0001f562 mov r0, r4 | r0 = r4;
0x0001f564 adds r3, 1 | r3++;
0x0001f566 str.w r3, [fp] | __asm ("str.w r3, [fp]");
0x0001f56a ldr.w r3, [fp, 4] | r3 = *(arg_4h);
0x0001f56e adc r3, r3, 0 | __asm ("adc r3, r3, 0");
0x0001f572 str.w r3, [fp, 4] | __asm ("str.w r3, [arg_4h]");
0x0001f574 adds r0, 4 | r0 += 4;
0x0001f576 blx 0xdc98 | r0 = fcn_0000dc98 ();
0x0001f57a cmp r0, 0 |
| if (r0 != 0) {
0x0001f57c bne 0x1f490 | goto label_1;
| }
| label_10:
0x0001f57e mov r6, r0 | r6 = r0;
0x0001f580 mov r0, r5 | r0 = r5;
0x0001f582 blx 0xdc8c | fcn_0000dc8c ();
0x0001f586 mov r0, r6 | r0 = r6;
| do {
0x0001f588 ldr r2, [pc, 0x50] |
0x0001f58a ldr r3, [pc, 0x44] | r3 = *(0x1f5d2);
0x0001f58c add r2, pc | r2 = 0x3eb6c;
0x0001f58e ldr r3, [r2, r3] | r3 = *(0x3eb6c);
0x0001f590 ldr r2, [r3] | r2 = *(0x3eb6c);
0x0001f592 ldr.w r3, [sp, 0x99c] | r3 = *(arg_99ch_2);
0x0001f596 eors r2, r3 | r2 ^= r3;
0x0001f598 mov.w r3, 0 | r3 = 0;
| if (r2 != r3) {
0x0001f59c bne 0x1f5c8 | goto label_16;
| }
0x0001f59e addw sp, sp, 0x9a4 | __asm ("addw sp, sp, 0x9a4");
0x0001f5a2 pop.w {r4, r5, r6, r7, r8, sb, sl, fp, pc} |
| label_9:
0x0001f5a6 blx 0xe3d4 | r0 = fcn_0000e3d4 ();
0x0001f5aa ldr r0, [r0] | r0 = *(r0);
0x0001f5ac bl 0x30b74 | zbx_strerror ();
0x0001f5b0 ldr r1, [pc, 0x2c] |
0x0001f5b2 mov r3, r0 | r3 = r0;
0x0001f5b4 mov r2, r4 | r2 = r4;
0x0001f5b6 mov r0, r5 | r0 = r5;
0x0001f5b8 add r1, pc | r1 = 0x3eb9c;
0x0001f5ba bl 0x44820 | r0 = zbx_dsprintf ()
0x0001f5be mov r3, r0 | r3 = r0;
0x0001f5c0 mov.w r0, -1 | r0 = -1;
0x0001f5c4 str r3, [r6] | *(r6) = r3;
0x0001f5c6 b 0x1f588 |
| } while (1);
| label_16:
0x0001f5c8 blx 0xe158 | fcn_0000e158 ();
0x0001f5cc stm r7!, {r3, r4, r7} | *(r7!) = r3;
| *((r7! + 4)) = r4;
| *((r7! + 8)) = r7;
0x0001f5ce movs r3, r0 | r3 = r0;
0x0001f5d0 lsls r4, r2, 0xe | r4 = r2 << 0xe;
0x0001f5d2 movs r0, r0 |
0x0001f5d4 subs r6, r0, 3 | r6 = r0 - 3;
0x0001f5d6 movs r3, r0 | r3 = r0;
0x0001f5d8 movs r3, 0 | r3 = 0;
0x0001f5da movs r3, r0 | r3 = r0;
0x0001f5dc stm r6!, {r2, r3, r6} | *(r6!) = r2;
| *((r6! + 4)) = r3;
| *((r6! + 8)) = r6;
0x0001f5de movs r3, r0 | r3 = r0;
0x0001f5e0 movs r1, 0x9c | r1 = 0x9c;
0x0001f5e2 movs r3, r0 | r3 = r0;
0x0001f5e4 push.w {r4, r5, r6, r7, r8, sb, sl, fp, lr} |
0x0001f5e8 movs r6, 0 | r6 = 0;
0x0001f5ea ldr r5, [pc, 0x2cc] |
0x0001f5ec sub sp, 0x6c |
0x0001f5ee ldr r4, [pc, 0x2cc] | r4 = *(0x1f8be);
0x0001f5f0 ldr r3, [r1, 4] | r3 = *((r1 + 4));
0x0001f5f2 add r5, pc | r5 = 0x3eeb0;
0x0001f5f4 vmov.i32 d16, 0 | __asm ("vmov.i32 d16, 0");
0x0001f5f8 ldr r4, [r5, r4] |
0x0001f5fa cmp r3, 5 |
0x0001f5fc ldr r4, [r4] | r4 = *(0x3eeb0);
0x0001f5fe str r4, [sp, 0x64] | var_64h = r4;
0x0001f600 mov.w r4, 0 | r4 = 0;
0x0001f604 mov r4, r2 | r4 = r2;
0x0001f606 str r6, [sp, 0x14] | var_14h = r6;
0x0001f608 vstr d16, [sp, 0x18] | __asm ("vstr d16, [sp, 0x18]");
| if (r3 > 5) {
0x0001f60c bgt.w 0x1f7ca | goto label_17;
| }
0x0001f610 cmp r3, 0 |
0x0001f612 mov r5, r0 | r5 = r0;
| if (r3 <= 0) {
0x0001f614 ble.w 0x1f780 | goto label_18;
| }
0x0001f618 ldr r2, [r1, 8] | r2 = *((r1 + 8));
0x0001f61a cmp r3, 1 |
0x0001f61c ldr r0, [r2] | r0 = *(r2);
| if (r3 == 1) {
0x0001f61e beq.w 0x1f83e | goto label_19;
| }
0x0001f622 cmp r3, 2 |
0x0001f624 ldr r1, [r2, 4] | r1 = *((r2 + 4));
| if (r3 == 2) {
0x0001f626 beq.w 0x1f838 | goto label_20;
| }
0x0001f62a ldr r7, [r2, 8] | r7 = *((r2 + 8));
0x0001f62c cmp r3, 3 |
0x0001f62e str r7, [sp, 0xc] | var_ch = r7;
| if (r3 == 3) {
0x0001f630 beq.w 0x1f834 | goto label_21;
| }
0x0001f634 cmp r3, 5 |
0x0001f636 ldr r7, [r2, 0xc] | r7 = *((r2 + 0xc));
| if (r3 != 5) {
0x0001f638 bne 0x1f63c | goto label_6;
| }
0x0001f63a ldr r6, [r2, 0x10] | r6 = *((r2 + 0x10));
| do {
| label_6:
0x0001f63c movs r3, 0 | r3 = 0;
0x0001f63e add.w sl, sp, 0x20 | sl += var_20h;
0x0001f642 str r3, [sp, 0x20] | var_20h = r3;
0x0001f644 add.w fp, sp, 0x30 |
0x0001f648 str r3, [sp, 0x30] | var_30h = r3;
0x0001f64a str r3, [sp, 0x44] | var_44h = r3;
0x0001f64c strd r3, r3, [sp, 0x24] | __asm ("strd r3, r3, [sp, 0x24]");
0x0001f650 str r3, [sp, 0x2c] | var_2ch = r3;
0x0001f652 strd r3, r3, [sp, 0x34] | __asm ("strd r3, r3, [sp, 0x34]");
0x0001f656 str r3, [sp, 0x3c] | var_3ch = r3;
0x0001f658 strd r3, r3, [sp, 0x50] | __asm ("strd r3, r3, [sp, 0x50]");
0x0001f65c strd r3, r3, [sp, 0x58] | __asm ("strd r3, r3, [sp, 0x58]");
0x0001f660 movs r3, 4 | r3 = 4;
0x0001f662 str r3, [sp, 0x40] | var_40h = r3;
0x0001f664 cmp r5, 0 |
| if (r5 != 0) {
0x0001f666 bne.w 0x1f7c4 | goto label_22;
| }
0x0001f66a vldr d16, [pc, 0x23c] | __asm ("vldr d16, [0x0001f8ac]");
| label_2:
0x0001f66e add.w r8, sp, 0x40 | r8 += var_40h;
0x0001f672 add.w sb, sp, 0x14 | sb += var_14h;
0x0001f676 mov r3, sl | r3 = sl;
0x0001f678 mov r2, r8 | r2 = r8;
0x0001f67a str.w sb, [sp] | __asm ("str.w sb, [sp]");
0x0001f67e vstr d16, [sp, 0x48] | __asm ("vstr d16, [sp, 0x48]");
0x0001f682 bl 0x1efe8 | r0 = fcn_0001efe8 (r0, r1, r2, r3, r4);
0x0001f686 cmp r0, 0 |
| if (r0 != 0) {
0x0001f688 bne 0x1f78a | goto label_4;
| }
0x0001f68a ldr r0, [sp, 0xc] | r0 = var_ch;
0x0001f68c mov r2, r8 | r2 = r8;
0x0001f68e mov r1, r7 | r1 = r7;
0x0001f690 mov r3, fp | r3 = fp;
0x0001f692 str.w sb, [sp] | __asm ("str.w sb, [sp]");
0x0001f696 bl 0x1efe8 | r0 = fcn_0001efe8 (r0, r1, r2, r3, r4);
0x0001f69a cmp r0, 0 |
| if (r0 != 0) {
0x0001f69c bne 0x1f78a | goto label_4;
| }
0x0001f69e cmp r6, 0 |
| if (r6 == 0) {
0x0001f6a0 beq.w 0x1f7ea | goto label_23;
| }
0x0001f6a4 ldrb r3, [r6] | r3 = *(r6);
0x0001f6a6 cmp r3, 0 |
| if (r3 == 0) {
0x0001f6a8 beq.w 0x1f7ea | goto label_23;
| }
0x0001f6ac ldr r1, [pc, 0x210] |
0x0001f6ae mov r0, r6 | r0 = r6;
0x0001f6b0 add r1, pc | r1 = 0x3ef74;
0x0001f6b2 blx 0xe3b0 | fcn_0000e3b0 ();
0x0001f6b6 cmp r5, 0 |
| if (r5 != 0) {
0x0001f6b8 bne.w 0x1f846 | goto label_24;
| }
0x0001f6bc cmp r0, 0 |
| if (r0 == 0) {
0x0001f6be beq.w 0x1f874 | goto label_25;
| }
0x0001f6c2 ldr r1, [pc, 0x200] |
0x0001f6c4 mov r0, r6 | r0 = r6;
0x0001f6c6 add r1, pc | r1 = 0x3ef90;
0x0001f6c8 blx 0xe3b0 | r0 = fcn_0000e3b0 ();
0x0001f6cc cmp r0, 0 |
| if (r0 == 0) {
0x0001f6ce beq.w 0x1f878 | goto label_26;
| }
0x0001f6d2 ldr r1, [pc, 0x1f4] |
0x0001f6d4 mov r0, r6 | r0 = r6;
0x0001f6d6 add r1, pc | r1 = 0x3efa4;
0x0001f6d8 blx 0xe3b0 | r0 = fcn_0000e3b0 ();
0x0001f6dc cmp r0, 0 |
| if (r0 == 0) {
0x0001f6de beq.w 0x1f880 | goto label_27;
| }
0x0001f6e2 ldr r1, [pc, 0x1e8] |
0x0001f6e4 mov r0, r6 | r0 = r6;
0x0001f6e6 add r1, pc | r1 = 0x3efb8;
0x0001f6e8 blx 0xe3b0 | r0 = fcn_0000e3b0 ();
0x0001f6ec cmp r0, 0 |
| if (r0 == 0) {
0x0001f6ee beq.w 0x1f884 | goto label_28;
| }
0x0001f6f2 ldr r1, [pc, 0x1dc] |
0x0001f6f4 mov r0, r6 | r0 = r6;
0x0001f6f6 add r1, pc | r1 = 0x3efcc;
0x0001f6f8 blx 0xe3b0 | r0 = fcn_0000e3b0 ();
0x0001f6fc cmp r0, 0 |
| if (r0 == 0) {
0x0001f6fe beq.w 0x1f888 | goto label_29;
| }
0x0001f702 ldr r1, [pc, 0x1d0] |
0x0001f704 mov r0, r6 | r0 = r6;
0x0001f706 add r1, pc | r1 = zbx_variant_copy;
0x0001f708 blx 0xe3b0 | r0 = fcn_0000e3b0 ();
0x0001f70c cmp r0, 0 |
| if (r0 == 0) {
0x0001f70e beq.w 0x1f88c | goto label_30;
| }
0x0001f712 ldr r1, [pc, 0x1c4] |
0x0001f714 mov r0, r6 | r0 = r6;
0x0001f716 add r1, pc | r1 = 0x3eff4;
0x0001f718 blx 0xe3b0 | r0 = fcn_0000e3b0 ();
0x0001f71c cmp r0, 0 |
| if (r0 == 0) {
0x0001f71e beq.w 0x1f890 | goto label_31;
| }
0x0001f722 ldr r1, [pc, 0x1b8] |
0x0001f724 mov r0, r6 | r0 = r6;
0x0001f726 add r1, pc | r1 = 0x3f008;
0x0001f728 blx 0xe3b0 | r0 = fcn_0000e3b0 ();
0x0001f72c cmp r0, 0 |
| if (r0 == 0) {
0x0001f72e beq.w 0x1f894 | goto label_32;
| }
0x0001f732 ldr r1, [pc, 0x1ac] |
0x0001f734 mov r0, r6 | r0 = r6;
0x0001f736 add r1, pc | r1 = 0x3f01c;
0x0001f738 blx 0xe3b0 | r0 = fcn_0000e3b0 ();
0x0001f73c cmp r0, 0 |
| if (r0 == 0) {
0x0001f73e beq.w 0x1f89c | goto label_33;
| }
0x0001f742 ldr r1, [pc, 0x1a0] |
0x0001f744 mov r0, r6 | r0 = r6;
0x0001f746 add r1, pc | r1 = 0x3f030;
0x0001f748 blx 0xe3b0 | r0 = fcn_0000e3b0 ();
0x0001f74c cmp r0, 0 |
| if (r0 == 0) {
0x0001f74e beq.w 0x1f8a0 | goto label_34;
| }
0x0001f752 ldr r1, [pc, 0x194] |
0x0001f754 mov r0, r6 | r0 = r6;
0x0001f756 add r1, pc | r1 = 0x3f044;
0x0001f758 blx 0xe3b0 | r0 = fcn_0000e3b0 ();
0x0001f75c cmp r0, 0 |
| if (r0 != 0) {
0x0001f75e bne 0x1f854 | goto label_35;
| }
0x0001f760 movs r5, 0xb | r5 = 0xb;
| label_3:
0x0001f762 ldr r0, [pc, 0x188] |
0x0001f764 add r6, sp, 0x18 | r6 += var_18h;
0x0001f766 mov r3, fp | r3 = fp;
0x0001f768 mov r2, sl | r2 = sl;
0x0001f76a mov r1, r5 | r1 = r5;
0x0001f76c str.w sb, [sp, 4] | __asm ("str.w sb, [arg_4h]");
0x0001f770 add r0, pc | r0 = 0x3f062;
0x0001f772 str r6, [sp] | *(sp) = r6;
0x0001f774 bl 0x1f42c | r0 = fcn_0001f42c (r0, r1, r2, r3, r4, r5, r6);
| if (r0 != 0) {
0x0001f778 cbnz r0, 0x1f78a | goto label_4;
| }
0x0001f77a ldr r0, [pc, 0x174] |
0x0001f77c add r0, pc | r0 = 0x3f072;
0x0001f77e b 0x1f80e | goto label_36;
| label_18:
0x0001f780 mov r7, r6 | r7 = r6;
0x0001f782 mov r1, r6 | r1 = r6;
0x0001f784 mov r0, r6 | r0 = r6;
0x0001f786 str r6, [sp, 0xc] | var_ch = r6;
0x0001f788 b 0x1f63c |
| } while (1);
| label_4:
0x0001f78a ldr r3, [r4, 0x28] | r3 = *((r4 + 0x28));
0x0001f78c ldr r0, [sp, 0x14] | r0 = var_14h;
0x0001f78e orr r3, r3, 0x20 | r3 |= 0x20;
0x0001f792 str r3, [r4, 0x28] | *((r4 + 0x28)) = r3;
| label_7:
0x0001f794 movs r5, 1 | r5 = 1;
0x0001f796 str r0, [r4, 0x20] | *((r4 + 0x20)) = r0;
| label_5:
0x0001f798 ldr r0, [sp, 0x20] | r0 = var_20h;
| if (r0 != 0) {
0x0001f79a cbz r0, 0x1f7a0 |
0x0001f79c blx 0xdd90 | strrchr (r0, r1);
| }
0x0001f7a0 ldr r0, [sp, 0x30] | r0 = var_30h;
| if (r0 == 0) {
0x0001f7a2 cbz r0, 0x1f7a8 | goto label_37;
| }
0x0001f7a4 blx 0xdd90 | strrchr (r0, r1);
| do {
| label_37:
0x0001f7a8 ldr r2, [pc, 0x148] |
0x0001f7aa ldr r3, [pc, 0x110] | r3 = *(0x1f8be);
0x0001f7ac add r2, pc | r2 = zbx_variant_convert;
0x0001f7ae ldr r3, [r2, r3] | r3 = zbx_variant_convert;
0x0001f7b0 ldr r2, [r3] | r2 = zbx_variant_convert;
0x0001f7b2 ldr r3, [sp, 0x64] | r3 = var_64h;
0x0001f7b4 eors r2, r3 | r2 ^= r3;
0x0001f7b6 mov.w r3, 0 | r3 = 0;
| if (r2 != r3) {
0x0001f7ba bne 0x1f898 | goto label_38;
| }
0x0001f7bc mov r0, r5 | r0 = r5;
0x0001f7be add sp, 0x6c |
0x0001f7c0 pop.w {r4, r5, r6, r7, r8, sb, sl, fp, pc} |
| label_22:
0x0001f7c4 vldr d16, [pc, 0xe8] | __asm ("vldr d16, [0x0001f8b4]");
0x0001f7c8 b 0x1f66e | goto label_2;
| label_17:
0x0001f7ca ldr r0, [r2, 0x28] | r0 = *((r2 + 0x28));
0x0001f7cc movw r1, 0x446 | r1 = 0x446;
0x0001f7d0 ldr r3, [pc, 0x124] |
0x0001f7d2 mov r2, r6 | r2 = r6;
0x0001f7d4 movs r5, 1 | r5 = 1;
0x0001f7d6 orr r0, r0, 0x20 | r0 |= 0x20;
0x0001f7da str r0, [r4, 0x28] | *((r4 + 0x28)) = r0;
0x0001f7dc add r3, pc | r3 = 0x3f0d8;
0x0001f7de ldr r0, [pc, 0x11c] |
0x0001f7e0 add r0, pc | r0 = 0x3f0e2;
0x0001f7e2 bl 0x40ed8 | zbx_strdup2 ();
0x0001f7e6 str r0, [r4, 0x20] | *((r4 + 0x20)) = r0;
0x0001f7e8 b 0x1f7a8 |
| } while (1);
| label_23:
0x0001f7ea cmp r5, 0 |
| if (r5 == 0) {
0x0001f7ec beq 0x1f762 | goto label_3;
| }
0x0001f7ee movs r5, 0 | r5 = 0;
| label_8:
0x0001f7f0 ldr r0, [pc, 0x10c] |
0x0001f7f2 add r6, sp, 0x18 | r6 += var_18h;
0x0001f7f4 mov r3, fp | r3 = fp;
0x0001f7f6 mov r2, sl | r2 = sl;
0x0001f7f8 mov r1, r5 | r1 = r5;
0x0001f7fa str.w sb, [sp, 4] | __asm ("str.w sb, [arg_4h]");
0x0001f7fc str r0, [sp, 0x10] | *((sp + 0x10)) = r0;
0x0001f7fe add r0, pc | r0 = 0x3f102;
0x0001f800 str r6, [sp] | *(sp) = r6;
0x0001f802 bl 0x1f42c | r0 = fcn_0001f42c (r0, r1, r2, r3, r4, r5, r6);
0x0001f806 cmp r0, 0 |
| if (r0 != 0) {
0x0001f808 bne 0x1f78a | goto label_4;
| }
0x0001f80a ldr r0, [pc, 0xf8] |
0x0001f80c add r0, pc | r0 = 0x3f116;
| label_36:
0x0001f80e mov r1, r5 | r1 = r5;
0x0001f810 mov r3, fp | r3 = fp;
0x0001f812 mov r2, sl | r2 = sl;
0x0001f814 strd r6, sb, [sp] | __asm ("strd r6, sb, [sp]");
0x0001f818 bl 0x1f24c | r0 = fcn_0001f24c (r0, r1, r2, r3, r4, r5, r6);
0x0001f81c mov r5, r0 | r5 = r0;
0x0001f81e cmp r0, 0 |
| if (r0 != 0) {
0x0001f820 bne 0x1f78a | goto label_4;
| }
0x0001f822 ldr r3, [r4, 0x28] | r3 = *((r4 + 0x28));
0x0001f824 ldrd r0, r1, [sp, 0x18] | __asm ("ldrd r0, r1, [var_18h]");
0x0001f828 orr r3, r3, 1 | r3 |= 1;
0x0001f82c strd r0, r1, [r4, 8] | __asm ("strd r0, r1, [r4, 8]");
0x0001f830 str r3, [r4, 0x28] | *((r4 + 0x28)) = r3;
0x0001f832 b 0x1f798 | goto label_5;
| label_21:
0x0001f834 mov r7, r6 | r7 = r6;
0x0001f836 b 0x1f63c | goto label_6;
| label_20:
0x0001f838 mov r7, r6 | r7 = r6;
0x0001f83a str r6, [sp, 0xc] | var_ch = r6;
0x0001f83c b 0x1f63c | goto label_6;
| label_19:
0x0001f83e mov r7, r6 | r7 = r6;
0x0001f840 mov r1, r6 | r1 = r6;
0x0001f842 str r6, [sp, 0xc] | var_ch = r6;
0x0001f844 b 0x1f63c | goto label_6;
| if (r0 != 0) {
| label_24:
0x0001f846 cbz r0, 0x1f870 |
0x0001f848 ldr r1, [pc, 0xbc] |
0x0001f84a mov r0, r6 | r0 = r6;
0x0001f84c add r1, pc | r1 = 0x3f158;
0x0001f84e blx 0xe3b0 | r0 = fcn_0000e3b0 ();
| if (r0 == 0) {
0x0001f852 cbz r0, 0x1f87c | goto label_39;
| }
| label_35:
0x0001f854 ldr r0, [r4, 0x28] | r0 = *((r4 + 0x28));
0x0001f856 movs r2, 0 | r2 = 0;
0x0001f858 ldr r3, [pc, 0xb0] |
0x0001f85a movw r1, 0x474 | r1 = 0x474;
0x0001f85e orr r0, r0, 0x20 | r0 |= 0x20;
0x0001f862 str r0, [r4, 0x28] | *((r4 + 0x28)) = r0;
0x0001f864 add r3, pc | r3 = 0x3f174;
0x0001f866 ldr r0, [pc, 0xa8] |
0x0001f868 add r0, pc | r0 = 0x3f17e;
0x0001f86a bl 0x40ed8 | zbx_strdup2 ();
0x0001f86e b 0x1f794 | goto label_7;
| }
0x0001f870 movs r5, 1 | r5 = 1;
0x0001f872 b 0x1f7f0 | goto label_8;
| label_25:
0x0001f874 movs r5, 1 | r5 = 1;
0x0001f876 b 0x1f762 | goto label_3;
| label_26:
0x0001f878 movs r5, 2 | r5 = 2;
0x0001f87a b 0x1f762 | goto label_3;
| label_39:
0x0001f87c movs r5, 7 | r5 = 7;
0x0001f87e b 0x1f7f0 | goto label_8;
| label_27:
0x0001f880 movs r5, 3 | r5 = 3;
0x0001f882 b 0x1f762 | goto label_3;
| label_28:
0x0001f884 movs r5, 4 | r5 = 4;
0x0001f886 b 0x1f762 | goto label_3;
| label_29:
0x0001f888 movs r5, 5 | r5 = 5;
0x0001f88a b 0x1f762 | goto label_3;
| label_30:
0x0001f88c movs r5, 6 | r5 = 6;
0x0001f88e b 0x1f762 | goto label_3;
| label_31:
0x0001f890 movs r5, 7 | r5 = 7;
0x0001f892 b 0x1f762 | goto label_3;
| label_32:
0x0001f894 movs r5, 8 | r5 = 8;
0x0001f896 b 0x1f762 | goto label_3;
| label_38:
0x0001f898 blx 0xe158 | fcn_0000e158 ();
| label_33:
0x0001f89c movs r5, 9 | r5 = 9;
0x0001f89e b 0x1f762 | goto label_3;
| label_34:
0x0001f8a0 movs r5, 0xa | r5 = 0xa;
0x0001f8a2 b 0x1f762 | goto label_3;
| }
; assembly | /* r2dec pseudo code output */
| /* /logs/firmware/patool_extraction/rootfs.img_unblob_extracted/rootfs.img_extract/0-80367616.squashfs_v4_le_extract/usr/sbin/zabbix_agentd @ 0x21718 */
| #include <stdint.h>
|
; (fcn) fcn.00021718 () | void fcn_00021718 (int16_t arg_24h, int16_t arg_28h, int16_t arg_2ch, int16_t arg_38h, int16_t arg_40h, int16_t arg_4ch, int16_t arg_84ch, int16_t arg2) {
| int16_t var_0h;
| int16_t var_10h_2;
| int16_t var_1ch_2;
| int16_t var_81ch;
| 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;
| r1 = arg2;
0x00021718 push.w {r4, r5, r6, r7, r8, sb, sl, lr} |
0x0002171c mov r5, r0 | r5 = r0;
0x0002171e ldr.w r0, [pc, 0x4f8] | r0 = *(0x00021c18);
0x00021722 mov r8, r1 | r8 = r1;
0x00021724 mov r6, r2 | r6 = r2;
0x00021726 movs r3, 0xd8 | r3 = 0xd8;
0x00021728 ldr.w r1, [pc, 0x4f0] |
0x0002172c movs r2, 0 | r2 = 0;
0x0002172e add r0, pc | r0 += pc;
0x00021730 vpush {d8} | __asm ("vpush {d8}");
0x00021734 sub.w sp, sp, 0x820 |
0x00021738 ldr r1, [r0, r1] | r1 = *((r0 + r1));
0x0002173a ldr.w r0, [pc, 0x4e4] |
0x0002173e ldr r1, [r1] | r1 = *(0x21c1c);
0x00021740 str.w r1, [sp, 0x81c] | __asm ("str.w r1, [var_81ch]");
0x00021744 mov.w r1, 0 | r1 = 0;
0x00021748 movw r1, 0x641 | r1 = 0x641;
0x0002174c add r0, pc | r0 = 0x43372;
0x0002174e bl 0x40dd8 | zbx_malloc2 ();
0x00021752 cmp r6, 2 |
0x00021754 mov r4, r0 | r4 = r0;
| if (r6 != 2) {
0x00021756 beq 0x2177a |
0x00021758 ldr.w r1, [pc, 0x4c8] |
0x0002175c movs r3, 0 | r3 = 0;
0x0002175e str r3, [sp] | *(sp) = r3;
0x00021760 movs r2, 1 | r2 = 1;
0x00021762 add.w r3, r0, 8 | r3 = r0 + 8;
0x00021766 mov r0, r5 | r0 = r5;
0x00021768 add r1, pc | r1 = 0x43390;
0x0002176a bl 0x20e0c | r0 = fcn_00020e0c (r0, r1, r2, r3, r4, r5, r6);
0x0002176e cmp r0, 0 |
| if (r0 != 0) {
0x00021770 bne.w 0x21a3c | goto label_37;
| }
0x00021774 cmp r6, 1 |
| if (r6 == 1) {
0x00021776 beq.w 0x21a4a | goto label_38;
| }
| }
| label_2:
0x0002177a ldr.w r1, [pc, 0x4ac] | r1 = *(0x00021c28);
0x0002177e movs r3, 0 | r3 = 0;
0x00021780 str r3, [sp] | *(sp) = r3;
0x00021782 movs r2, 2 | r2 = 2;
0x00021784 add.w r3, r4, 0x68 | r3 = r4 + 0x68;
0x00021788 mov r0, r5 | r0 = r5;
0x0002178a add r1, pc | r1 += pc;
0x0002178c bl 0x20e0c | r0 = fcn_00020e0c (r0, r1, r2, r3, r4, r5, r6);
| if (r0 != 0) {
0x00021790 cbz r0, 0x2179a |
0x00021792 vmov.i8 d16, 0xff | __asm ("vmov.i8 d16, 0xff");
0x00021796 vstr d16, [r4, 0x68] | __asm ("vstr d16, [r4, 0x68]");
| }
0x0002179a ldr.w r1, [pc, 0x490] | r1 = *(0x00021c2c);
0x0002179e movs r3, 0 | r3 = 0;
0x000217a0 str r3, [sp] | *(sp) = r3;
0x000217a2 movs r2, 2 | r2 = 2;
0x000217a4 add.w r3, r4, 0x98 | r3 = r4 + 0x98;
0x000217a8 mov r0, r5 | r0 = r5;
0x000217aa add r1, pc | r1 += pc;
0x000217ac bl 0x20e0c | r0 = fcn_00020e0c (r0, r1, r2, r3, r4, r5, r6);
| if (r0 != 0) {
0x000217b0 cbz r0, 0x217ba |
0x000217b2 vmov.i8 d16, 0xff | __asm ("vmov.i8 d16, 0xff");
0x000217b6 vstr d16, [r4, 0x98] | __asm ("vstr d16, [r4, 0x98]");
| }
0x000217ba ldr.w r1, [pc, 0x474] | r1 = *(0x00021c30);
0x000217be movs r3, 0 | r3 = 0;
0x000217c0 str r3, [sp] | *(sp) = r3;
0x000217c2 movs r2, 2 | r2 = 2;
0x000217c4 add.w r3, r4, 0xb0 | r3 = r4 + 0xb0;
0x000217c8 mov r0, r5 | r0 = r5;
0x000217ca add r1, pc | r1 += pc;
0x000217cc bl 0x20e0c | r0 = fcn_00020e0c (r0, r1, r2, r3, r4, r5, r6);
| if (r0 != 0) {
0x000217d0 cbz r0, 0x217da |
0x000217d2 vmov.i8 d16, 0xff | __asm ("vmov.i8 d16, 0xff");
0x000217d6 vstr d16, [r4, 0xb0] | __asm ("vstr d16, [r4, 0xb0]");
| }
0x000217da ldr.w r1, [pc, 0x458] | r1 = *(0x00021c34);
0x000217de movs r3, 0 | r3 = 0;
0x000217e0 str r3, [sp] | *(sp) = r3;
0x000217e2 movs r2, 2 | r2 = 2;
0x000217e4 add.w r3, r4, 0x80 | r3 = r4 + 0x80;
0x000217e8 mov r0, r5 | r0 = r5;
0x000217ea add r1, pc | r1 += pc;
0x000217ec bl 0x20e0c | r0 = fcn_00020e0c (r0, r1, r2, r3, r4, r5, r6);
| if (r0 != 0) {
0x000217f0 cbz r0, 0x217fa |
0x000217f2 vmov.i8 d16, 0xff | __asm ("vmov.i8 d16, 0xff");
0x000217f6 vstr d16, [r4, 0x80] | __asm ("vstr d16, [r4, 0x80]");
| }
0x000217fa ldr.w r1, [pc, 0x43c] | r1 = *(0x00021c38);
0x000217fe movs r3, 0 | r3 = 0;
0x00021800 str r3, [sp] | *(sp) = r3;
0x00021802 movs r2, 2 | r2 = 2;
0x00021804 add.w r3, r4, 0xc8 | r3 = r4 + 0xc8;
0x00021808 mov r0, r5 | r0 = r5;
0x0002180a add r1, pc | r1 += pc;
0x0002180c bl 0x20e0c | r0 = fcn_00020e0c (r0, r1, r2, r3, r4, r5, r6);
| if (r0 != 0) {
0x00021810 cbz r0, 0x2181a |
0x00021812 vmov.i8 d16, 0xff | __asm ("vmov.i8 d16, 0xff");
0x00021816 vstr d16, [r4, 0xc8] | __asm ("vstr d16, [r4, 0xc8]");
| }
0x0002181a ldr.w r1, [pc, 0x420] | r1 = *(0x00021c3c);
0x0002181e movs r3, 0 | r3 = 0;
0x00021820 str r3, [sp] | *(sp) = r3;
0x00021822 movs r2, 2 | r2 = 2;
0x00021824 add.w r3, r4, 0x88 | r3 = r4 + 0x88;
0x00021828 mov r0, r5 | r0 = r5;
0x0002182a add r1, pc | r1 += pc;
0x0002182c bl 0x20e0c | r0 = fcn_00020e0c (r0, r1, r2, r3, r4, r5, r6);
| if (r0 != 0) {
0x00021830 cbz r0, 0x2183a |
0x00021832 vmov.i8 d16, 0xff | __asm ("vmov.i8 d16, 0xff");
0x00021836 vstr d16, [r4, 0x88] | __asm ("vstr d16, [r4, 0x88]");
| }
0x0002183a ldr.w r1, [pc, 0x404] | r1 = *(0x00021c40);
0x0002183e movs r3, 0 | r3 = 0;
0x00021840 str r3, [sp] | *(sp) = r3;
0x00021842 movs r2, 2 | r2 = 2;
0x00021844 add.w r3, r4, 0xa0 | r3 = r4 + 0xa0;
0x00021848 mov r0, r5 | r0 = r5;
0x0002184a add r1, pc | r1 += pc;
0x0002184c bl 0x20e0c | r0 = fcn_00020e0c (r0, r1, r2, r3, r4, r5, r6);
| if (r0 != 0) {
0x00021850 cbz r0, 0x2185a |
0x00021852 vmov.i8 d16, 0xff | __asm ("vmov.i8 d16, 0xff");
0x00021856 vstr d16, [r4, 0xa0] | __asm ("vstr d16, [r4, 0xa0]");
| }
0x0002185a ldr r1, [pc, 0x3e8] |
0x0002185c movs r3, 0 | r3 = 0;
0x0002185e str r3, [sp] | *(sp) = r3;
0x00021860 movs r2, 2 | r2 = 2;
0x00021862 add.w r3, r4, 0xb8 | r3 = r4 + 0xb8;
0x00021866 mov r0, r5 | r0 = r5;
0x00021868 add r1, pc | r1 = 0x434b2;
0x0002186a bl 0x20e0c | r0 = fcn_00020e0c (r0, r1, r2, r3, r4, r5, r6);
| if (r0 != 0) {
0x0002186e cbz r0, 0x21878 |
0x00021870 vmov.i8 d16, 0xff | __asm ("vmov.i8 d16, 0xff");
0x00021874 vstr d16, [r4, 0xb8] | __asm ("vstr d16, [r4, 0xb8]");
| }
0x00021878 ldr r1, [pc, 0x3cc] |
0x0002187a movs r3, 0 | r3 = 0;
0x0002187c str r3, [sp] | *(sp) = r3;
0x0002187e movs r2, 2 | r2 = 2;
0x00021880 add.w r3, r4, 0xd0 | r3 = r4 + 0xd0;
0x00021884 mov r0, r5 | r0 = r5;
0x00021886 add r1, pc | r1 = 0x434d2;
0x00021888 bl 0x20e0c | r0 = fcn_00020e0c (r0, r1, r2, r3, r4, r5, r6);
| if (r0 != 0) {
0x0002188c cbz r0, 0x21896 |
0x0002188e vmov.i8 d16, 0xff | __asm ("vmov.i8 d16, 0xff");
0x00021892 vstr d16, [r4, 0xd0] | __asm ("vstr d16, [r4, 0xd0]");
| }
0x00021896 ldr r1, [pc, 0x3b4] |
0x00021898 movs r3, 0 | r3 = 0;
0x0002189a str r3, [sp] | *(sp) = r3;
0x0002189c movs r2, 1 | r2 = 1;
0x0002189e add.w r3, r4, 0x58 | r3 = r4 + 0x58;
0x000218a2 mov r0, r5 | r0 = r5;
0x000218a4 add r1, pc | r1 = 0x434f6;
0x000218a6 bl 0x20e0c | r0 = fcn_00020e0c (r0, r1, r2, r3, r4, r5, r6);
0x000218aa cmp r0, 0 |
| if (r0 != 0) {
0x000218ac bne.w 0x21a32 | goto label_39;
| }
| label_1:
0x000218b0 ldrd r3, r2, [r4, 0x88] | __asm ("ldrd r3, r2, [r4, 0x88]");
0x000218b4 cmp.w r2, -1 |
0x000218b8 it eq |
| if (r2 == -1) {
0x000218ba cmpeq r3, -1 | __asm ("cmpeq r3, -1");
| }
| if (r2 != -1) {
0x000218be beq 0x218f0 |
0x000218c0 ldrd r1, r0, [r4, 0x80] | __asm ("ldrd r1, r0, [r4, 0x80]");
0x000218c4 cmp.w r0, -1 |
0x000218c8 it eq |
| if (r0 == -1) {
0x000218ca cmpeq r1, -1 | __asm ("cmpeq r1, -1");
| }
| if (r0 == -1) {
0x000218ce beq.w 0x21be8 | goto label_40;
| }
0x000218d2 ldrd r7, ip, [r4, 0xc8] | __asm ("ldrd r7, ip, [r4, 0xc8]");
0x000218d6 cmp.w ip, -1 |
0x000218da it eq |
| if (ip == -1) {
0x000218dc cmpeq r7, -1 | __asm ("cmpeq r7, -1");
| }
| if (ip == -1) {
0x000218e0 beq.w 0x21bf4 | goto label_41;
| }
0x000218e4 adds r3, r3, r1 | r3 += r1;
0x000218e6 adc.w r2, r2, r0 | __asm ("adc.w r2, r2, r0");
0x000218ea adds r3, r3, r7 | r3 += r7;
0x000218ec adc.w r2, ip, r2 | __asm ("adc.w r2, ip, r2");
| }
| label_11:
0x000218f0 ldr r1, [pc, 0x35c] |
0x000218f2 mov r0, r5 | r0 = r5;
0x000218f4 strd r3, r2, [r4, 0xc0] | __asm ("strd r3, r2, [r4, 0xc0]");
0x000218f8 movs r3, 0 | r3 = 0;
0x000218fa str r3, [sp] | *(sp) = r3;
0x000218fc movs r2, 2 | r2 = 2;
0x000218fe add.w r3, r4, 0x78 | r3 = r4 + 0x78;
0x00021902 add r1, pc | r1 = 0x43556;
0x00021904 bl 0x20e0c | r0 = fcn_00020e0c (r0, r1, r2, r3, r4, r5, r6);
0x00021908 mov r7, r0 | r7 = r0;
0x0002190a cmp r0, 0 |
| if (r0 == 0) {
0x0002190c beq.w 0x21b84 | goto label_42;
| }
0x00021910 vmov.i8 d17, 0xff | __asm ("vmov.i8 d17, 0xff");
0x00021914 add r7, sp, 0x10 | r7 += var_10h_2;
0x00021916 vmov.f64 d16, -1.000000e+00 | __asm ("vmov.f64 d16, -1");
0x0002191a vstr d17, [r4, 0x78] | __asm ("vstr d17, [r4, 0x78]");
| label_10:
0x0002191e movs r3, 0 | r3 = 0;
0x00021920 vstr d16, [r4, 0x70] | __asm ("vstr d16, [r4, 0x70]");
0x00021924 str r3, [r4, 0x14] | *((r4 + 0x14)) = r3;
0x00021926 cmp r6, 0 |
| if (r6 == 0) {
0x00021928 beq.w 0x21b44 | goto label_43;
| }
| label_3:
0x0002192c ldr r1, [pc, 0x324] |
0x0002192e movs r3, 0 | r3 = 0;
0x00021930 str r3, [sp] | *(sp) = r3;
0x00021932 movs r2, 1 | r2 = 1;
0x00021934 add.w r3, r4, 0x50 | r3 = r4 + 0x50;
0x00021938 mov r0, r5 | r0 = r5;
0x0002193a add r1, pc | r1 = 0x43592;
0x0002193c bl 0x20e0c | r0 = fcn_00020e0c (r0, r1, r2, r3, r4, r5, r6);
| if (r0 != 0) {
0x00021940 cbz r0, 0x2194a |
0x00021942 vmov.i8 d16, 0xff | __asm ("vmov.i8 d16, 0xff");
0x00021946 vstr d16, [r4, 0x50] | __asm ("vstr d16, [r4, 0x50]");
| }
0x0002194a ldr r1, [pc, 0x30c] |
0x0002194c movs r3, 0 | r3 = 0;
0x0002194e str r3, [sp] | *(sp) = r3;
0x00021950 movs r2, 1 | r2 = 1;
0x00021952 mov r3, r7 | r3 = r7;
0x00021954 mov r0, r5 | r0 = r5;
0x00021956 add r1, pc | r1 = 0x435b4;
0x00021958 bl 0x20e0c | r0 = fcn_00020e0c (r0, r1, r2, r3, r4, r5, r6);
0x0002195c cmp r0, 0 |
| if (r0 == 0) {
0x0002195e beq.w 0x21ace | goto label_44;
| }
0x00021962 ldrd r2, r3, [r4, 0x50] | __asm ("ldrd r2, r3, [r4, 0x50]");
0x00021966 vmov.i8 d16, 0xff | __asm ("vmov.i8 d16, 0xff");
0x0002196a cmp.w r3, -1 |
0x0002196e it eq |
| if (r3 == -1) {
0x00021970 cmpeq r2, -1 | __asm ("cmpeq r2, -1");
| }
0x00021974 vstr d16, [r7] | __asm ("vstr d16, [r7]");
| if (r3 != -1) {
0x00021978 bne 0x21a68 | goto label_7;
| }
| label_6:
0x0002197a cmp r6, 2 |
| if (r6 != 2) {
0x0002197c bne 0x21a74 | goto label_45;
| }
| label_4:
0x0002197e movs r3, 0 | r3 = 0;
0x00021980 str r3, [r4, 0x1c] | *((r4 + 0x1c)) = r3;
| label_5:
0x00021982 vmov.i8 d16, 0xff | __asm ("vmov.i8 d16, 0xff");
0x00021986 movs r1, 0 | r1 = 0;
0x00021988 movs r0, 0 | r0 = 0;
0x0002198a movt r1, 0xbff0 | r1 = (r1 & 0xFFFF) | 0xbff00000;
0x0002198e add r5, sp, 0x1c | r5 += var_1ch_2;
0x00021990 strd r0, r1, [r4, 0x40] | __asm ("strd r0, r1, [r4, 0x40]");
0x00021994 strd r0, r1, [r4, 0x48] | __asm ("strd r0, r1, [r4, 0x48]");
0x00021998 mov r2, r8 | r2 = r8;
0x0002199a mov.w r1, 0x800 | r1 = 0x800;
0x0002199e mov r0, r5 | r0 = r5;
0x000219a0 vstr d16, [r4, 0x60] | __asm ("vstr d16, [r4, 0x60]");
0x000219a4 blx 0xdc98 | r0 = fcn_0000dc98 ();
| if (r0 == 0) {
0x000219a8 cbz r0, 0x21a0c | goto label_8;
| }
0x000219aa mov r0, r5 | r0 = r5;
0x000219ac movs r1, 0x29 | r1 = 0x29;
0x000219ae blx 0xdda8 | r0 = statvfs64 ();
0x000219b2 mov r5, r0 | r5 = r0;
| if (r0 == 0) {
0x000219b4 cbz r0, 0x21a0c | goto label_8;
| }
0x000219b6 movs r0, 2 | r0 = 2;
0x000219b8 blx 0xdbf8 | longjmp_chk ();
0x000219bc ldrb r3, [r5] | r3 = *(r5);
0x000219be mov r8, r0 | r8 = r0;
| if (r3 == 0) {
0x000219c0 cbz r3, 0x21a0c | goto label_8;
| }
0x000219c2 movs r6, 0 | r6 = 0;
0x000219c4 b 0x219d0 | goto label_46;
| label_0:
0x000219c6 cmp r6, 0xa |
| if (r6 == 0xa) {
0x000219c8 beq.w 0x21afc | goto label_47;
| }
| do {
| label_9:
0x000219cc ldrb r3, [r5] | r3 = *(r5);
| if (r3 == 0) {
0x000219ce cbz r3, 0x21a0c | goto label_8;
| }
| label_46:
0x000219d0 cmp r3, 0x20 |
0x000219d2 add.w r5, r5, 1 | r5++;
0x000219d6 bne 0x219cc |
| } while (r3 != 0x20);
0x000219d8 adds r6, 1 | r6++;
0x000219da cmp r6, 0xc |
| if (r6 == 0xc) {
0x000219dc beq.w 0x21b0e | goto label_48;
| }
0x000219e0 cmp r6, 0xd |
| if (r6 != 0xd) {
0x000219e2 bne 0x219c6 | goto label_0;
| }
0x000219e4 mov r1, r7 | r1 = r7;
0x000219e6 mov r0, r5 | r0 = r5;
0x000219e8 bl 0x20770 | fcn_00020770 (r0, r1);
0x000219ec adds r0, 1 | r0++;
| if (r0 != 1) {
0x000219ee beq 0x21a0c |
0x000219f0 ldrd r0, r1, [r7] | __asm ("ldrd r0, r1, [r7]");
0x000219f4 bl 0x4c6f4 | fcn_0004c6f4 (r0, r1, r2);
0x000219f8 vmov s15, r8 | __asm ("vmov s15, r8");
0x000219fc vcvt.f64.s32 d16, s15 | __asm ("vcvt.f64.s32 d16, s15");
0x00021a00 vmov d18, r0, r1 | __asm ("vmov d18, r0, r1");
0x00021a04 vdiv.f64 d17, d18, d16 | __asm ("vdiv.f64 d17, d18, d16");
0x00021a08 vstr d17, [r4, 0x48] | __asm ("vstr d17, [r4, 0x48]");
| }
| label_8:
0x00021a0c ldr r2, [pc, 0x24c] |
0x00021a0e ldr r3, [pc, 0x20c] | r3 = *(0x21c1e);
0x00021a10 add r2, pc | r2 = 0x43670;
0x00021a12 ldr r3, [r2, r3] | r3 = *(0x43670);
0x00021a14 ldr r2, [r3] | r2 = *(0x43670);
0x00021a16 ldr.w r3, [sp, 0x81c] | r3 = var_81ch;
0x00021a1a eors r2, r3 | r2 ^= r3;
0x00021a1c mov.w r3, 0 | r3 = 0;
| if (r2 != r3) {
0x00021a20 bne.w 0x21c0c | goto label_49;
| }
0x00021a24 mov r0, r4 | r0 = r4;
0x00021a26 add.w sp, sp, 0x820 |
0x00021a2a vpop {d8} | __asm ("vpop {d8}");
0x00021a2e pop.w {r4, r5, r6, r7, r8, sb, sl, pc} |
| label_39:
0x00021a32 vmov.i8 d16, 0xff | __asm ("vmov.i8 d16, 0xff");
0x00021a36 vstr d16, [r4, 0x58] | __asm ("vstr d16, [r4, 0x58]");
0x00021a3a b 0x218b0 | goto label_1;
| label_37:
0x00021a3c vmov.i8 d16, 0xff | __asm ("vmov.i8 d16, 0xff");
0x00021a40 cmp r6, 1 |
0x00021a42 vstr d16, [r4, 8] | __asm ("vstr d16, [r4, 8]");
| if (r6 != 1) {
0x00021a46 bne.w 0x2177a | goto label_2;
| }
| label_38:
0x00021a4a ldr r1, [pc, 0x214] |
0x00021a4c add.w r3, r4, 0x14 | r3 = r4 + 0x14;
0x00021a50 str r3, [sp] | *(sp) = r3;
0x00021a52 movs r3, 0 | r3 = 0;
0x00021a54 mov r2, r3 | r2 = r3;
0x00021a56 mov r0, r5 | r0 = r5;
0x00021a58 add r1, pc | r1 = 0x436be;
0x00021a5a bl 0x20e0c | r0 = fcn_00020e0c (r0, r1, r2, r3, r4, r5, r6);
| if (r0 != 0) {
0x00021a5e cbz r0, 0x21a64 |
0x00021a60 movs r3, 0 | r3 = 0;
0x00021a62 str r3, [r4, 0x14] | *((r4 + 0x14)) = r3;
| }
0x00021a64 add r7, sp, 0x10 | r7 += var_10h_2;
0x00021a66 b 0x2192c | goto label_3;
| label_7:
0x00021a68 vmov.i8 d16, 0xff | __asm ("vmov.i8 d16, 0xff");
0x00021a6c cmp r6, 2 |
0x00021a6e vstr d16, [r4, 0x50] | __asm ("vstr d16, [r4, 0x50]");
| if (r6 == 2) {
0x00021a72 beq 0x2197e | goto label_4;
| }
| label_45:
0x00021a74 ldr r1, [pc, 0x1ec] |
0x00021a76 movs r3, 0 | r3 = 0;
0x00021a78 add r6, sp, 0xc | r6 = sp + 0xc;
0x00021a7a mov r0, r5 | r0 = r5;
0x00021a7c mov r2, r3 | r2 = r3;
0x00021a7e str r6, [sp] | *(sp) = r6;
0x00021a80 add r1, pc | r1 = 0x436e8;
0x00021a82 bl 0x20e0c | r0 = fcn_00020e0c (r0, r1, r2, r3, r4, r5, r6);
0x00021a86 mov r5, r0 | r5 = r0;
0x00021a88 cmp r0, 0 |
| if (r0 != 0) {
0x00021a8a bne.w 0x2197e | goto label_4;
| }
0x00021a8e ldr.w sl, [r6] | sl = *(r6);
0x00021a92 movs r1, 0x28 | r1 = 0x28;
0x00021a94 mov r0, sl | r0 = sl;
0x00021a96 blx 0xdcd4 | r0 = fcn_0000dcd4 ();
0x00021a9a mov sb, r0 | sb = r0;
0x00021a9c cmp r0, 0 |
| if (r0 == 0) {
0x00021a9e beq.w 0x21bee | goto label_50;
| }
0x00021aa2 ldr r1, [pc, 0x1c4] |
0x00021aa4 add.w sl, r0, 1 | sl = r0 + 1;
0x00021aa8 mov r0, sl | r0 = sl;
0x00021aaa add r1, pc | r1 = 0x43718;
0x00021aac bl 0x444f4 | zbx_rtrim ();
0x00021ab0 ldrb.w r0, [sb, 1] | r0 = *((sb + 1));
0x00021ab4 cmp r0, 0 |
| if (r0 != 0) {
0x00021ab6 bne.w 0x21bfa | goto label_51;
| }
| label_12:
0x00021aba str r0, [r4, 0x1c] | *((r4 + 0x1c)) = r0;
0x00021abc ldr r0, [r6] | r0 = *(r6);
0x00021abe cmp r0, 0 |
| if (r0 == 0) {
0x00021ac0 beq.w 0x21982 | goto label_5;
| }
0x00021ac4 blx 0xde30 | fcn_0000de30 ();
0x00021ac8 movs r3, 0 | r3 = 0;
0x00021aca str r3, [r6] | *(r6) = r3;
0x00021acc b 0x21982 | goto label_5;
| label_44:
0x00021ace ldrd r3, r2, [r4, 0x50] | __asm ("ldrd r3, r2, [r4, 0x50]");
0x00021ad2 cmp.w r2, -1 |
0x00021ad6 it eq |
| if (r2 != -1) {
0x00021ad8 cmpeq r3, -1 | __asm ("cmpeq r3, -1");
| goto label_52;
| }
| if (r2 == -1) {
| label_52:
0x00021adc beq.w 0x2197a | goto label_6;
| }
0x00021ae0 ldrd r1, r0, [r7] | __asm ("ldrd r1, r0, [r7]");
0x00021ae4 cmp.w r0, -1 |
0x00021ae8 it eq |
| if (r0 != -1) {
0x00021aea cmpeq r1, -1 | __asm ("cmpeq r1, -1");
| goto label_53;
| }
| if (r0 == -1) {
| label_53:
0x00021aee beq 0x21a68 | goto label_7;
| }
0x00021af0 adds r3, r3, r1 | r3 += r1;
0x00021af2 adc.w r2, r2, r0 | __asm ("adc.w r2, r2, r0");
0x00021af6 strd r3, r2, [r4, 0x50] | __asm ("strd r3, r2, [r4, 0x50]");
0x00021afa b 0x2197a | goto label_6;
| label_47:
0x00021afc add.w r1, r4, 0x60 | r1 = r4 + 0x60;
0x00021b00 mov r0, r5 | r0 = r5;
0x00021b02 bl 0x20770 | r0 = fcn_00020770 (r0, r1);
0x00021b06 adds r2, r0, 1 | r2 = r0 + 1;
| if (r2 == r0) {
0x00021b08 beq 0x21a0c | goto label_8;
| }
0x00021b0a add r5, r0 | r5 += r0;
0x00021b0c b 0x219cc | goto label_9;
| label_48:
0x00021b0e cmp.w r8, 0 |
| if (r8 <= 0) {
0x00021b12 ble.w 0x21a0c | goto label_8;
| }
0x00021b16 mov r1, r7 | r1 = r7;
0x00021b18 mov r0, r5 | r0 = r5;
0x00021b1a bl 0x20770 | r0 = fcn_00020770 (r0, r1);
0x00021b1e adds r3, r0, 1 | r3 = r0 + 1;
| if (r3 == r0) {
0x00021b20 beq.w 0x21a0c | goto label_8;
| }
0x00021b24 add r5, r0 | r5 += r0;
0x00021b26 ldrd r0, r1, [r7] | __asm ("ldrd r0, r1, [r7]");
0x00021b2a bl 0x4c6f4 | fcn_0004c6f4 (r0, r1, r2);
0x00021b2e vmov s15, r8 | __asm ("vmov s15, r8");
0x00021b32 vcvt.f64.s32 d17, s15 | __asm ("vcvt.f64.s32 d17, s15");
0x00021b36 vmov d18, r0, r1 | __asm ("vmov d18, r0, r1");
0x00021b3a vdiv.f64 d16, d18, d17 | __asm ("vdiv.f64 d16, d18, d17");
0x00021b3e vstr d16, [r4, 0x40] | __asm ("vstr d16, [r4, 0x40]");
0x00021b42 b 0x219cc | goto label_9;
| label_43:
0x00021b44 ldr r1, [pc, 0x124] |
0x00021b46 add.w r3, r4, 0xa8 | r3 = r4 + 0xa8;
0x00021b4a movs r2, 2 | r2 = 2;
0x00021b4c mov r0, r5 | r0 = r5;
0x00021b4e str r6, [sp] | *(sp) = r6;
0x00021b50 add r1, pc | r1 = 0x437c0;
0x00021b52 bl 0x20e0c | r0 = fcn_00020e0c (r0, r1, r2, r3, r4, r5, r6);
| if (r0 != 0) {
0x00021b56 cbz r0, 0x21b60 |
0x00021b58 vmov.i8 d16, 0xff | __asm ("vmov.i8 d16, 0xff");
0x00021b5c vstr d16, [r4, 0xa8] | __asm ("vstr d16, [r4, 0xa8]");
| }
0x00021b60 ldr r1, [pc, 0x10c] |
0x00021b62 movs r3, 0 | r3 = 0;
0x00021b64 str r3, [sp] | *(sp) = r3;
0x00021b66 movs r2, 2 | r2 = 2;
0x00021b68 add.w r3, r4, 0x90 | r3 = r4 + 0x90;
0x00021b6c mov r0, r5 | r0 = r5;
0x00021b6e add r1, pc | r1 = 0x437e2;
0x00021b70 bl 0x20e0c | r0 = fcn_00020e0c (r0, r1, r2, r3, r4, r5, r6);
0x00021b74 cmp r0, 0 |
| if (r0 == 0) {
0x00021b76 beq.w 0x2192c | goto label_3;
| }
0x00021b7a vmov.i8 d16, 0xff | __asm ("vmov.i8 d16, 0xff");
0x00021b7e vstr d16, [r4, 0x90] | __asm ("vstr d16, [r4, 0x90]");
0x00021b82 b 0x2192c | goto label_3;
| label_42:
0x00021b84 ldr r1, [pc, 0xec] |
0x00021b86 ldr r0, [pc, 0xf0] |
0x00021b88 add r1, pc | r1 = 0x43800;
0x00021b8a add r0, pc | r0 = 0x43808;
0x00021b8c blx 0xdf90 | r0 = fcn_0000df90 ();
0x00021b90 mov sb, r0 | sb = r0;
| if (r0 != 0) {
0x00021b92 cbz r0, 0x21be0 |
0x00021b94 ldr r1, [pc, 0xe4] |
0x00021b96 mov r2, r7 | r2 = r7;
0x00021b98 add r7, sp, 0x10 | r7 += var_10h_2;
0x00021b9a mov r3, r7 | r3 = r7;
0x00021b9c add r1, pc | r1 = 0x4381c;
0x00021b9e bl 0x21570 | r0 = byte_value_from_proc_file ();
0x00021ba2 mov sl, r0 | sl = r0;
0x00021ba4 mov r0, sb | r0 = sb;
0x00021ba6 blx 0xdc8c | fcn_0000dc8c ();
0x00021baa cmp.w sl, 0 |
| if (sl != 0) {
0x00021bae bne 0x21be2 | goto label_54;
| }
0x00021bb0 ldrd sl, sb, [r7] | __asm ("ldrd sl, sb, [r7]");
0x00021bb4 orrs.w r3, sl, sb | r3 = sl | sb;
| if (r3 == sl) {
0x00021bb8 beq 0x21be2 | goto label_54;
| }
0x00021bba ldrd r0, r1, [r4, 0x78] | __asm ("ldrd r0, r1, [r4, 0x78]");
0x00021bbe bl 0x4c6f4 | r0 = fcn_0004c6f4 (r0, r1, r2);
0x00021bc2 vmov d8, r0, r1 | __asm ("vmov d8, r0, r1");
0x00021bc6 mov r0, sl | r0 = sl;
0x00021bc8 mov r1, sb | r1 = sb;
0x00021bca bl 0x4c6f4 | r0 = fcn_0004c6f4 (r0, r1, r2);
0x00021bce vmov d18, r0, r1 | __asm ("vmov d18, r0, r1");
0x00021bd2 vldr d17, [pc, 0x3c] | __asm ("vldr d17, [0x00021c14]");
0x00021bd6 vdiv.f64 d16, d8, d18 | __asm ("vdiv.f64 d16, d8, d18");
0x00021bda vmul.f64 d16, d16, d17 | __asm ("vmul.f64 d16, d16, d17");
0x00021bde b 0x2191e | goto label_10;
| }
0x00021be0 add r7, sp, 0x10 | r7 += var_10h_2;
| label_54:
0x00021be2 vmov.f64 d16, -1.000000e+00 | __asm ("vmov.f64 d16, -1");
0x00021be6 b 0x2191e | goto label_10;
| label_40:
0x00021be8 mov r3, r1 | r3 = r1;
0x00021bea mov r2, r0 | r2 = r0;
0x00021bec b 0x218f0 | goto label_11;
| label_50:
0x00021bee str.w sl, [r4, 0x1c] | __asm ("str.w sl, [r4, 0x1c]");
0x00021bf2 b 0x21982 | goto label_5;
| label_41:
0x00021bf4 mov r3, r7 | r3 = r7;
0x00021bf6 mov r2, ip | r2 = ip;
0x00021bf8 b 0x218f0 | goto label_11;
| label_51:
0x00021bfa ldr r0, [pc, 0x84] |
0x00021bfc mov r3, sl | r3 = sl;
0x00021bfe mov r2, r5 | r2 = r5;
0x00021c00 movw r1, 0x684 | r1 = 0x684;
0x00021c04 add r0, pc | r0 = 0x4388a;
0x00021c06 bl 0x40ed8 | zbx_strdup2 ();
0x00021c0a b 0x21aba | goto label_12;
| label_49:
0x00021c0c blx 0xe158 | r0 = fcn_0000e158 ();
0x00021c10 movs r0, r0 |
0x00021c12 movs r0, r0 |
0x00021c14 movs r0, r0 |
0x00021c16 eors r1, r3 | r1 ^= r3;
0x00021c18 adr r4, 0x2a8 | r4 = 0x2a8;
0x00021c1a movs r3, r0 | r3 = r0;
0x00021c1c lsls r4, r2, 0xe | r4 = r2 << 0xe;
0x00021c1e movs r0, r0 |
0x00021c20 lsls r0, r5, 0xe | r0 = r5 << 0xe;
0x00021c22 movs r3, r0 | r3 = r0;
0x00021c24 lsls r4, r4, 0xf | r4 <<= 0xf;
0x00021c26 movs r3, r0 | r3 = r0;
0x00021c28 lsls r2, r7, 0xe | r2 = r7 << 0xe;
0x00021c2a movs r3, r0 | r3 = r0;
0x00021c2c lsls r2, r5, 0xe | r2 = r5 << 0xe;
0x00021c2e movs r3, r0 | r3 = r0;
0x00021c30 lsls r2, r2, 0xe | r2 <<= 0xe;
0x00021c32 movs r3, r0 | r3 = r0;
0x00021c34 lsls r2, r7, 0xd | r2 = r7 << 0xd;
0x00021c36 movs r3, r0 | r3 = r0;
0x00021c38 lsls r2, r4, 0xd | r2 = r4 << 0xd;
0x00021c3a movs r3, r0 | r3 = r0;
0x00021c3c lsls r2, r1, 0xd | r2 = r1 << 0xd;
0x00021c3e movs r3, r0 | r3 = r0;
0x00021c40 lsls r2, r6, 0xc | r2 = r6 << 0xc;
0x00021c42 movs r3, r0 | r3 = r0;
0x00021c44 lsls r4, r3, 0xc | r4 = r3 << 0xc;
0x00021c46 movs r3, r0 | r3 = r0;
0x00021c48 lsls r6, r0, 0xc | r6 = r0 << 0xc;
0x00021c4a movs r3, r0 | r3 = r0;
0x00021c4c lsls r0, r6, 0xb | r0 = r6 << 0xb;
0x00021c4e movs r3, r0 | r3 = r0;
0x00021c50 lsls r2, r3, 0xa | r2 = r3 << 0xa;
0x00021c52 movs r3, r0 | r3 = r0;
0x00021c54 lsls r6, r1, 0xa | r6 = r1 << 0xa;
0x00021c56 movs r3, r0 | r3 = r0;
0x00021c58 lsls r2, r1, 0xa | r2 = r1 << 0xa;
0x00021c5a movs r3, r0 | r3 = r0;
0x00021c5c adr r1, 0x320 | r1 = 0x320;
0x00021c5e movs r3, r0 | r3 = r0;
0x00021c60 lsls r0, r3, 5 | r0 = r3 << 5;
0x00021c62 movs r3, r0 | r3 = r0;
0x00021c64 lsls r4, r7, 5 | r4 = r7 << 5;
0x00021c66 movs r3, r0 | r3 = r0;
| if (r6 == 0) {
0x00021c68 cbnz r6, 0x21cae |
0x00021c6a movs r2, r0 | r2 = r0;
0x00021c6c lsls r0, r5, 1 | r0 = r5 << 1;
0x00021c6e movs r3, r0 | r3 = r0;
0x00021c70 lsls r2, r2, 1 | r2 <<= 1;
0x00021c72 movs r3, r0 | r3 = r0;
0x00021c74 usat r0, 2, r8 | __asm ("usat r0, 2, r8");
0x00021c78 ldrh.w r0, [lr, r2] | r0 = *((lr + r2));
0x00021c7c movs r0, r1 | r0 = r1;
0x00021c7e movs r3, r0 | r3 = r0;
0x00021c80 cdp2 p0, 0xf, c0, c0, c2, 0 | __asm ("cdp2 p0, 0xf, c0, c0, c2, 0");
| }
0x00021cae ldr r3, [r3] | r3 = *(r3);
0x00021cb0 str.w r3, [sp, 0x84c] | __asm ("str.w r3, [arg_84ch]");
0x00021cb4 mov.w r3, 0 | r3 = 0;
0x00021cb8 vstr d16, [r0] | __asm ("vstr d16, [r0]");
0x00021cbc str r1, [sp, 0x14] | var_14h = r1;
| if (r3 > r0) {
0x00021cbe bgt.w 0x22062 | goto label_55;
| }
0x00021cc2 cmp.w r8, 0 |
| if (r8 > 0) {
0x00021cc6 ble 0x21d7e |
0x00021cc8 ldr r5, [r4, 8] | r5 = *((r4 + 8));
0x00021cca cmp.w r8, 1 |
0x00021cce ldr r3, [r5] | r3 = *(r5);
0x00021cd0 str r3, [sp, 4] | var_4h = r3;
| if (r8 == 1) {
0x00021cd2 beq.w 0x2238e | goto label_56;
| }
0x00021cd6 ldr.w fp, [r5, 4] | fp = *((r5 + 4));
0x00021cda cmp.w fp, 0 |
| if (fp == 0) {
0x00021cde beq.w 0x22370 | goto label_57;
| }
0x00021ce2 ldrb.w r3, [fp] | r3 = *(fp);
0x00021ce6 cmp r3, 0 |
| if (r3 != 0) {
0x00021ce8 bne.w 0x2227a | goto label_58;
| }
0x00021cec cmp.w r8, 2 |
| if (r8 == 2) {
0x00021cf0 beq.w 0x220aa | goto label_59;
| }
0x00021cf4 mov r4, r3 | r4 = r3;
0x00021cf6 mov sl, r3 | sl = r3;
| label_25:
0x00021cf8 ldr.w fp, [r5, 8] | fp = *((r5 + 8));
0x00021cfc cmp.w fp, 0 |
| if (fp == 0) {
0x00021d00 beq.w 0x221f0 | goto label_60;
| }
0x00021d04 ldrb.w r3, [fp] | r3 = *(fp);
0x00021d08 cmp r3, 0 |
| if (r3 == 0) {
0x00021d0a beq.w 0x220ba | goto label_61;
| }
0x00021d0e ldr.w r1, [pc, 0x5c8] |
0x00021d12 mov r0, fp | r0 = fp;
0x00021d14 add r1, pc | r1 = 0x43ff2;
0x00021d16 blx 0xe3b0 | fcn_0000e3b0 ();
0x00021d1a str r0, [sp, 0x1c] | var_1ch = r0;
0x00021d1c cmp r0, 0 |
| if (r0 == 0) {
0x00021d1e beq.w 0x223b8 | goto label_62;
| }
0x00021d22 ldr.w r1, [pc, 0x5b8] |
0x00021d26 mov r0, fp | r0 = fp;
0x00021d28 add r1, pc | r1 = 0x4400a;
0x00021d2a blx 0xe3b0 | r0 = fcn_0000e3b0 ();
0x00021d2e cmp r0, 0 |
| if (r0 == 0) {
0x00021d30 beq.w 0x22428 | goto label_63;
| }
0x00021d34 ldr.w r1, [pc, 0x5a8] | r1 = *(0x000222e0);
0x00021d38 mov r0, fp | r0 = fp;
0x00021d3a add r1, pc | r1 += pc;
0x00021d3c blx 0xe3b0 | r0 = fcn_0000e3b0 ();
0x00021d40 cmp r0, 0 |
| if (r0 == 0) {
0x00021d42 beq.w 0x22550 | goto label_64;
| }
0x00021d46 ldr.w r1, [pc, 0x59c] |
0x00021d4a mov r0, fp | r0 = fp;
0x00021d4c add r1, pc | r1 = 0x44036;
0x00021d4e blx 0xe3b0 | r0 = fcn_0000e3b0 ();
0x00021d52 cmp r0, 0 |
| if (r0 != 0) {
0x00021d54 bne.w 0x225de | goto label_65;
| }
0x00021d58 cmp.w r8, 3 |
| if (r8 == 3) {
0x00021d5c beq.w 0x22742 | goto label_66;
| }
0x00021d60 cmp.w r8, 4 |
0x00021d64 ldr.w fp, [r5, 0xc] | fp = *((r5 + 0xc));
0x00021d68 itt ne |
| if (r8 == 4) {
0x00021d6a movne r3, 2 | r3 = 2;
| }
| if (r8 == 4) {
0x00021d6c strne r3, [sp, 0x1c] | var_1ch = r3;
| }
| if (r8 != 4) {
0x00021d6e bne.w 0x220d0 | goto label_28;
| }
0x00021d72 cmp r4, 0 |
| if (r4 == 0) {
0x00021d74 beq.w 0x22732 | goto label_67;
| }
| label_22:
0x00021d78 ldr r3, [sp, 0x14] | r3 = var_14h;
0x00021d7a ldr r4, [r3, 0x28] | r4 = *((r3 + 0x28));
0x00021d7c b 0x222be | goto label_68;
| }
0x00021d7e ldr.w r2, [pc, 0x568] | r2 = *(0x000222e8);
0x00021d82 movs r3, 0 | r3 = 0;
0x00021d84 mov sl, r3 | sl = r3;
0x00021d86 mov fp, r3 |
0x00021d88 mov.w r8, 2 | r8 = 2;
0x00021d8c str r3, [sp, 4] | var_4h = r3;
0x00021d8e add r2, pc | r2 += pc;
0x00021d90 str r3, [sp, 0x1c] | var_1ch = r3;
0x00021d92 str r2, [sp, 0x18] | var_18h = r2;
| label_21:
0x00021d94 ldr.w r0, [pc, 0x554] |
0x00021d98 add r0, pc | r0 = 0x44088;
0x00021d9a blx 0xdbdc | r0 = fcn_0000dbdc ();
0x00021d9e mov r7, r0 | r7 = r0;
0x00021da0 cmp r0, 0 |
| if (r0 == 0) {
0x00021da2 beq.w 0x2268e | goto label_69;
| }
0x00021da6 ldr.w r3, [pc, 0x548] | r3 = *(0x000222f0);
0x00021daa ldr.w sb, [pc, 0x548] | sb = *(0x000222f4);
0x00021dae vmov.i64 d8, 0 | __asm ("vmov.i64 d8, 0");
0x00021db2 add r3, pc | r3 += pc;
0x00021db4 str r3, [sp, 8] | var_8h = r3;
0x00021db6 add sb, pc | sb += pc;
0x00021db8 ldr.w r3, [pc, 0x53c] |
0x00021dbc add r3, pc | r3 = 0x440b8;
0x00021dbe str r3, [sp, 0xc] | var_ch = r3;
0x00021dc0 movs r3, 0 | r3 = 0;
0x00021dc2 mov r5, r3 | r5 = r3;
0x00021dc4 strd r3, r3, [sp, 0x20] | __asm ("strd r3, r3, [sp, 0x20]");
0x00021dc8 strd r3, r3, [sp, 0x28] | __asm ("strd r3, r3, [sp, 0x28]");
| label_13:
0x00021dcc mov r6, r5 | r6 = r5;
| label_14:
0x00021dce mov r0, r7 | r0 = r7;
0x00021dd0 blx 0xe28c | r0 = fcn_0000e28c ();
0x00021dd4 mov r4, r0 | r4 = r0;
0x00021dd6 cmp r0, 0 |
| if (r0 == 0) {
0x00021dd8 beq.w 0x22054 | goto label_70;
| }
| if (r5 != 0) {
| label_17:
0x00021ddc cbz r5, 0x21de4 |
0x00021dde mov r0, r5 | r0 = r5;
0x00021de0 blx 0xdc8c | fcn_0000dc8c ();
| }
| if (r6 == 0) {
0x00021de4 cbz r6, 0x21dec | goto label_71;
| }
0x00021de6 mov r0, r6 | r0 = r6;
0x00021de8 blx 0xdc8c | fcn_0000dc8c ();
| do {
| label_71:
0x00021dec adds r4, 0x13 | r4 += 0x13;
0x00021dee movs r2, 0xa | r2 = 0xa;
0x00021df0 movs r1, 0 | r1 = 0;
0x00021df2 mov r0, r4 | r0 = r4;
0x00021df4 blx 0xdfe8 | r0 = waitpid ();
0x00021df8 cmp r0, 0 |
| if (r0 != 0) {
0x00021dfa bne 0x21e70 | goto label_72;
| }
0x00021dfc mov r0, r7 | r0 = r7;
0x00021dfe blx 0xe28c | r0 = fcn_0000e28c ();
0x00021e02 mov r4, r0 | r4 = r0;
0x00021e04 cmp r0, 0 |
0x00021e06 bne 0x21dec |
| } while (r0 != 0);
0x00021e08 mov r6, r0 | r6 = r0;
| label_18:
0x00021e0a ldrd r3, r4, [sp, 0x20] | __asm ("ldrd r3, r4, [var_20h]");
0x00021e0e cmp r3, 0 |
0x00021e10 ite ne |
| if (r3 == 0) {
0x00021e12 movne r4, 0 | r4 = 0;
| }
| if (r3 != 0) {
0x00021e14 andeq r4, r4, 1 | r4 &= 1;
| }
0x00021e18 cmp r6, 0 |
| if (r6 != 0) {
0x00021e1a bne.w 0x21f76 | goto label_73;
| }
0x00021e1e mov r0, r7 | r0 = r7;
0x00021e20 blx 0xe0d0 | fcn_0000e0d0 ();
0x00021e24 cmp r4, 0 |
| if (r4 == 0) {
0x00021e26 beq.w 0x21f88 | goto label_74;
| }
| label_15:
0x00021e2a ldr.w r0, [pc, 0x4d0] | r0 = *(0x000222fc);
0x00021e2e movs r2, 0 | r2 = 0;
0x00021e30 ldr r3, [sp, 0x18] | r3 = var_18h;
0x00021e32 mov.w r1, 0x348 | r1 = 0x348;
0x00021e36 add r0, pc | r0 += pc;
0x00021e38 bl 0x40ed8 | zbx_strdup2 ();
0x00021e3c ldr.w r1, [pc, 0x4c0] | r1 = *(0x00022300);
0x00021e40 mov r4, r0 | r4 = r0;
0x00021e42 add r1, pc | r1 += pc;
0x00021e44 bl 0x444f4 | zbx_rtrim ();
0x00021e48 ldr r5, [sp, 0x14] | r5 = var_14h;
0x00021e4a mov r2, r4 | r2 = r4;
0x00021e4c ldr.w r1, [pc, 0x4b4] |
0x00021e50 movs r0, 0 | r0 = 0;
0x00021e52 ldr r3, [r5, 0x28] | r3 = *((r5 + 0x28));
0x00021e54 add r1, pc | r1 = 0x4415c;
0x00021e56 orr r3, r3, 0x20 | r3 |= 0x20;
0x00021e5a str r3, [r5, 0x28] | *((r5 + 0x28)) = r3;
0x00021e5c bl 0x44820 | zbx_dsprintf ()
0x00021e60 str r0, [r5, 0x20] | *((r5 + 0x20)) = r0;
0x00021e62 cmp r4, 0 |
| if (r4 == 0) {
0x00021e64 beq.w 0x22080 | goto label_34;
| }
0x00021e68 mov r0, r4 | r0 = r4;
0x00021e6a blx 0xde30 | fcn_0000de30 ();
0x00021e6e b 0x22080 | goto label_34;
| label_72:
0x00021e70 add r6, sp, 0x4c | r6 += arg_4ch;
0x00021e72 ldr r2, [sp, 8] | r2 = var_8h;
0x00021e74 mov r3, r4 | r3 = r4;
0x00021e76 mov.w r1, 0x800 | r1 = 0x800;
0x00021e7a mov r0, r6 | r0 = r6;
0x00021e7c bl 0x43f38 | zbx_snprintf ();
0x00021e80 mov r1, sb | r1 = sb;
0x00021e82 mov r0, r6 | r0 = r6;
0x00021e84 blx 0xdf90 | r0 = fcn_0000df90 ();
0x00021e88 mov r5, r0 | r5 = r0;
0x00021e8a cmp r0, 0 |
| if (r0 == 0) {
0x00021e8c beq 0x21dcc | goto label_13;
| }
0x00021e8e ldr r2, [sp, 0xc] | r2 = var_ch;
0x00021e90 mov r3, r4 | r3 = r4;
0x00021e92 mov.w r1, 0x800 | r1 = 0x800;
0x00021e96 mov r0, r6 | r0 = r6;
0x00021e98 bl 0x43f38 | zbx_snprintf ();
0x00021e9c mov r0, r6 | r0 = r6;
0x00021e9e mov r1, sb | r1 = sb;
0x00021ea0 blx 0xdf90 | r0 = fcn_0000df90 ();
0x00021ea4 mov r6, r0 | r6 = r0;
0x00021ea6 cmp r0, 0 |
| if (r0 == 0) {
0x00021ea8 beq 0x21dce | goto label_14;
| }
0x00021eaa mov r1, r0 | r1 = r0;
0x00021eac ldr r2, [sp, 4] | r2 = var_4h;
0x00021eae mov r0, r5 | r0 = r5;
0x00021eb0 bl 0x20980 | fcn_00020980 (r0, r1, r2);
0x00021eb4 adds r0, 1 | r0++;
| if (r0 == 1) {
0x00021eb6 beq 0x21dce | goto label_14;
| }
0x00021eb8 cmp.w sl, 0 |
| if (sl == 0) {
0x00021ebc beq 0x21ee2 | goto label_75;
| }
0x00021ebe add r4, sp, 0x40 | r4 += arg_40h;
0x00021ec0 movs r1, 0 | r1 = 0;
0x00021ec2 mov r2, r4 | r2 = r4;
0x00021ec4 mov r0, r6 | r0 = r6;
0x00021ec6 bl 0x21040 | r0 = fcn_00021040 (r0, r1, r2, r3);
0x00021eca cmp r0, 0 |
| if (r0 != 0) {
0x00021ecc bne.w 0x21dce | goto label_14;
| }
0x00021ed0 ldr.w r2, [sl, 8] | r2 = *((sl + 8));
0x00021ed4 ldrd r1, r3, [sp, 0x40] | __asm ("ldrd r1, r3, [arg_40h]");
0x00021ed8 cmp r0, r3 |
0x00021eda it eq |
| if (r0 != r3) {
0x00021edc cmpeq r2, r1 | __asm ("cmpeq r2, r1");
| goto label_76;
| }
| if (r0 != r3) {
| label_76:
0x00021ede bne.w 0x21dce | goto label_14;
| }
| label_75:
0x00021ee2 mov r1, fp | r1 = fp;
0x00021ee4 mov r0, r5 | r0 = r5;
0x00021ee6 bl 0x20a18 | fcn_00020a18 (r0, r1);
0x00021eea adds r0, 1 | r0++;
| if (r0 == 1) {
0x00021eec beq.w 0x21dce | goto label_14;
| }
0x00021ef0 mov r0, r6 | r0 = r6;
0x00021ef2 blx 0xdc5c | fcn_0000dc5c ();
0x00021ef6 cmp.w r8, 3 |
| if (r8 == 3) {
0x00021efa beq 0x21fd0 | goto label_77;
| }
0x00021efc ble 0x21f4a |
| while (r3 < 1) {
0x00021efe ldr r3, [sp, 0x10] | r3 = var_10h;
0x00021f00 movs r2, 0 | r2 = 0;
0x00021f02 ldr r1, [sp, 0x18] | r1 = var_18h;
0x00021f04 mov r0, r6 | r0 = r6;
0x00021f06 bl 0x21570 | r0 = byte_value_from_proc_file ();
0x00021f0a adds r3, r0, 2 | r3 = r0 + 2;
| if (r3 == r0) {
0x00021f0c beq.w 0x22042 | goto label_31;
| }
0x00021f10 adds r0, 1 | r0++;
| if (r0 == 1) {
0x00021f12 beq 0x21f6e | goto label_78;
| }
0x00021f14 ldr r3, [sp, 0x10] | r3 = var_10h;
0x00021f16 ldrd r2, r3, [r3] | __asm ("ldrd r2, r3, [r3]");
| label_24:
0x00021f1a ldr r0, [sp, 0x20] | r0 = var_20h;
0x00021f1c adds r1, r0, 1 | r1 = r0 + 1;
0x00021f1e cmp r0, 0 |
| if (r0 == 0) {
0x00021f20 beq.w 0x22084 | goto label_79;
| }
0x00021f24 ldr r0, [sp, 0x1c] | r0 = var_1ch;
0x00021f26 cmp r0, 1 |
| if (r0 == 1) {
0x00021f28 beq.w 0x22032 | goto label_80;
| }
0x00021f2c ldr r0, [sp, 0x1c] | r0 = var_1ch;
0x00021f2e cmp r0, 2 |
0x00021f30 ldr r0, [sp, 0x28] | r0 = *(arg_28h);
| if (r0 == 2) {
0x00021f32 beq.w 0x22498 | goto label_81;
| }
0x00021f36 adds r2, r0, r2 | r2 = r0 + r2;
0x00021f38 ldr r0, [sp, 0x2c] | r0 = *(arg_2ch);
0x00021f3a str r1, [sp, 0x20] | var_20h = r1;
0x00021f3c adc.w r3, r0, r3 | __asm ("adc.w r3, r0, r3");
0x00021f40 strd r2, r3, [sp, 0x28] | __asm ("strd r2, r3, [sp, 0x28]");
0x00021f44 movs r3, 1 | r3 = 1;
0x00021f46 str r3, [sp, 0x24] | *(arg_24h) = r3;
0x00021f48 b 0x21dce | goto label_14;
0x00021f4a add.w r3, r8, -1 | r3 = r8 + -1;
0x00021f4e cmp r3, 1 |
0x00021f50 bls 0x21efe |
| }
0x00021f52 ldr r4, [pc, 0x3b4] |
0x00021f54 movs r2, 0 | r2 = 0;
0x00021f56 ldr r3, [sp, 0x10] | r3 = var_10h;
0x00021f58 mov r0, r6 | r0 = r6;
0x00021f5a add r4, pc | r4 = zbx_chrcpy_alloc;
0x00021f5c mov r1, r4 | r1 = r4;
0x00021f5e bl 0x21570 | r0 = byte_value_from_proc_file ();
0x00021f62 cmp r0, 0 |
| if (r0 == 0) {
0x00021f64 beq.w 0x2221c | goto label_82;
| }
| label_16:
0x00021f68 str r4, [sp, 0x18] | var_18h = r4;
| label_23:
0x00021f6a adds r0, 2 | r0 += 2;
| if (r0 == 2) {
0x00021f6c beq 0x22042 | goto label_31;
| }
| label_78:
0x00021f6e movs r4, 1 | r4 = 1;
0x00021f70 mov r0, r5 | r0 = r5;
0x00021f72 blx 0xdc8c | fcn_0000dc8c ();
| label_73:
0x00021f76 mov r0, r6 | r0 = r6;
0x00021f78 blx 0xdc8c | fcn_0000dc8c ();
0x00021f7c mov r0, r7 | r0 = r7;
0x00021f7e blx 0xe0d0 | fcn_0000e0d0 ();
0x00021f82 cmp r4, 0 |
| if (r4 != 0) {
0x00021f84 bne.w 0x21e2a | goto label_15;
| }
| label_74:
0x00021f88 ldr r3, [sp, 0x14] | r3 = var_14h;
0x00021f8a cmp.w r8, 3 |
0x00021f8e ldr r4, [r3, 0x28] | r4 = *((r3 + 0x28));
| if (r8 != 3) {
0x00021f90 bne 0x22090 | goto label_83;
| }
0x00021f92 ldr r3, [sp, 0x1c] | r3 = var_1ch;
0x00021f94 orr r2, r4, 2 | r2 = r4 | 2;
0x00021f98 cmp r3, 3 |
| if (r3 == 3) {
0x00021f9a beq.w 0x223e0 | goto label_84;
| }
| label_35:
0x00021f9e ldr r2, [sp, 0x14] | r2 = var_14h;
0x00021fa0 movs r0, r0 |
0x00021fa2 movs r0, r0 |
0x00021fa4 vstr d8, [r2, 0x10] | __asm ("vstr d8, [r2, 0x10]");
0x00021fa8 str r3, [r6, 0x28] | *((r6 + 0x28)) = r3;
| label_20:
0x00021faa movs r0, 0 | r0 = 0;
| label_19:
0x00021fac ldr r2, [pc, 0x35c] |
0x00021fae ldr r3, [pc, 0x324] | r3 = *(0x222d6);
0x00021fb0 add r2, pc | r2 = 0x442c0;
0x00021fb2 ldr r3, [r2, r3] | r3 = *(0x442c0);
0x00021fb4 ldr r2, [r3] | r2 = *(0x442c0);
0x00021fb6 ldr.w r3, [sp, 0x84c] | r3 = *(arg_84ch);
0x00021fba eors r2, r3 | r2 ^= r3;
0x00021fbc mov.w r3, 0 | r3 = 0;
| if (r2 != r3) {
0x00021fc0 bne.w 0x2261c | goto label_85;
| }
0x00021fc4 addw sp, sp, 0x854 | __asm ("addw sp, sp, 0x854");
0x00021fc8 vpop {d8, d9} | __asm ("vpop {d8, d9}");
0x00021fcc pop.w {r4, r5, r6, r7, r8, sb, sl, fp, pc} |
| label_77:
0x00021fd0 ldr r4, [pc, 0x33c] |
0x00021fd2 movs r2, 0 | r2 = 0;
0x00021fd4 ldr r3, [sp, 0x10] | r3 = var_10h;
0x00021fd6 mov r0, r6 | r0 = r6;
0x00021fd8 add r4, pc | r4 = 0x442ec;
0x00021fda mov r1, r4 | r1 = r4;
0x00021fdc bl 0x21570 | r0 = byte_value_from_proc_file ();
0x00021fe0 cmp r0, 0 |
| if (r0 != 0) {
0x00021fe2 bne 0x21f68 | goto label_16;
| }
0x00021fe4 ldr r3, [sp, 0x10] | r3 = var_10h;
0x00021fe6 ldrd r0, r1, [r3] | __asm ("ldrd r0, r1, [r3]");
0x00021fea bl 0x4c6f4 | r0 = fcn_0004c6f4 (r0, r1, r2);
0x00021fee vmov d9, r0, r1 | __asm ("vmov d9, r0, r1");
0x00021ff2 ldrd r0, r1, [sp, 0x38] | __asm ("ldrd r0, r1, [arg_38h]");
0x00021ff6 bl 0x4c6f4 | r0 = fcn_0004c6f4 (r0, r1, r2);
0x00021ffa vmov d18, r0, r1 | __asm ("vmov d18, r0, r1");
0x00021ffe vldr d17, [pc, 0x2c8] | __asm ("vldr d17, [0x000222cc]");
0x00022002 vdiv.f64 d16, d9, d18 | __asm ("vdiv.f64 d16, d9, d18");
0x00022006 ldr r2, [sp, 0x20] | r2 = var_20h;
0x00022008 adds r3, r2, 1 | r3 = r2 + 1;
0x0002200a vmul.f64 d16, d16, d17 | __asm ("vmul.f64 d16, d16, d17");
0x0002200e cmp r2, 0 |
| if (r2 == 0) {
0x00022010 beq.w 0x222a4 | goto label_86;
| }
0x00022014 ldr r2, [sp, 0x1c] | r2 = var_1ch;
0x00022016 cmp r2, 1 |
| if (r2 == 1) {
0x00022018 beq.w 0x224be | goto label_87;
| }
0x0002201c ldr r2, [sp, 0x1c] | r2 = var_1ch;
0x0002201e cmp r2, 2 |
| if (r2 == 2) {
0x00022020 beq.w 0x2247e | goto label_88;
| }
0x00022024 str r3, [sp, 0x20] | var_20h = r3;
0x00022026 movs r3, 1 | r3 = 1;
0x00022028 vadd.f64 d8, d8, d16 | __asm ("vadd.f64 d8, d8, d16");
0x0002202c str r4, [sp, 0x18] | var_18h = r4;
0x0002202e str r3, [sp, 0x24] | *(arg_24h) = r3;
0x00022030 b 0x21dce | goto label_14;
| label_80:
0x00022032 ldr r0, [sp, 0x28] | r0 = *(arg_28h);
0x00022034 cmp r0, r2 |
0x00022036 ldr r0, [sp, 0x2c] | r0 = *(arg_2ch);
0x00022038 sbcs r0, r3 | __asm ("sbcs r0, r3");
| if (r0 < r2) {
0x0002203a bhs 0x22040 |
| label_33:
0x0002203c strd r2, r3, [sp, 0x28] | __asm ("strd r2, r3, [sp, 0x28]");
| }
| label_32:
0x00022040 str r1, [sp, 0x20] | var_20h = r1;
| label_31:
0x00022042 movs r3, 1 | r3 = 1;
0x00022044 mov r0, r7 | r0 = r7;
0x00022046 str r3, [sp, 0x24] | *(arg_24h) = r3;
0x00022048 blx 0xe28c | r0 = fcn_0000e28c ();
0x0002204c mov r4, r0 | r4 = r0;
0x0002204e cmp r0, 0 |
| if (r0 != 0) {
0x00022050 bne.w 0x21ddc | goto label_17;
| }
| label_70:
0x00022054 cmp r5, 0 |
| if (r5 == 0) {
0x00022056 beq.w 0x21e0a | goto label_18;
| }
0x0002205a mov r0, r5 | r0 = r5;
0x0002205c blx 0xdc8c | fcn_0000dc8c ();
0x00022060 b 0x21e0a | goto label_18;
| label_55:
0x00022062 ldr r0, [r1, 0x28] | r0 = *((r1 + 0x28));
0x00022064 mov r4, r1 | r4 = r1;
0x00022066 ldr r3, [pc, 0x2ac] |
0x00022068 movs r2, 0 | r2 = 0;
0x0002206a mov.w r1, 0x214 | r1 = 0x214;
0x0002206e orr r0, r0, 0x20 | r0 |= 0x20;
0x00022072 str r0, [r4, 0x28] | *((r4 + 0x28)) = r0;
0x00022074 add r3, pc | r3 = 0x4438e;
0x00022076 ldr r0, [pc, 0x2a0] |
0x00022078 add r0, pc | r0 = 0x44396;
0x0002207a bl 0x40ed8 | zbx_strdup2 ();
0x0002207e str r0, [r4, 0x20] | *((r4 + 0x20)) = r0;
| label_34:
0x00022080 movs r0, 1 | r0 = 1;
0x00022082 b 0x21fac | goto label_19;
| label_79:
0x00022084 strd r2, r3, [sp, 0x28] | __asm ("strd r2, r3, [sp, 0x28]");
0x00022088 movs r3, 1 | r3 = 1;
0x0002208a strd r3, r3, [sp, 0x20] | __asm ("strd r3, r3, [sp, 0x20]");
0x0002208e b 0x21dce | goto label_14;
| label_83:
0x00022090 ldr r3, [sp, 0x1c] | r3 = var_1ch;
0x00022092 cmp r3, 3 |
| if (r3 == 3) {
0x00022094 beq.w 0x223fc | goto label_89;
| }
| label_26:
0x00022098 ldr r3, [sp, 0x14] | r3 = var_14h;
0x0002209a orr r4, r4, 1 | r4 |= 1;
0x0002209e ldr r2, [sp, 0x28] | r2 = *(arg_28h);
0x000220a0 str r4, [r3, 0x28] | *((r3 + 0x28)) = r4;
0x000220a2 str r2, [r3, 8] | *((r3 + 8)) = r2;
0x000220a4 ldr r2, [sp, 0x2c] | r2 = *(arg_2ch);
0x000220a6 str r2, [r3, 0xc] | *((r3 + 0xc)) = r2;
0x000220a8 b 0x21faa | goto label_20;
| label_59:
0x000220aa mov sl, r3 | sl = r3;
0x000220ac ldr r3, [pc, 0x26c] |
0x000220ae mov fp, sl |
0x000220b0 str.w sl, [sp, 0x1c] | __asm ("str.w sl, [var_1ch]");
0x000220b4 add r3, pc | r3 = 0x443d4;
0x000220b6 str r3, [sp, 0x18] | var_18h = r3;
0x000220b8 b 0x21d94 | goto label_21;
| label_61:
0x000220ba cmp.w r8, 3 |
| if (r8 == 3) {
0x000220be beq.w 0x2265e | goto label_90;
| }
0x000220c2 cmp.w r8, 4 |
0x000220c6 ldr.w fp, [r5, 0xc] | fp = *((r5 + 0xc));
| if (r8 == 4) {
0x000220ca beq.w 0x22648 | goto label_91;
| }
| do {
0x000220ce str r3, [sp, 0x1c] | var_1ch = r3;
| label_28:
0x000220d0 ldr r6, [r5, 0x10] | r6 = *((r5 + 0x10));
0x000220d2 cmp r6, 0 |
| if (r6 != 0) {
0x000220d4 beq.w 0x221e0 |
0x000220d8 ldrb r3, [r6] | r3 = *(r6);
0x000220da cmp r3, 0 |
| if (r3 != 0) {
0x000220dc beq 0x221d0 |
0x000220de ldr r1, [pc, 0x240] |
0x000220e0 mov r0, r6 | r0 = r6;
0x000220e2 add r1, pc | r1 = 0x44408;
0x000220e4 blx 0xe3b0 | r0 = fcn_0000e3b0 ();
0x000220e8 cmp r0, 0 |
| if (r0 == 0) {
0x000220ea beq.w 0x223a6 | goto label_92;
| }
0x000220ee ldr r1, [pc, 0x234] |
0x000220f0 mov r0, r6 | r0 = r6;
0x000220f2 add r1, pc | r1 = 0x4441c;
0x000220f4 blx 0xe3b0 | r0 = fcn_0000e3b0 ();
0x000220f8 cmp r0, 0 |
| if (r0 == 0) {
0x000220fa beq.w 0x22466 | goto label_93;
| }
0x000220fe ldr r1, [pc, 0x228] |
0x00022100 mov r0, r6 | r0 = r6;
0x00022102 add r1, pc | r1 = 0x44430;
0x00022104 blx 0xe3b0 | r0 = fcn_0000e3b0 ();
0x00022108 mov r5, r0 | r5 = r0;
0x0002210a cmp r0, 0 |
| if (r0 == 0) {
0x0002210c beq.w 0x224d0 | goto label_94;
| }
0x00022110 ldr r1, [pc, 0x218] |
0x00022112 mov r0, r6 | r0 = r6;
0x00022114 add r1, pc | r1 = 0x44444;
0x00022116 blx 0xe3b0 | r0 = fcn_0000e3b0 ();
0x0002211a cmp r0, 0 |
| if (r0 == 0) {
0x0002211c beq.w 0x2258c | goto label_95;
| }
0x00022120 ldr r1, [pc, 0x20c] |
0x00022122 mov r0, r6 | r0 = r6;
0x00022124 add r1, pc | r1 = 0x44458;
0x00022126 blx 0xe3b0 | r0 = fcn_0000e3b0 ();
0x0002212a cmp r0, 0 |
| if (r0 == 0) {
0x0002212c beq.w 0x225ba | goto label_96;
| }
0x00022130 ldr r1, [pc, 0x200] |
0x00022132 mov r0, r6 | r0 = r6;
0x00022134 add r1, pc | r1 = 0x4446c;
0x00022136 blx 0xe3b0 | r0 = fcn_0000e3b0 ();
0x0002213a cmp r0, 0 |
| if (r0 == 0) {
0x0002213c beq.w 0x225fe | goto label_97;
| }
0x00022140 ldr r1, [pc, 0x1f4] |
0x00022142 mov r0, r6 | r0 = r6;
0x00022144 add r1, pc | r1 = 0x44480;
0x00022146 blx 0xe3b0 | r0 = fcn_0000e3b0 ();
0x0002214a cmp r0, 0 |
| if (r0 == 0) {
0x0002214c beq.w 0x22634 | goto label_98;
| }
0x00022150 ldr r1, [pc, 0x1e8] |
0x00022152 mov r0, r6 | r0 = r6;
0x00022154 add r1, pc | r1 = 0x44494;
0x00022156 blx 0xe3b0 | r0 = fcn_0000e3b0 ();
0x0002215a cmp r0, 0 |
| if (r0 == 0) {
0x0002215c beq.w 0x22620 | goto label_99;
| }
0x00022160 ldr r1, [pc, 0x1dc] |
0x00022162 mov r0, r6 | r0 = r6;
0x00022164 add r1, pc | r1 = 0x444a8;
0x00022166 blx 0xe3b0 | r0 = fcn_0000e3b0 ();
0x0002216a cmp r0, 0 |
| if (r0 == 0) {
0x0002216c beq.w 0x226ee | goto label_100;
| }
0x00022170 ldr r1, [pc, 0x1d0] |
0x00022172 mov r0, r6 | r0 = r6;
0x00022174 add r1, pc | r1 = 0x444bc;
0x00022176 blx 0xe3b0 | r0 = fcn_0000e3b0 ();
0x0002217a cmp r0, 0 |
| if (r0 == 0) {
0x0002217c beq.w 0x226da | goto label_101;
| }
0x00022180 ldr r1, [pc, 0x1c4] |
0x00022182 mov r0, r6 | r0 = r6;
0x00022184 add r1, pc | r1 = 0x444d0;
0x00022186 blx 0xe3b0 | r0 = fcn_0000e3b0 ();
0x0002218a cmp r0, 0 |
| if (r0 == 0) {
0x0002218c beq.w 0x226c6 | goto label_102;
| }
0x00022190 ldr r1, [pc, 0x1b8] |
0x00022192 mov r0, r6 | r0 = r6;
0x00022194 add r1, pc | r1 = 0x444e4;
0x00022196 blx 0xe3b0 | r0 = fcn_0000e3b0 ();
0x0002219a cmp r0, 0 |
| if (r0 == 0) {
0x0002219c beq.w 0x226b2 | goto label_103;
| }
0x000221a0 ldr r1, [pc, 0x1ac] |
0x000221a2 mov r0, r6 | r0 = r6;
0x000221a4 add r1, pc | r1 = 0x444f8;
0x000221a6 blx 0xe3b0 | r0 = fcn_0000e3b0 ();
0x000221aa cmp r0, 0 |
| if (r0 == 0) {
0x000221ac beq.w 0x2277a | goto label_104;
| }
0x000221b0 ldr r1, [pc, 0x1a0] |
0x000221b2 mov r0, r6 | r0 = r6;
0x000221b4 add r1, pc | r1 = 0x4450c;
0x000221b6 blx 0xe3b0 | r0 = fcn_0000e3b0 ();
0x000221ba cmp r0, 0 |
| if (r0 != 0) {
0x000221bc bne.w 0x2275a | goto label_105;
| }
0x000221c0 cmp r4, 0 |
| if (r4 != 0) {
0x000221c2 bne 0x222b2 | goto label_27;
| }
0x000221c4 ldr r3, [pc, 0x190] |
0x000221c6 mov.w r8, 0xd | r8 = 0xd;
0x000221ca add r3, pc | r3 = 0x44526;
0x000221cc str r3, [sp, 0x18] | var_18h = r3;
0x000221ce b 0x21d94 | goto label_21;
| }
0x000221d0 cmp r4, 0 |
| if (r4 != 0) {
0x000221d2 bne 0x222b2 | goto label_27;
| }
0x000221d4 ldr r3, [pc, 0x184] |
0x000221d6 mov.w r8, 2 | r8 = 2;
0x000221da add r3, pc | r3 = 0x4453a;
0x000221dc str r3, [sp, 0x18] | var_18h = r3;
0x000221de b 0x21d94 | goto label_21;
| }
0x000221e0 cmp r4, 0 |
| if (r4 != 0) {
0x000221e2 bne 0x222b2 | goto label_27;
| }
0x000221e4 ldr r3, [pc, 0x178] |
0x000221e6 mov.w r8, 2 | r8 = 2;
0x000221ea add r3, pc | r3 = 0x4454e;
0x000221ec str r3, [sp, 0x18] | var_18h = r3;
0x000221ee b 0x21d94 | goto label_21;
| label_60:
0x000221f0 cmp.w r8, 3 |
| if (r8 == 3) {
0x000221f4 beq.w 0x2271c | goto label_106;
| }
0x000221f8 cmp.w r8, 4 |
0x000221fc ldr.w fp, [r5, 0xc] | fp = *((r5 + 0xc));
0x00022200 it ne |
| if (r8 == 4) {
0x00022202 movne r3, 0 | r3 = 0;
| }
0x00022204 bne.w 0x220ce |
| } while (r8 != 4);
0x00022208 cmp r4, 0 |
| if (r4 != 0) {
0x0002220a bne.w 0x21d78 | goto label_22;
| }
0x0002220e ldr r3, [pc, 0x154] |
0x00022210 mov.w r8, 2 | r8 = 2;
0x00022214 str r4, [sp, 0x1c] | var_1ch = r4;
0x00022216 add r3, pc | r3 = 0x44580;
0x00022218 str r3, [sp, 0x18] | var_18h = r3;
0x0002221a b 0x21d94 | goto label_21;
| label_82:
0x0002221c ldr r4, [pc, 0x148] |
0x0002221e add r3, sp, 0x40 | r3 += arg_40h;
0x00022220 mov r2, r0 | r2 = r0;
0x00022222 mov r0, r6 | r0 = r6;
0x00022224 str r3, [sp, 0x18] | var_18h = r3;
0x00022226 add r4, pc | r4 = 0x44592;
0x00022228 mov r1, r4 | r1 = r4;
0x0002222a bl 0x21570 | byte_value_from_proc_file ();
0x0002222e ldr r3, [sp, 0x18] | r3 = var_18h;
0x00022230 cmp r0, 0 |
| if (r0 != 0) {
0x00022232 bne.w 0x21f68 | goto label_16;
| }
0x00022234 add r6, sp, 0x264 | r6 = sp + 0x264;
0x00022236 ldr r4, [sp, 0x10] | r4 = var_10h;
0x00022238 mov r2, r0 | r2 = r0;
0x0002223a ldr r0, [r3] | r0 = *(r3);
0x0002223c str r3, [sp, 0x24] | *(arg_24h) = r3;
0x0002223e ldr r1, [r4] | r1 = *(r4);
0x00022240 adds r1, r1, r0 | r1 += r0;
0x00022242 ldr r0, [r3, 4] | r0 = *((r3 + 4));
0x00022244 str r1, [r4] | *(r4) = r1;
0x00022246 ldr r1, [r4, 4] | r1 = *((r4 + 4));
0x00022248 adc.w r1, r1, r0 | __asm ("adc.w r1, r1, r0");
0x0002224c mov r0, r6 | r0 = r6;
0x0002224e str r1, [r4, 4] | *((r4 + 4)) = r1;
0x00022250 ldr r4, [pc, 0x118] |
0x00022252 add r4, pc | r4 = 0x445c2;
0x00022254 mov r1, r4 | r1 = r4;
0x00022256 bl 0x21570 | byte_value_from_proc_file ();
0x0002225a str r4, [sp, 0x18] | var_18h = r4;
0x0002225c cmp r0, 0 |
| if (r0 != 0) {
0x0002225e bne.w 0x21f6a | goto label_23;
| }
0x00022262 ldr r0, [sp, 0x10] | r0 = var_10h;
0x00022264 ldr r3, [sp, 0x24] | r3 = *(arg_24h);
0x00022266 ldr r2, [r0] | r2 = *(r0);
0x00022268 ldr r1, [r3] | r1 = *(r3);
0x0002226a adds r2, r2, r1 | r2 += r1;
0x0002226c ldr r1, [r3, 4] | r1 = *((r3 + 4));
0x0002226e ldr r3, [r0, 4] | r3 = *((r0 + 4));
0x00022270 str r2, [r0] | *(r0) = r2;
0x00022272 adc.w r3, r3, r1 | __asm ("adc.w r3, r3, r1");
0x00022276 str r3, [r0, 4] | *((r0 + 4)) = r3;
0x00022278 b 0x21f1a | goto label_24;
| label_58:
0x0002227a blx 0xe3d4 | fcn_0000e3d4 ();
0x0002227e movs r6, 0 | r6 = 0;
0x00022280 mov r5, r0 | r5 = r0;
0x00022282 str r6, [r5] | *(r5) = r6;
0x00022284 mov r0, fp | r0 = fp;
0x00022286 blx 0xe3f8 | r0 = fcn_0000e3f8 ();
0x0002228a mov sl, r0 | sl = r0;
0x0002228c cmp r0, 0 |
| if (r0 == 0) {
0x0002228e beq.w 0x224a6 | goto label_107;
| }
0x00022292 ldr.w r8, [r4, 4] | r8 = *((r4 + 4));
0x00022296 cmp.w r8, 2 |
| if (r8 <= 2) {
0x0002229a ble.w 0x22456 | goto label_108;
| }
0x0002229e ldr r5, [r4, 8] | r5 = *((r4 + 8));
0x000222a0 mov r4, r6 | r4 = r6;
0x000222a2 b 0x21cf8 | goto label_25;
| label_86:
0x000222a4 movs r3, 1 | r3 = 1;
0x000222a6 vmov.f64 d8, d16 | __asm ("vmov.f64 d8, d16");
0x000222aa str r4, [sp, 0x18] | var_18h = r4;
0x000222ac strd r3, r3, [sp, 0x20] | __asm ("strd r3, r3, [sp, 0x20]");
0x000222b0 b 0x21dce | goto label_14;
| label_27:
0x000222b2 ldr r3, [sp, 0x14] | r3 = var_14h;
0x000222b4 ldr r4, [r3, 0x28] | r4 = *((r3 + 0x28));
0x000222b6 ldr r3, [sp, 0x1c] | r3 = var_1ch;
0x000222b8 cmp r3, 3 |
| if (r3 == 3) {
0x000222ba beq.w 0x2244c | goto label_109;
| }
| label_68:
0x000222be movs r3, 0 | r3 = 0;
0x000222c0 strd r3, r3, [sp, 0x28] | __asm ("strd r3, r3, [sp, 0x28]");
0x000222c4 b 0x22098 | goto label_26;
| label_57:
0x00022370 cmp.w r8, 2 |
0x00022374 itt ne |
| if (r8 == 2) {
0x00022376 movne sl, fp | sl = fp;
| }
| if (r8 != 2) {
0x00022378 movne r4, sl | r4 = sl;
| goto label_110;
| }
| if (r8 != 2) {
| label_110:
0x0002237a bne.w 0x21cf8 | goto label_25;
| }
0x0002237e ldr.w r3, [pc, 0x43c] |
0x00022382 mov sl, fp | sl = fp;
0x00022384 str.w fp, [sp, 0x1c] | __asm ("str.w fp, [var_1ch]");
0x00022388 add r3, pc | r3 = 0x44b4a;
0x0002238a str r3, [sp, 0x18] | var_18h = r3;
0x0002238c b 0x21d94 | goto label_21;
| label_56:
0x0002238e ldr.w r3, [pc, 0x430] |
0x00022392 mov.w sl, 0 | sl = 0;
0x00022396 mov fp, sl |
0x00022398 mov.w r8, 2 | r8 = 2;
0x0002239c str.w sl, [sp, 0x1c] | __asm ("str.w sl, [var_1ch]");
0x000223a0 add r3, pc | r3 = 0x44b66;
0x000223a2 str r3, [sp, 0x18] | var_18h = r3;
0x000223a4 b 0x21d94 | goto label_21;
| label_92:
0x000223a6 cmp r4, 0 |
| if (r4 != 0) {
0x000223a8 bne 0x222b2 | goto label_27;
| }
0x000223aa ldr.w r3, [pc, 0x418] | r3 = *(0x000227c4);
0x000223ae mov.w r8, 2 | r8 = 2;
0x000223b2 add r3, pc | r3 += pc;
0x000223b4 str r3, [sp, 0x18] | var_18h = r3;
0x000223b6 b 0x21d94 | goto label_21;
| label_62:
0x000223b8 cmp.w r8, 3 |
| if (r8 == 3) {
0x000223bc beq.w 0x22676 | goto label_111;
| }
0x000223c0 cmp.w r8, 4 |
0x000223c4 ldr.w fp, [r5, 0xc] | fp = *((r5 + 0xc));
| if (r8 != 4) {
0x000223c8 bne.w 0x220d0 | goto label_28;
| }
0x000223cc cmp r4, 0 |
| if (r4 != 0) {
0x000223ce bne.w 0x21d78 | goto label_22;
| }
0x000223d2 ldr r3, [pc, 0x3f4] |
0x000223d4 mov.w r8, 2 | r8 = 2;
0x000223d8 str r4, [sp, 0x1c] | var_1ch = r4;
0x000223da add r3, pc | r3 = 0x44ba8;
0x000223dc str r3, [sp, 0x18] | var_18h = r3;
0x000223de b 0x21d94 | goto label_21;
| label_84:
0x000223e0 ldr r3, [sp, 0x20] | r3 = var_20h;
0x000223e2 cmp r3, 0 |
| if (r3 == 0) {
0x000223e4 beq 0x22478 | goto label_112;
| }
0x000223e6 vmov s15, r3 | __asm ("vmov s15, r3");
0x000223ea vcvt.f64.s32 d17, s15 | __asm ("vcvt.f64.s32 d17, s15");
0x000223ee vdiv.f64 d16, d8, d17 | __asm ("vdiv.f64 d16, d8, d17");
| label_30:
0x000223f2 ldr r3, [sp, 0x14] | r3 = var_14h;
0x000223f4 str r2, [r3, 0x28] | *((r3 + 0x28)) = r2;
0x000223f6 vstr d16, [r3, 0x10] | __asm ("vstr d16, [r3, 0x10]");
0x000223fa b 0x21faa | goto label_20;
| label_89:
0x000223fc ldr r5, [sp, 0x20] | r5 = var_20h;
0x000223fe orr r4, r4, 2 | r4 |= 2;
0x00022402 cmp r5, 0 |
| if (r5 == 0) {
0x00022404 beq 0x22492 | goto label_113;
| }
0x00022406 ldrd r0, r1, [sp, 0x28] | __asm ("ldrd r0, r1, [arg_28h]");
0x0002240a bl 0x4c6f4 | fcn_0004c6f4 (r0, r1, r2);
0x0002240e vmov s15, r5 | __asm ("vmov s15, r5");
0x00022412 vcvt.f64.s32 d17, s15 | __asm ("vcvt.f64.s32 d17, s15");
0x00022416 vmov d18, r0, r1 | __asm ("vmov d18, r0, r1");
0x0002241a vdiv.f64 d16, d18, d17 | __asm ("vdiv.f64 d16, d18, d17");
| label_29:
0x0002241e ldr r3, [sp, 0x14] | r3 = var_14h;
0x00022420 str r4, [r3, 0x28] | *((r3 + 0x28)) = r4;
0x00022422 vstr d16, [r3, 0x10] | __asm ("vstr d16, [r3, 0x10]");
0x00022426 b 0x21faa | goto label_20;
| label_63:
0x00022428 cmp.w r8, 3 |
| if (r8 == 3) {
0x0002242c beq.w 0x227a0 | goto label_114;
| }
0x00022430 cmp.w r8, 4 |
0x00022434 ldr.w fp, [r5, 0xc] | fp = *((r5 + 0xc));
0x00022438 itt ne |
| if (r8 == 4) {
0x0002243a movne r3, 3 | r3 = 3;
| }
| if (r8 != 4) {
0x0002243c strne r3, [sp, 0x1c] | var_1ch = r3;
| goto label_115;
| }
| if (r8 != 4) {
| label_115:
0x0002243e bne.w 0x220d0 | goto label_28;
| }
0x00022442 cmp r4, 0 |
| if (r4 == 0) {
0x00022444 beq.w 0x2278e | goto label_116;
| }
| label_36:
0x00022448 ldr r3, [sp, 0x14] | r3 = var_14h;
0x0002244a ldr r4, [r3, 0x28] | r4 = *((r3 + 0x28));
| label_109:
0x0002244c vmov.i64 d16, 0 | __asm ("vmov.i64 d16, 0");
0x00022450 orr r4, r4, 2 | r4 |= 2;
0x00022454 b 0x2241e | goto label_29;
| label_108:
0x00022456 ldr r3, [pc, 0x374] |
0x00022458 mov fp, r6 |
0x0002245a mov.w r8, 2 | r8 = 2;
0x0002245e str r6, [sp, 0x1c] | var_1ch = r6;
0x00022460 add r3, pc | r3 = 0x44c32;
0x00022462 str r3, [sp, 0x18] | var_18h = r3;
0x00022464 b 0x21d94 | goto label_21;
| label_93:
0x00022466 cmp r4, 0 |
| if (r4 != 0) {
0x00022468 bne.w 0x222b2 | goto label_27;
| }
0x0002246c ldr r3, [pc, 0x360] |
0x0002246e mov.w r8, 1 | r8 = 1;
0x00022472 add r3, pc | r3 = 0x44c46;
0x00022474 str r3, [sp, 0x18] | var_18h = r3;
0x00022476 b 0x21d94 | goto label_21;
| label_112:
0x00022478 vmov.i64 d16, 0 | __asm ("vmov.i64 d16, 0");
0x0002247c b 0x223f2 | goto label_30;
| label_88:
0x0002247e vcmpe.f64 d8, d16 | __asm ("vcmpe.f64 d8, d16");
0x00022482 vmrs apsr_nzcv, fpscr | __asm ("vmrs apsr_nzcv, fpscr");
0x00022486 str r3, [sp, 0x20] | var_20h = r3;
| if (r4 >= 0) {
0x00022488 bmi 0x2248e |
0x0002248a vmov.f64 d8, d16 | __asm ("vmov.f64 d8, d16");
| }
0x0002248e str r4, [sp, 0x18] | var_18h = r4;
0x00022490 b 0x22042 | goto label_31;
| label_113:
0x00022492 vmov.i64 d16, 0 | __asm ("vmov.i64 d16, 0");
0x00022496 b 0x2241e | goto label_29;
| label_81:
0x00022498 cmp r2, r0 |
0x0002249a ldr r0, [sp, 0x2c] | r0 = *(arg_2ch);
0x0002249c sbcs.w r0, r3, r0 | __asm ("sbcs.w r0, r3, r0");
| if (r2 >= r0) {
0x000224a0 bhs.w 0x22040 | goto label_32;
| }
0x000224a4 b 0x2203c | goto label_33;
| label_107:
0x000224a6 ldr r3, [r5] | r3 = *(r5);
0x000224a8 cmp r3, 0 |
| if (r3 != 0) {
0x000224aa bne 0x2259a | goto label_117;
| }
0x000224ac ldr.w r8, [r4, 4] | r8 = *((r4 + 4));
0x000224b0 cmp.w r8, 2 |
| if (r8 <= 2) {
0x000224b4 ble.w 0x21d78 | goto label_22;
| }
0x000224b8 ldr r5, [r4, 8] | r5 = *((r4 + 8));
0x000224ba movs r4, 1 | r4 = 1;
0x000224bc b 0x21cf8 | goto label_25;
| label_87:
0x000224be vcmpe.f64 d8, d16 | __asm ("vcmpe.f64 d8, d16");
0x000224c2 vmrs apsr_nzcv, fpscr | __asm ("vmrs apsr_nzcv, fpscr");
0x000224c6 str r3, [sp, 0x20] | var_20h = r3;
| if (r4 <= 1) {
0x000224c8 ble 0x22580 | goto label_118;
| }
0x000224ca str r4, [sp, 0x18] | var_18h = r4;
0x000224cc str r2, [sp, 0x24] | *(arg_24h) = r2;
0x000224ce b 0x21dce | goto label_14;
| label_94:
0x000224d0 cmp r4, 0 |
| if (r4 != 0) {
0x000224d2 bne 0x225ce | goto label_119;
| }
0x000224d4 ldr r1, [pc, 0x2fc] |
0x000224d6 ldr r0, [pc, 0x300] |
0x000224d8 add r1, pc | r1 = 0x44cb0;
0x000224da add r0, pc | r0 = 0x44cb8;
0x000224dc blx 0xdf90 | r0 = fcn_0000df90 ();
0x000224e0 mov r4, r0 | r4 = r0;
| if (r0 == 0) {
0x000224e2 cbz r0, 0x2252c | goto label_120;
| }
0x000224e4 ldr r1, [pc, 0x2f4] |
0x000224e6 mov r2, r5 | r2 = r5;
0x000224e8 add r3, sp, 0x38 | r3 += arg_38h;
0x000224ea add r1, pc | r1 = 0x44cca;
0x000224ec bl 0x21570 | r0 = byte_value_from_proc_file ();
0x000224f0 mov r5, r0 | r5 = r0;
0x000224f2 mov r0, r4 | r0 = r4;
0x000224f4 blx 0xdc8c | fcn_0000dc8c ();
| if (r5 != 0) {
0x000224f8 cbnz r5, 0x2252c | goto label_120;
| }
0x000224fa ldrd r3, r2, [sp, 0x38] | __asm ("ldrd r3, r2, [arg_38h]");
0x000224fe orrs r3, r2 | r3 |= r2;
0x00022500 itt ne |
| if (r3 == r2) {
0x00022502 movne r8, 3 | r8 = 3;
| }
| if (r3 == r2) {
0x00022506 str r5, [sp, 0x18] | var_18h = r5;
| goto label_121;
| }
| if (r3 != r2) {
| label_121:
0x00022508 bne.w 0x21d94 | goto label_21;
| }
0x0002250c ldr r4, [sp, 0x14] | r4 = var_14h;
0x0002250e mov r2, r5 | r2 = r5;
0x00022510 ldr r3, [pc, 0x2cc] |
0x00022512 movw r1, 0x29e | r1 = 0x29e;
0x00022516 ldr r0, [r4, 0x28] | r0 = *((r4 + 0x28));
0x00022518 add r3, pc | r3 = 0x44cfc;
0x0002251a orr r0, r0, 0x20 | r0 |= 0x20;
0x0002251e str r0, [r4, 0x28] | *((r4 + 0x28)) = r0;
0x00022520 ldr r0, [pc, 0x2c0] |
0x00022522 add r0, pc | r0 = 0x44d0a;
0x00022524 bl 0x40ed8 | zbx_strdup2 ();
0x00022528 str r0, [r4, 0x20] | *((r4 + 0x20)) = r0;
0x0002252a b 0x22080 | goto label_34;
| label_120:
0x0002252c ldr r4, [sp, 0x14] | r4 = var_14h;
0x0002252e ldr r3, [r4, 0x28] | r3 = *((r4 + 0x28));
0x00022530 orr r3, r3, 0x20 | r3 |= 0x20;
0x00022534 str r3, [r4, 0x28] | *((r4 + 0x28)) = r3;
0x00022536 blx 0xe3d4 | r0 = fcn_0000e3d4 ();
0x0002253a ldr r0, [r0] | r0 = *(r0);
0x0002253c bl 0x30b74 | zbx_strerror ();
0x00022540 ldr r1, [pc, 0x2a4] |
0x00022542 mov r2, r0 | r2 = r0;
0x00022544 movs r0, 0 | r0 = 0;
0x00022546 add r1, pc | r1 = 0x44d32;
0x00022548 bl 0x44820 | zbx_dsprintf ()
0x0002254c str r0, [r4, 0x20] | *((r4 + 0x20)) = r0;
0x0002254e b 0x22080 | goto label_34;
| label_64:
0x00022550 cmp.w r8, 3 |
| if (r8 == 3) {
0x00022554 beq.w 0x22702 | goto label_122;
| }
0x00022558 cmp.w r8, 4 |
0x0002255c ldr.w fp, [r5, 0xc] | fp = *((r5 + 0xc));
0x00022560 itt ne |
| if (r8 == 4) {
0x00022562 movne r3, 1 | r3 = 1;
| }
| if (r8 != 4) {
0x00022564 strne r3, [sp, 0x1c] | var_1ch = r3;
| goto label_123;
| }
| if (r8 != 4) {
| label_123:
0x00022566 bne.w 0x220d0 | goto label_28;
| }
0x0002256a cmp r4, 0 |
| if (r4 != 0) {
0x0002256c bne.w 0x21d78 | goto label_22;
| }
0x00022570 ldr r3, [pc, 0x278] |
0x00022572 mov.w r8, 2 | r8 = 2;
0x00022576 add r3, pc | r3 = 0x44d66;
0x00022578 str r3, [sp, 0x18] | var_18h = r3;
0x0002257a movs r3, 1 | r3 = 1;
0x0002257c str r3, [sp, 0x1c] | var_1ch = r3;
0x0002257e b 0x21d94 | goto label_21;
| label_118:
0x00022580 ldr r3, [sp, 0x1c] | r3 = var_1ch;
0x00022582 vmov.f64 d8, d16 | __asm ("vmov.f64 d8, d16");
0x00022586 str r4, [sp, 0x18] | var_18h = r4;
0x00022588 str r3, [sp, 0x24] | *(arg_24h) = r3;
0x0002258a b 0x21dce | goto label_14;
| label_95:
0x0002258c cmp r4, 0 |
| if (r4 != 0) {
0x0002258e bne.w 0x222b2 | goto label_27;
| }
0x00022592 mov r8, r4 | r8 = r4;
0x00022594 str r0, [sp, 0x18] | var_18h = r0;
0x00022596 b.w 0x21d94 | goto label_21;
| label_117:
0x0002259a ldr r4, [sp, 0x14] | r4 = var_14h;
0x0002259c ldr r3, [r4, 0x28] | r3 = *((r4 + 0x28));
0x0002259e orr r3, r3, 0x20 | r3 |= 0x20;
0x000225a2 str r3, [r4, 0x28] | *((r4 + 0x28)) = r3;
0x000225a4 ldr r0, [r5] | r0 = *(r5);
0x000225a6 bl 0x30b74 | zbx_strerror ();
0x000225aa ldr r1, [pc, 0x244] |
0x000225ac mov r2, r0 | r2 = r0;
0x000225ae mov r0, sl | r0 = sl;
0x000225b0 add r1, pc | r1 = 0x44da6;
0x000225b2 bl 0x44820 | zbx_dsprintf ()
0x000225b6 str r0, [r4, 0x20] | *((r4 + 0x20)) = r0;
0x000225b8 b 0x22080 | goto label_34;
| label_96:
0x000225ba cmp r4, 0 |
| if (r4 != 0) {
0x000225bc bne.w 0x222b2 | goto label_27;
| }
0x000225c0 ldr r3, [pc, 0x230] |
0x000225c2 mov.w r8, 4 | r8 = 4;
0x000225c6 add r3, pc | r3 = 0x44dbe;
0x000225c8 str r3, [sp, 0x18] | var_18h = r3;
0x000225ca b.w 0x21d94 | goto label_21;
| label_119:
0x000225ce ldr r3, [sp, 0x14] | r3 = var_14h;
0x000225d0 ldr r4, [r3, 0x28] | r4 = *((r3 + 0x28));
0x000225d2 ldr r3, [sp, 0x1c] | r3 = var_1ch;
0x000225d4 cmp r3, 3 |
| if (r3 == 3) {
0x000225d6 beq 0x22612 | goto label_124;
| }
0x000225d8 vmov.i64 d8, 0 | __asm ("vmov.i64 d8, 0");
0x000225dc b 0x21f9e | goto label_35;
| label_65:
0x000225de ldr r4, [sp, 0x14] | r4 = var_14h;
0x000225e0 movs r2, 0 | r2 = 0;
0x000225e2 ldr r3, [pc, 0x214] |
0x000225e4 movw r1, 0x23a | r1 = 0x23a;
0x000225e8 ldr r0, [r4, 0x28] | r0 = *((r4 + 0x28));
0x000225ea add r3, pc | r3 = 0x44de8;
0x000225ec orr r0, r0, 0x20 | r0 |= 0x20;
0x000225f0 str r0, [r4, 0x28] | *((r4 + 0x28)) = r0;
0x000225f2 ldr r0, [pc, 0x208] |
0x000225f4 add r0, pc | r0 = 0x44df6;
0x000225f6 bl 0x40ed8 | zbx_strdup2 ();
0x000225fa str r0, [r4, 0x20] | *((r4 + 0x20)) = r0;
0x000225fc b 0x22080 | goto label_34;
| label_97:
0x000225fe cmp r4, 0 |
| if (r4 != 0) {
0x00022600 bne.w 0x222b2 | goto label_27;
| }
0x00022604 ldr r3, [pc, 0x1f8] |
0x00022606 mov.w r8, 5 | r8 = 5;
0x0002260a add r3, pc | r3 = 0x44e0e;
0x0002260c str r3, [sp, 0x18] | var_18h = r3;
0x0002260e b.w 0x21d94 | goto label_21;
| label_124:
0x00022612 vmov.i64 d16, 0 | __asm ("vmov.i64 d16, 0");
0x00022616 orr r2, r4, 2 | r2 = r4 | 2;
0x0002261a b 0x223f2 | goto label_30;
| label_85:
0x0002261c blx 0xe158 | fcn_0000e158 ();
| label_99:
0x00022620 cmp r4, 0 |
| if (r4 != 0) {
0x00022622 bne.w 0x222b2 | goto label_27;
| }
0x00022626 ldr r3, [pc, 0x1dc] |
0x00022628 mov.w r8, 7 | r8 = 7;
0x0002262c add r3, pc | r3 = 0x44e36;
0x0002262e str r3, [sp, 0x18] | var_18h = r3;
0x00022630 b.w 0x21d94 | goto label_21;
| label_98:
0x00022634 cmp r4, 0 |
| if (r4 != 0) {
0x00022636 bne.w 0x222b2 | goto label_27;
| }
0x0002263a ldr r3, [pc, 0x1cc] |
0x0002263c mov.w r8, 6 | r8 = 6;
0x00022640 add r3, pc | r3 = 0x44e4e;
0x00022642 str r3, [sp, 0x18] | var_18h = r3;
0x00022644 b.w 0x21d94 | goto label_21;
| label_91:
0x00022648 cmp r4, 0 |
| if (r4 != 0) {
0x0002264a bne.w 0x21d78 | goto label_22;
| }
0x0002264e ldr r3, [pc, 0x1bc] |
0x00022650 mov.w r8, 2 | r8 = 2;
0x00022654 str r4, [sp, 0x1c] | var_1ch = r4;
0x00022656 add r3, pc | r3 = 0x44e68;
0x00022658 str r3, [sp, 0x18] | var_18h = r3;
0x0002265a b.w 0x21d94 | goto label_21;
| label_90:
0x0002265e cmp r4, 0 |
| if (r4 != 0) {
0x00022660 bne.w 0x21d78 | goto label_22;
| }
0x00022664 mov fp, r3 |
0x00022666 ldr r3, [pc, 0x1a8] |
0x00022668 mov.w r8, 2 | r8 = 2;
0x0002266c str r4, [sp, 0x1c] | var_1ch = r4;
0x0002266e add r3, pc | r3 = 0x44e84;
0x00022670 str r3, [sp, 0x18] | var_18h = r3;
0x00022672 b.w 0x21d94 | goto label_21;
| label_111:
0x00022676 cmp r4, 0 |
| if (r4 != 0) {
0x00022678 bne.w 0x21d78 | goto label_22;
| }
0x0002267c ldr r3, [pc, 0x194] |
0x0002267e mov fp, r0 |
0x00022680 mov.w r8, 2 | r8 = 2;
0x00022684 str r4, [sp, 0x1c] | var_1ch = r4;
0x00022686 add r3, pc | r3 = 0x44e9e;
0x00022688 str r3, [sp, 0x18] | var_18h = r3;
0x0002268a b.w 0x21d94 | goto label_21;
| label_69:
0x0002268e ldr r4, [sp, 0x14] | r4 = var_14h;
0x00022690 ldr r3, [r4, 0x28] | r3 = *((r4 + 0x28));
0x00022692 orr r3, r3, 0x20 | r3 |= 0x20;
0x00022696 str r3, [r4, 0x28] | *((r4 + 0x28)) = r3;
0x00022698 blx 0xe3d4 | r0 = fcn_0000e3d4 ();
0x0002269c ldr r0, [r0] | r0 = *(r0);
0x0002269e bl 0x30b74 | zbx_strerror ();
0x000226a2 ldr r1, [pc, 0x174] |
0x000226a4 mov r2, r0 | r2 = r0;
0x000226a6 mov r0, r7 | r0 = r7;
0x000226a8 add r1, pc | r1 = 0x44ec6;
0x000226aa bl 0x44820 | zbx_dsprintf ()
0x000226ae str r0, [r4, 0x20] | *((r4 + 0x20)) = r0;
0x000226b0 b 0x22080 | goto label_34;
| label_103:
0x000226b2 cmp r4, 0 |
| if (r4 != 0) {
0x000226b4 bne.w 0x222b2 | goto label_27;
| }
0x000226b8 ldr r3, [pc, 0x160] |
0x000226ba mov.w r8, 0xb | r8 = 0xb;
0x000226be add r3, pc | r3 = 0x44ede;
0x000226c0 str r3, [sp, 0x18] | var_18h = r3;
0x000226c2 b.w 0x21d94 | goto label_21;
| label_102:
0x000226c6 cmp r4, 0 |
| if (r4 != 0) {
0x000226c8 bne.w 0x222b2 | goto label_27;
| }
0x000226cc ldr r3, [pc, 0x150] |
0x000226ce mov.w r8, 0xa | r8 = 0xa;
0x000226d2 add r3, pc | r3 = 0x44ef6;
0x000226d4 str r3, [sp, 0x18] | var_18h = r3;
0x000226d6 b.w 0x21d94 | goto label_21;
| label_101:
0x000226da cmp r4, 0 |
| if (r4 != 0) {
0x000226dc bne.w 0x222b2 | goto label_27;
| }
0x000226e0 ldr r3, [pc, 0x140] |
0x000226e2 mov.w r8, 9 | r8 = 9;
0x000226e6 add r3, pc | r3 = 0x44f0e;
0x000226e8 str r3, [sp, 0x18] | var_18h = r3;
0x000226ea b.w 0x21d94 | goto label_21;
| label_100:
0x000226ee cmp r4, 0 |
| if (r4 != 0) {
0x000226f0 bne.w 0x222b2 | goto label_27;
| }
0x000226f4 ldr r3, [pc, 0x130] |
0x000226f6 mov.w r8, 8 | r8 = 8;
0x000226fa add r3, pc | r3 = 0x44f26;
0x000226fc str r3, [sp, 0x18] | var_18h = r3;
0x000226fe b.w 0x21d94 | goto label_21;
| if (r1 != 0) {
0x00022700 cbnz r1, 0x22756 | goto label_125;
| }
| label_122:
0x00022702 cmp r4, 0 |
| if (r4 != 0) {
0x00022704 bne.w 0x21d78 | goto label_22;
| }
0x00022708 ldr r3, [pc, 0x120] |
0x0002270a mov fp, r0 |
0x0002270c mov.w r8, 2 | r8 = 2;
0x00022710 add r3, pc | r3 = 0x44f40;
0x00022712 str r3, [sp, 0x18] | var_18h = r3;
0x00022714 movs r3, 1 | r3 = 1;
0x00022716 str r3, [sp, 0x1c] | var_1ch = r3;
0x00022718 b.w 0x21d94 | goto label_21;
| label_106:
0x0002271c cmp r4, 0 |
| if (r4 != 0) {
0x0002271e bne.w 0x21d78 | goto label_22;
| }
0x00022722 ldr r3, [pc, 0x10c] |
0x00022724 mov.w r8, 2 | r8 = 2;
0x00022728 str r4, [sp, 0x1c] | var_1ch = r4;
0x0002272a add r3, pc | r3 = 0x44f60;
0x0002272c str r3, [sp, 0x18] | var_18h = r3;
0x0002272e b.w 0x21d94 | goto label_21;
| if (r1 != 0) {
0x00022730 cbnz r1, 0x22780 | goto label_126;
| }
| label_67:
0x00022732 ldr r3, [pc, 0x100] |
0x00022734 mov.w r8, 2 | r8 = 2;
0x00022738 add r3, pc | r3 = 0x44f72;
0x0002273a strd r3, r8, [sp, 0x18] | __asm ("strd r3, r8, [sp, 0x18]");
0x0002273e b.w 0x21d94 | goto label_21;
| label_66:
0x00022742 cmp r4, 0 |
| if (r4 != 0) {
0x00022744 bne.w 0x21d78 | goto label_22;
| }
0x00022748 ldr r3, [pc, 0xec] |
0x0002274a mov.w r8, 2 | r8 = 2;
0x0002274e mov fp, r0 |
0x00022750 add r3, pc | r3 = 0x44f8c;
0x00022752 strd r3, r8, [sp, 0x18] | __asm ("strd r3, r8, [sp, 0x18]");
| label_125:
0x00022756 b.w 0x21d94 | goto label_21;
| label_105:
0x0002275a ldr r4, [sp, 0x14] | r4 = var_14h;
0x0002275c movs r2, 0 | r2 = 0;
0x0002275e ldr r3, [pc, 0xdc] |
0x00022760 mov.w r1, 0x28c | r1 = 0x28c;
0x00022764 ldr r0, [r4, 0x28] | r0 = *((r4 + 0x28));
0x00022766 add r3, pc | r3 = 0x44fa8;
0x00022768 orr r0, r0, 0x20 | r0 |= 0x20;
0x0002276c str r0, [r4, 0x28] | *((r4 + 0x28)) = r0;
0x0002276e ldr r0, [pc, 0xd0] |
0x00022770 add r0, pc | r0 = 0x44fb6;
0x00022772 bl 0x40ed8 | zbx_strdup2 ();
0x00022776 str r0, [r4, 0x20] | *((r4 + 0x20)) = r0;
0x00022778 b 0x22080 | goto label_34;
| label_104:
0x0002277a cmp r4, 0 |
| if (r4 != 0) {
0x0002277c bne.w 0x222b2 | goto label_27;
| }
| label_126:
0x00022780 ldr r3, [pc, 0xc0] |
0x00022782 mov.w r8, 0xc | r8 = 0xc;
0x00022786 add r3, pc | r3 = 0x44fce;
0x00022788 str r3, [sp, 0x18] | var_18h = r3;
0x0002278a b.w 0x21d94 | goto label_21;
| label_116:
0x0002278e ldr r3, [pc, 0xb8] |
0x00022790 mov.w r8, 2 | r8 = 2;
0x00022794 add r3, pc | r3 = 0x44fe2;
0x00022796 str r3, [sp, 0x18] | var_18h = r3;
0x00022798 movs r3, 3 | r3 = 3;
0x0002279a str r3, [sp, 0x1c] | var_1ch = r3;
0x0002279c b.w 0x21d94 | goto label_21;
| label_114:
0x000227a0 cmp r4, 0 |
| if (r4 != 0) {
0x000227a2 bne.w 0x22448 | goto label_36;
| }
0x000227a6 ldr r3, [pc, 0xa4] |
0x000227a8 mov fp, r0 |
0x000227aa str.w r8, [sp, 0x1c] | __asm ("str.w r8, [var_1ch]");
0x000227ae mov.w r8, 2 | r8 = 2;
0x000227b2 add r3, pc | r3 = 0x45004;
0x000227b4 str r3, [sp, 0x18] | var_18h = r3;
0x000227b6 b.w 0x21d94 | goto label_21;
| }
; assembly | /* r2dec pseudo code output */
| /* /logs/firmware/patool_extraction/rootfs.img_unblob_extracted/rootfs.img_extract/0-80367616.squashfs_v4_le_extract/usr/sbin/zabbix_agentd @ 0x29b04 */
| #include <stdint.h>
|
; (fcn) fcn.00029b04 () | void fcn_00029b04 (int16_t arg_20h, int16_t arg_28h, int16_t arg1, int16_t arg2) {
| r0 = arg1;
| r1 = arg2;
0x00029b04 push.w {r3, r4, r5, r6, r7, r8, sb, sl, fp, lr} |
0x00029b08 mov sl, r0 | sl = r0;
0x00029b0a mov fp, r1 |
0x00029b0c mov.w r8, 0 | r8 = 0;
0x00029b10 bl 0x4737c | r0 = num_param ();
0x00029b14 subs.w sb, r0, 0 | sb = r0 - 0;
| if (sb <= r0) {
0x00029b18 ble 0x29b78 | goto label_1;
| }
0x00029b1a movs r7, 1 | r7 = 1;
| label_0:
0x00029b1c movs r2, 0 | r2 = 0;
0x00029b1e mov r1, r7 | r1 = r7;
0x00029b20 mov r0, sl | r0 = sl;
0x00029b22 bl 0x4765c | r0 = get_param_dyn ();
0x00029b26 mov r6, r0 | r6 = r0;
| if (r0 == 0) {
0x00029b28 cbz r0, 0x29b5e | goto label_2;
| }
0x00029b2a ldr r4, [pc, 0x80] |
0x00029b2c movs r5, 1 | r5 = 1;
0x00029b2e add r4, pc | r4 = 0x536e0;
0x00029b30 b 0x29b40 |
| while (r3 != 0) {
0x00029b32 blx 0xdf68 | fcn_0000df68 ();
0x00029b36 adds r0, 1 | r0++;
0x00029b38 lsls r5, r5, 1 | r5 <<= 1;
0x00029b3a add r4, r0 | r4 += r0;
0x00029b3c ldrb r3, [r4] | r3 = *(r4);
| if (r3 == 0) {
0x00029b3e cbz r3, 0x29b50 | goto label_3;
| }
0x00029b40 mov r1, r4 | r1 = r4;
0x00029b42 mov r0, r6 | r0 = r6;
0x00029b44 blx 0xe3b0 | r0 = fcn_0000e3b0 ();
0x00029b48 mov r3, r0 | r3 = r0;
0x00029b4a mov r0, r4 | r0 = r4;
0x00029b4c cmp r3, 0 |
0x00029b4e bne 0x29b32 |
| }
| label_3:
0x00029b50 lsls r3, r5, 0x16 | r3 = r5 << 0x16;
| if (r3 < r5) {
0x00029b52 bmi 0x29b7e | goto label_4;
| }
0x00029b54 mov r0, r6 | r0 = r6;
0x00029b56 orr.w r8, r8, r5 | r8 |= r5;
0x00029b5a blx 0xde30 | fcn_0000de30 ();
| label_2:
0x00029b5e adds r7, 1 | r7++;
0x00029b60 cmp sb, r7 |
| if (sb >= r7) {
0x00029b62 bge 0x29b1c | goto label_0;
| }
0x00029b64 tst.w r8, 0x100 |
0x00029b68 it ne |
| if ((r8 & 0x100) == 0) {
0x00029b6a orrne r8, r8, 0x30 | r8 |= 0x30;
| }
0x00029b6e tst.w r8, 0x80 |
0x00029b72 it ne |
| if ((r8 & 0x80) == 0) {
0x00029b74 orrne r8, r8, 0x7f | r8 |= 0x7f;
| }
| label_1:
0x00029b78 mov r0, r8 | r0 = r8;
0x00029b7a pop.w {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc} |
| label_4:
0x00029b7e ldr.w r3, [fp, 0x28] | r3 = *(arg_28h);
0x00029b82 mov r2, r6 | r2 = r6;
0x00029b84 ldr r1, [pc, 0x28] |
0x00029b86 movs r0, 0 | r0 = 0;
0x00029b88 mov.w r8, -1 | r8 = -1;
0x00029b8c orr r3, r3, 0x20 | r3 |= 0x20;
0x00029b90 add r1, pc | r1 = 0x53744;
0x00029b92 str.w r3, [fp, 0x28] | __asm ("str.w r3, [arg_28h]");
0x00029b96 bl 0x44820 | zbx_dsprintf ()
0x00029b9a str.w r0, [fp, 0x20] | __asm ("str.w r0, [arg_20h]");
0x00029b9e mov r0, r6 | r0 = r6;
0x00029ba0 blx 0xde30 | fcn_0000de30 ();
0x00029ba4 mov r0, r8 | r0 = r8;
0x00029ba6 pop.w {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc} |
| }
; assembly | /* r2dec pseudo code output */
| /* /logs/firmware/patool_extraction/rootfs.img_unblob_extracted/rootfs.img_extract/0-80367616.squashfs_v4_le_extract/usr/sbin/zabbix_agentd @ 0x29bb4 */
| #include <stdint.h>
|
; (fcn) fcn.00029bb4 () | void fcn_00029bb4 (int16_t arg_48h, int16_t arg_4ch, int16_t arg_50h, int16_t arg_54h, int16_t arg_58h, int16_t arg_5ch, int16_t arg_60h, int16_t arg_1e8h, int16_t arg_208h, int16_t arg_260h, int16_t arg_298h, int16_t arg_338h, int16_t arg_3e8h, int16_t arg1, int16_t arg2, int16_t arg3, int16_t arg4) {
| int16_t var_0h_2;
| int16_t var_4h;
| int16_t var_8h;
| int16_t var_ch;
| int32_t var_10h_2;
| int32_t var_10h_3;
| int16_t var_18h_2;
| int16_t var_20h_2;
| int16_t var_24h;
| int16_t var_28h;
| int16_t var_2ch;
| int16_t var_30h;
| int16_t var_34h;
| int16_t var_38h_2;
| int16_t var_3ch;
| int16_t var_40h;
| int16_t var_44h;
| int16_t var_48h;
| int16_t var_4ch;
| int16_t var_50h;
| int32_t var_50h_2;
| int32_t var_c8h;
| int32_t var_c0h;
| int16_t var_60h;
| int16_t var_1ch_2;
| int32_t var_b8h;
| int32_t var_b4h;
| int32_t var_10h_4;
| int32_t var_8h_3;
| int32_t var_8h_2;
| int32_t var_8h_4;
| int16_t var_80h;
| int32_t var_9ch;
| int16_t var_98h;
| int16_t var_a0h;
| int32_t var_78h;
| int32_t var_58h;
| int32_t var_54h;
| int32_t var_38h_3;
| int32_t var_1ch_3;
| int16_t var_120h;
| int16_t var_1100h;
| int32_t var_0h_3;
| int16_t var_1120h;
| int16_t var_0h;
| int32_t var_8h_5;
| int32_t var_8h_6;
| int16_t var_10h;
| int16_t var_14h;
| int16_t var_18h;
| int16_t var_1ch;
| int16_t var_20h;
| int16_t var_38h;
| r0 = arg1;
| r1 = arg2;
| r2 = arg3;
| r3 = arg4;
0x00029bb4 svcmi 0xf0e92d | __asm ("svcmi 0xf0e92d");
0x00029bb8 sub sp, 0x24 |
0x00029bba ldr r5, [pc, 0x2c0] |
0x00029bbc ldr r4, [pc, 0x2c0] | r4 = *(0x29e80);
0x00029bbe add r5, pc | r5 = 0x53a40;
0x00029bc0 ldr r7, [sp, 0x60] | r7 = *(arg_60h);
0x00029bc2 ldrd fp, r6, [sp, 0x4c] | __asm ("ldrd fp, r6, [arg_4ch]");
0x00029bc6 ldr r4, [r5, r4] |
0x00029bc8 mov r5, r3 | r5 = r3;
0x00029bca ldr r3, [r0, 4] | r3 = *((r0 + 4));
0x00029bcc ldr.w r8, [sp, 0x54] | r8 = *(arg_54h);
0x00029bd0 ldr r4, [r4] | r4 = *(0x53a40);
0x00029bd2 str r4, [sp, 0x1c] | var_1ch = r4;
0x00029bd4 mov.w r4, 0 | r4 = 0;
0x00029bd8 ldr r4, [sp, 0x48] | r4 = *(arg_48h);
0x00029bda cmp r3, r7 |
0x00029bdc strd r4, r1, [sp, 0x10] | __asm ("strd r4, r1, [var_14h]");
0x00029be0 mov.w r4, 0 | r4 = 0;
0x00029be4 str r4, [sp, 0x18] | var_18h = r4;
| if (r3 > r7) {
0x00029be6 bgt.w 0x29e1a | goto label_37;
| }
0x00029bea cmp r3, 0 |
| if (r3 <= 0) {
0x00029bec ble.w 0x29dd2 | goto label_38;
| }
0x00029bf0 mov ip, r2 |
0x00029bf2 ldr r2, [r0, 8] | r2 = *((r0 + 8));
0x00029bf4 cmp r3, 1 |
0x00029bf6 ldr r7, [r2] | r7 = *(r2);
| if (r3 == 1) {
0x00029bf8 beq.w 0x29dca | goto label_39;
| }
0x00029bfc cmp r3, 2 |
0x00029bfe ldr r0, [r2, 4] | r0 = *((r2 + 4));
| if (r3 == 2) {
0x00029c00 beq.w 0x29dc4 | goto label_40;
| }
0x00029c04 ldr r1, [sp, 0x5c] | r1 = *(arg_5ch);
0x00029c06 ldr.w sl, [r2, 8] | sl = *((r2 + 8));
0x00029c0a cmp r3, r1 |
| if (r3 > r1) {
0x00029c0c bgt.w 0x29d6e | goto label_41;
| }
0x00029c10 ldr r1, [sp, 0x58] | r1 = *(arg_58h);
0x00029c12 cmp r3, r1 |
0x00029c14 it le |
| if (r3 > r1) {
0x00029c16 movle sb, r4 | sb = r4;
| }
| if (r3 > r1) {
0x00029c18 ble 0x29c20 |
0x00029c1a ldr r3, [sp, 0x58] | r3 = *(arg_58h);
0x00029c1c ldr.w sb, [r2, r3, lsl 2] | offset_0 = r3 << 2;
| sb = *((r2 + offset_0));
| }
| label_4:
0x00029c20 cmp r7, 0 |
| if (r7 == 0) {
0x00029c22 beq.w 0x29dd2 | goto label_38;
| }
0x00029c26 ldrb r3, [r7] | r3 = *(r7);
0x00029c28 cmp r3, 0 |
| if (r3 == 0) {
0x00029c2a beq.w 0x29dd2 | goto label_38;
| }
| if (r0 == 0) {
0x00029c2e cbz r0, 0x29c36 | goto label_42;
| }
0x00029c30 ldrb r3, [r0] | r3 = *(r0);
0x00029c32 cmp r3, 0 |
0x00029c34 bne 0x29ce8 |
| while (r0 == 0) {
| label_42:
0x00029c36 cmp.w sl, 0 |
| if (sl != 0) {
0x00029c3a beq 0x29c44 |
0x00029c3c ldrb.w r3, [sl] | r3 = *(sl);
0x00029c40 cmp r3, 0 |
| if (r3 != 0) {
0x00029c42 bne 0x29d14 | goto label_43;
| }
| }
| if (r4 != 0) {
| label_0:
0x00029c44 cbz r4, 0x29c4c |
0x00029c46 ldrb r3, [r4] | r3 = *(r4);
0x00029c48 cmp r3, 0 |
| if (r3 != 0) {
0x00029c4a bne 0x29d2e | goto label_44;
| }
| }
| label_2:
0x00029c4c cmp.w sb, 0 |
| if (sb != 0) {
0x00029c50 beq 0x29c72 |
0x00029c52 ldrb.w r3, [sb] | r3 = *(sb);
| if (r3 == 0) {
0x00029c56 cbz r3, 0x29c72 | goto label_45;
| }
0x00029c58 cmp r3, 0x2d |
| if (r3 != 0x2d) {
0x00029c5a bne.w 0x29d7a | goto label_46;
| }
0x00029c5c strh r6, [r1, 4] | *((r1 + 4)) = r6;
0x00029c5e ldrb.w r3, [sb, 1] | r3 = *((sb + 1));
0x00029c62 cmp r3, 0x31 |
| if (r3 != 0x31) {
0x00029c64 bne.w 0x29d7a | goto label_46;
| }
0x00029c68 ldrb.w r3, [sb, 2] | r3 = *((sb + 2));
0x00029c6c cmp r3, 0 |
| if (r3 != 0) {
0x00029c6e bne.w 0x29d7a | goto label_46;
| }
| }
| label_45:
0x00029c72 mov.w r3, -1 | r3 = -1;
0x00029c76 str.w r3, [fp] | __asm ("str.w r3, [fp]");
| label_5:
0x00029c7a ldr r0, [pc, 0x208] |
0x00029c7c mov r3, r7 | r3 = r7;
0x00029c7e ldr r2, [r6] | r2 = *(r6);
0x00029c80 movs r1, 0xb1 | r1 = 0xb1;
0x00029c82 add r0, pc | r0 = 0x53b0c;
0x00029c84 bl 0x40ed8 | zbx_strdup2 ();
0x00029c88 str r0, [r6] | *(r6) = r0;
0x00029c8a mov r4, r0 | r4 = r0;
0x00029c8c ldrb r3, [r0, 1] | r3 = *((r0 + 1));
| if (r3 != 0) {
0x00029c8e cbz r3, 0x29caa |
0x00029c90 blx 0xdf68 | fcn_0000df68 ();
0x00029c94 add r0, r4 | r0 += r4;
0x00029c96 ldrb r3, [r0, -0x2] | r3 = *((r0 - 0x2));
0x00029c9a cmp r3, 0x3a |
| if (r3 == 0x3a) {
0x00029c9c beq 0x29caa | goto label_47;
| }
0x00029c9e ldr r1, [pc, 0x1e8] |
0x00029ca0 mov r0, r4 | r0 = r4;
0x00029ca2 add r1, pc | r1 = 0x53b30;
0x00029ca4 bl 0x444f4 | zbx_rtrim ();
0x00029ca8 ldr r4, [r6] | r4 = *(r6);
| }
| label_47:
0x00029caa mov r0, r4 | r0 = r4;
0x00029cac mov r1, r8 | r1 = r8;
0x00029cae blx 0xe1c4 | r0 = fcn_0000e1c4 ();
0x00029cb2 mov r4, r0 | r4 = r0;
0x00029cb4 cmp r0, 0 |
| if (r0 != 0) {
0x00029cb6 bne.w 0x29e38 | goto label_48;
| }
0x00029cba ldr.w r3, [r8, 0x10] | r3 = *((r8 + 0x10));
0x00029cbe and r3, r3, 0xf000 | r3 &= 0xf000;
0x00029cc2 cmp.w r3, 0x4000 |
| if (r3 != 0x4000) {
0x00029cc6 bne.w 0x29df0 | goto label_49;
| }
| label_3:
0x00029cca ldr r2, [pc, 0x1c0] |
0x00029ccc ldr r3, [pc, 0x1b0] | r3 = *(0x29e80);
0x00029cce add r2, pc | r2 = 0x53b60;
0x00029cd0 ldr r3, [r2, r3] | r3 = *(0x53b60);
0x00029cd2 ldr r2, [r3] | r2 = *(0x53b60);
0x00029cd4 ldr r3, [sp, 0x1c] | r3 = var_1ch;
0x00029cd6 eors r2, r3 | r2 ^= r3;
0x00029cd8 mov.w r3, 0 | r3 = 0;
| if (r2 != r3) {
0x00029cdc bne.w 0x29e76 | goto label_50;
| }
0x00029ce0 mov r0, r4 | r0 = r4;
0x00029ce2 add sp, 0x24 |
0x00029ce4 pop.w {r4, r5, r6, r7, r8, sb, sl, fp, pc} |
0x00029ce8 mov r1, ip | r1 = ip;
0x00029cea add r2, sp, 0x18 | r2 += var_18h;
0x00029cec bl 0x31a30 | r0 = zbx_regexp_compile ();
0x00029cf0 cmp r0, 0 |
0x00029cf2 beq 0x29c36 |
| }
0x00029cf4 ldr r4, [sp, 0x14] | r4 = var_14h;
0x00029cf6 ldr r1, [pc, 0x198] |
0x00029cf8 ldr r2, [sp, 0x18] | r2 = var_18h;
0x00029cfa ldr r3, [r4, 0x28] | r3 = *((r4 + 0x28));
0x00029cfc add r1, pc | r1 = 0x53b92;
| label_1:
0x00029cfe orr r3, r3, 0x20 | r3 |= 0x20;
0x00029d02 movs r0, 0 | r0 = 0;
0x00029d04 str r3, [r4, 0x28] | *((r4 + 0x28)) = r3;
0x00029d06 bl 0x44820 | zbx_dsprintf ()
0x00029d0a str r0, [r4, 0x20] | *((r4 + 0x20)) = r0;
0x00029d0c ldr r0, [sp, 0x18] | r0 = var_18h;
0x00029d0e bl 0x3211c | zbx_regexp_err_msg_free ();
0x00029d10 invalid |
| label_43:
0x00029d14 mov r1, r5 | r1 = r5;
0x00029d16 mov r0, sl | r0 = sl;
0x00029d18 add r2, sp, 0x18 | r2 += var_18h;
0x00029d1a bl 0x31a30 | r0 = zbx_regexp_compile ();
0x00029d1e cmp r0, 0 |
| if (r0 == 0) {
0x00029d20 beq 0x29c44 | goto label_0;
| }
0x00029d22 ldr r4, [sp, 0x14] | r4 = var_14h;
0x00029d24 ldr r1, [pc, 0x16c] |
0x00029d26 ldr r2, [sp, 0x18] | r2 = var_18h;
0x00029d28 ldr r3, [r4, 0x28] | r3 = *((r4 + 0x28));
0x00029d2a add r1, pc | r1 = 0x53bc2;
0x00029d2c b 0x29cfe | goto label_1;
| label_44:
0x00029d2e ldr r1, [sp, 0x10] | r1 = var_10h;
0x00029d30 mov r0, r4 | r0 = r4;
0x00029d32 add r2, sp, 0x18 | r2 += var_18h;
0x00029d34 bl 0x31a30 | r0 = zbx_regexp_compile ();
0x00029d38 cmp r0, 0 |
| if (r0 == 0) {
0x00029d3a beq 0x29c4c | goto label_2;
| }
0x00029d3c ldr r2, [sp, 0x14] | r2 = var_14h;
0x00029d3e ldr r3, [r2, 0x28] | r3 = *((r2 + 0x28));
0x00029d40 orr r3, r3, 0x20 | r3 |= 0x20;
0x00029d44 str r3, [r2, 0x28] | *((r2 + 0x28)) = r3;
0x00029d46 ldr r3, [sp, 0x5c] | r3 = *(arg_5ch);
0x00029d48 cmp r3, 5 |
| if (r3 == 5) {
0x00029d4a beq.w 0x29e6a | goto label_51;
| }
0x00029d4e ldr r2, [pc, 0x148] |
0x00029d50 add r2, pc | r2 = 0x53bee;
| label_7:
0x00029d52 ldr r1, [pc, 0x148] |
0x00029d54 movs r0, 0 | r0 = 0;
0x00029d56 ldr r3, [sp, 0x18] | r3 = var_18h;
0x00029d58 add r1, pc | r1 = 0x53bfa;
0x00029d5a bl 0x44820 | zbx_dsprintf ()
0x00029d5e ldr r3, [sp, 0x14] | r3 = var_14h;
0x00029d60 str r0, [r3, 0x20] | *((r3 + 0x20)) = r0;
0x00029d62 ldr r0, [sp, 0x18] | r0 = var_18h;
0x00029d64 bl 0x3211c | zbx_regexp_err_msg_free ();
| label_6:
0x00029d68 mov.w r4, -1 | r4 = -1;
0x00029d6c b 0x29cca | goto label_3;
| label_41:
0x00029d6e ldr r3, [sp, 0x58] | r3 = *(arg_58h);
0x00029d70 ldr.w r4, [r2, r1, lsl 2] | offset_1 = r1 << 2;
| r4 = *((r2 + offset_1));
0x00029d74 ldr.w sb, [r2, r3, lsl 2] | offset_2 = r3 << 2;
| sb = *((r2 + offset_2));
0x00029d78 b 0x29c20 | goto label_4;
| label_46:
0x00029d7a vmov.i32 d16, 0 | __asm ("vmov.i32 d16, 0");
0x00029d7e mvn r4, 0x80000000 | r4 = ~0x80000000;
0x00029d82 movs r5, 0 | r5 = 0;
0x00029d84 mov r2, fp | r2 = fp;
0x00029d86 mov r0, sb | r0 = sb;
0x00029d88 movs r3, 4 | r3 = 4;
0x00029d8a mov.w r1, -1 | r1 = -1;
0x00029d8e vstr d16, [sp] | __asm ("vstr d16, [sp]");
0x00029d92 strd r4, r5, [sp, 8] | __asm ("strd r4, r5, [var_8h_5]");
0x00029d96 bl 0x419a8 | r0 = is_uint_n_range ();
0x00029d9a cmp r0, 0 |
| if (r0 == 0) {
0x00029d9c beq.w 0x29c7a | goto label_5;
| }
0x00029da0 ldr r2, [sp, 0x14] | r2 = var_14h;
0x00029da2 ldr r3, [r2, 0x28] | r3 = *((r2 + 0x28));
0x00029da4 orr r3, r3, 0x20 | r3 |= 0x20;
0x00029da8 str r3, [r2, 0x28] | *((r2 + 0x28)) = r3;
0x00029daa ldr r3, [sp, 0x58] | r3 = *(arg_58h);
0x00029dac cmp r3, 4 |
| if (r3 == 4) {
0x00029dae beq 0x29e70 | goto label_52;
| }
0x00029db0 ldr r2, [pc, 0xec] |
0x00029db2 add r2, pc | r2 = 0x53c56;
| label_8:
0x00029db4 ldr r1, [pc, 0xec] |
0x00029db6 movs r0, 0 | r0 = 0;
0x00029db8 add r1, pc | r1 = 0x53c60;
0x00029dba bl 0x44820 | zbx_dsprintf ()
0x00029dbe ldr r3, [sp, 0x14] | r3 = var_14h;
0x00029dc0 str r0, [r3, 0x20] | *((r3 + 0x20)) = r0;
0x00029dc2 b 0x29d68 | goto label_6;
| label_40:
0x00029dc4 mov sl, r4 | sl = r4;
0x00029dc6 mov sb, r4 | sb = r4;
0x00029dc8 b 0x29c20 | goto label_4;
| label_39:
0x00029dca mov sl, r4 | sl = r4;
0x00029dcc mov r0, r4 | r0 = r4;
0x00029dce mov sb, r4 | sb = r4;
0x00029dd0 b 0x29c20 | goto label_4;
| label_38:
0x00029dd2 ldr r4, [sp, 0x14] | r4 = var_14h;
0x00029dd4 movs r2, 0 | r2 = 0;
0x00029dd6 ldr r3, [pc, 0xd0] |
0x00029dd8 movs r1, 0x81 | r1 = 0x81;
0x00029dda ldr r0, [r4, 0x28] | r0 = *((r4 + 0x28));
0x00029ddc add r3, pc | r3 = 0x53c8a;
0x00029dde orr r0, r0, 0x20 | r0 |= 0x20;
0x00029de2 str r0, [r4, 0x28] | *((r4 + 0x28)) = r0;
0x00029de4 ldr r0, [pc, 0xc4] |
0x00029de6 add r0, pc | r0 = 0x53c96;
0x00029de8 bl 0x40ed8 | zbx_strdup2 ();
0x00029dec str r0, [r4, 0x20] | *((r4 + 0x20)) = r0;
0x00029dee b 0x29d68 | goto label_6;
| label_49:
0x00029df0 ldr r5, [sp, 0x14] | r5 = var_14h;
0x00029df2 movs r1, 0xc6 | r1 = 0xc6;
0x00029df4 ldr r3, [pc, 0xb8] |
0x00029df6 ldr r0, [pc, 0xbc] |
0x00029df8 ldr r2, [r5, 0x28] | r2 = *((r5 + 0x28));
0x00029dfa add r3, pc | r3 = 0x53cae;
0x00029dfc add r0, pc | r0 = 0x53cb6;
0x00029dfe orr r2, r2, 0x20 | r2 |= 0x20;
0x00029e02 str r2, [r5, 0x28] | *((r5 + 0x28)) = r2;
0x00029e04 mov r2, r4 | r2 = r4;
0x00029e06 bl 0x40ed8 | zbx_strdup2 ();
0x00029e0a str r0, [r5, 0x20] | *((r5 + 0x20)) = r0;
0x00029e0c ldr r0, [r6] | r0 = *(r6);
0x00029e0e cmp r0, 0 |
| if (r0 == 0) {
0x00029e10 beq 0x29d68 | goto label_6;
| }
0x00029e12 blx 0xde30 | fcn_0000de30 ();
0x00029e16 str r4, [r6] | *(r6) = r4;
0x00029e18 b 0x29d68 | goto label_6;
| label_37:
0x00029e1a ldr r0, [r1, 0x28] | r0 = *((r1 + 0x28));
0x00029e1c mov r5, r1 | r5 = r1;
0x00029e1e ldr r3, [pc, 0x98] |
0x00029e20 mov r2, r4 | r2 = r4;
0x00029e22 movs r1, 0x75 | r1 = 0x75;
0x00029e24 orr r0, r0, 0x20 | r0 |= 0x20;
0x00029e28 str r0, [r5, 0x28] | *((r5 + 0x28)) = r0;
0x00029e2a add r3, pc | r3 = 0x53ce8;
0x00029e2c ldr r0, [pc, 0x8c] |
0x00029e2e add r0, pc | r0 = 0x53cee;
0x00029e30 bl 0x40ed8 | zbx_strdup2 ();
0x00029e34 str r0, [r5, 0x20] | *((r5 + 0x20)) = r0;
0x00029e36 b 0x29d68 | goto label_6;
| label_48:
0x00029e38 ldr r4, [sp, 0x14] | r4 = var_14h;
0x00029e3a ldr r3, [r4, 0x28] | r3 = *((r4 + 0x28));
0x00029e3c orr r3, r3, 0x20 | r3 |= 0x20;
0x00029e40 str r3, [r4, 0x28] | *((r4 + 0x28)) = r3;
0x00029e42 blx 0xe3d4 | r0 = fcn_0000e3d4 ();
0x00029e46 ldr r0, [r0] | r0 = *(r0);
0x00029e48 bl 0x30b74 | zbx_strerror ();
0x00029e4c ldr r1, [pc, 0x70] |
0x00029e4e mov r2, r0 | r2 = r0;
0x00029e50 movs r0, 0 | r0 = 0;
0x00029e52 add r1, pc | r1 = 0x53d16;
0x00029e54 bl 0x44820 | zbx_dsprintf ()
0x00029e58 str r0, [r4, 0x20] | *((r4 + 0x20)) = r0;
0x00029e5a ldr r0, [r6] | r0 = *(r6);
0x00029e5c cmp r0, 0 |
| if (r0 == 0) {
0x00029e5e beq 0x29d68 | goto label_6;
| }
0x00029e60 blx 0xde30 | fcn_0000de30 ();
0x00029e64 movs r3, 0 | r3 = 0;
0x00029e66 str r3, [r6] | *(r6) = r3;
0x00029e68 b 0x29d68 | goto label_6;
| label_51:
0x00029e6a ldr r2, [pc, 0x58] |
0x00029e6c add r2, pc | r2 = 0x53d36;
0x00029e6e b 0x29d52 | goto label_7;
| label_52:
0x00029e70 ldr r2, [pc, 0x54] |
0x00029e72 add r2, pc | r2 = 0x53d3e;
0x00029e74 b 0x29db4 | goto label_8;
| label_50:
0x00029e76 blx 0xe158 | fcn_0000e158 ();
0x00029e7a nop |
0x00029e7c movs r0, 0x1a | r0 = 0x1a;
0x00029e7e movs r3, r0 | r3 = r0;
0x00029e80 lsls r4, r2, 0xe | r4 = r2 << 0xe;
0x00029e82 movs r0, r0 |
0x00029e84 str r4, [sp, 0x1e8] | *(arg_1e8h) = r4;
0x00029e86 movs r2, r0 | r2 = r0;
0x00029e88 str r4, [sp, 0x3e8] | *(arg_3e8h) = r4;
0x00029e8a movs r2, r0 | r2 = r0;
0x00029e8c subs r2, r1, 4 | r2 = r1 - 4;
0x00029e8e movs r3, r0 | r3 = r0;
0x00029e90 str r4, [sp, 0x20] | var_20h = r4;
0x00029e92 movs r2, r0 | r2 = r0;
0x00029e94 str r4, [sp, 0x38] | var_38h = r4;
0x00029e96 movs r2, r0 | r2 = r0;
0x00029e98 str r3, [sp, 0x260] | *(arg_260h) = r3;
0x00029e9a movs r2, r0 | r2 = r0;
0x00029e9c str r4, [sp, 0x50] | *(arg_50h) = r4;
0x00029e9e movs r2, r0 | r2 = r0;
0x00029ea0 ldr r2, [r7, r0] | r2 = *((r7 + r0));
0x00029ea2 movs r2, r0 | r2 = r0;
0x00029ea4 ldr r4, [r7, r4] | r4 = *((r7 + r4));
0x00029ea6 movs r2, r0 | r2 = r0;
0x00029ea8 ldr r4, [r2, r2] | r4 = *((r2 + r2));
0x00029eaa movs r2, r0 | r2 = r0;
0x00029eac str r3, [sp, 0x58] | *(arg_58h) = r3;
0x00029eae movs r2, r0 | r2 = r0;
0x00029eb0 str r3, [sp, 0x298] | *(arg_298h) = r3;
0x00029eb2 movs r2, r0 | r2 = r0;
0x00029eb4 str r3, [sp] | *(sp) = r3;
0x00029eb6 movs r2, r0 | r2 = r0;
0x00029eb8 ldr r6, [r5, r0] | r6 = *((r5 + r0));
0x00029eba movs r2, r0 | r2 = r0;
0x00029ebc str r2, [sp, 0x338] | *(arg_338h) = r2;
0x00029ebe movs r2, r0 | r2 = r0;
0x00029ec0 ldrb r6, [r7, r1] | r6 = *((r7 + r1));
0x00029ec2 movs r2, r0 | r2 = r0;
0x00029ec4 ldrsb r0, [r0, r6] | r0 = *((r0 + r6));
0x00029ec6 movs r2, r0 | r2 = r0;
0x00029ec8 str r2, [sp, 0x208] | *(arg_208h) = r2;
0x00029eca movs r2, r0 | r2 = r0;
0x00029ecc push.w {r4, r5, r6, r7, r8, sb, sl, fp, lr} |
0x00029ed0 mov r4, r0 | r4 = r0;
0x00029ed2 ldr.w r0, [pc, 0x734] |
0x00029ed6 sub.w sp, sp, 0x1120 |
0x00029eda sub sp, 4 |
0x00029edc mov.w r6, -1 | r6 = -1;
0x00029ee0 ldr.w r3, [pc, 0x728] | r3 = *(0x2a60c);
0x00029ee4 add.w r5, sp, 0x1100 | r5 += var_1100h;
0x00029ee8 add r0, pc | r0 = 0x544f6;
0x00029eea adds r5, 0x1c | r5 += 0x1c;
0x00029eec ldr.w sl, [pc, 0x720] | sl = *(0x0002a610);
0x00029ef0 add.w sb, sp, 0x80 | sb += var_80h;
0x00029ef4 ldr r3, [r0, r3] |
0x00029ef6 mvn r7, 0x80000000 | r7 = ~0x80000000;
0x00029efa vmov.i32 d16, 0 | __asm ("vmov.i32 d16, 0");
0x00029efe add sl, pc | sl += pc;
0x00029f00 ldr r3, [r3] | r3 = *(0x544f6);
0x00029f02 str r3, [r5] | *(r5) = r3;
0x00029f04 mov.w r3, 0 | r3 = 0;
0x00029f08 ldr r3, [r4, 4] | r3 = *((r4 + 4));
0x00029f0a add r5, sp, 0x120 | r5 += var_120h;
0x00029f0c str r2, [sp, 0x40] | var_40h = r2;
0x00029f0e movs r2, 0 | r2 = 0;
0x00029f10 str r1, [sp, 0x30] | var_30h = r1;
0x00029f12 cmp r3, 3 |
0x00029f14 str r2, [r5, -0xc8] | var_c8h = r2;
0x00029f18 strd r2, r2, [r5, -0xc0] | __asm ("strd r2, r2, [var_60h]");
0x00029f1c str r2, [r5, -0xb8] | var_b8h = r2;
0x00029f20 vstr d16, [sb, -0x10] | __asm ("vstr d16, [sb, -0x10]");
0x00029f24 strd r6, r7, [sb, -0x8] | __asm ("strd r6, r7, [sb, -0x8]");
| if (r3 > 3) {
0x00029f28 bgt.w 0x2a2f2 | goto label_53;
| }
| label_23:
0x00029f2c movs r3, 0x7f | r3 = 0x7f;
0x00029f2e str r3, [sp, 0x2c] | var_2ch = r3;
| label_20:
0x00029f30 movs r0, 0 | r0 = 0;
0x00029f32 blx 0xe104 | fcn_0000e104 ();
0x00029f36 ldr r3, [r4, 4] | r3 = *((r4 + 4));
0x00029f38 mov r6, r0 | r6 = r0;
0x00029f3a cmp r3, 8 |
| if (r3 > 8) {
0x00029f3c ble 0x29f5a |
0x00029f3e ldr r2, [r4, 8] | r2 = *((r4 + 8));
0x00029f40 cmp r3, 9 |
0x00029f42 ldr.w fp, [r2, 0x20] | fp = *((r2 + 0x20));
| if (r3 != 9) {
0x00029f46 bne.w 0x2a40a | goto label_54;
| }
0x00029f4a cmp.w fp, 0 |
| if (fp == 0) {
0x00029f4e beq 0x29f5a | goto label_55;
| }
0x00029f50 ldrb.w r3, [fp] | r3 = *(fp);
0x00029f54 cmp r3, 0 |
| if (r3 != 0) {
0x00029f56 bne.w 0x2a450 | goto label_56;
| }
| }
| label_55:
0x00029f5a add.w r8, sp, 0x98 | r8 += var_98h;
0x00029f5e mvn r3, 0x80000000 | r3 = ~0x80000000;
0x00029f62 str r3, [sp, 0x44] | var_44h = r3;
| label_28:
0x00029f64 movs r3, 0 | r3 = 0;
0x00029f66 str r3, [sp, 0x3c] | var_3ch = r3;
| label_29:
0x00029f68 add r2, sp, 0x60 | r2 += var_60h;
0x00029f6a movs r3, 0xb | r3 = 0xb;
0x00029f6c str r3, [sp, 0x18] | var_18h_2 = r3;
0x00029f6e sub.w r3, r2, 8 | r3 -= var_c8h;
0x00029f72 str r3, [sp, 8] | var_8h = r3;
0x00029f74 subs r3, r2, 4 | r3 -= var_c0h;
0x00029f76 mov r0, r4 | r0 = r4;
0x00029f78 str r3, [sp, 4] | var_4h = r3;
0x00029f7a movs r4, 0xa | r4 = 0xa;
0x00029f7c movs r3, 5 | r3 = 5;
0x00029f7e strd r3, r4, [sp, 0x10] | __asm ("strd r3, r4, [var_10h_2]");
0x00029f82 sub.w r3, sb, 0x18 | r3 -= var_b8h;
0x00029f86 str r3, [sp] | *(sp) = r3;
0x00029f88 sub.w r3, sb, 0x1c | r3 -= var_1ch_2;
0x00029f8c ldr r1, [sp, 0x30] | r1 = var_30h;
0x00029f8e str.w r8, [sp, 0xc] | __asm ("str.w r8, [var_ch]");
0x00029f92 bl 0x29bb4 | r0 = fcn_00029bb4 (r0, r1, r2, r3, r4, r5, r6);
0x00029f96 mov fp, r0 |
0x00029f98 cmp r0, 0 |
| if (r0 != 0) {
0x00029f9a bne.w 0x2a384 | goto label_57;
| }
0x00029f9e sub.w r3, r5, 0x1c | r3 -= var_1ch_3;
0x00029fa2 mov.w r1, 0x1000 | r1 = 0x1000;
0x00029fa6 mov r0, r3 | r0 = r3;
0x00029fa8 str r3, [sp, 0x4c] | var_4ch = r3;
0x00029faa bl 0x3ab5c | zbx_json_initarray ();
0x00029fae mov r0, sb | r0 = sb;
0x00029fb0 bl 0x32e10 | zbx_vector_ptr_create ();
0x00029fb4 ldr r4, [r5, -0xc8] | r4 = var_c8h;
0x00029fb8 mov r0, r4 | r0 = r4;
0x00029fba blx 0xdf68 | fcn_0000df68 ();
0x00029fbe ldr r3, [r5, -0xc4] | r3 = var_c0h;
0x00029fc0 subs r4, 0xc4 | r4 -= 0xc4;
0x00029fc2 str r0, [sp, 0x48] | var_48h = r0;
0x00029fc4 adds r3, 1 | r3++;
| if (r3 < 1) {
0x00029fc6 blt.w 0x2a4ac | goto label_58;
| }
0x00029fca ldr.w r0, [pc, 0x648] |
0x00029fce movs r3, 8 | r3 = 8;
0x00029fd0 mov r2, fp | r2 = fp;
0x00029fd2 movs r1, 0x4a | r1 = 0x4a;
0x00029fd4 add r0, pc | r0 = 0x545ee;
0x00029fd6 bl 0x40dd8 | r0 = zbx_malloc2 ();
0x00029fda mov r1, r0 | r1 = r0;
0x00029fdc strd fp, r4, [r0] | __asm ("strd fp, r4, [r0]");
0x00029fe0 mov r0, sb | r0 = sb;
0x00029fe2 bl 0x32ea0 | zbx_vector_ptr_append ();
0x00029fe6 ldr r3, [r5, -0x9c] | r3 = var_9ch;
0x00029fea cmp r3, 0 |
0x00029fec it le |
| if (r3 > 0) {
0x00029fee movle lr, fp | lr = fp;
| }
| if (r3 <= 0) {
0x00029ff0 ble.w 0x2a134 | goto label_59;
| }
0x00029ff4 ldr.w r2, [pc, 0x620] |
0x00029ff8 strd fp, fp, [sp, 0x50] | __asm ("strd fp, fp, [var_0h_2x50]");
0x00029ffc add r2, pc |
0x00029ffe adds r2, 0x2c | r2 += 0x2c;
0x0002a000 str r2, [sp, 0x34] | var_34h = r2;
0x0002a002 ldr.w r2, [pc, 0x618] | r2 = *(0x0002a61c);
0x0002a006 add r2, pc |
0x0002a008 str r2, [sp, 0x20] | var_20h_2 = r2;
0x0002a00a ldr.w r2, [pc, 0x614] | r2 = *(0x0002a620);
0x0002a00e add r2, pc |
0x0002a010 str r2, [sp, 0x24] | var_24h = r2;
0x0002a012 ldr.w r2, [pc, 0x610] | r2 = *(0x0002a624);
0x0002a016 add r2, pc | r2 = 0xd264e;
0x0002a018 str r2, [sp, 0x38] | var_38h_2 = r2;
| label_11:
0x0002a01a ldr r2, [r5, -0xa0] | r2 = var_80h;
0x0002a01e subs r3, 1 | r3--;
0x0002a020 str r3, [r5, -0x9c] | var_9ch = r3;
0x0002a024 ldr.w r7, [r2, r3, lsl 2] | offset_3 = r3 << 2;
| r7 = *((r2 + offset_3));
0x0002a028 ldr r0, [r7, 4] | r0 = *((r7 + 4));
0x0002a02a blx 0xdbdc | r0 = fcn_0000dbdc ();
0x0002a02e mov r6, r0 | r6 = r0;
0x0002a030 cmp r0, 0 |
| if (r0 == 0) {
0x0002a032 beq.w 0x2a5a6 | goto label_60;
| }
| do {
| label_9:
0x0002a036 mov r0, r6 | r0 = r6;
0x0002a038 blx 0xe28c | r0 = fcn_0000e28c ();
0x0002a03c cmp r0, 0 |
| if (r0 == 0) {
0x0002a03e beq 0x2a112 | goto label_61;
| }
| label_10:
0x0002a040 ldrb r3, [r0, 0x13] | r3 = *((r0 + 0x13));
0x0002a042 add.w r4, r0, 0x13 | r4 = r0 + 0x13;
0x0002a046 cmp r3, 0x2e |
| if (r3 != 0x2e) {
0x0002a048 bne 0x2a050 | goto label_62;
| }
0x0002a04a ldrb r3, [r4, 1] | r3 = *((r4 + 1));
0x0002a04c cmp r3, 0 |
0x0002a04e beq 0x2a036 |
| } while (r3 == 0);
| label_62:
0x0002a050 ldrb r3, [r0, 0x13] | r3 = *((r0 + 0x13));
0x0002a052 cmp r3, 0x2e |
| if (r3 != 0x2e) {
0x0002a054 bne 0x2a062 | goto label_63;
| }
0x0002a056 ldrb r3, [r4, 1] | r3 = *((r4 + 1));
0x0002a058 cmp r3, 0x2e |
| if (r3 != 0x2e) {
0x0002a05a bne 0x2a062 | goto label_63;
| }
0x0002a05c ldrb r3, [r4, 2] | r3 = *((r4 + 2));
0x0002a05e cmp r3, 0 |
| if (r3 == 0) {
0x0002a060 beq 0x2a036 | goto label_9;
| }
| label_63:
0x0002a062 ldr r2, [r7, 4] | r2 = *((r7 + 4));
0x0002a064 ldrb r3, [r2] | r3 = *(r2);
0x0002a066 cmp r3, 0x2f |
0x0002a068 mov r3, r4 | r3 = r4;
| if (r3 != 0x2f) {
0x0002a06a bne.w 0x2a1d6 | goto label_64;
| }
0x0002a06e ldrb r0, [r2, 1] | r0 = *((r2 + 1));
0x0002a070 cmp r0, 0 |
| if (r0 != 0) {
0x0002a072 bne.w 0x2a1d6 | goto label_64;
| }
0x0002a076 ldr r1, [sp, 0x24] | r1 = var_24h;
0x0002a078 bl 0x44820 | r0 = zbx_dsprintf ()
0x0002a07c mov fp, r0 |
| label_12:
0x0002a07e mov r1, r8 | r1 = r8;
0x0002a080 mov r0, fp | r0 = fp;
0x0002a082 blx 0xe1c4 | r0 = fcn_0000e1c4 ();
0x0002a086 cmp r0, 0 |
| if (r0 != 0) {
0x0002a088 bne.w 0x2a1a8 | goto label_65;
| }
0x0002a08c ldr r1, [r5, -0xb8] | r1 = var_b8h;
| if (r1 != 0) {
0x0002a090 cbz r1, 0x2a0a2 |
0x0002a092 ldr r3, [r5, -0x78] | r3 = var_78h;
0x0002a096 and r3, r3, 0xf000 | r3 &= 0xf000;
0x0002a09a cmp.w r3, 0x4000 |
| if (r3 == 0x4000) {
0x0002a09e beq.w 0x2a272 | goto label_66;
| }
| }
| label_16:
0x0002a0a2 ldrd r1, r3, [r5, -0xc0] | __asm ("ldrd r1, r3, [var_60h]");
0x0002a0a6 cmp r1, 0 |
| if (r1 == 0) {
0x0002a0a8 beq.w 0x2a1e2 | goto label_67;
| }
0x0002a0ac mov r0, r4 | r0 = r4;
0x0002a0ae str r3, [sp, 0x28] | var_28h = r3;
0x0002a0b0 bl 0x31a70 | zbx_regexp_match_precompiled ();
0x0002a0b4 ldr r3, [sp, 0x28] | r3 = var_28h;
0x0002a0b6 cmp r0, 0 |
| if (r0 == 0) {
0x0002a0b8 beq.w 0x2a1e2 | goto label_67;
| }
| label_13:
0x0002a0bc ldr r3, [r5, -0x78] | r3 = var_78h;
0x0002a0c0 and r4, r3, 0xf000 | r4 = r3 & 0xf000;
| label_15:
0x0002a0c4 cmp.w r4, 0x4000 |
| if (r4 != 0x4000) {
0x0002a0c8 bne.w 0x2a1ce | goto label_14;
| }
| label_18:
0x0002a0cc ldr r2, [r5, -0xc4] | r2 = var_c0h;
0x0002a0d0 ldr r4, [r7] | r4 = *(r7);
0x0002a0d2 cmp r4, r2 |
0x0002a0d4 ite ge |
| if (r4 < r2) {
0x0002a0d6 movge r3, 0 | r3 = 0;
| }
| if (r4 >= r2) {
0x0002a0d8 movlt r3, 1 | r3 = 1;
| }
0x0002a0da cmp.w r2, -1 |
0x0002a0de it eq |
| if (r2 != -1) {
0x0002a0e0 orreq r3, r3, 1 | r3 |= 1;
| }
0x0002a0e4 cmp r3, 0 |
| if (r3 == 0) {
0x0002a0e6 beq 0x2a1ce | goto label_14;
| }
0x0002a0e8 ldr.w r0, [pc, 0x53c] |
0x0002a0ec movs r3, 8 | r3 = 8;
0x0002a0ee movs r2, 0 | r2 = 0;
0x0002a0f0 movs r1, 0x4a | r1 = 0x4a;
0x0002a0f2 adds r4, 1 | r4++;
0x0002a0f4 add r0, pc | r0 = 0x54720;
0x0002a0f6 bl 0x40dd8 | r0 = zbx_malloc2 ();
0x0002a0fa mov r1, r0 | r1 = r0;
0x0002a0fc str.w fp, [r0, 4] | __asm ("str.w fp, [r0, 4]");
0x0002a100 str r4, [r0] | *(r0) = r4;
0x0002a102 mov r0, sb | r0 = sb;
0x0002a104 bl 0x32ea0 | zbx_vector_ptr_append ();
0x0002a108 mov r0, r6 | r0 = r6;
0x0002a10a blx 0xe28c | fcn_0000e28c ();
0x0002a10c invalid |
| if (r4 != 1) {
0x0002a110 bne 0x2a040 | goto label_10;
| }
| label_61:
0x0002a112 mov r0, r6 | r0 = r6;
0x0002a114 blx 0xe0d0 | fcn_0000e0d0 ();
| label_35:
0x0002a118 ldr r0, [r7, 4] | r0 = *((r7 + 4));
| if (r0 != 0) {
0x0002a11a cbz r0, 0x2a120 |
0x0002a11c blx 0xde30 | fcn_0000de30 ();
| }
0x0002a120 mov r0, r7 | r0 = r7;
0x0002a122 blx 0xde30 | fcn_0000de30 ();
0x0002a126 ldr r3, [r5, -0x9c] | r3 = var_9ch;
0x0002a12a cmp r3, 0 |
| if (r3 > 0) {
0x0002a12c bgt.w 0x2a01a | goto label_11;
| }
0x0002a130 ldrd lr, fp, [sp, 0x50] | __asm ("ldrd lr, fp, [var_50h]");
| label_59:
0x0002a134 ldr r2, [sp, 0x40] | r2 = var_40h;
0x0002a136 ldr r3, [sp, 0x30] | r3 = var_30h;
0x0002a138 ldr r3, [r3, 0x28] | r3 = *((r3 + 0x28));
0x0002a13a cmp r2, 0 |
| if (r2 == 0) {
0x0002a13c beq.w 0x2a48a | goto label_68;
| }
0x0002a140 ldr r2, [sp, 0x30] | r2 = var_30h;
0x0002a142 orr r3, r3, 1 | r3 |= 1;
0x0002a146 str r3, [r2, 0x28] | *((r2 + 0x28)) = r3;
0x0002a148 asr.w r3, lr, 0x1f | r3 = lr >> 0x1f;
0x0002a14c str.w lr, [r2, 8] | __asm ("str.w lr, [r2, 8]");
0x0002a150 str r3, [r2, 0xc] | *((r2 + 0xc)) = r3;
| label_33:
0x0002a152 mov r0, sb | r0 = sb;
0x0002a154 bl 0x29ad0 | fcn_00029ad0 (r0);
0x0002a158 ldr r0, [sp, 0x4c] | r0 = var_4ch;
0x0002a15a bl 0x3ac14 | zbx_json_free ();
0x0002a15e ldrd r0, r6, [r5, -0xc0] | __asm ("ldrd r0, r6, [var_60h]");
0x0002a160 lsls r0, r6, 0x18 | r0 = r6 << 0x18;
0x0002a162 ldr r4, [r5, -0xb8] | r4 = var_b8h;
0x0002a166 cmp r0, 0 |
| if (r0 != 0) {
0x0002a168 bne.w 0x2a396 | goto label_69;
| }
| if (r6 != 0) {
| label_22:
0x0002a16c cbz r6, 0x2a174 |
0x0002a16e mov r0, r6 | r0 = r6;
0x0002a170 bl 0x31a44 | zbx_regexp_free ();
| }
| if (r4 != 0) {
0x0002a174 cbz r4, 0x2a17c |
0x0002a176 mov r0, r4 | r0 = r4;
0x0002a178 bl 0x31a44 | zbx_regexp_free ();
| }
| label_21:
0x0002a17c ldr.w r2, [pc, 0x4ac] | r2 = *(0x0002a62c);
0x0002a180 add.w r1, sp, 0x1100 | r1 += var_1100h;
0x0002a184 ldr.w r3, [pc, 0x484] | r3 = *(0x2a60c);
0x0002a188 adds r1, 0x1c | r1 += 0x1c;
0x0002a18a add r2, pc | r2 += pc;
0x0002a18c ldr r3, [r2, r3] | r3 = *((r2 + r3));
0x0002a18e ldr r2, [r3] | r2 = *(0x2a60c);
0x0002a190 ldr r3, [r1] | r3 = *(r1);
0x0002a192 eors r2, r3 | r2 ^= r3;
0x0002a194 mov.w r3, 0 | r3 = 0;
| if (r2 != r3) {
0x0002a198 bne.w 0x2a5a2 | goto label_70;
| }
0x0002a19c mov r0, fp | r0 = fp;
0x0002a19e add.w sp, sp, 0x1120 |
0x0002a1a2 add sp, 4 |
0x0002a1a4 pop.w {r4, r5, r6, r7, r8, sb, sl, fp, pc} |
| label_65:
0x0002a1a8 ldr.w r3, [pc, 0x484] |
0x0002a1ac ldr.w r3, [sl, r3] | r3 = *((sl + r3));
0x0002a1b0 ldr r3, [r3] | r3 = *(0x2a630);
0x0002a1b2 cmp r3, 3 |
| if (r3 > 3) {
0x0002a1b4 ble 0x2a1ce |
0x0002a1b6 blx 0xe3d4 | r0 = fcn_0000e3d4 ();
0x0002a1ba ldr r0, [r0] | r0 = *(r0);
0x0002a1bc bl 0x30b74 | zbx_strerror ();
0x0002a1c0 ldrd r2, r1, [sp, 0x34] | __asm ("ldrd r2, r1, [var_34h]");
0x0002a1c4 mov r3, fp | r3 = fp;
0x0002a1c6 str r0, [sp] | *(sp) = r0;
0x0002a1c8 movs r0, 4 | r0 = 4;
0x0002a1ca bl 0x30d1c | zbx_zabbix_log ();
| }
| label_14:
0x0002a1ce mov r0, fp | r0 = fp;
0x0002a1d0 blx 0xde30 | fcn_0000de30 ();
0x0002a1d4 b 0x2a036 | goto label_9;
| label_64:
0x0002a1d6 ldr r1, [sp, 0x20] | r1 = var_20h_2;
0x0002a1d8 movs r0, 0 | r0 = 0;
0x0002a1da bl 0x44820 | r0 = zbx_dsprintf ()
0x0002a1de mov fp, r0 |
0x0002a1e0 b 0x2a07e | goto label_12;
| if (r3 == 0) {
| label_67:
0x0002a1e2 cbz r3, 0x2a1f2 | goto label_71;
| }
0x0002a1e4 mov r1, r3 | r1 = r3;
0x0002a1e6 mov r0, r4 | r0 = r4;
0x0002a1e8 bl 0x31a70 | r0 = zbx_regexp_match_precompiled ();
0x0002a1ec cmp r0, 0 |
| if (r0 == 0) {
0x0002a1ee beq.w 0x2a0bc | goto label_13;
| }
| label_71:
0x0002a1f2 ldr r3, [r5, -0x78] | r3 = var_78h;
0x0002a1f6 and r4, r3, 0xf000 | r4 = r3 & 0xf000;
0x0002a1fa cmp.w r4, 0x8000 |
| if (r4 == fcn.00000004) {
0x0002a1fe beq 0x2a28a | goto label_72;
| }
0x0002a200 cmp.w r4, 0x4000 |
| if (r4 == 0x4000) {
0x0002a204 beq 0x2a2a6 | goto label_73;
| }
0x0002a206 cmp.w r4, 0xa000 |
| if (r4 == 0xa000) {
0x0002a20a beq 0x2a298 | goto label_74;
| }
0x0002a20c cmp.w r4, 0xc000 |
| if (r4 == 0xc000) {
0x0002a210 beq.w 0x2a3c2 | goto label_75;
| }
0x0002a214 cmp.w r4, 0x6000 |
| if (r4 != 0x6000) {
0x0002a218 bne.w 0x2a504 | goto label_76;
| }
0x0002a21c ldr r3, [sp, 0x2c] | r3 = var_2ch;
0x0002a21e lsls r1, r3, 0x1b | r1 = r3 << 0x1b;
| if (r1 >= r3) {
0x0002a220 bpl 0x2a1ce | goto label_14;
| }
| label_17:
0x0002a222 ldr r1, [r5, -0x58] | r1 = var_58h;
0x0002a226 ldr r0, [sb, -0x10] | r0 = var_10h_4;
0x0002a22a ldr r2, [r5, -0x54] | r2 = var_54h;
0x0002a22e ldr r3, [sb, -0xc] | r3 = var_8h_3;
0x0002a232 cmp r1, r0 |
0x0002a234 sbcs.w r3, r2, r3 | __asm ("sbcs.w r3, r2, r3");
| if (r1 <= r0) {
0x0002a238 blo 0x2a1ce | goto label_14;
| }
0x0002a23a ldrd r0, r3, [sb, -0x8] | __asm ("ldrd r0, r3, [sb, -0x8]");
0x0002a23e cmp r0, r1 |
0x0002a240 sbcs r3, r2 | __asm ("sbcs r3, r2");
| if (r0 <= r1) {
0x0002a242 blo.w 0x2a0c4 | goto label_15;
| }
0x0002a246 ldr r2, [sp, 0x3c] | r2 = var_3ch;
0x0002a248 ldr r3, [r5, -0x38] | r3 = var_38h_3;
0x0002a24c ldr r1, [sp, 0x44] | r1 = var_44h;
0x0002a24e cmp r3, r2 |
0x0002a250 ite gt |
| if (r3 <= r2) {
0x0002a252 movgt r2, 1 | r2 = 1;
| }
| if (r3 > r2) {
0x0002a254 movle r2, 0 | r2 = 0;
| }
0x0002a256 cmp r3, r1 |
0x0002a258 it gt |
| if (r3 <= r1) {
0x0002a25a movgt r2, 0 | r2 = 0;
| }
0x0002a25c cmp r2, 0 |
| if (r2 == 0) {
0x0002a25e beq.w 0x2a0c4 | goto label_15;
| }
| label_19:
0x0002a262 ldr r3, [sp, 0x40] | r3 = var_40h;
0x0002a264 cmp r3, 0 |
| if (r3 == 0) {
0x0002a266 beq.w 0x2a4b8 | goto label_77;
| }
0x0002a26a ldr r3, [sp, 0x50] | r3 = var_50h;
0x0002a26c adds r3, 1 | r3++;
0x0002a26e str r3, [sp, 0x50] | var_50h = r3;
0x0002a270 b 0x2a0c4 | goto label_15;
| label_66:
0x0002a272 ldr r3, [sp, 0x48] | r3 = var_48h;
0x0002a274 adds r0, r3, 1 | r0 = r3 + 1;
0x0002a276 add r0, fp | r0 += fp;
0x0002a278 bl 0x31a70 | r0 = zbx_regexp_match_precompiled ();
0x0002a27c cmp r0, 0 |
| if (r0 != 0) {
0x0002a27e bne.w 0x2a0a2 | goto label_16;
| }
0x0002a282 mov r0, fp | r0 = fp;
0x0002a284 blx 0xde30 | fcn_0000de30 ();
0x0002a288 b 0x2a036 | goto label_9;
| label_72:
0x0002a28a ldr r3, [sp, 0x2c] | r3 = var_2ch;
0x0002a28c lsls r1, r3, 0x1f | r1 = r3 << 0x1f;
| if (r1 < r3) {
0x0002a28e bmi 0x2a222 | goto label_17;
| }
0x0002a290 mov r0, fp | r0 = fp;
0x0002a292 blx 0xde30 | fcn_0000de30 ();
0x0002a296 b 0x2a036 | goto label_9;
| label_74:
0x0002a298 ldr r3, [sp, 0x2c] | r3 = var_2ch;
0x0002a29a lsls r3, r3, 0x1d | r3 <<= 0x1d;
| if (r3 < r3) {
0x0002a29c bmi 0x2a222 | goto label_17;
| }
0x0002a29e mov r0, fp | r0 = fp;
0x0002a2a0 blx 0xde30 | fcn_0000de30 ();
0x0002a2a4 b 0x2a036 | goto label_9;
| label_73:
0x0002a2a6 ldr r3, [sp, 0x2c] | r3 = var_2ch;
0x0002a2a8 lsls r2, r3, 0x1e | r2 = r3 << 0x1e;
| if (r2 >= r3) {
0x0002a2aa bpl.w 0x2a0cc | goto label_18;
| }
0x0002a2ae ldr r0, [r5, -0x58] | r0 = var_58h;
0x0002a2b2 ldr r1, [sb, -0x10] | r1 = var_10h_4;
0x0002a2b6 ldr r2, [r5, -0x54] | r2 = var_54h;
0x0002a2ba ldr r3, [sb, -0xc] | r3 = var_8h_3;
0x0002a2be cmp r0, r1 |
0x0002a2c0 sbcs.w r3, r2, r3 | __asm ("sbcs.w r3, r2, r3");
| if (r0 <= r1) {
0x0002a2c4 blo.w 0x2a0cc | goto label_18;
| }
0x0002a2c8 ldrd r1, r3, [sb, -0x8] | __asm ("ldrd r1, r3, [sb, -0x8]");
0x0002a2cc cmp r1, r0 |
0x0002a2ce sbcs r3, r2 | __asm ("sbcs r3, r2");
| if (r1 <= r0) {
0x0002a2d0 blo.w 0x2a0cc | goto label_18;
| }
0x0002a2d4 ldr r2, [sp, 0x3c] | r2 = var_3ch;
0x0002a2d6 ldr r3, [r5, -0x38] | r3 = var_38h_3;
0x0002a2da ldr r1, [sp, 0x44] | r1 = var_44h;
0x0002a2dc cmp r3, r2 |
0x0002a2de ite gt |
| if (r3 <= r2) {
0x0002a2e0 movgt r2, 1 | r2 = 1;
| }
| if (r3 > r2) {
0x0002a2e2 movle r2, 0 | r2 = 0;
| }
0x0002a2e4 cmp r3, r1 |
0x0002a2e6 it gt |
| if (r3 <= r1) {
0x0002a2e8 movgt r2, 0 | r2 = 0;
| }
0x0002a2ea cmp r2, 0 |
| if (r2 == 0) {
0x0002a2ec beq.w 0x2a0cc | goto label_18;
| }
0x0002a2f0 b 0x2a262 | goto label_19;
| label_53:
0x0002a2f2 ldr r7, [r4, 8] | r7 = *((r4 + 8));
0x0002a2f4 mov r2, r3 | r2 = r3;
0x0002a2f6 ldr r0, [r7, 0xc] | r0 = *((r7 + 0xc));
0x0002a2f8 cmp r0, 0 |
| if (r0 == 0) {
0x0002a2fa beq 0x2a39c | goto label_78;
| }
0x0002a2fc ldrb r6, [r0] | r6 = *(r0);
0x0002a2fe cmp r6, 0 |
| if (r6 == 0) {
0x0002a300 beq 0x2a39c | goto label_78;
| }
0x0002a302 bl 0x29b04 | r0 = fcn_00029b04 (r0, r1, r2, r3);
0x0002a306 adds r3, r0, 1 | r3 = r0 + 1;
0x0002a308 mov r6, r0 | r6 = r0;
| if (r3 == r0) {
0x0002a30a beq 0x2a37e | goto label_25;
| }
0x0002a30c ldr r3, [r4, 4] | r3 = *((r4 + 4));
0x0002a30e cmp r3, 4 |
0x0002a310 mov r2, r3 | r2 = r3;
| if (r3 <= 4) {
0x0002a312 ble.w 0x2a594 | goto label_79;
| }
0x0002a316 ldr r1, [r4, 8] | r1 = *((r4 + 8));
0x0002a318 ldr r0, [r1, 0x10] | r0 = *((r1 + 0x10));
0x0002a31a cmp r0, 0 |
| if (r0 == 0) {
0x0002a31c beq.w 0x2a4ec | goto label_80;
| }
0x0002a320 ldrb r3, [r0] | r3 = *(r0);
0x0002a322 cmp r3, 0 |
| if (r3 != 0) {
0x0002a324 bne 0x2a3b2 | goto label_81;
| }
| label_24:
0x0002a326 mov r3, r2 | r3 = r2;
0x0002a328 mov.w r2, -1 | r2 = -1;
| if (r6 != 0) {
| label_26:
0x0002a32c cbz r6, 0x2a330 |
0x0002a32e ands r2, r6 | r2 &= r6;
| }
0x0002a330 and r2, r2, 0x7f | r2 &= 0x7f;
0x0002a334 str r2, [sp, 0x2c] | var_2ch = r2;
| label_34:
0x0002a336 cmp r3, 6 |
| if (r3 <= 6) {
0x0002a338 ble.w 0x29f30 | goto label_20;
| }
0x0002a33c ldr r2, [r4, 8] | r2 = *((r4 + 8));
0x0002a33e cmp r3, 7 |
0x0002a340 ldr r6, [r2, 0x18] | r6 = *((r2 + 0x18));
| if (r3 != 7) {
0x0002a342 bne 0x2a3d2 | goto label_82;
| }
0x0002a344 cmp r6, 0 |
| if (r6 == 0) {
0x0002a346 beq.w 0x29f30 | goto label_20;
| }
0x0002a34a ldrb r3, [r6] | r3 = *(r6);
0x0002a34c cmp r3, 0 |
| if (r3 == 0) {
0x0002a34e beq.w 0x29f30 | goto label_20;
| }
0x0002a352 ldr r1, [pc, 0x2e0] |
0x0002a354 sub.w r2, sb, 0x10 | r2 -= var_10h_4;
0x0002a358 mov r0, r6 | r0 = r6;
0x0002a35a add r1, pc | r1 = "received [signal:%d(%s)] with NULL siginfo";
0x0002a35c bl 0x42be8 | r0 = str2uint64 ();
0x0002a360 cmp r0, 0 |
| if (r0 == 0) {
0x0002a362 beq.w 0x29f30 | goto label_20;
| }
| label_32:
0x0002a366 ldr r4, [sp, 0x30] | r4 = var_30h;
0x0002a368 mov r2, r6 | r2 = r6;
0x0002a36a ldr r1, [pc, 0x2cc] |
0x0002a36c ldr r3, [r4, 0x28] | r3 = *((r4 + 0x28));
0x0002a36e add r1, pc | r1 = 0x549ac;
| label_27:
0x0002a370 orr r3, r3, 0x20 | r3 |= 0x20;
0x0002a374 movs r0, 0 | r0 = 0;
0x0002a376 str r3, [r4, 0x28] | *((r4 + 0x28)) = r3;
0x0002a378 bl 0x44820 | zbx_dsprintf ()
0x0002a37c str r0, [r4, 0x20] | *((r4 + 0x20)) = r0;
| label_25:
0x0002a37e mov.w fp, 1 |
0x0002a382 b 0x2a17c | goto label_21;
| label_57:
0x0002a384 ldrd r0, r6, [r5, -0xc0] | __asm ("ldrd r0, r6, [var_60h]");
0x0002a388 mov.w fp, 1 |
0x0002a38c ldr r4, [r5, -0xb8] | r4 = var_b8h;
0x0002a390 cmp r0, 0 |
| if (r0 == 0) {
0x0002a392 beq.w 0x2a16c | goto label_22;
| }
| label_69:
0x0002a396 bl 0x31a44 | zbx_regexp_free ();
0x0002a39a b 0x2a16c | goto label_22;
| label_78:
0x0002a39c cmp r3, 4 |
| if (r3 == 4) {
0x0002a39e beq.w 0x29f2c | goto label_23;
| }
0x0002a3a2 ldr r0, [r7, 0x10] | r0 = *((r7 + 0x10));
0x0002a3a4 cmp r0, 0 |
| if (r0 == 0) {
0x0002a3a6 beq.w 0x2a4f2 | goto label_83;
| }
0x0002a3aa ldrb r3, [r0] | r3 = *(r0);
0x0002a3ac movs r6, 0 | r6 = 0;
0x0002a3ae cmp r3, 0 |
| if (r3 == 0) {
0x0002a3b0 beq 0x2a326 | goto label_24;
| }
| label_81:
0x0002a3b2 ldr r1, [sp, 0x30] | r1 = var_30h;
0x0002a3b4 bl 0x29b04 | r0 = fcn_00029b04 (r0, r1, r2, r3);
0x0002a3b8 adds r7, r0, 1 | r7 = r0 + 1;
| if (r7 == r0) {
0x0002a3ba beq 0x2a37e | goto label_25;
| }
0x0002a3bc ldr r3, [r4, 4] | r3 = *((r4 + 4));
0x0002a3be mvns r2, r0 | r2 = ~r0;
0x0002a3c0 b 0x2a32c | goto label_26;
| label_75:
0x0002a3c2 ldr r3, [sp, 0x2c] | r3 = var_2ch;
0x0002a3c4 lsls r0, r3, 0x1c | r0 = r3 << 0x1c;
| if (r0 < r3) {
0x0002a3c6 bmi.w 0x2a222 | goto label_17;
| }
0x0002a3ca mov r0, fp | r0 = fp;
0x0002a3cc blx 0xde30 | fcn_0000de30 ();
0x0002a3d0 b 0x2a036 | goto label_9;
| label_82:
0x0002a3d2 ldr r7, [r2, 0x1c] | r7 = *((r2 + 0x1c));
| if (r6 != 0) {
0x0002a3d4 cbz r6, 0x2a3dc |
0x0002a3d6 ldrb r3, [r6] | r3 = *(r6);
0x0002a3d8 cmp r3, 0 |
| if (r3 != 0) {
0x0002a3da bne 0x2a476 | goto label_84;
| }
| }
| label_31:
0x0002a3dc cmp r7, 0 |
| if (r7 == 0) {
0x0002a3de beq.w 0x29f30 | goto label_20;
| }
0x0002a3e2 ldrb r3, [r7] | r3 = *(r7);
0x0002a3e4 cmp r3, 0 |
| if (r3 == 0) {
0x0002a3e6 beq.w 0x29f30 | goto label_20;
| }
0x0002a3ea ldr r1, [pc, 0x250] |
0x0002a3ec sub.w r2, sb, 8 | r2 -= var_8h_2;
0x0002a3f0 mov r0, r7 | r0 = r7;
0x0002a3f2 add r1, pc | r1 = 0x54a34;
0x0002a3f4 bl 0x42be8 | r0 = str2uint64 ();
0x0002a3f8 cmp r0, 0 |
| if (r0 == 0) {
0x0002a3fa beq.w 0x29f30 | goto label_20;
| }
0x0002a3fe ldr r4, [sp, 0x30] | r4 = var_30h;
0x0002a400 mov r2, r7 | r2 = r7;
0x0002a402 ldr r1, [pc, 0x23c] |
0x0002a404 ldr r3, [r4, 0x28] | r3 = *((r4 + 0x28));
0x0002a406 add r1, pc | r1 = 0x54a4c;
0x0002a408 b 0x2a370 | goto label_27;
| label_54:
0x0002a40a ldr r7, [r2, 0x24] | r7 = *((r2 + 0x24));
0x0002a40c cmp.w fp, 0 |
| if (fp != 0) {
0x0002a410 beq 0x2a418 |
0x0002a412 ldrb.w r3, [fp] | r3 = *(fp);
| if (r3 != 0) {
0x0002a416 cbnz r3, 0x2a452 | goto label_85;
| }
| }
0x0002a418 mvn r3, 0x80000000 | r3 = ~0x80000000;
0x0002a41c add.w r8, sp, 0x98 | r8 += var_98h;
0x0002a420 str r3, [sp, 0x44] | var_44h = r3;
0x0002a422 add r3, sp, 0xa0 | r3 += var_a0h;
| label_30:
0x0002a424 str r3, [sp, 0x20] | var_20h_2 = r3;
0x0002a426 cmp r7, 0 |
| if (r7 == 0) {
0x0002a428 beq.w 0x29f64 | goto label_28;
| }
0x0002a42c ldrb r2, [r7] | r2 = *(r7);
| if (r2 != 0) {
0x0002a42e cbz r2, 0x2a44c |
0x0002a430 ldr r1, [pc, 0x210] |
0x0002a432 mov r2, r8 | r2 = r8;
0x0002a434 mov r0, r7 | r0 = r7;
0x0002a436 add r1, pc | r1 = 0x54a7e;
0x0002a438 bl 0x42be8 | r0 = str2uint64 ();
0x0002a43c cmp r0, 0 |
| if (r0 != 0) {
0x0002a43e bne 0x2a522 | goto label_86;
| }
0x0002a440 ldr r3, [sp, 0x20] | r3 = var_20h_2;
0x0002a442 ldr r3, [r3, -0x8] | r3 = *((r3 - 0x8));
0x0002a446 subs r3, r6, r3 | r3 = r6 - r3;
0x0002a448 str r3, [sp, 0x3c] | var_3ch = r3;
0x0002a44a b 0x29f68 | goto label_29;
| }
0x0002a44c str r2, [sp, 0x3c] | var_3ch = r2;
0x0002a44e b 0x29f68 | goto label_29;
| label_56:
0x0002a450 movs r7, 0 | r7 = 0;
| label_85:
0x0002a452 ldr r1, [pc, 0x1f4] |
0x0002a454 add.w r8, sp, 0x98 | r8 += var_98h;
0x0002a458 add r3, sp, 0xa0 | r3 += var_a0h;
0x0002a45a mov r0, fp | r0 = fp;
0x0002a45c mov r2, r8 | r2 = r8;
0x0002a45e str r3, [sp, 0x20] | var_20h_2 = r3;
0x0002a460 add r1, pc | r1 = 0x54aae;
0x0002a462 bl 0x42be8 | r0 = str2uint64 ();
0x0002a466 cmp r0, 0 |
| if (r0 != 0) {
0x0002a468 bne 0x2a4f8 | goto label_87;
| }
0x0002a46a ldr r3, [sp, 0x20] | r3 = var_20h_2;
0x0002a46c ldr r2, [r3, -0x8] | r2 = *((r3 - 0x8));
0x0002a470 subs r2, r6, r2 | r2 = r6 - r2;
0x0002a472 str r2, [sp, 0x44] | var_44h = r2;
0x0002a474 b 0x2a424 | goto label_30;
| label_84:
0x0002a476 ldr r1, [pc, 0x1d4] |
0x0002a478 sub.w r2, sb, 0x10 | r2 -= var_10h_4;
0x0002a47c mov r0, r6 | r0 = r6;
0x0002a47e add r1, pc | r1 = 0x54ad0;
0x0002a480 bl 0x42be8 | r0 = str2uint64 ();
0x0002a484 cmp r0, 0 |
| if (r0 == 0) {
0x0002a486 beq 0x2a3dc | goto label_31;
| }
0x0002a488 b 0x2a366 | goto label_32;
| label_68:
0x0002a48a ldr r4, [sp, 0x30] | r4 = var_30h;
0x0002a48c orr r3, r3, 4 | r3 |= 4;
0x0002a490 ldr r0, [pc, 0x1bc] |
0x0002a492 movw r1, 0x49c | r1 = 0x49c;
0x0002a496 str r3, [r4, 0x28] | *((r4 + 0x28)) = r3;
0x0002a498 add r0, pc | r0 = 0x54aec;
0x0002a49a ldr r3, [r5, -0x1c] | r3 = var_1ch_3;
0x0002a49e bl 0x40ed8 | zbx_strdup2 ();
0x0002a4a2 str r0, [r4, 0x18] | *((r4 + 0x18)) = r0;
0x0002a4a4 ldr r0, [sp, 0x4c] | r0 = var_4ch;
0x0002a4a6 bl 0x3af6c | zbx_json_close ();
0x0002a4aa b 0x2a152 | goto label_33;
| label_58:
0x0002a4ac mov r0, r4 | r0 = r4;
0x0002a4ae blx 0xde30 | fcn_0000de30 ();
| label_36:
0x0002a4b2 mov.w fp, 1 |
0x0002a4b6 b 0x2a152 | goto label_33;
| label_77:
0x0002a4b8 str r3, [r5, -0xb4] | var_b4h = r3;
0x0002a4bc movs r2, 1 | r2 = 1;
0x0002a4be ldr r1, [sp, 0x4c] | r1 = var_4ch;
0x0002a4c0 sub.w r3, sb, 0x14 | r3 -= var_b4h;
0x0002a4c4 mov r0, fp | r0 = fp;
0x0002a4c6 bl 0x2dc94 | r0 = zbx_vfs_file_info ();
0x0002a4ca cmp r0, 0 |
| if (r0 == 0) {
0x0002a4cc beq.w 0x2a0bc | goto label_13;
| }
0x0002a4d0 ldr r3, [pc, 0x15c] |
0x0002a4d2 ldr.w r3, [sl, r3] | r3 = *((sl + r3));
0x0002a4d6 ldr r3, [r3] | r3 = *(0x2a630);
0x0002a4d8 cmp r3, 3 |
| if (r3 > 3) {
0x0002a4da bgt 0x2a52e | goto label_88;
| }
0x0002a4dc ldr r0, [r5, -0xb4] | r0 = var_b4h;
0x0002a4e0 cmp r0, 0 |
| if (r0 == 0) {
0x0002a4e2 beq.w 0x2a0bc | goto label_13;
| }
0x0002a4e6 blx 0xde30 | fcn_0000de30 ();
0x0002a4ea b 0x2a0bc | goto label_13;
| label_80:
0x0002a4ec mov.w r2, -1 | r2 = -1;
0x0002a4f0 b 0x2a32c | goto label_26;
| label_83:
0x0002a4f2 movs r2, 0x7f | r2 = 0x7f;
0x0002a4f4 str r2, [sp, 0x2c] | var_2ch = r2;
0x0002a4f6 b 0x2a336 | goto label_34;
| label_87:
0x0002a4f8 ldr r4, [sp, 0x30] | r4 = var_30h;
0x0002a4fa mov r2, fp | r2 = fp;
0x0002a4fc ldr r1, [pc, 0x154] |
0x0002a4fe ldr r3, [r4, 0x28] | r3 = *((r4 + 0x28));
0x0002a500 add r1, pc | r1 = 0x54b58;
0x0002a502 b 0x2a370 | goto label_27;
| label_76:
0x0002a504 cmp.w r4, 0x2000 |
| if (r4 == 0x2000) {
0x0002a508 beq 0x2a548 | goto label_89;
| }
0x0002a50a cmp.w r4, 0x1000 |
| if (r4 != 0x1000) {
0x0002a50e bne.w 0x2a1ce | goto label_14;
| }
0x0002a510 add r6, sp, 0x178 | r6 = sp + 0x178;
0x0002a512 ldr r3, [sp, 0x2c] | r3 = var_2ch;
0x0002a514 lsls r2, r3, 0x19 | r2 = r3 << 0x19;
| if (r2 < r3) {
0x0002a516 bmi.w 0x2a222 | goto label_17;
| }
0x0002a51a mov r0, fp | r0 = fp;
0x0002a51c blx 0xde30 | fcn_0000de30 ();
0x0002a520 b 0x2a036 | goto label_9;
| label_86:
0x0002a522 ldr r4, [sp, 0x30] | r4 = var_30h;
0x0002a524 mov r2, r7 | r2 = r7;
0x0002a526 ldr r1, [pc, 0x130] |
0x0002a528 ldr r3, [r4, 0x28] | r3 = *((r4 + 0x28));
0x0002a52a add r1, pc | r1 = 0x54b88;
0x0002a52c b 0x2a370 | goto label_27;
| label_88:
0x0002a52e ldr r2, [pc, 0x12c] |
0x0002a530 movs r0, 4 | r0 = 4;
0x0002a532 ldr r3, [r5, -0xb4] | r3 = var_b4h;
0x0002a536 ldr r1, [pc, 0x128] |
0x0002a538 add r2, pc | r2 = 0x54b9a;
0x0002a53a str r3, [sp] | *(sp) = r3;
0x0002a53c adds r2, 0x2c | r2 += 0x2c;
0x0002a53e add r1, pc | r1 = 0x54ba4;
0x0002a540 mov r3, fp | r3 = fp;
0x0002a542 bl 0x30d1c | zbx_zabbix_log ();
0x0002a544 invalid |
| label_89:
0x0002a548 ldr r3, [sp, 0x2c] | r3 = var_2ch;
0x0002a54a lsls r3, r3, 0x1a | r3 <<= 0x1a;
| if (r3 >= r3) {
0x0002a54c bpl.w 0x2a1ce | goto label_14;
| }
0x0002a550 ldr r0, [r5, -0x58] | r0 = var_58h;
0x0002a554 ldr r1, [sb, -0x10] | r1 = var_10h_4;
0x0002a558 ldr r2, [r5, -0x54] | r2 = var_54h;
0x0002a55c ldr r3, [sb, -0xc] | r3 = var_8h_3;
0x0002a560 cmp r0, r1 |
0x0002a562 sbcs.w r3, r2, r3 | __asm ("sbcs.w r3, r2, r3");
| if (r0 <= r1) {
0x0002a566 blo.w 0x2a1ce | goto label_14;
| }
0x0002a56a ldrd r1, r3, [sb, -0x8] | __asm ("ldrd r1, r3, [sb, -0x8]");
0x0002a56e cmp r1, r0 |
0x0002a570 sbcs r3, r2 | __asm ("sbcs r3, r2");
| if (r1 <= r0) {
0x0002a572 blo.w 0x2a1ce | goto label_14;
| }
0x0002a576 ldr r2, [sp, 0x3c] | r2 = var_3ch;
0x0002a578 ldr r3, [r5, -0x38] | r3 = var_38h_3;
0x0002a57c ldr r1, [sp, 0x44] | r1 = var_44h;
0x0002a57e cmp r3, r2 |
0x0002a580 ite gt |
| if (r3 <= r2) {
0x0002a582 movgt r2, 1 | r2 = 1;
| }
| if (r3 > r2) {
0x0002a584 movle r2, 0 | r2 = 0;
| }
0x0002a586 cmp r3, r1 |
0x0002a588 it gt |
| if (r3 <= r1) {
0x0002a58a movgt r2, 0 | r2 = 0;
| }
0x0002a58c cmp r2, 0 |
| if (r2 == 0) {
0x0002a58e beq.w 0x2a1ce | goto label_14;
| }
0x0002a592 b 0x2a262 | goto label_19;
| label_79:
0x0002a594 cmp r0, 0 |
| if (r0 == 0) {
0x0002a596 beq.w 0x29f2c | goto label_23;
| }
0x0002a598 add r4, sp, 0x324 | r4 = sp + 0x324;
0x0002a59a and r3, r0, 0x7f | r3 = r0 & 0x7f;
0x0002a59e str r3, [sp, 0x2c] | var_2ch = r3;
0x0002a5a0 b 0x29f30 | goto label_20;
| label_70:
0x0002a5a2 blx 0xe158 | fcn_0000e158 ();
| label_60:
0x0002a5a6 ldr r3, [r7] | r3 = *(r7);
0x0002a5a8 cmp r3, 0 |
| if (r3 <= 0) {
0x0002a5aa ble 0x2a5dc | goto label_90;
| }
0x0002a5ac ldr r3, [pc, 0x80] |
0x0002a5ae ldr.w r3, [sl, r3] | r3 = *((sl + r3));
0x0002a5b2 ldr r3, [r3] | r3 = *(0x2a630);
0x0002a5b4 cmp r3, 3 |
| if (r3 <= 3) {
0x0002a5b6 ble.w 0x2a118 | goto label_35;
| }
0x0002a5ba blx 0xe3d4 | r0 = fcn_0000e3d4 ();
0x0002a5be ldr r0, [r0] | r0 = *(r0);
0x0002a5c0 ldr r4, [r7, 4] | r4 = *((r7 + 4));
0x0002a5c2 bl 0x30b74 | zbx_strerror ();
0x0002a5c6 ldr r2, [pc, 0x9c] |
0x0002a5c8 ldr r1, [pc, 0x9c] |
0x0002a5ca mov r3, r4 | r3 = r4;
0x0002a5cc str r0, [sp] | *(sp) = r0;
0x0002a5ce movs r0, 4 | r0 = 4;
0x0002a5d0 add r2, pc | r2 = 0x54c3a;
0x0002a5d2 adds r2, 0x2c | r2 += 0x2c;
0x0002a5d4 add r1, pc | r1 = "cannot decrease log level: minimum level has been already set";
0x0002a5d6 bl 0x30d1c | zbx_zabbix_log ();
0x0002a5da b 0x2a118 | goto label_35;
| label_90:
0x0002a5dc ldr r4, [sp, 0x30] | r4 = var_30h;
0x0002a5de mov r2, r0 | r2 = r0;
0x0002a5e0 ldr r0, [pc, 0x88] |
0x0002a5e2 movw r1, 0x459 | r1 = 0x459;
0x0002a5e6 ldr r3, [r4, 0x28] | r3 = *((r4 + 0x28));
0x0002a5e8 add r0, pc | r0 = 0x54c58;
0x0002a5ea orr r3, r3, 0x20 | r3 |= 0x20;
0x0002a5ee str r3, [r4, 0x28] | *((r4 + 0x28)) = r3;
0x0002a5f0 ldr r3, [pc, 0x7c] |
0x0002a5f2 add r3, pc | r3 = 0x54c66;
0x0002a5f4 bl 0x40ed8 | zbx_strdup2 ();
0x0002a5f8 ldr r3, [r5, -0x9c] | r3 = var_9ch;
0x0002a5fc str r0, [r4, 0x20] | *((r4 + 0x20)) = r0;
0x0002a5fe adds r3, 1 | r3++;
0x0002a600 str r3, [r5, -0x9c] | var_9ch = r3;
0x0002a604 b 0x2a4b2 | goto label_36;
| }
; assembly | /* r2dec pseudo code output */
| /* /logs/firmware/patool_extraction/rootfs.img_unblob_extracted/rootfs.img_extract/0-80367616.squashfs_v4_le_extract/usr/sbin/zabbix_agentd @ 0x2c300 */
| #include <stdint.h>
|
; (fcn) fcn.0002c300 () | void fcn_0002c300 (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_20h;
| int16_t var_34h;
| r0 = arg1;
0x0002c300 ldr r1, [pc, 0x150] |
0x0002c302 movs r3, 0 | r3 = 0;
0x0002c304 ldr r2, [pc, 0x150] | r2 = *(0x2c458);
0x0002c306 push.w {r4, r5, r6, r7, r8, sb, sl, fp, lr} |
0x0002c30a sub sp, 0x3c |
0x0002c30c add r1, pc | r1 = 0x58764;
0x0002c30e mov r5, r0 | r5 = r0;
0x0002c310 add r6, sp, 0x1c | r6 += var_1ch;
0x0002c312 adds r5, 1 | r5++;
0x0002c314 ldr r2, [r1, r2] |
0x0002c316 mov r0, r6 | r0 = r6;
0x0002c318 ldr.w r8, [pc, 0x140] |
0x0002c31c ldr r7, [pc, 0x140] |
0x0002c31e ldr r2, [r2] | r2 = *(0x58764);
0x0002c320 str r2, [sp, 0x34] | var_34h = r2;
0x0002c322 mov.w r2, 0 | r2 = 0;
0x0002c326 strd r3, r3, [sp, 0x14] | __asm ("strd r3, r3, [var_18h]");
0x0002c328 adds r3, 5 | r3 += 5;
0x0002c32a bl 0x32978 | zbx_vector_str_create ();
0x0002c32e movs r1, 0x2f | r1 = 0x2f;
0x0002c330 mov r0, r5 | r0 = r5;
0x0002c332 blx 0xdcd4 | fcn_0000dcd4 ();
0x0002c336 add r7, pc | r7 = 0x5879a;
0x0002c338 add r8, pc | r8 = 0x58798;
0x0002c33a mov r4, r0 | r4 = r0;
0x0002c33c mov r3, r5 | r3 = r5;
| if (r0 == 0) {
0x0002c33e cbz r0, 0x2c366 | goto label_4;
| }
| do {
0x0002c340 subs r2, r0, r5 | r2 = r0 - r5;
0x0002c342 mov r1, r8 | r1 = r8;
0x0002c344 movs r0, 0 | r0 = 0;
0x0002c346 adds r5, r4, 1 | r5 = r4 + 1;
0x0002c348 bl 0x44820 | r0 = zbx_dsprintf ()
0x0002c34c mov r1, r0 | r1 = r0;
0x0002c34e mov r0, r6 | r0 = r6;
0x0002c350 str r1, [sp, 0x10] | var_10h = r1;
0x0002c352 bl 0x32a08 | zbx_vector_str_append ();
0x0002c356 movs r1, 0x2f | r1 = 0x2f;
0x0002c358 mov r0, r5 | r0 = r5;
0x0002c35a blx 0xdcd4 | fcn_0000dcd4 ();
0x0002c35e mov r3, r5 | r3 = r5;
0x0002c360 mov r4, r0 | r4 = r0;
0x0002c362 cmp r0, 0 |
0x0002c364 bne 0x2c340 |
| } while (r0 != 0);
| label_4:
0x0002c366 mov r2, r0 | r2 = r0;
0x0002c368 ldr r0, [pc, 0xf8] |
0x0002c36a movw r1, 0x50c | r1 = 0x50c;
0x0002c36e add r0, pc | r0 = 0x587d6;
0x0002c370 bl 0x40ed8 | r0 = zbx_strdup2 ();
0x0002c374 mov r1, r0 | r1 = r0;
0x0002c376 mov r0, r6 | r0 = r6;
0x0002c378 str r1, [sp, 0x10] | var_10h = r1;
0x0002c37a bl 0x32a08 | zbx_vector_str_append ();
0x0002c37e ldr r5, [sp, 0x20] | r5 = var_20h;
0x0002c380 str r4, [sp, 0x10] | var_10h = r4;
0x0002c382 subs r5, 1 | r5--;
| if (r5 >= 1) {
0x0002c384 bpl 0x2c39c | goto label_1;
| }
0x0002c386 b 0x2c440 | goto label_5;
| do {
0x0002c388 ldrb r3, [r0, 1] | r3 = *((r0 + 1));
| if (r3 != 0) {
0x0002c38a cbnz r3, 0x2c3a8 | goto label_6;
| }
| label_0:
0x0002c38c blx 0xde30 | fcn_0000de30 ();
0x0002c390 mov r1, r5 | r1 = r5;
0x0002c392 mov r0, r6 | r0 = r6;
0x0002c394 bl 0x32b50 | zbx_vector_str_remove ();
| label_2:
0x0002c398 subs r5, 1 | r5--;
| if (r5 <= 1) {
0x0002c39a blo 0x2c3d2 | goto label_7;
| }
| label_1:
0x0002c39c ldr r3, [sp, 0x1c] | r3 = var_1ch;
0x0002c39e ldr.w r0, [r3, r5, lsl 2] | offset_0 = r5 << 2;
| r0 = *((r3 + offset_0));
0x0002c3a2 ldrb r3, [r0] | r3 = *(r0);
0x0002c3a4 cmp r3, 0x2e |
0x0002c3a6 beq 0x2c388 |
| } while (r3 == 0x2e);
| label_6:
0x0002c3a8 ldrb r3, [r0] | r3 = *(r0);
0x0002c3aa cmp r3, 0 |
| if (r3 == 0) {
0x0002c3ac beq 0x2c38c | goto label_0;
| }
0x0002c3ae cmp r3, 0x2e |
| if (r3 != 0x2e) {
0x0002c3b0 bne 0x2c438 | goto label_8;
| }
0x0002c3b2 ldrb r3, [r0, 1] | r3 = *((r0 + 1));
0x0002c3b4 cmp r3, 0x2e |
| if (r3 != 0x2e) {
0x0002c3b6 bne 0x2c438 | goto label_8;
| }
0x0002c3b8 ldrb r3, [r0, 2] | r3 = *((r0 + 2));
0x0002c3ba cmp r3, 0 |
| if (r3 != 0) {
0x0002c3bc bne 0x2c438 | goto label_8;
| }
0x0002c3be blx 0xde30 | fcn_0000de30 ();
0x0002c3c2 mov r1, r5 | r1 = r5;
0x0002c3c4 mov r0, r6 | r0 = r6;
0x0002c3c6 bl 0x32b50 | zbx_vector_str_remove ();
0x0002c3ca subs r5, 1 | r5--;
0x0002c3cc add.w r4, r4, 1 | r4++;
| if (r5 >= 1) {
0x0002c3d0 bhs 0x2c39c | goto label_1;
| }
| label_7:
0x0002c3d2 ldr r3, [sp, 0x20] | r3 = var_20h;
0x0002c3d4 cmp r3, 0 |
| if (r3 <= 0) {
0x0002c3d6 ble 0x2c440 | goto label_5;
| }
0x0002c3d8 ldr.w sb, [pc, 0x8c] | sb = *(0x0002c468);
0x0002c3dc movs r4, 0 | r4 = 0;
0x0002c3de add.w fp, sp, 0x18 |
0x0002c3e2 add.w sl, sp, 0x14 | sl += var_14h;
0x0002c3e6 add.w r8, sp, 0x10 | r8 += var_10h;
0x0002c3ea add sb, pc | sb += pc;
| do {
0x0002c3ec ldr r5, [sp, 0x1c] | r5 = var_1ch;
0x0002c3ee mov r3, sb | r3 = sb;
0x0002c3f0 mov r2, fp | r2 = fp;
0x0002c3f2 mov r1, sl | r1 = sl;
0x0002c3f4 mov r0, r8 | r0 = r8;
0x0002c3f6 ldr.w r5, [r5, r4, lsl 2] | offset_1 = r4 << 2;
| r5 = *((r5 + offset_1));
0x0002c3fa adds r4, 1 | r4++;
0x0002c3fc str r5, [sp] | *(sp) = r5;
0x0002c3fe bl 0x43fb4 | zbx_snprintf_alloc ();
0x0002c402 ldr r3, [sp, 0x20] | r3 = var_20h;
0x0002c404 cmp r3, r4 |
0x0002c406 bgt 0x2c3ec |
| } while (r3 > r4);
| label_3:
0x0002c408 ldr r3, [pc, 0x60] | r3 = *(0x2c46c);
0x0002c40a mov r0, r6 | r0 = r6;
0x0002c40c ldr r3, [r7, r3] | r3 = *((r7 + r3));
0x0002c40e mov r1, r3 | r1 = r3;
0x0002c410 str r3, [sp, 0xc] | var_ch = r3;
0x0002c412 bl 0x32de8 | zbx_vector_str_clear_ext ();
0x0002c416 mov r0, r6 | r0 = r6;
0x0002c418 bl 0x329d8 | zbx_vector_str_destroy ();
0x0002c41c ldr r2, [pc, 0x50] |
0x0002c41e ldr r3, [pc, 0x38] | r3 = *(0x2c45a);
0x0002c420 ldr r0, [sp, 0x10] | r0 = var_10h;
0x0002c422 add r2, pc | r2 = 0x58896;
0x0002c424 ldr r3, [r2, r3] | r3 = *(0x58896);
0x0002c426 ldr r2, [r3] | r2 = *(0x58896);
0x0002c428 ldr r3, [sp, 0x34] | r3 = var_34h;
0x0002c42a eors r2, r3 | r2 ^= r3;
0x0002c42c mov.w r3, 0 | r3 = 0;
| if (r2 != r3) {
0x0002c430 bne 0x2c450 | goto label_9;
| }
0x0002c432 add sp, 0x3c |
0x0002c434 pop.w {r4, r5, r6, r7, r8, sb, sl, fp, pc} |
| label_8:
0x0002c438 cmp r4, 0 |
| if (r4 == 0) {
0x0002c43a beq 0x2c398 | goto label_2;
| }
0x0002c43c subs r4, 1 | r4--;
0x0002c43e b 0x2c38c | goto label_0;
| label_5:
0x0002c440 ldr r3, [pc, 0x30] |
0x0002c442 add r2, sp, 0x18 | r2 += var_18h;
0x0002c444 add r1, sp, 0x14 | r1 += var_14h;
0x0002c446 add r0, sp, 0x10 | r0 += var_10h;
0x0002c448 add r3, pc | r3 = 0x588c0;
0x0002c44a bl 0x43fb4 | zbx_snprintf_alloc ();
0x0002c44e b 0x2c408 | goto label_3;
| label_9:
0x0002c450 blx 0xe158 | fcn_0000e158 ();
0x0002c454 str.w r0, [ip, 2] | __asm ("str.w r0, [ip, 2]");
0x0002c458 lsls r4, r2, 0xe | r4 = r2 << 0xe;
0x0002c45a movs r0, r0 |
0x0002c45c lsrs r0, r7, 0xf | r0 = r7 >> 0xf;
0x0002c45e movs r2, r0 | r2 = r0;
0x0002c460 strh.w r0, [r2, 2] | *((r2 + 2)) = r0;
0x0002c464 strb r2, [r2, 5] | *((r2 + 5)) = r2;
0x0002c466 movs r2, r0 | r2 = r0;
0x0002c468 ldr r3, [pc, 0x328] | r3 = *(0x2c794);
0x0002c46a movs r2, r0 | r2 = r0;
0x0002c46c lsls r0, r0, 0xe | r0 <<= 0xe;
0x0002c46e movs r0, r0 |
0x0002c470 invalid |
| }
; assembly | /* r2dec pseudo code output */
| /* /logs/firmware/patool_extraction/rootfs.img_unblob_extracted/rootfs.img_extract/0-80367616.squashfs_v4_le_extract/usr/sbin/zabbix_agentd @ 0x2c478 */
| #include <stdint.h>
|
; (fcn) fcn.0002c478 () | void fcn_0002c478 (int16_t arg1, int16_t arg2, int16_t arg3, int16_t arg4) {
| int32_t var_0h_2;
| int32_t var_0h_3;
| int32_t var_14h_2;
| int32_t var_14h;
| int16_t var_10h;
| int32_t var_ch;
| int16_t var_8h;
| int32_t var_4h;
| int16_t var_20h;
| int16_t var_24h;
| int16_t var_1000h;
| int32_t var_0h;
| int16_t var_1020h;
| r0 = arg1;
| r1 = arg2;
| r2 = arg3;
| r3 = arg4;
0x0002c478 mvnsmi lr, 0xb4000 | __asm ("mvnsmi lr, 0xb4000");
0x0002c47c sub.w sp, sp, 0x1020 |
0x0002c480 ldr r6, [pc, 0x18c] |
0x0002c482 sub sp, 4 |
0x0002c484 add.w r7, sp, 0x1000 | r7 += var_1000h;
0x0002c488 mov r8, r1 | r8 = r1;
0x0002c48a ldr r4, [pc, 0x188] | r4 = *(0x2c616);
0x0002c48c adds r7, 0x1c | r7 += 0x1c;
0x0002c48e add r6, pc | r6 = 0x58aa2;
0x0002c490 ldr r4, [r6, r4] |
0x0002c492 mov r6, r3 | r6 = r3;
0x0002c494 ldrb r3, [r0] | r3 = *(r0);
0x0002c496 ldr r4, [r4] | r4 = *(0x58aa2);
0x0002c498 str r4, [r7] | *(r7) = r4;
0x0002c49a mov.w r4, 0 | r4 = 0;
0x0002c49e mov r7, r2 | r7 = r2;
0x0002c4a0 cmp r3, 0x2f |
| if (r3 == 0x2f) {
0x0002c4a2 beq.w 0x2c600 | goto label_3;
| }
0x0002c4a6 add r4, sp, 0x20 | r4 += var_20h;
0x0002c4a8 movs r3, 0 | r3 = 0;
0x0002c4aa sub.w sb, r4, 8 | sb -= var_8h;
0x0002c4ae mov r5, r0 | r5 = r0;
0x0002c4b0 mov.w r1, 0x1000 | r1 = 0x1000;
0x0002c4b4 mov r0, sb | r0 = sb;
0x0002c4b6 strd r3, r3, [r4, -0x14] | __asm ("strd r3, r3, [var_14h]");
0x0002c4ba str r3, [r4, -0xc] | var_ch = r3;
0x0002c4be blx 0xe1ac | r0 = fcn_0000e1ac ();
0x0002c4c2 cmp r0, 0 |
| if (r0 == 0) {
0x0002c4c4 beq.w 0x2c5fa | goto label_4;
| }
0x0002c4c8 ldr r2, [r4, -0x8] | r2 = *((r4 - 0x8));
0x0002c4cc movw r3, 0x7528 |
0x0002c4d0 movt r3, 0x726e | r3 = 0x726e7528;
0x0002c4d4 cmp r2, r3 |
| if (r2 == r3) {
0x0002c4d6 beq 0x2c5ce | goto label_5;
| }
| label_0:
0x0002c4d8 ldr r3, [pc, 0x13c] |
0x0002c4da sub.w r2, r4, 0xc | r2 -= var_ch;
0x0002c4de sub.w r1, r4, 0x10 | r1 -= var_10h;
0x0002c4e2 sub.w r0, r4, 0x14 | r0 -= var_14h;
0x0002c4e6 strd sb, r5, [sp] | __asm ("strd sb, r5, [sp]");
0x0002c4ea add r3, pc | r3 = 0x58b06;
0x0002c4ec bl 0x43fb4 | zbx_snprintf_alloc ();
0x0002c4f0 ldr r0, [r4, -0x14] | r0 = var_14h;
0x0002c4f4 bl 0x2c300 | fcn_0002c300 (r0);
0x0002c4f8 ldr r3, [r4, -0x14] | r3 = var_14h;
0x0002c4fc mov r5, r0 | r5 = r0;
0x0002c4fe str r0, [r6] | *(r6) = r0;
| if (r3 != 0) {
0x0002c500 cbz r3, 0x2c50a |
0x0002c502 mov r0, r3 | r0 = r3;
0x0002c504 blx 0xde30 | fcn_0000de30 ();
0x0002c508 ldr r5, [r6] | r5 = *(r6);
| }
| label_2:
0x0002c50a movs r1, 0x2f | r1 = 0x2f;
0x0002c50c mov r0, r5 | r0 = r5;
0x0002c50e mov r4, r5 | r4 = r5;
0x0002c510 blx 0xdcd4 | r0 = fcn_0000dcd4 ();
| if (r0 == 0) {
0x0002c514 cbz r0, 0x2c538 | goto label_6;
| }
| do {
0x0002c516 blx 0xdf68 | r0 = fcn_0000df68 ();
0x0002c51a mov sb, r0 | sb = r0;
0x0002c51c mov r0, r4 | r0 = r4;
0x0002c51e blx 0xdf68 | r0 = fcn_0000df68 ();
0x0002c522 add.w ip, r0, 1 |
0x0002c526 movs r1, 0x2f | r1 = 0x2f;
0x0002c528 sub.w r0, ip, sb | r0 = ip - sb;
0x0002c52c add r4, r0 | r4 += r0;
0x0002c52e mov r0, r4 | r0 = r4;
0x0002c530 blx 0xdcd4 | r0 = fcn_0000dcd4 ();
0x0002c534 cmp r0, 0 |
0x0002c536 bne 0x2c516 |
| } while (r0 != 0);
| label_6:
0x0002c538 ldrb r2, [r4] | r2 = *(r4);
0x0002c53a cmp r2, 0 |
| if (r2 == 0) {
0x0002c53c beq 0x2c5be | goto label_7;
| }
0x0002c53e ldr r0, [pc, 0xdc] |
0x0002c540 mov r3, r4 | r3 = r4;
0x0002c542 movs r2, 0 | r2 = 0;
0x0002c544 movw r1, 0x56f | r1 = 0x56f;
0x0002c548 add r0, pc | r0 = 0x58b6a;
0x0002c54a bl 0x40ed8 | zbx_strdup2 ();
| do {
0x0002c54e str.w r0, [r8] | __asm ("str.w r0, [r8]");
0x0002c552 movs r2, 0 | r2 = 0;
0x0002c554 ldr r0, [pc, 0xc8] |
0x0002c556 movw r1, 0x571 | r1 = 0x571;
0x0002c55a ldr r3, [r6] | r3 = *(r6);
0x0002c55c add r0, pc | r0 = 0x58b80;
0x0002c55e bl 0x40ed8 | r0 = zbx_strdup2 ();
0x0002c562 mov r5, r0 | r5 = r0;
0x0002c564 ldr r0, [r6] | r0 = *(r6);
0x0002c566 blx 0xdf68 | r0 = fcn_0000df68 ();
0x0002c56a mov r3, r0 | r3 = r0;
0x0002c56c mov r0, r4 | r0 = r4;
0x0002c56e mov r4, r3 | r4 = r3;
0x0002c570 blx 0xdf68 | fcn_0000df68 ();
0x0002c574 ldr r1, [pc, 0xac] |
0x0002c576 subs r3, r4, r0 | r3 = r4 - r0;
0x0002c578 cmp r3, 1 |
0x0002c57a mov.w r0, 0 | r0 = 0;
0x0002c57e it ne |
| if (r3 == 1) {
0x0002c580 addne r3, r3, -1 | r3 += -1;
| }
0x0002c584 mov r2, r5 | r2 = r5;
0x0002c586 add r1, pc | r1 = 0x58bae;
0x0002c588 strb r0, [r5, r3] | *((r5 + r3)) = r0;
0x0002c58a bl 0x44820 | zbx_dsprintf ()
0x0002c58e str r0, [r7] | *(r7) = r0;
| if (r5 != 0) {
0x0002c590 cbz r5, 0x2c598 |
0x0002c592 mov r0, r5 | r0 = r5;
0x0002c594 blx 0xde30 | fcn_0000de30 ();
| }
0x0002c598 movs r0, 0 | r0 = 0;
| label_1:
0x0002c59a ldr r2, [pc, 0x8c] |
0x0002c59c add.w r1, sp, 0x1000 | r1 += var_1000h;
0x0002c5a0 ldr r3, [pc, 0x70] | r3 = *(0x2c614);
0x0002c5a2 adds r1, 0x1c | r1 += 0x1c;
0x0002c5a4 add r2, pc | r2 = 0x58bd2;
0x0002c5a6 ldr r3, [r2, r3] | r3 = *(0x58bd2);
0x0002c5a8 ldr r2, [r3] | r2 = *(0x58bd2);
0x0002c5aa ldr r3, [r1] | r3 = *(r1);
0x0002c5ac eors r2, r3 | r2 ^= r3;
0x0002c5ae mov.w r3, 0 | r3 = 0;
| if (r2 != r3) {
0x0002c5b2 bne 0x2c60a | goto label_8;
| }
0x0002c5b4 add.w sp, sp, 0x1020 |
0x0002c5b8 add sp, 4 |
0x0002c5ba pop.w {r4, r5, r6, r7, r8, sb, pc} |
| label_7:
0x0002c5be ldr r0, [pc, 0x6c] |
0x0002c5c0 mov r3, r5 | r3 = r5;
0x0002c5c2 movw r1, 0x56d | r1 = 0x56d;
0x0002c5c6 add r0, pc | r0 = 0x58bf8;
0x0002c5c8 bl 0x40ed8 | zbx_strdup2 ();
0x0002c5cc b 0x2c54e |
| } while (1);
| label_5:
0x0002c5ce ldr r2, [r4, -0x4] | r2 = *((r4 - 0x4));
0x0002c5d2 movw r3, 0x6165 |
0x0002c5d6 movt r3, 0x6863 | r3 = 0x68636165;
0x0002c5da cmp r2, r3 |
| if (r2 != r3) {
0x0002c5dc bne.w 0x2c4d8 | goto label_0;
| }
0x0002c5e0 ldr r2, [r4] | r2 = *(r4);
0x0002c5e2 movw r3, 0x6261 |
0x0002c5e6 movt r3, 0x656c | r3 = 0x656c6261;
0x0002c5ea cmp r2, r3 |
| if (r2 != r3) {
0x0002c5ec bne.w 0x2c4d8 | goto label_0;
| }
0x0002c5f0 ldrb.w r3, [sp, 0x24] | r3 = var_24h;
0x0002c5f4 cmp r3, 0x29 |
| if (r3 != 0x29) {
0x0002c5f6 bne.w 0x2c4d8 | goto label_0;
| }
| label_4:
0x0002c5fa mov.w r0, -1 | r0 = -1;
0x0002c5fe b 0x2c59a | goto label_1;
| label_3:
0x0002c600 bl 0x2c300 | r0 = fcn_0002c300 (r0);
0x0002c604 mov r5, r0 | r5 = r0;
0x0002c606 str r0, [r6] | *(r6) = r0;
0x0002c608 b 0x2c50a | goto label_2;
| label_8:
0x0002c60a blx 0xe158 | fcn_0000e158 ();
0x0002c60e nop |
0x0002c610 sbfx r0, sl, 0, 3 | __asm ("sbfx r0, sl, 0, 3");
0x0002c614 lsls r4, r2, 0xe | r4 = r2 << 0xe;
0x0002c616 movs r0, r0 |
0x0002c618 subs r6, 0x8e | r6 -= 0x8e;
0x0002c61a movs r2, r0 | r2 = r0;
0x0002c61c ldr r0, [r7, 0x74] | r0 = *((r7 + 0x74));
0x0002c61e movs r2, r0 | r2 = r0;
0x0002c620 ldr r4, [r4, 0x74] | r4 = *((r4 + 0x74));
0x0002c622 movs r2, r0 | r2 = r0;
0x0002c624 movs r6, 0xfa | r6 = 0xfa;
0x0002c626 movs r2, r0 | r2 = r0;
0x0002c628 invalid |
| }
; assembly | /* r2dec pseudo code output */
| /* /logs/firmware/patool_extraction/rootfs.img_unblob_extracted/rootfs.img_extract/0-80367616.squashfs_v4_le_extract/usr/sbin/zabbix_agentd @ 0x2e780 */
| #include <stdint.h>
|
; (fcn) fcn.0002e780 () | void fcn_0002e780 (int16_t arg1, int16_t arg2, int16_t arg3, int16_t arg4) {
| int16_t var_0h;
| int16_t var_4h;
| int32_t var_8h;
| int32_t var_8h_2;
| int16_t var_18h;
| int16_t var_10h;
| int16_t var_0h_3;
| int32_t var_ch;
| int16_t var_28h;
| int16_t var_dc4h;
| int32_t var_4h_2;
| int16_t var_15c0h;
| int32_t var_0h_2;
| r0 = arg1;
| r1 = arg2;
| r2 = arg3;
| r3 = arg4;
| if (? >= ?) {
0x0002e780 ldrbmi lr, [r0, sp, lsr 18]! |
| }
0x0002e784 sub.w sp, sp, 0x15c0 |
0x0002e788 ldr r5, [pc, 0x1fc] |
0x0002e78a sub sp, 8 |
0x0002e78c add.w r6, sp, 0x15c0 | r6 += var_15c0h;
0x0002e790 mov.w r8, 1 | r8 = 1;
0x0002e794 ldr r4, [pc, 0x1f4] | r4 = *(0x2e98c);
0x0002e796 adds r6, 4 | r6 += 4;
0x0002e798 add r5, pc | r5 = 0x5d124;
0x0002e79a ldr.w ip, [pc, 0x1f4] |
0x0002e79e mov r7, r0 | r7 = r0;
0x0002e7a0 add.w sl, sp, 0x28 | sl += var_28h;
0x0002e7a4 ldr r4, [r5, r4] |
0x0002e7a6 mov r5, r2 | r5 = r2;
0x0002e7a8 mov r2, r1 | r2 = r1;
0x0002e7aa ldr r1, [pc, 0x1e8] | r1 = *(0x2e996);
0x0002e7ac add ip, pc | ip = 0x5d142;
0x0002e7ae sub.w sb, sl, 0x10 | sb -= var_10h;
0x0002e7b2 ldr r4, [r4] | r4 = imp.__aeabi_unwind_cpp_pr0;
0x0002e7b4 str r4, [r6] | *(r6) = r4;
0x0002e7b6 mov.w r4, 0 | r4 = 0;
0x0002e7ba mov r4, r3 | r4 = r3;
0x0002e7bc ldr.w r1, [ip, r1] |
0x0002e7c0 mov r3, r5 | r3 = r5;
0x0002e7c2 ldr r5, [pc, 0x1d4] | r5 = *(0x2e99a);
0x0002e7c4 movs r6, 0 | r6 = 0;
0x0002e7c6 ldr r1, [r1] | r1 = imp.__aeabi_unwind_cpp_pr0;
0x0002e7c8 strd r6, r6, [sp, 8] | __asm ("strd r6, r6, [var_8h]");
0x0002e7cc str.w r8, [sp, 4] | __asm ("str.w r8, [var_4h]");
0x0002e7d0 ldr.w r0, [ip, r5] |
0x0002e7d4 ldr r0, [r0] | r0 = imp.__aeabi_unwind_cpp_pr0;
0x0002e7d6 str r0, [sp] | *(sp) = r0;
0x0002e7d8 mov r0, sb | r0 = sb;
0x0002e7da bl 0x369e4 | r0 = zbx_tcp_connect ();
0x0002e7de cmp r0, 0 |
| if (r0 == 0) {
0x0002e7e0 bne 0x2e87a |
0x0002e7e2 ldr r6, [r7] | r6 = *(r7);
0x0002e7e4 mov r5, r0 | r5 = r0;
0x0002e7e6 mov r0, r6 | r0 = r6;
0x0002e7e8 blx 0xdf68 | fcn_0000df68 ();
0x0002e7ec mov r1, r6 | r1 = r6;
0x0002e7ee mov r2, r0 | r2 = r0;
0x0002e7f0 mov r3, r5 | r3 = r5;
0x0002e7f2 mov r0, sb | r0 = sb;
0x0002e7f4 str.w r8, [sp] | __asm ("str.w r8, [sp]");
0x0002e7f8 str r5, [sp, 4] | var_4h = r5;
0x0002e7fa bl 0x36a4c | r0 = zbx_tcp_send_ext ();
0x0002e7fe mov r6, r0 | r6 = r0;
| if (r0 != 0) {
0x0002e800 cbz r0, 0x2e848 |
0x0002e802 ldr r3, [r4, 0x28] | r3 = *((r4 + 0x28));
| }
0x0002e848 mov r2, r0 | r2 = r0;
0x0002e84a mov r1, r0 | r1 = r0;
0x0002e84c mov r0, sb | r0 = sb;
0x0002e84e bl 0x3760c | zbx_tcp_recv_ext ();
0x0002e852 adds r0, 1 | r0++;
| if (r0 == 1) {
0x0002e854 beq 0x2e896 | goto label_0;
| }
0x0002e856 ldr.w r0, [sb, 0xc] | r0 = var_ch;
| if (r0 == 0) {
0x0002e85a cbz r0, 0x2e896 | goto label_0;
| }
0x0002e85c ldrb r2, [r0] | r2 = *(r0);
| if (r2 != 0) {
0x0002e85e cbnz r2, 0x2e8b2 | goto label_1;
| }
0x0002e860 ldr r1, [r4, 0x28] | r1 = *((r4 + 0x28));
0x0002e862 ldr r3, [pc, 0x140] |
0x0002e864 ldr r0, [pc, 0x140] |
0x0002e866 orr r1, r1, 0x20 | r1 |= 0x20;
0x0002e86a str r1, [r4, 0x28] | *((r4 + 0x28)) = r1;
0x0002e86c add r3, pc | r3 = 0x5d216;
0x0002e86e add r0, pc | r0 = 0x5d21a;
0x0002e870 movs r1, 0x5c | r1 = 0x5c;
0x0002e872 bl 0x40ed8 | zbx_strdup2 ();
0x0002e876 str r0, [r4, 0x20] | *((r4 + 0x20)) = r0;
0x0002e878 b 0x2e81c | void (*0x2e81c)() ();
| }
0x0002e87a ldr r3, [r4, 0x28] | r3 = *((r4 + 0x28));
0x0002e87c orr r3, r3, 0x20 | r3 |= 0x20;
0x0002e880 str r3, [r4, 0x28] | *((r4 + 0x28)) = r3;
0x0002e882 bl 0x36860 | zbx_socket_strerror ();
0x0002e886 ldr r1, [pc, 0x124] |
0x0002e888 mov r2, r0 | r2 = r0;
0x0002e88a mov r0, r6 | r0 = r6;
0x0002e88c add r1, pc | r1 = 0x5d23e;
0x0002e88e bl 0x44820 | zbx_dsprintf ()
0x0002e892 str r0, [r4, 0x20] | *((r4 + 0x20)) = r0;
0x0002e894 b 0x2e822 | void (*0x2e822)() ();
| label_0:
0x0002e896 ldr r3, [r4, 0x28] | r3 = *((r4 + 0x28));
0x0002e898 orr r3, r3, 0x20 | r3 |= 0x20;
0x0002e89c str r3, [r4, 0x28] | *((r4 + 0x28)) = r3;
0x0002e89e bl 0x36860 | zbx_socket_strerror ();
0x0002e8a2 ldr r1, [pc, 0x10c] |
0x0002e8a4 mov r2, r0 | r2 = r0;
0x0002e8a6 movs r0, 0 | r0 = 0;
0x0002e8a8 add r1, pc | r1 = 0x5d25e;
0x0002e8aa bl 0x44820 | zbx_dsprintf ()
0x0002e8ae str r0, [r4, 0x20] | *((r4 + 0x20)) = r0;
0x0002e8b0 b 0x2e81c | void (*0x2e81c)() ();
| label_1:
0x0002e8b2 sub.w sl, sl, 0x18 | sl -= var_18h;
0x0002e8b6 mov r1, sl | r1 = sl;
0x0002e8b8 bl 0x3af9c | r0 = zbx_json_open ();
0x0002e8bc mov r7, r0 | r7 = r0;
0x0002e8be cmp r0, 0 |
| if (r0 != 0) {
0x0002e8c0 bne 0x2e94e | goto label_2;
| }
0x0002e8c2 ldr.w r8, [pc, 0xf0] |
0x0002e8c6 addw r6, sp, 0xdc4 | __asm ("addw r6, var_dc4h");
0x0002e8ca str r0, [sp] | *(sp) = r0;
0x0002e8cc mov.w r3, 0x800 | r3 = 0x800;
0x0002e8d0 mov r2, r6 | r2 = r6;
0x0002e8d2 mov r0, sl | r0 = sl;
0x0002e8d4 add r8, pc | r8 = 0x5d28e;
0x0002e8d6 mov r1, r8 | r1 = r8;
0x0002e8d8 bl 0x3b3dc | r0 = zbx_json_value_by_name ();
0x0002e8dc cmp r0, 0 |
| if (r0 != 0) {
0x0002e8de bne 0x2e96a | goto label_3;
| }
0x0002e8e0 ldr r2, [r6] | r2 = *(r6);
0x0002e8e2 movw r3, 0x7573 |
0x0002e8e6 movt r3, 0x6363 | r3 = 0x63637573;
0x0002e8ea cmp r2, r3 |
0x0002e8ec beq 0x2e932 |
| while (r2 != r3) {
0x0002e8ee ldr r7, [pc, 0xc8] | r7 = *(0x2e9ba);
0x0002e8f0 movs r5, 0 | r5 = 0;
0x0002e8f2 mov.w r3, 0x800 | r3 = 0x800;
0x0002e8f6 mov r0, sl | r0 = sl;
0x0002e8f8 mov r2, r6 | r2 = r6;
0x0002e8fa str r5, [sp] | *(sp) = r5;
0x0002e932 ldr r2, [r6, 4] | r2 = var_4h_2;
0x0002e934 movw r3, 0x7365 |
0x0002e938 movt r3, 0x73 | r3 = 0x737365;
0x0002e93c cmp r2, r3 |
0x0002e93e bne 0x2e8ee |
| }
0x0002e940 ldr.w r2, [sb, 0xc] | r2 = var_ch;
0x0002e944 movs r1, 4 | r1 = 4;
0x0002e946 mov r0, r4 | r0 = r4;
0x0002e948 bl 0x1cd48 | set_result_type ();
0x0002e94c b 0x2e81c | void (*0x2e81c)() ();
| label_2:
0x0002e94e ldr r1, [r4, 0x28] | r1 = *((r4 + 0x28));
0x0002e950 mov r2, r6 | r2 = r6;
0x0002e952 ldr r3, [pc, 0x70] |
0x0002e954 ldr r0, [pc, 0x70] |
0x0002e956 orr r1, r1, 0x20 | r1 |= 0x20;
0x0002e95a str r1, [r4, 0x28] | *((r4 + 0x28)) = r1;
0x0002e95c add r3, pc | r3 = 0x5d326;
0x0002e95e add r0, pc | r0 = 0x5d32a;
0x0002e960 movs r1, 0x2d | r1 = 0x2d;
0x0002e962 bl 0x40ed8 | zbx_strdup2 ();
0x0002e966 str r0, [r4, 0x20] | *((r4 + 0x20)) = r0;
0x0002e968 b 0x2e81c | void (*0x2e81c)() ();
| label_3:
0x0002e96a ldr r3, [r4, 0x28] | r3 = *((r4 + 0x28));
0x0002e96c mov r2, r8 | r2 = r8;
0x0002e96e ldr r1, [pc, 0x5c] |
0x0002e970 mov r0, r7 | r0 = r7;
0x0002e972 orr r3, r3, 0x20 | r3 |= 0x20;
0x0002e976 add r1, pc | r1 = 0x5d348;
0x0002e978 str r3, [r4, 0x28] | *((r4 + 0x28)) = r3;
0x0002e97a bl 0x44820 | zbx_dsprintf ()
0x0002e97e str r0, [r4, 0x20] | *((r4 + 0x20)) = r0;
0x0002e980 b 0x2e81c | return void (*0x2e81c)() ();
| }
; assembly | /* r2dec pseudo code output */
| /* /logs/firmware/patool_extraction/rootfs.img_unblob_extracted/rootfs.img_extract/0-80367616.squashfs_v4_le_extract/usr/sbin/zabbix_agentd @ 0x2ecf0 */
| #include <stdint.h>
|
; (fcn) fcn.0002ecf0 () | void fcn_0002ecf0 (int16_t arg1, int16_t arg2, int16_t arg3, int16_t arg4) {
| int16_t var_14h_2;
| int16_t var_18h_3;
| int16_t var_4h_3;
| int16_t var_dd8h;
| int16_t var_dfch_2;
| int16_t var_dfch;
| int16_t var_e28h;
| r0 = arg1;
| r1 = arg2;
| r2 = arg3;
| r3 = arg4;
0x0002ecf0 push.w {r4, r5, r6, r7, r8, sb, sl, fp, lr} |
0x0002ecf4 mov r7, r2 | r7 = r2;
0x0002ecf6 subw sp, sp, 0xe04 | __asm ("subw sp, sp, 0xe04");
0x0002ecfa ldr.w r2, [pc, 0x518] |
0x0002ecfe mov r5, r1 | r5 = r1;
0x0002ed00 addw sb, sp, 0xdd8 | __asm ("addw sb, var_dd8h");
0x0002ed04 str r3, [sp, 0x18] | var_18h_3 = r3;
0x0002ed06 mov ip, sb |
0x0002ed08 ldr.w r4, [sp, 0xe28] | r4 = var_e28h;
0x0002ed0c add r2, pc | r2 = 0x5df26;
0x0002ed0e ldr.w r3, [pc, 0x508] | r3 = *(0x2f21a);
0x0002ed12 add r6, sp, 0x28 | r6 += var_4h_3;
0x0002ed14 ldr.w lr, [pc, 0x504] |
0x0002ed18 mov.w fp, 0 |
0x0002ed1c str r4, [sp, 0x14] | var_14h_2 = r4;
0x0002ed1e mov r4, r0 | r4 = r0;
0x0002ed20 ldr r3, [r2, r3] |
0x0002ed22 add lr, pc | lr += pc;
0x0002ed24 ldr.w sl, [pc, 0x4f8] | sl = *(0x0002f220);
0x0002ed28 ldr r3, [r3] | r3 = imp.__aeabi_unwind_cpp_pr0;
0x0002ed2a str.w r3, [sp, 0xdfc] | __asm ("str.w r3, [var_dfch_2]");
0x0002ed2e mov.w r3, 0 | r3 = 0;
0x0002ed32 ldm.w lr!, {r0, r1, r2, r3} | r0 = *(lr!);
| r1 = *((lr! + 4));
| r2 = *((lr! + 8));
| r3 = *((lr! + 12));
0x0002ed36 add sl, pc | sl += pc;
0x0002ed38 str.w fp, [r6] | __asm ("str.w fp, [r6]");
0x0002ed3c stm.w ip!, {r0, r1, r2, r3} | *(ip!) = r0;
| *((ip! + 4)) = r1;
| *((ip! + 8)) = r2;
| *((ip! + 12)) = r3;
0x0002ed40 ldm.w lr!, {r0, r1, r2, r3} | r0 = *(lr!);
| r1 = *((lr! + 4));
| r2 = *((lr! + 8));
| r3 = *((lr! + 12));
0x0002ed44 stm.w ip!, {r0, r1, r2, r3} | *(ip!) = r0;
| *((ip! + 4)) = r1;
| *((ip! + 8)) = r2;
| *((ip! + 12)) = r3;
0x0002ed48 ldr.w r3, [lr] | r3 = *(lr);
0x0002ed4c strb.w r3, [ip] | *(ip) = r3;
0x0002ed50 cmp r4, 0 |
| if (r4 == 0) {
0x0002ed52 beq.w 0x2f1b6 | goto label_1;
| }
0x0002ed56 ldrb r3, [r4] | r3 = *(r4);
0x0002ed58 cmp r3, 0 |
| if (r3 == 0) {
0x0002ed5a beq.w 0x2f1b6 | goto label_1;
| }
0x0002ed5e mov r1, sb | r1 = sb;
0x0002ed60 mov r0, r4 | r0 = r4;
0x0002ed62 blx 0xe388 | r0 = fcn_0000e388 ();
0x0002ed66 mov r8, r0 | r8 = r0;
0x0002ed68 cmp r0, 0 |
| if (r0 != 0) {
0x0002ed6a bne.w 0x2f1cc | goto label_2;
| }
| if (r5 != 0) {
0x0002ed6e cbz r5, 0x2ed7e |
0x0002ed70 mov r1, sb | r1 = sb;
0x0002ed72 mov r0, r5 | r0 = r5;
0x0002ed74 blx 0xe388 | r0 = fcn_0000e388 ();
0x0002ed78 cmp r0, 0 |
| if (r0 != 0) {
0x0002ed7a bne.w 0x2f1e6 | goto label_3;
| }
| }
0x0002ed7e ldr.w r1, [pc, 0x4a4] |
0x0002ed82 mov r0, r4 | r0 = r4;
0x0002ed84 add r1, pc | r1 = 0x5dfae;
0x0002ed86 blx 0xe388 | fcn_0000e388 ();
| do {
0x0002ef64 ldr r2, [pc, 0x2ec] |
0x0002ef66 ldr r3, [pc, 0x2b0] | r3 = *(0x2f21a);
0x0002ef68 add r2, pc | r2 = 0x5e1c0;
0x0002ef6a ldr r3, [r2, r3] | r3 = imp.__aeabi_unwind_cpp_pr0;
0x0002ef6c ldr r2, [r3] | r2 = imp.__aeabi_unwind_cpp_pr0;
0x0002ef6e ldr.w r3, [sp, 0xdfc] | r3 = var_dfch;
0x0002ef72 eors r2, r3 | r2 ^= r3;
0x0002ef74 mov.w r3, 0 | r3 = 0;
| if (r2 != r3) {
0x0002ef78 bne.w 0x2f20e | goto label_4;
| }
0x0002ef7c mov r0, r4 | r0 = r4;
0x0002ef7e addw sp, sp, 0xe04 | __asm ("addw sp, sp, 0xe04");
0x0002ef82 pop.w {r4, r5, r6, r7, r8, sb, sl, fp, pc} |
| label_0:
0x0002f108 movs r4, 1 | r4 = 1;
0x0002f10a b 0x2ef64 |
| } while (1);
| label_1:
0x0002f1b6 ldr r4, [sp, 0x14] | r4 = var_14h_2;
0x0002f1b8 movs r1, 0x6b | r1 = 0x6b;
0x0002f1ba ldr r3, [pc, 0x100] |
0x0002f1bc ldr r0, [pc, 0x100] |
0x0002f1be ldr r2, [r4] | r2 = *(r4);
0x0002f1c0 add r3, pc | r3 = 0x5e482;
0x0002f1c2 add r0, pc | r0 = 0x5e486;
0x0002f1c4 bl 0x40ed8 | zbx_strdup2 ();
0x0002f1c8 str r0, [r4] | *(r4) = r0;
0x0002f1ca b 0x2f108 | goto label_0;
| label_2:
0x0002f1cc ldr r1, [pc, 0xf4] |
0x0002f1ce mov r3, r4 | r3 = r4;
0x0002f1d0 subs r2, r0, r4 | r2 = r0 - r4;
0x0002f1d2 mov r0, fp | r0 = fp;
0x0002f1d4 add r1, pc | r1 = 0x5e49c;
0x0002f1d6 bl 0x44820 | zbx_dsprintf ()
0x0002f1da ldr r3, [sp, 0x14] | r3 = var_14h_2;
0x0002f1dc str r0, [r3] | *(r3) = r0;
0x0002f1de b 0x2f108 | goto label_0;
| label_3:
0x0002f1e6 ldr r1, [pc, 0xe4] |
0x0002f1e8 mov r3, r5 | r3 = r5;
0x0002f1ea subs r2, r0, r5 | r2 = r0 - r5;
0x0002f1ec mov r0, r8 | r0 = r8;
0x0002f1ee add r1, pc | r1 = 0x5e4c0;
0x0002f1f0 bl 0x44820 | zbx_dsprintf ()
0x0002f1f4 ldr r3, [sp, 0x14] | r3 = var_14h_2;
0x0002f1f6 str r0, [r3] | *(r3) = r0;
0x0002f1f8 b 0x2f108 | goto label_0;
| label_4:
0x0002f20e blx 0xe158 | fcn_0000e158 ();
0x0002f212 nop |
0x0002f214 ldm r6, {r2, r3, r6, r7} | r2 = *(r6);
| r3 = *((r6 + 4));
| r6 = *((r6 + 8));
| r7 = *((r6 + 12));
0x0002f216 movs r2, r0 | r2 = r0;
0x0002f218 lsls r4, r2, 0xe | r4 = r2 << 0xe;
0x0002f21a movs r0, r0 |
0x0002f21c str r6, [r7, r2] | *((r7 + r2)) = r6;
0x0002f21e movs r2, r0 | r2 = r0;
0x0002f220 ldm r6!, {r1, r5, r7} | r1 = *(r6!);
| r5 = *((r6! + 4));
| r7 = *((r6! + 8));
0x0002f222 movs r2, r0 | r2 = r0;
0x0002f224 ldr r7, [pc, 0x30] | r7 = *(0x2f258);
0x0002f226 movs r2, r0 | r2 = r0;
0x0002f228 ldr r6, [pc, 0x170] | r6 = WEB_PAGE_PERF;
0x0002f22a movs r2, r0 | r2 = r0;
0x0002f22c cmp r6, 0x64 |
0x0002f22e movs r2, r0 | r2 = r0;
0x0002f230 ldr r7, [pc, 0xb0] | r7 = *(0x2f2e4);
0x0002f232 movs r2, r0 | r2 = r0;
0x0002f234 ldr r7, [pc, 0x88] | r7 = *(0x2f2c0);
0x0002f236 movs r2, r0 | r2 = r0;
0x0002f238 ldr r5, [pc, 0x240] | r5 = *(0x2f47c);
0x0002f23a movs r2, r0 | r2 = r0;
0x0002f23c lsls r0, r0, 0xf | r0 <<= 0xf;
0x0002f23e movs r0, r0 |
0x0002f240 lsls r4, r4, 0xc | r4 <<= 0xc;
0x0002f242 movs r0, r0 |
0x0002f244 subs r6, r6, 4 | r6 -= 4;
0x0002f246 movs r2, r0 | r2 = r0;
0x0002f248 cmp r5, 0x42 |
0x0002f24a movs r2, r0 | r2 = r0;
0x0002f24c ldr r6, [pc, 0x258] | r6 = *(0x2f4a8);
0x0002f24e movs r2, r0 | r2 = r0;
0x0002f250 ldr r6, [pc, 0x250] | r6 = *(0x2f4a4);
0x0002f252 movs r2, r0 | r2 = r0;
0x0002f254 ldm r4, {r4, r5, r6} | r4 = *(r4);
| r5 = *((r4 + 4));
| r6 = *((r4 + 8));
0x0002f256 movs r2, r0 | r2 = r0;
0x0002f258 ldr r4, [pc, 0x208] | r4 = *(0x2f464);
0x0002f25a movs r2, r0 | r2 = r0;
0x0002f25c ldr r5, [pc, 0x130] | r5 = *(0x2f390);
0x0002f25e movs r2, r0 | r2 = r0;
0x0002f260 lsrs r6, r6, 0xf | r6 >>= 0xf;
0x0002f262 movs r2, r0 | r2 = r0;
0x0002f264 cmp r4, 0x5a |
0x0002f266 movs r2, r0 | r2 = r0;
0x0002f268 ldr r5, [pc, 0x208] | r5 = *(0x2f474);
0x0002f26a movs r2, r0 | r2 = r0;
0x0002f26c ldr r4, [pc, 0xa0] | r4 = *(0x2f310);
0x0002f26e movs r2, r0 | r2 = r0;
0x0002f270 subs r6, r4, 0 | r6 = r4 - 0;
0x0002f272 movs r2, r0 | r2 = r0;
0x0002f274 subs r2, r5, 2 | r2 = r5 - 2;
0x0002f276 movs r2, r0 | r2 = r0;
0x0002f278 ldr r3, [pc, 0x390] | r3 = *(0x2f60c);
0x0002f27a movs r2, r0 | r2 = r0;
0x0002f27c invalid |
| }
; assembly | /* r2dec pseudo code output */
| /* /logs/firmware/patool_extraction/rootfs.img_unblob_extracted/rootfs.img_extract/0-80367616.squashfs_v4_le_extract/usr/sbin/zabbix_agentd @ 0x3986c */
| #include <stdint.h>
|
; (fcn) fcn.0003986c () | void fcn_0003986c (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_48h, int16_t arg_b0h, int16_t arg_118h, int16_t arg_91ch, int16_t arg_948h, int16_t arg_94ch, int16_t arg1, int16_t arg2, int16_t arg3, int16_t arg4) {
| int32_t var_91ch;
| 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;
| r1 = arg2;
| r2 = arg3;
| r3 = arg4;
0x0003986c svcmi 0xf0e92d | __asm ("svcmi 0xf0e92d");
0x00039870 mov r4, r3 | r4 = r3;
0x00039872 ldr.w r5, [pc, 0x6d8] |
0x00039876 adds r3, r2, 1 | r3 = r2 + 1;
0x00039878 subw sp, sp, 0x924 | __asm ("subw sp, sp, 0x924");
0x0003987c cmp r3, 0xa |
0x0003987e ldr.w r2, [pc, 0x6d0] | r2 = *(0x39f52);
0x00039882 mov r7, r0 | r7 = r0;
0x00039884 add r5, pc | r5 = 0x737d6;
0x00039886 ldr r2, [r5, r2] |
0x00039888 ldr r2, [r2] | r2 = *(0x737d6);
0x0003988a str.w r2, [sp, 0x91c] | __asm ("str.w r2, [arg_91ch]");
0x0003988e mov.w r2, 0 | r2 = 0;
0x00039892 ldr.w r2, [pc, 0x6c0] |
0x00039896 str r1, [sp, 0x18] | var_18h = r1;
0x00039898 add r2, pc | r2 = 0x737f2;
0x0003989a str r2, [sp, 0x1c] | var_1ch = r2;
| if (r3 > 0xa) {
0x0003989c bgt.w 0x39ebe | goto label_24;
| }
0x000398a0 cmp r0, 0 |
| if (r0 == 0) {
0x000398a2 beq.w 0x39ab2 | goto label_25;
| }
0x000398a6 ldr.w r1, [pc, 0x6b0] |
0x000398aa str r3, [sp, 8] | var_8h = r3;
0x000398ac add r1, pc | r1 = 0x7380a;
0x000398ae blx 0xdf90 | fcn_0000df90 ();
0x000398b2 ldr r3, [sp, 8] | r3 = var_8h;
0x000398b4 str r0, [sp, 0x14] | var_14h = r0;
0x000398b6 cmp r0, 0 |
| if (r0 == 0) {
0x000398b8 beq.w 0x39ef4 | goto label_26;
| }
0x000398bc ldr.w r2, [pc, 0x69c] | r2 = *(0x00039f5c);
0x000398c0 add r4, sp, 0x118 | r4 += arg_118h;
0x000398c2 strd r3, r7, [sp, 0x2c] | __asm ("strd r3, r7, [sp, 0x2c]");
0x000398c6 add r2, pc | r2 += pc;
0x000398c8 str r2, [sp, 0x20] | var_20h = r2;
0x000398ca ldr.w r2, [pc, 0x694] | r2 = *(0x00039f60);
0x000398ce add r2, pc | r2 += pc;
0x000398d0 str r2, [sp, 0xc] | var_ch = r2;
0x000398d2 ldr.w r2, [pc, 0x690] | r2 = *(0x00039f64);
0x000398d6 add r2, pc | r2 += pc;
0x000398d8 str r2, [sp, 0x10] | var_10h = r2;
0x000398da movs r2, 1 | r2 = 1;
0x000398dc str r2, [sp, 8] | var_8h = r2;
| label_0:
0x000398de ldr r2, [sp, 0x14] | r2 = var_14h;
0x000398e0 movw r1, 0x803 | r1 = 0x803;
0x000398e4 mov r0, r4 | r0 = r4;
0x000398e6 blx 0xdc98 | r0 = fcn_0000dc98 ();
0x000398ea cmp r0, 0 |
| if (r0 == 0) {
0x000398ec beq.w 0x39aa4 | goto label_27;
| }
0x000398f0 mov r0, r4 | r0 = r4;
0x000398f2 blx 0xdf68 | r0 = fcn_0000df68 ();
0x000398f6 cmp.w r0, 0x800 |
| if (r0 >= 0x800) {
0x000398fa bls 0x3990c |
0x000398fc ldrb.w r1, [r4, 0x800] | r1 = *((r4 + 0x800));
0x00039900 ldr r0, [sp, 0x20] | r0 = var_20h;
0x00039902 blx 0xdcd4 | r0 = fcn_0000dcd4 ();
0x00039906 cmp r0, 0 |
| if (r0 == 0) {
0x00039908 beq.w 0x39e50 | goto label_28;
| }
| }
0x0003990c ldr r1, [sp, 0xc] | r1 = var_ch;
0x0003990e mov r0, r4 | r0 = r4;
0x00039910 bl 0x44534 | zbx_ltrim ();
0x00039914 ldr r1, [sp, 0x10] | r1 = var_10h;
0x00039916 mov r0, r4 | r0 = r4;
0x00039918 bl 0x444f4 | zbx_rtrim ();
0x0003991c ldrb r3, [r4] | r3 = *(r4);
0x0003991e cmp r3, 0 |
0x00039920 it ne |
| if (r3 != 0) {
0x00039922 cmpne r3, 0x23 | __asm ("cmpne r3, 0x23");
| }
| if (r3 == 0) {
0x00039924 beq.w 0x39a9c | goto label_3;
| }
0x00039928 mov r0, r4 | r0 = r4;
0x0003992a bl 0x45b98 | r0 = zbx_is_utf8 ();
0x0003992e mov r6, r0 | r6 = r0;
0x00039930 cmp r0, 0 |
| if (r0 != 0) {
0x00039932 bne.w 0x39e6a | goto label_29;
| }
0x00039936 movs r1, 0x3d | r1 = 0x3d;
0x00039938 mov r0, r4 | r0 = r4;
0x0003993a blx 0xdcd4 | r0 = fcn_0000dcd4 ();
0x0003993e mov r5, r0 | r5 = r0;
0x00039940 cmp r0, 0 |
| if (r0 == 0) {
0x00039942 beq.w 0x39e9a | goto label_30;
| }
0x00039946 mov r8, r0 | r8 = r0;
0x00039948 ldr r1, [sp, 0x10] | r1 = var_10h;
0x0003994a strb r6, [r8], 1 | *(r8) = r6;
| r8++;
0x0003994e mov r0, r4 | r0 = r4;
0x00039950 bl 0x444f4 | zbx_rtrim ();
0x00039954 ldr r1, [sp, 0xc] | r1 = var_ch;
0x00039956 mov r0, r8 | r0 = r8;
0x00039958 bl 0x44534 | zbx_ltrim ();
0x0003995c ldr.w r3, [pc, 0x608] | r3 = *(0x39f68);
0x00039960 ldr r2, [sp, 0x1c] | r2 = var_1ch;
0x00039962 ldr r7, [r2, r3] | r7 = *((r2 + r3));
0x00039964 ldr r3, [r7] | r3 = *(r7);
0x00039966 cmp r3, 3 |
| if (r3 > 3) {
0x00039968 bgt.w 0x39c62 | goto label_31;
| }
| label_8:
0x0003996c ldr.w r1, [pc, 0x5fc] | r1 = *(0x00039f6c);
0x00039970 mov r0, r4 | r0 = r4;
0x00039972 add r1, pc | r1 += pc;
0x00039974 blx 0xe3b0 | r0 = fcn_0000e3b0 ();
0x00039978 cmp r0, 0 |
| if (r0 != 0) {
0x0003997a bne.w 0x39b00 | goto label_32;
| }
0x0003997e movs r1, 0x2a | r1 = 0x2a;
0x00039980 mov r0, r8 | r0 = r8;
0x00039982 blx 0xdcd4 | r0 = fcn_0000dcd4 ();
0x00039986 mov r6, r0 | r6 = r0;
0x00039988 cmp r0, 0 |
| if (r0 == 0) {
0x0003998a beq.w 0x39de2 | goto label_33;
| }
0x0003998e movs r1, 0x2f | r1 = 0x2f;
0x00039990 adds r0, 1 | r0++;
0x00039992 blx 0xdcd4 | r0 = fcn_0000dcd4 ();
| if (r0 == 0) {
0x00039996 cbz r0, 0x399b2 | goto label_34;
| }
0x00039998 ldr.w r0, [pc, 0x5d4] | r0 = *(0x00039f70);
0x0003999c mov r1, r8 | r1 = r8;
0x0003999e add r0, pc | r0 += pc;
0x000399a0 bl 0x43cd4 | zbx_error ();
0x000399a4 b 0x399c2 | goto label_17;
| do {
0x000399a6 ldrb r3, [r6, -0x1] | r3 = *((r6 - 0x1));
0x000399aa subs r7, r6, 1 | r7 = r6 - 1;
0x000399ac cmp r3, 0x2f |
| if (r3 == 0x2f) {
0x000399ae beq 0x399fa | goto label_35;
| }
0x000399b0 mov r6, r7 | r6 = r7;
| label_34:
0x000399b2 cmp r8, r6 |
0x000399b4 bne 0x399a6 |
| } while (r8 != r6);
0x000399b6 ldr.w r0, [pc, 0x5bc] |
0x000399ba mov r1, r8 | r1 = r8;
0x000399bc add r0, pc | r0 = 0x73936;
0x000399be bl 0x43cd4 | zbx_error ();
| do {
| label_17:
0x000399c2 ldr r0, [sp, 0x14] | r0 = var_14h;
0x000399c4 blx 0xdc8c | fcn_0000dc8c ();
| label_4:
0x000399c8 ldr.w r3, [sp, 0x94c] | r3 = *(arg_94ch);
0x000399cc cmp r3, 0 |
| if (r3 == 0) {
0x000399ce beq.w 0x39f12 | goto label_36;
| }
| label_18:
0x000399d2 mov.w r0, -1 | r0 = -1;
| label_2:
0x000399d6 ldr.w r2, [pc, 0x5a0] | r2 = *(0x00039f78);
0x000399da ldr.w r3, [pc, 0x574] | r3 = *(0x39f52);
0x000399de add r2, pc | r2 += pc;
0x000399e0 ldr r3, [r2, r3] | r3 = *((r2 + r3));
0x000399e2 ldr r2, [r3] | r2 = *(0x39f52);
0x000399e4 ldr.w r3, [sp, 0x91c] | r3 = *(arg_91ch);
0x000399e8 eors r2, r3 | r2 ^= r3;
0x000399ea mov.w r3, 0 | r3 = 0;
| if (r2 != r3) {
0x000399ee bne.w 0x39f18 | goto label_37;
| }
0x000399f2 addw sp, sp, 0x924 | __asm ("addw sp, var_0h");
0x000399f6 pop.w {r4, r5, r6, r7, r8, sb, sl, fp, pc} |
| label_35:
0x000399fa ldr.w sl, [pc, 0x580] |
0x000399fe mov r3, r8 | r3 = r8;
0x00039a00 movs r2, 0 | r2 = 0;
0x00039a02 movs r1, 0xa9 | r1 = 0xa9;
0x00039a04 sub.w r7, r7, r8 | r7 -= r8;
0x00039a08 add sl, pc | sl = 0x7398a;
0x00039a0a mov r0, sl | r0 = sl;
0x00039a0c bl 0x40ed8 | zbx_strdup2 ();
0x00039a10 movs r2, 0 | r2 = 0;
0x00039a12 mov sb, r0 | sb = r0;
0x00039a14 mov r3, r6 | r3 = r6;
0x00039a16 movs r1, 0xac | r1 = 0xac;
0x00039a18 strb.w r2, [sb, r7] | *((sb + r7)) = r2;
0x00039a1c mov r0, sl | r0 = sl;
0x00039a1e bl 0x40ed8 | zbx_strdup2 ();
0x00039a22 ldr.w r1, [pc, 0x55c] | r1 = *(0x00039f80);
0x00039a26 mov r6, r0 | r6 = r0;
0x00039a28 mov r0, sb | r0 = sb;
0x00039a2a add r1, pc | r1 += pc;
0x00039a2c bl 0x444f4 | zbx_rtrim ();
0x00039a30 subs r0, 0 |
0x00039a32 it ne |
| if (r0 == 0) {
0x00039a34 movne r0, 1 | r0 = 1;
| }
0x00039a36 cmp r6, 0 |
0x00039a38 it ne |
| if (r6 == 0) {
0x00039a3a movne r0, 0 | r0 = 0;
| }
0x00039a3c cmp r0, 0 |
| if (r0 != 0) {
0x00039a3e bne.w 0x39e00 | goto label_38;
| }
| label_15:
0x00039a42 ldrb.w r3, [sb] | r3 = *(sb);
| if (r3 == 0) {
0x00039a46 cbnz r3, 0x39a52 |
0x00039a48 ldrb r3, [r5, 1] | r3 = *((r5 + 1));
0x00039a4a cmp r3, 0x2f |
0x00039a4c it eq |
| if (r3 != 0x2f) {
0x00039a4e strheq r3, [sb] | __asm ("strheq r3, [sb]");
| goto label_39;
| }
| }
| label_39:
0x00039a52 add r7, sp, 0x48 | r7 += arg_48h;
0x00039a54 mov r0, sb | r0 = sb;
0x00039a56 mov r1, r7 | r1 = r7;
0x00039a58 blx 0xdec0 | r0 = fcn_0000dec0 ();
0x00039a5c mov r5, r0 | r5 = r0;
0x00039a5e cmp r0, 0 |
| if (r0 != 0) {
0x00039a60 bne.w 0x39ed8 | goto label_40;
| }
0x00039a64 ldr r3, [r7, 0x10] | r3 = *((r7 + 0x10));
0x00039a66 and r3, r3, 0xf000 | r3 &= 0xf000;
0x00039a6a cmp.w r3, 0x4000 |
| if (r3 == 0x4000) {
0x00039a6e beq.w 0x39c72 | goto label_41;
| }
0x00039a72 cmp r6, 0 |
| if (r6 != 0) {
0x00039a74 bne.w 0x39e82 | goto label_42;
| }
0x00039a78 ldr.w r2, [sp, 0x94c] | r2 = *(arg_94ch);
0x00039a7c mov r3, r0 | r3 = r0;
0x00039a7e ldr r1, [sp, 0x18] | r1 = var_18h;
0x00039a80 mov r0, sb | r0 = sb;
0x00039a82 str r2, [sp, 4] | var_4h = r2;
0x00039a84 ldr.w r2, [sp, 0x948] | r2 = *(arg_948h);
0x00039a88 str r2, [sp] | *(sp) = r2;
0x00039a8a ldr r2, [sp, 0x2c] | r2 = *(arg_2ch);
0x00039a8c bl 0x3986c | r0 = fcn_0003986c (r0, r1, r2, r3, r4, r5, r6);
0x00039a90 mov r5, r0 | r5 = r0;
| label_13:
0x00039a92 mov r0, sb | r0 = sb;
0x00039a94 blx 0xde30 | fcn_0000de30 ();
0x00039a98 adds r5, 1 | r5++;
0x00039a9a beq 0x399c2 |
| } while (r5 == 1);
| label_3:
0x00039a9c ldr r3, [sp, 8] | r3 = var_8h;
0x00039a9e adds r3, 1 | r3++;
0x00039aa0 str r3, [sp, 8] | var_8h = r3;
0x00039aa2 b 0x398de | goto label_0;
| label_27:
0x00039aa4 ldr r3, [sp, 0x2c] | r3 = *(arg_2ch);
0x00039aa6 ldr r0, [sp, 0x14] | r0 = var_14h;
0x00039aa8 ldr r7, [sp, 0x30] | r7 = *(arg_30h);
0x00039aaa str r3, [sp, 8] | var_8h = r3;
0x00039aac blx 0xdc8c | fcn_0000dc8c ();
0x00039ab0 ldr r3, [sp, 8] | r3 = var_8h;
| label_25:
0x00039ab2 cmp r3, 1 |
| if (r3 != 1) {
0x00039ab4 bne 0x39afc | goto label_22;
| }
0x00039ab6 ldr r3, [sp, 0x18] | r3 = var_18h;
0x00039ab8 ldr r1, [r3] | r1 = *(r3);
| if (r1 != 0) {
0x00039aba cbnz r1, 0x39ace | goto label_43;
| }
0x00039abc b 0x39afc | goto label_22;
| label_1:
0x00039abe ldr r2, [r3, 4] | r2 = *((r3 + 4));
0x00039ac0 ldr r2, [r2] | r2 = *(r2);
0x00039ac2 cmp r2, 0 |
| if (r2 == 0) {
0x00039ac4 beq.w 0x39daa | goto label_44;
| }
| do {
0x00039ac8 ldr r1, [r3, 0x20]! | r1 = *((r3 += 0x20));
| if (r1 == 0) {
0x00039acc cbz r1, 0x39afc | goto label_22;
| }
| label_43:
0x00039ace ldr r2, [r3, 0xc] | r2 = *((r3 + 0xc));
0x00039ad0 cmp r2, 1 |
0x00039ad2 bne 0x39ac8 |
| } while (r2 != 1);
0x00039ad4 ldr r2, [r3, 8] | r2 = *((r3 + 8));
0x00039ad6 cmp r2, 1 |
| if (r2 == 1) {
0x00039ad8 beq 0x39abe | goto label_1;
| }
0x00039ada cmp r2, 4 |
| if (r2 == 4) {
0x00039adc beq 0x39abe | goto label_1;
| }
0x00039ade cmp r2, 0 |
| if (r2 == 0) {
0x00039ae0 beq 0x39abe | goto label_1;
| }
0x00039ae2 ldr.w r3, [pc, 0x4a0] | r3 = *(0x00039f84);
0x00039ae6 mov.w r2, 0x210 | r2 = 0x210;
0x00039aea ldr.w r1, [pc, 0x49c] |
0x00039aee ldr.w r0, [pc, 0x49c] | r0 = *(0x00039f8c);
0x00039af2 add r3, pc | r3 += pc;
0x00039af4 add r1, pc | r1 = 0x73a82;
0x00039af6 add r0, pc | r0 += pc;
0x00039af8 blx 0xdde4 | shmdt ();
| label_22:
0x00039afc movs r0, 0 | r0 = 0;
0x00039afe b 0x399d6 | goto label_2;
| label_32:
0x00039b00 ldr r3, [sp, 0x18] | r3 = var_18h;
0x00039b02 ldr r0, [r3] | r0 = *(r3);
0x00039b04 movs r3, 1 | r3 = 1;
| if (r0 == 0) {
0x00039b06 cbz r0, 0x39b6a | goto label_45;
| }
0x00039b08 ldr.w fp, [pc, 0x484] | fp = *(0x00039f90);
0x00039b0c ldr.w sb, [pc, 0x484] |
0x00039b10 ldr.w sl, [pc, 0x484] | sl = *(0x00039f98);
0x00039b14 ldr r5, [sp, 0x18] | r5 = var_18h;
0x00039b16 add fp, pc |
0x00039b18 add sb, pc | sb = 0x73ab0;
0x00039b1a add sl, pc | sl += pc;
| do {
0x00039b1c mov r1, r4 | r1 = r4;
0x00039b1e blx 0xe3b0 | r0 = fcn_0000e3b0 ();
| if (r0 == 0) {
0x00039b22 cbnz r0, 0x39b5a |
0x00039b24 ldr r3, [r7] | r3 = *(r7);
0x00039b26 cmp r3, 3 |
| if (r3 > 3) {
0x00039b28 bgt.w 0x39c52 | goto label_46;
| }
| label_7:
0x00039b2c ldr r3, [r5, 8] | r3 = *((r5 + 8));
0x00039b2e cmp r3, 5 |
| if (r3 > 5) {
0x00039b30 bhi.w 0x39f38 | goto label_47;
| }
| /* switch table (6 cases) at 0x39b38 */
0x00039b34 tbb [pc, r3] | __asm ("tbb [0x00039b3c]");
0x00039b3e movs r1, 0x2c | r1 = 0x2c;
0x00039b40 mov r0, r8 | r0 = r8;
0x00039b42 bl 0x461bc | zbx_trim_str_list ();
0x00039b46 ldr r6, [r5, 4] | r6 = *((r5 + 4));
0x00039b48 mov r3, r8 | r3 = r8;
0x00039b4a mov.w r1, 0x1d4 | r1 = 0x1d4;
0x00039b4e mov r0, sb | r0 = sb;
0x00039b50 ldr r2, [r6] | r2 = *(r6);
0x00039b52 bl 0x40ed8 | zbx_strdup2 ();
0x00039b56 str r0, [r6] | *(r6) = r0;
| label_5:
0x00039b58 movs r6, 1 | r6 = 1;
| }
0x00039b5a ldr r0, [r5, 0x20]! | r0 = *((r5 += 0x20));
0x00039b5e cmp r0, 0 |
0x00039b60 bne 0x39b1c |
| } while (r0 != 0);
0x00039b62 eor r3, r6, 1 | r3 = r6 ^ 1;
0x00039b66 and r3, r3, 1 | r3 &= 1;
| label_45:
0x00039b6a ldr.w r2, [sp, 0x948] | r2 = *(arg_948h);
0x00039b6e cmp r2, 1 |
0x00039b70 ite ne |
| if (r2 == 1) {
0x00039b72 movne r3, 0 | r3 = 0;
| }
| if (r2 != 1) {
0x00039b74 andeq r3, r3, 1 | r3 &= 1;
| }
0x00039b78 cmp r3, 0 |
| if (r3 == 0) {
0x00039b7a beq 0x39a9c | goto label_3;
| }
0x00039b7c ldr r0, [sp, 0x14] | r0 = var_14h;
0x00039b7e ldr r7, [sp, 0x30] | r7 = *(arg_30h);
0x00039b80 blx 0xdc8c | fcn_0000dc8c ();
0x00039b84 ldr.w r0, [pc, 0x414] | r0 = *(0x00039f9c);
0x00039b88 mov r1, r4 | r1 = r4;
0x00039b8a ldr r3, [sp, 8] | r3 = var_8h;
0x00039b8c mov r2, r7 | r2 = r7;
0x00039b8e add r0, pc | r0 += pc;
0x00039b90 bl 0x43cd4 | zbx_error ();
0x00039b94 b 0x399c8 | goto label_4;
0x00039b96 add r6, sp, 0x40 | r6 += arg_40h;
0x00039b98 mov r1, sl | r1 = sl;
0x00039b9a mov r2, r6 | r2 = r6;
0x00039b9c mov r0, r8 | r0 = r8;
0x00039b9e bl 0x42be8 | str2uint64 ();
0x00039ba2 adds r0, 1 | r0++;
| if (r0 == 1) {
0x00039ba4 beq 0x39bea | goto label_6;
| }
0x00039ba6 ldrd r2, r3, [sp, 0x40] | __asm ("ldrd r2, r3, [arg_40h]");
0x00039baa ldrd r0, r1, [r5, 0x10] | __asm ("ldrd r0, r1, [r5, 0x10]");
0x00039bae cmp r2, r0 |
0x00039bb0 sbcs.w r1, r3, r1 | __asm ("sbcs.w r1, r3, r1");
| if (r2 <= r0) {
0x00039bb4 blo 0x39bea | goto label_6;
| }
0x00039bb6 ldr r1, [r5, 0x18] | r1 = *((r5 + 0x18));
0x00039bb8 ldr r0, [r5, 0x1c] | r0 = *((r5 + 0x1c));
0x00039bba cmp r1, r2 |
0x00039bbc sbcs.w r3, r0, r3 | __asm ("sbcs.w r3, r0, r3");
0x00039bc0 ite lo |
| if (r1 >= r2) {
0x00039bc2 movlo r3, 1 | r3 = 1;
| }
| if (r1 < r2) {
0x00039bc4 movhs r3, 0 | r3 = 0;
| }
0x00039bc6 orrs r1, r0 | r1 |= r0;
0x00039bc8 and r3, r3, 1 | r3 &= 1;
0x00039bcc it eq |
| if (r1 != r0) {
0x00039bce moveq r3, 0 | r3 = 0;
| }
| if (r3 != 0) {
0x00039bd0 cbnz r3, 0x39bea | goto label_6;
| }
0x00039bd2 ldr r3, [r5, 4] | r3 = *((r5 + 4));
0x00039bd4 str r2, [r3] | *(r3) = r2;
0x00039bd6 b 0x39b58 | goto label_5;
0x00039bd8 ldr r3, [r5, 4] | r3 = *((r5 + 4));
0x00039bda cmp r3, 0 |
| if (r3 == 0) {
0x00039bdc beq 0x39b58 | goto label_5;
| }
0x00039bde ldr r3, [r3] | r3 = *(r3);
0x00039be0 mov r1, r5 | r1 = r5;
0x00039be2 mov r0, r8 | r0 = r8;
0x00039be4 blx r3 | r0 = uint32_t (*r3)(uint32_t, uint32_t, uint32_t) (r0, r1, r3);
0x00039be6 cmp r0, 0 |
| if (r0 == 0) {
0x00039be8 beq 0x39b58 | goto label_5;
| }
| do {
| label_6:
0x00039bea ldr r0, [sp, 0x14] | r0 = var_14h;
0x00039bec ldr r7, [sp, 0x30] | r7 = *(arg_30h);
0x00039bee blx 0xdc8c | fcn_0000dc8c ();
0x00039bf2 ldr r0, [pc, 0x3ac] |
0x00039bf4 ldr r3, [sp, 8] | r3 = var_8h;
0x00039bf6 mov r2, r7 | r2 = r7;
0x00039bf8 ldr r1, [r5] | r1 = *(r5);
0x00039bfa add r0, pc | r0 = 0x73ba0;
0x00039bfc bl 0x43cd4 | zbx_error ();
0x00039c00 b 0x399c8 | goto label_4;
0x00039c02 add r6, sp, 0x40 | r6 += arg_40h;
0x00039c04 mov r1, fp | r1 = fp;
0x00039c06 mov r2, r6 | r2 = r6;
0x00039c08 mov r0, r8 | r0 = r8;
0x00039c0a bl 0x42be8 | str2uint64 ();
0x00039c0e adds r0, 1 | r0++;
0x00039c10 beq 0x39bea |
| } while (r0 == 1);
0x00039c12 ldrd r2, r3, [sp, 0x40] | __asm ("ldrd r2, r3, [arg_40h]");
0x00039c16 ldrd r0, r1, [r5, 0x10] | __asm ("ldrd r0, r1, [r5, 0x10]");
0x00039c1a cmp r2, r0 |
0x00039c1c sbcs.w r1, r3, r1 | __asm ("sbcs.w r1, r3, r1");
| if (r2 <= r0) {
0x00039c20 blo 0x39bea | goto label_6;
| }
0x00039c22 ldr r0, [r5, 0x18] | r0 = *((r5 + 0x18));
0x00039c24 ldr r6, [r5, 0x1c] | r6 = *((r5 + 0x1c));
0x00039c26 cmp r0, r2 |
0x00039c28 sbcs.w r1, r6, r3 | __asm ("sbcs.w r1, r6, r3");
0x00039c2c ite lo |
| if (r0 >= r2) {
0x00039c2e movlo r1, 1 | r1 = 1;
| }
| if (r0 < r2) {
0x00039c30 movhs r1, 0 | r1 = 0;
| }
0x00039c32 orrs r0, r6 | r0 |= r6;
0x00039c34 and r1, r1, 1 | r1 &= 1;
0x00039c38 it eq |
| if (r0 != r6) {
0x00039c3a moveq r1, 0 | r1 = 0;
| }
0x00039c3c cmp r1, 0 |
| if (r1 != 0) {
0x00039c3e bne 0x39bea | goto label_6;
| }
0x00039c40 ldr r1, [r5, 4] | r1 = *((r5 + 4));
0x00039c42 strd r2, r3, [r1] | __asm ("strd r2, r3, [r1]");
0x00039c46 b 0x39b58 | goto label_5;
0x00039c48 ldr r0, [r5, 4] | r0 = *((r5 + 4));
0x00039c4a mov r1, r8 | r1 = r8;
0x00039c4c bl 0x45fdc | zbx_strarr_add ();
0x00039c50 b 0x39b58 | goto label_5;
| label_46:
0x00039c52 ldr r1, [pc, 0x350] |
0x00039c54 mov r3, r8 | r3 = r8;
0x00039c56 mov r2, r4 | r2 = r4;
0x00039c58 movs r0, 4 | r0 = 4;
0x00039c5a add r1, pc | r1 = 0x73c04;
0x00039c5c bl 0x30d1c | zbx_zabbix_log ();
0x00039c60 b 0x39b2c | goto label_7;
| label_31:
0x00039c62 ldr r1, [pc, 0x344] |
0x00039c64 mov r3, r8 | r3 = r8;
0x00039c66 mov r2, r4 | r2 = r4;
0x00039c68 movs r0, 4 | r0 = 4;
0x00039c6a add r1, pc | r1 = 0x73c18;
0x00039c6c bl 0x30d1c | zbx_zabbix_log ();
0x00039c70 b 0x3996c | goto label_8;
| label_41:
0x00039c72 mov r0, sb | r0 = sb;
0x00039c74 blx 0xdbdc | fcn_0000dbdc ();
0x00039c78 str r0, [sp, 0x24] | *(arg_24h) = r0;
0x00039c7a cmp r0, 0 |
| if (r0 == 0) {
0x00039c7c beq.w 0x39f1c | goto label_48;
| }
0x00039c80 ldr r3, [pc, 0x328] |
0x00039c82 mov sl, r5 | sl = r5;
0x00039c84 add.w r8, sp, 0xb0 | r8 += arg_b0h;
0x00039c88 str r5, [sp, 0x3c] | *(arg_3ch) = r5;
0x00039c8a add r3, pc | r3 = 0x73c3a;
0x00039c8c str r3, [sp, 0x28] | *(arg_28h) = r3;
| do {
| label_9:
0x00039c8e ldr r0, [sp, 0x24] | r0 = *(arg_24h);
0x00039c90 blx 0xe28c | r0 = fcn_0000e28c ();
0x00039c94 cmp r0, 0 |
| if (r0 == 0) {
0x00039c96 beq 0x39d84 | goto label_49;
| }
0x00039c98 add.w fp, r0, 0x13 |
0x00039c9c ldr r1, [sp, 0x28] | r1 = *(arg_28h);
0x00039c9e mov r0, sl | r0 = sl;
0x00039ca0 mov r3, fp | r3 = fp;
0x00039ca2 mov r2, sb | r2 = sb;
0x00039ca4 bl 0x44820 | zbx_dsprintf ()
0x00039ca8 mov r1, r8 | r1 = r8;
0x00039caa mov sl, r0 | sl = r0;
0x00039cac blx 0xdec0 | r0 = fcn_0000dec0 ();
0x00039cb0 cmp r0, 0 |
0x00039cb2 bne 0x39c8e |
| } while (r0 != 0);
0x00039cb4 ldr.w r3, [r8, 0x10] | r3 = *((r8 + 0x10));
0x00039cb8 and r3, r3, 0xf000 | r3 &= 0xf000;
0x00039cbc cmp.w r3, 0x8000 |
| if (r3 != fcn.00000004) {
0x00039cc0 bne 0x39c8e | goto label_9;
| }
| if (r6 == 0) {
0x00039cc2 cbz r6, 0x39d26 | goto label_14;
| }
0x00039cc4 ldrb r2, [r6] | r2 = *(r6);
| if (r2 == 0) {
0x00039cc6 cbz r2, 0x39d1e | goto label_16;
| }
0x00039cc8 mov r7, r6 | r7 = r6;
0x00039cca str r4, [sp, 0x34] | *(arg_34h) = r4;
0x00039ccc mov r4, r6 | r4 = r6;
0x00039cce mov r6, fp | r6 = fp;
0x00039cd0 str r0, [sp, 0x38] | *(arg_38h) = r0;
| label_12:
0x00039cd2 cmp r2, 0x2a |
| if (r2 == 0x2a) {
0x00039cd4 beq 0x39d48 | goto label_50;
| }
| label_10:
0x00039cd6 mov fp, r7 |
| do {
0x00039cd8 ldrb r5, [fp, 1]! | r5 = *(arg_1h);
0x00039cdc cmp r5, 0 |
0x00039cde it ne |
| if (r5 != 0) {
0x00039ce0 cmpne r5, 0x2a | __asm ("cmpne r5, 0x2a");
| }
0x00039ce2 bne 0x39cd8 |
| } while (r5 != 0);
0x00039ce4 cmp r7, r4 |
| if (r7 != r4) {
0x00039ce6 bne 0x39d4c | goto label_51;
| }
0x00039ce8 sub.w r7, fp, r4 | r7 = fp - r4;
0x00039cec mov r1, r4 | r1 = r4;
0x00039cee mov r2, r7 | r2 = r7;
0x00039cf0 mov r0, r6 | r0 = r6;
0x00039cf2 blx 0xe2c8 | fcn_0000e2c8 ();
0x00039cf4 invalid |
| if (r7 != r4) {
0x00039cf8 bne 0x39d7e | goto label_52;
| }
0x00039cfa add r6, r7 | r6 += r7;
0x00039cfc cmp r5, 0 |
| if (r5 == 0) {
0x00039cfe beq.w 0x39e14 | goto label_53;
| }
| label_11:
0x00039d02 mov r7, fp | r7 = fp;
| do {
0x00039d04 ldrb r2, [r7, 1]! | r2 = *((r7 += 1));
0x00039d08 cmp r2, 0x2a |
0x00039d0a beq 0x39d04 |
| } while (r2 == 0x2a);
0x00039d0c cmp r2, 0 |
| if (r2 != 0) {
0x00039d0e bne 0x39cd6 | goto label_10;
| }
0x00039d10 mov r5, r7 | r5 = r7;
0x00039d12 mov fp, r6 |
0x00039d14 mov r6, r4 | r6 = r4;
0x00039d16 ldrd r4, r7, [sp, 0x34] | __asm ("ldrd r4, r7, [arg_34h]");
0x00039d1a cmp r5, r6 |
| if (r5 != r6) {
0x00039d1c bne 0x39db6 | goto label_54;
| }
| label_16:
0x00039d1e ldrb.w r3, [fp] | r3 = *(fp);
0x00039d22 cmp r3, 0 |
| if (r3 != 0) {
0x00039d24 bne 0x39c8e | goto label_9;
| }
| label_14:
0x00039d26 ldr.w r3, [sp, 0x94c] | r3 = *(arg_94ch);
0x00039d2a mov r0, sl | r0 = sl;
0x00039d2c ldr r2, [sp, 0x2c] | r2 = *(arg_2ch);
0x00039d2e ldr r1, [sp, 0x18] | r1 = var_18h;
0x00039d30 str r3, [sp, 4] | var_4h = r3;
0x00039d32 ldr.w r3, [sp, 0x948] | r3 = *(arg_948h);
0x00039d36 str r3, [sp] | *(sp) = r3;
0x00039d38 movs r3, 0 | r3 = 0;
0x00039d3a bl 0x3986c | r0 = fcn_0003986c (r0, r1, r2, r3, r4, r5, r6);
0x00039d3e cmp r0, 0 |
| if (r0 == 0) {
0x00039d40 beq 0x39c8e | goto label_9;
| }
0x00039d42 mov.w r5, -1 | r5 = -1;
0x00039d46 b 0x39d86 | goto label_55;
| label_50:
0x00039d48 mov fp, r7 |
0x00039d4a b 0x39d02 | goto label_11;
| label_51:
0x00039d4c ldrb r2, [r6] | r2 = *(r6);
0x00039d4e cmp r5, 0 |
| if (r5 == 0) {
0x00039d50 beq.w 0x39eca | goto label_56;
| }
| if (r2 == 0) {
0x00039d54 cbz r2, 0x39d7e | goto label_52;
| }
0x00039d56 sub.w r5, fp, r7 | r5 = fp - r7;
0x00039d5a b 0x39d62 |
| while (r0 != 0) {
0x00039d5c ldrb r3, [r6, 1]! | r3 = *((r6 += 1));
| if (r3 == 0) {
0x00039d60 cbz r3, 0x39d7e | goto label_52;
| }
0x00039d62 mov r2, r5 | r2 = r5;
0x00039d64 mov r1, r7 | r1 = r7;
0x00039d66 mov r0, r6 | r0 = r6;
0x00039d68 blx 0xe2c8 | r0 = fcn_0000e2c8 ();
0x00039d6c cmp r0, 0 |
0x00039d6e bne 0x39d5c |
| }
0x00039d70 ldrb.w r2, [fp] | r2 = *(fp);
0x00039d74 add r6, r5 | r6 += r5;
0x00039d76 cmp r2, 0 |
| if (r2 == 0) {
0x00039d78 beq 0x39e14 | goto label_53;
| }
0x00039d7a mov r7, fp | r7 = fp;
0x00039d7c b 0x39cd2 | goto label_12;
| label_52:
0x00039d7e mov r6, r4 | r6 = r4;
0x00039d80 ldr r4, [sp, 0x34] | r4 = *(arg_34h);
0x00039d82 b 0x39c8e | goto label_9;
| label_49:
0x00039d84 ldr r5, [sp, 0x3c] | r5 = *(arg_3ch);
| label_55:
0x00039d86 ldr r0, [sp, 0x24] | r0 = *(arg_24h);
0x00039d88 blx 0xe0d0 | r0 = fcn_0000e0d0 ();
0x00039d8c cmp r0, 0 |
| if (r0 != 0) {
0x00039d8e bne 0x39e1c | goto label_57;
| }
0x00039d90 cmp.w sl, 0 |
| if (sl != 0) {
0x00039d94 beq 0x39d9c |
0x00039d96 mov r0, sl | r0 = sl;
0x00039d98 blx 0xde30 | fcn_0000de30 ();
| }
0x00039d9c cmp r6, 0 |
| if (r6 == 0) {
0x00039d9e beq.w 0x39a92 | goto label_13;
| }
0x00039da2 mov r0, r6 | r0 = r6;
0x00039da4 blx 0xde30 | fcn_0000de30 ();
0x00039da8 b 0x39a92 | goto label_13;
| label_44:
0x00039daa ldr r0, [pc, 0x204] |
0x00039dac mov r2, r7 | r2 = r7;
0x00039dae add r0, pc | r0 = 0x73d64;
0x00039db0 bl 0x43cd4 | zbx_error ();
0x00039db4 b 0x399c8 | goto label_4;
| label_54:
0x00039db6 ldrb.w r2, [fp] | r2 = *(fp);
0x00039dba mov r3, r5 | r3 = r5;
| label_19:
0x00039dbc mov r0, fp | r0 = fp;
| if (r2 == 0) {
0x00039dbe cbz r2, 0x39dcc | goto label_58;
| }
| do {
0x00039dc0 ldrb r2, [r0, 1]! | r2 = *((r0 += 1));
0x00039dc4 cmp r2, 0 |
0x00039dc6 bne 0x39dc0 |
| } while (r2 != 0);
0x00039dc8 sub.w r7, r0, fp | r7 = r0 - fp;
| label_58:
0x00039dcc subs r3, r3, r5 | r3 -= r5;
0x00039dce cmp r3, r7 |
| if (r3 > r7) {
0x00039dd0 bgt.w 0x39c8e | goto label_9;
| }
0x00039dd4 subs r0, r0, r3 | r0 -= r3;
0x00039dd6 mov r1, r5 | r1 = r5;
0x00039dd8 blx 0xe3b0 | r0 = fcn_0000e3b0 ();
0x00039ddc cmp r0, 0 |
| if (r0 == 0) {
0x00039dde beq 0x39d26 | goto label_14;
| }
0x00039de0 b 0x39c8e | goto label_9;
| label_33:
0x00039de2 mov r2, r0 | r2 = r0;
0x00039de4 ldr r0, [pc, 0x1cc] |
0x00039de6 movs r1, 0x91 | r1 = 0x91;
0x00039de8 mov r3, r8 | r3 = r8;
0x00039dea add r0, pc | r0 = 0x73da2;
0x00039dec bl 0x40ed8 | zbx_strdup2 ();
0x00039df0 ldr r1, [pc, 0x1c4] |
0x00039df2 mov sb, r0 | sb = r0;
0x00039df4 add r1, pc | r1 = 0x73db0;
0x00039df6 bl 0x444f4 | r0 = zbx_rtrim ();
0x00039dfa cmp r0, 0 |
| if (r0 == 0) {
0x00039dfc beq.w 0x39a42 | goto label_15;
| }
| label_38:
0x00039e00 ldr r3, [pc, 0x1b8] |
0x00039e02 movs r2, 0 | r2 = 0;
0x00039e04 ldr r0, [pc, 0x1b8] |
0x00039e06 movs r1, 0xb9 | r1 = 0xb9;
0x00039e08 add r3, pc | r3 = 0x73dc8;
0x00039e0a add r0, pc | r0 = 0x73dce;
0x00039e0c bl 0x40ed8 | r0 = zbx_strdup2 ();
0x00039e10 mov r6, r0 | r6 = r0;
0x00039e12 b 0x39a42 | goto label_15;
| label_53:
0x00039e14 mov fp, r6 |
0x00039e16 mov r6, r4 | r6 = r4;
0x00039e18 ldr r4, [sp, 0x34] | r4 = *(arg_34h);
0x00039e1a b 0x39d1e | goto label_16;
| label_57:
0x00039e1c blx 0xe3d4 | r0 = fcn_0000e3d4 ();
0x00039e20 ldr r0, [r0] | r0 = *(r0);
0x00039e22 bl 0x30b74 | r0 = zbx_strerror ();
0x00039e26 mov r2, r0 | r2 = r0;
0x00039e28 ldr r0, [pc, 0x198] |
0x00039e2a mov r1, sb | r1 = sb;
0x00039e2c add r0, pc | r0 = 0x73df4;
0x00039e2e bl 0x43cd4 | zbx_error ();
0x00039e32 cmp.w sl, 0 |
| if (sl == 0) {
0x00039e36 beq 0x39eb2 | goto label_59;
| }
0x00039e38 mov r0, sl | r0 = sl;
0x00039e3a blx 0xde30 | fcn_0000de30 ();
0x00039e3e cmp r6, 0 |
| if (r6 == 0) {
0x00039e40 beq 0x39eb6 | goto label_21;
| }
| do {
| label_20:
0x00039e42 mov r0, r6 | r0 = r6;
0x00039e44 blx 0xde30 | fcn_0000de30 ();
0x00039e48 mov r0, sb | r0 = sb;
0x00039e4a blx 0xde30 | fcn_0000de30 ();
0x00039e4e b 0x399c2 | goto label_17;
| label_28:
0x00039e50 ldr r0, [sp, 0x14] | r0 = var_14h;
0x00039e52 ldr r7, [sp, 0x30] | r7 = *(arg_30h);
0x00039e54 blx 0xdc8c | fcn_0000dc8c ();
0x00039e58 ldr r0, [pc, 0x16c] |
0x00039e5a mov.w r2, 0x800 | r2 = 0x800;
0x00039e5e ldr r1, [sp, 8] | r1 = var_8h;
0x00039e60 mov r3, r7 | r3 = r7;
0x00039e62 add r0, pc | r0 = 0x73e2e;
0x00039e64 bl 0x43cd4 | zbx_error ();
0x00039e68 b 0x399c8 | goto label_4;
| label_29:
0x00039e6a ldr r0, [sp, 0x14] | r0 = var_14h;
0x00039e6c ldr r7, [sp, 0x30] | r7 = *(arg_30h);
0x00039e6e blx 0xdc8c | fcn_0000dc8c ();
0x00039e72 ldr r0, [pc, 0x158] |
0x00039e74 mov r2, r4 | r2 = r4;
0x00039e76 ldr r1, [sp, 8] | r1 = var_8h;
0x00039e78 mov r3, r7 | r3 = r7;
0x00039e7a add r0, pc | r0 = 0x73e4c;
0x00039e7c bl 0x43cd4 | zbx_error ();
0x00039e80 b 0x399c8 | goto label_4;
| label_42:
0x00039e82 ldr r0, [pc, 0x14c] |
0x00039e84 mov r1, r8 | r1 = r8;
0x00039e86 add r0, pc | r0 = 0x73e5c;
0x00039e88 bl 0x43cd4 | zbx_error ();
0x00039e8c mov r0, r6 | r0 = r6;
0x00039e8e blx 0xde30 | fcn_0000de30 ();
0x00039e92 mov r0, sb | r0 = sb;
0x00039e94 blx 0xde30 | fcn_0000de30 ();
0x00039e98 b 0x399c2 | goto label_17;
| label_30:
0x00039e9a ldr r0, [sp, 0x14] | r0 = var_14h;
0x00039e9c ldr r7, [sp, 0x30] | r7 = *(arg_30h);
0x00039e9e blx 0xdc8c | fcn_0000dc8c ();
0x00039ea2 ldr r0, [pc, 0x130] |
0x00039ea4 mov r1, r4 | r1 = r4;
0x00039ea6 ldr r3, [sp, 8] | r3 = var_8h;
0x00039ea8 mov r2, r7 | r2 = r7;
0x00039eaa add r0, pc | r0 = 0x73e84;
0x00039eac bl 0x43cd4 | zbx_error ();
0x00039eb0 b 0x399c8 | goto label_4;
| label_59:
0x00039eb2 cmp r6, 0 |
0x00039eb4 bne 0x39e42 |
| } while (r6 != 0);
| label_21:
0x00039eb6 mov r0, sb | r0 = sb;
0x00039eb8 blx 0xde30 | fcn_0000de30 ();
0x00039ebc b 0x399c2 | goto label_17;
| label_24:
0x00039ebe ldr r0, [pc, 0x118] |
0x00039ec0 mov r1, r7 | r1 = r7;
0x00039ec2 add r0, pc | r0 = 0x73ea0;
0x00039ec4 bl 0x43cd4 | zbx_error ();
0x00039ec8 b 0x399d2 | goto label_18;
| label_56:
0x00039eca mov r5, r7 | r5 = r7;
0x00039ecc mov r3, fp | r3 = fp;
0x00039ece mov fp, r6 |
0x00039ed0 mov r6, r4 | r6 = r4;
0x00039ed2 ldrd r4, r7, [sp, 0x34] | __asm ("ldrd r4, r7, [arg_34h]");
0x00039ed6 b 0x39dbc | goto label_19;
| label_40:
0x00039ed8 blx 0xe3d4 | r0 = fcn_0000e3d4 ();
0x00039edc ldr r0, [r0] | r0 = *(r0);
0x00039ede bl 0x30b74 | r0 = zbx_strerror ();
0x00039ee2 mov r2, r0 | r2 = r0;
0x00039ee4 ldr r0, [pc, 0xf4] |
0x00039ee6 mov r1, sb | r1 = sb;
0x00039ee8 add r0, pc | r0 = 0x73ec8;
0x00039eea bl 0x43cd4 | zbx_error ();
0x00039eee cmp r6, 0 |
| if (r6 != 0) {
0x00039ef0 bne 0x39e42 | goto label_20;
| }
0x00039ef2 b 0x39eb6 | goto label_21;
| label_26:
0x00039ef4 cmp r4, 0 |
| if (r4 != 0) {
0x00039ef6 bne.w 0x39afc | goto label_22;
| }
0x00039efa blx 0xe3d4 | r0 = fcn_0000e3d4 ();
0x00039efe ldr r0, [r0] | r0 = *(r0);
0x00039f00 bl 0x30b74 | r0 = zbx_strerror ();
0x00039f04 mov r2, r0 | r2 = r0;
0x00039f06 ldr r0, [pc, 0xd8] |
0x00039f08 mov r1, r7 | r1 = r7;
0x00039f0a add r0, pc | r0 = 0x73ef0;
0x00039f0c bl 0x43cd4 | zbx_error ();
0x00039f10 b 0x399c8 | goto label_4;
| label_36:
0x00039f12 movs r0, 1 | r0 = 1;
0x00039f14 blx 0xe3bc | fcn_0000e3bc ();
| label_37:
0x00039f18 blx 0xe158 | fcn_0000e158 ();
| label_48:
0x00039f1c blx 0xe3d4 | r0 = fcn_0000e3d4 ();
0x00039f20 ldr r0, [r0] | r0 = *(r0);
0x00039f22 bl 0x30b74 | r0 = zbx_strerror ();
0x00039f26 mov r2, r0 | r2 = r0;
0x00039f28 ldr r0, [pc, 0xb8] |
0x00039f2a mov r1, sb | r1 = sb;
0x00039f2c add r0, pc | r0 = 0x73f14;
0x00039f2e bl 0x43cd4 | zbx_error ();
0x00039f32 cmp r6, 0 |
| if (r6 != 0) {
0x00039f34 bne 0x39e42 | goto label_20;
| }
0x00039f36 b 0x39eb6 | goto label_21;
| label_47:
0x00039f38 ldr r3, [pc, 0xac] |
0x00039f3a mov.w r2, 0x1f2 | r2 = 0x1f2;
0x00039f3e ldr r1, [pc, 0xac] |
0x00039f40 ldr r0, [pc, 0xac] |
0x00039f42 add r3, pc | r3 = 0x73f2e;
0x00039f44 add r1, pc | r1 = 0x73f36;
0x00039f46 add r0, pc | r0 = 0x73f3a;
0x00039f48 blx 0xdde4 | shmdt ();
0x00039f4c movs r3, 0x54 | r3 = 0x54;
0x00039f4e movs r2, r0 | r2 = r0;
0x00039f50 lsls r4, r2, 0xe | r4 = r2 << 0xe;
0x00039f52 movs r0, r0 |
0x00039f54 movs r3, 0x40 | r3 = 0x40;
0x00039f56 movs r2, r0 | r2 = r0;
0x00039f58 ldrb r4, [r4, 9] | r4 = *((r4 + 9));
0x00039f5a movs r1, r0 | r1 = r0;
0x00039f5c b 0x3a48c | goto label_60;
| do {
0x0003a3c6 cmp.w sl, 0x22 |
| if (sl > 0x22) {
0x0003a3ca bhi 0x3a44a | goto label_61;
| }
0x0003a3cc cmp.w sl, 7 |
| if (sl < 7) {
0x0003a3d0 bls 0x3a45c | goto label_62;
| }
0x0003a3d2 sub.w r3, sl, 8 | r3 = sl - 8;
0x0003a3d6 cmp r3, 0x1a |
| if (r3 > 0x1a) {
0x0003a3d8 bhi 0x3a456 | goto label_63;
| }
| /* switch table (27 cases) at 0x3a3de */
0x0003a3da tbb [pc, r3] | __asm ("tbb [0x0003a3e0]");
0x0003a3fa strh r1, [r0], 2 | *(r0) = r1;
| r0 += 2;
| label_23:
0x0003a3fe ldrb sl, [r4, 1]! | sl = *((r4 += 1));
0x0003a402 cmp.w sl, 0 |
0x0003a406 bne 0x3a3c6 |
| } while (sl != 0);
0x0003a408 cbnz r5, 0x3a442 |
| while (1) {
0x0003a40a ldr r2, [pc, 0xb4] |
0x0003a40c ldr r3, [pc, 0xac] | r3 = *(0x3a4bc);
0x0003a40e add r2, pc | r2 = 0x748d4;
0x0003a410 ldr r3, [r2, r3] | r3 = *(0x748d4);
0x0003a412 ldr r2, [r3] | r2 = *(0x748d4);
0x0003a414 ldr r3, [sp, 0xc] | r3 = var_ch;
0x0003a416 eors r2, r3 | r2 ^= r3;
0x0003a418 mov.w r3, 0 | r3 = 0;
| if (r2 != r3) {
0x0003a41c bne 0x3a4b0 | goto label_64;
| }
0x0003a41e add sp, 0x10 |
0x0003a420 pop.w {r4, r5, r6, r7, r8, sb, sl, pc} |
0x0003a424 strh r7, [r0], 2 | *(r0) = r7;
| r0 += 2;
0x0003a428 b 0x3a3fe | goto label_23;
0x0003a42a strh lr, [r0], 2 |
0x0003a42e b 0x3a3fe | goto label_23;
0x0003a430 strh r6, [r0], 2 | *(r0) = r6;
| r0 += 2;
0x0003a434 b 0x3a3fe | goto label_23;
0x0003a436 strh r8, [r0], 2 | *(r0) = r8;
| r0 += 2;
0x0003a43a b 0x3a3fe | goto label_23;
0x0003a43c strh ip, [r0], 2 | *(r0) = ip;
| r0 += 2;
0x0003a440 b 0x3a3fe | goto label_23;
0x0003a442 movs r3, 0x22 | r3 = 0x22;
0x0003a444 strb r3, [r0], 1 | *(r0) = r3;
| r0++;
0x0003a448 b 0x3a40a |
| }
| label_61:
0x0003a44a cmp.w sl, 0x5c |
| if (sl == 0x5c) {
0x0003a44e bne 0x3a48e |
0x0003a450 strh sb, [r0], 2 | *(r0) = sb;
| r0 += 2;
0x0003a454 b 0x3a3fe | goto label_23;
| label_63:
0x0003a456 cmp.w sl, 0x1f |
| if (sl > 0x1f) {
0x0003a45a bhi 0x3a48e | goto label_65;
| }
| label_62:
0x0003a45c movw r3, 0x755c |
0x0003a460 movt r3, 0x3030 | r3 = 0x3030755c;
0x0003a464 str r3, [r0] | *(r0) = r3;
0x0003a466 ldrb r2, [r4] | r2 = *(r4);
0x0003a468 cmp r2, 0x9f |
0x0003a46a lsr.w r3, r2, 4 | r3 = r2 >> 4;
0x0003a46e add.w r2, r0, 6 | r2 = r0 + 6;
0x0003a472 ite hi |
| if (r2 <= 0x9f) {
0x0003a474 addhi r3, 0x57 | r3 += 0x57;
| }
| if (r2 > 0x9f) {
0x0003a476 addls r3, 0x30 | r3 += 0x30;
| }
0x0003a478 strb r3, [r0, 4] | *((r0 + 4)) = r3;
0x0003a47a ldrb r3, [r4] | r3 = *(r4);
0x0003a47c and r3, r3, 0xf | r3 &= 0xf;
0x0003a480 cmp r3, 9 |
0x0003a482 ite hi |
| if (r3 <= 9) {
0x0003a484 addhi r3, 0x57 | r3 += 0x57;
| }
| if (r3 > 9) {
0x0003a486 addls r3, 0x30 | r3 += 0x30;
| }
0x0003a488 strb r3, [r0, 5] | *((r0 + 5)) = r3;
0x0003a48a mov r0, r2 | r0 = r2;
| label_60:
0x0003a48c b 0x3a3fe | goto label_23;
| }
| label_65:
0x0003a48e strb sl, [r0], 1 | *(r0) = sl;
| r0++;
0x0003a492 b 0x3a3fe | goto label_23;
| label_64:
0x0003a4b0 blx 0xe158 | fcn_0000e158 ();
0x0003a4b4 stm r0!, {r1, r4, r6, r7} | *(r0!) = r1;
| *((r0! + 4)) = r4;
| *((r0! + 8)) = r6;
| *((r0! + 12)) = r7;
0x0003a4b6 movs r1, r0 | r1 = r0;
0x0003a4b8 adds r6, r3, r1 | r6 = r3 + r1;
0x0003a4ba movs r2, r0 | r2 = r0;
0x0003a4bc lsls r4, r2, 0xe | r4 = r2 << 0xe;
0x0003a4be movs r0, r0 |
0x0003a4c0 asrs r2, r1, 0x1f | r2 = r1 >> 0x1f;
0x0003a4c2 movs r2, r0 | r2 = r0;
| }
; assembly | /* r2dec pseudo code output */
| /* /logs/firmware/patool_extraction/rootfs.img_unblob_extracted/rootfs.img_extract/0-80367616.squashfs_v4_le_extract/usr/sbin/zabbix_agentd @ 0x3b604 */
| #include <stdint.h>
|
; (fcn) fcn.0003b604 () | void fcn_0003b604 (int16_t arg1, int16_t arg2) {
| r0 = arg1;
| r1 = arg2;
0x0003b604 bhs 0x8d9714 |
| if (? == ?) {
0x0003b608 beq.w 0x3b714 | goto label_6;
| }
0x0003b60c push.w {r3, r4, r5, r6, r7, r8, sb, lr} |
0x0003b610 movw r8, 0x441 |
0x0003b614 mov r7, r0 | r7 = r0;
0x0003b616 mov r6, r1 | r6 = r1;
0x0003b618 adds r5, r0, 1 | r5 = r0 + 1;
0x0003b61a mov.w sb, 1 | sb = 1;
0x0003b61e movt r8, 0x144 | r8 = 0x1440441;
| do {
0x0003b622 cmp r2, 0 |
| if (r2 == 0) {
0x0003b624 beq 0x3b6cc | goto label_7;
| }
0x0003b626 cmp r2, 0x5c |
| if (r2 == 0x5c) {
0x0003b628 beq 0x3b644 | goto label_8;
| }
0x0003b62a ldrb r3, [r5] | r3 = *(r5);
0x0003b62c mov r4, r5 | r4 = r5;
| label_2:
0x0003b62e cmp r3, 0x1f |
| if (r3 < 0x1f) {
0x0003b630 bls 0x3b6e4 | goto label_9;
| }
| label_0:
0x0003b632 ldrb r2, [r4, 1] | r2 = *((r4 + 1));
0x0003b634 adds r5, r4, 1 | r5 = r4 + 1;
0x0003b636 cmp r2, 0x22 |
0x0003b638 bne 0x3b622 |
| } while (r2 != 0x22);
0x0003b63a subs r0, r5, r7 | r0 = r5 - r7;
0x0003b63c adds r0, 1 | r0++;
0x0003b63e asrs r1, r0, 0x1f | r1 = r0 >> 0x1f;
| label_1:
0x0003b640 pop.w {r3, r4, r5, r6, r7, r8, sb, pc} |
| label_8:
0x0003b644 ldrb r3, [r5, 1] | r3 = *((r5 + 1));
0x0003b646 adds r4, r5, 1 | r4 = r5 + 1;
0x0003b648 cmp r3, 0 |
| if (r3 == 0) {
0x0003b64a beq 0x3b6fc | goto label_10;
| }
0x0003b64c cmp r3, 0x75 |
| if (r3 > 0x75) {
0x0003b64e bhi 0x3b668 | goto label_11;
| }
0x0003b650 cmp r3, 0x5b |
| if (r3 < 0x5b) {
0x0003b652 bls 0x3b6be | goto label_12;
| }
0x0003b654 sub.w r2, r3, 0x5c | r2 = r3 - 0x5c;
0x0003b658 uxtb r2, r2 | r2 = (int8_t) r2;
0x0003b65a lsl.w r2, sb, r2 | r2 = sb << r2;
0x0003b65e tst.w r2, r8 |
| if ((r2 & r8) != 0) {
0x0003b662 bne 0x3b632 | goto label_0;
| }
0x0003b664 cmp r3, 0x75 |
| if (r3 != 0x75) {
0x0003b666 beq 0x3b682 |
| if (r6 != 0) {
| label_11:
0x0003b668 cbz r6, 0x3b67c |
| label_5:
0x0003b66a ldr r2, [pc, 0xb0] |
0x0003b66c mov r3, r5 | r3 = r5;
0x0003b66e ldr r1, [pc, 0xb0] |
0x0003b670 ldr r0, [r6] | r0 = *(r6);
0x0003b672 add r2, pc | r2 = 0x76d94;
0x0003b674 add r1, pc | r1 = 0x76d9a;
0x0003b676 bl 0x44820 | zbx_dsprintf ()
0x0003b67a str r0, [r6] | *(r6) = r0;
| }
| label_4:
0x0003b67c movs r0, 0 | r0 = 0;
0x0003b67e mov r1, r0 | r1 = r0;
0x0003b680 b 0x3b640 | goto label_1;
| }
0x0003b682 blx 0xe110 | fcn_0000e110 ();
0x0003b686 ldrb r3, [r4, 1]! | r3 = *((r4 += 1));
0x0003b68a ldr r1, [r0] | r1 = *(r0);
0x0003b68c adds r0, r5, 5 | r0 = r5 + 5;
0x0003b68e ldrh.w r2, [r1, r3, lsl 1] | offset_0 = r3 << 1;
| r2 = *((r1 + offset_0));
0x0003b692 lsls r2, r2, 0x13 | r2 <<= 0x13;
| if (r2 >= r2) {
0x0003b694 bpl 0x3b6a6 | goto label_13;
| }
| label_3:
0x0003b696 cmp r4, r0 |
| if (r4 == r0) {
0x0003b698 beq 0x3b62e | goto label_2;
| }
0x0003b69a ldrb r3, [r4, 1]! | r3 = *((r4 += 1));
0x0003b69e ldrh.w r2, [r1, r3, lsl 1] | offset_1 = r3 << 1;
| r2 = *((r1 + offset_1));
0x0003b6a2 lsls r2, r2, 0x13 | r2 <<= 0x13;
| if (r2 < r2) {
0x0003b6a4 bmi 0x3b696 | goto label_3;
| }
| label_13:
0x0003b6a6 cmp r6, 0 |
| if (r6 == 0) {
0x0003b6a8 beq 0x3b67c | goto label_4;
| }
0x0003b6aa ldr r2, [pc, 0x78] |
0x0003b6ac mov r3, r5 | r3 = r5;
0x0003b6ae ldr r1, [pc, 0x78] |
0x0003b6b0 ldr r0, [r6] | r0 = *(r6);
0x0003b6b2 add r2, pc | r2 = 0x76ddc;
0x0003b6b4 add r1, pc | r1 = 0x76de2;
0x0003b6b6 bl 0x44820 | zbx_dsprintf ()
0x0003b6ba str r0, [r6] | *(r6) = r0;
0x0003b6bc b 0x3b67c | goto label_4;
| label_12:
0x0003b6be cmp r3, 0x22 |
| if (r3 == 0x22) {
0x0003b6c0 beq 0x3b632 | goto label_0;
| }
0x0003b6c2 cmp r3, 0x2f |
| if (r3 == 0x2f) {
0x0003b6c4 beq 0x3b632 | goto label_0;
| }
0x0003b6c6 cmp r6, 0 |
| if (r6 != 0) {
0x0003b6c8 bne 0x3b66a | goto label_5;
| }
0x0003b6ca b 0x3b67c | goto label_4;
| label_7:
0x0003b6cc cmp r6, 0 |
| if (r6 == 0) {
0x0003b6ce beq 0x3b67c | goto label_4;
| }
0x0003b6d0 ldr r3, [pc, 0x58] |
0x0003b6d2 movs r1, 0x2e | r1 = 0x2e;
0x0003b6d4 ldr r0, [pc, 0x58] |
0x0003b6d6 ldr r2, [r6] | r2 = *(r6);
0x0003b6d8 add r3, pc | r3 = 0x76e08;
0x0003b6da add r0, pc | r0 = 0x76e0e;
0x0003b6dc bl 0x40ed8 | zbx_strdup2 ();
0x0003b6e0 str r0, [r6] | *(r6) = r0;
0x0003b6e2 b 0x3b67c | goto label_4;
| label_9:
0x0003b6e4 cmp r6, 0 |
| if (r6 == 0) {
0x0003b6e6 beq 0x3b67c | goto label_4;
| }
0x0003b6e8 ldr r2, [pc, 0x48] |
0x0003b6ea mov r3, r4 | r3 = r4;
0x0003b6ec ldr r1, [pc, 0x48] |
0x0003b6ee ldr r0, [r6] | r0 = *(r6);
0x0003b6f0 add r2, pc | r2 = 0x76e28;
0x0003b6f2 add r1, pc | r1 = 0x76e2e;
0x0003b6f4 bl 0x44820 | zbx_dsprintf ()
0x0003b6f8 str r0, [r6] | *(r6) = r0;
0x0003b6fa b 0x3b67c | goto label_4;
| label_10:
0x0003b6fc cmp r6, 0 |
| if (r6 == 0) {
0x0003b6fe beq 0x3b67c | goto label_4;
| }
0x0003b700 ldr r2, [pc, 0x38] |
0x0003b702 mov r3, r5 | r3 = r5;
0x0003b704 ldr r1, [pc, 0x38] |
0x0003b706 ldr r0, [r6] | r0 = *(r6);
0x0003b708 add r2, pc | r2 = 0x76e48;
0x0003b70a add r1, pc | r1 = 0x76e4e;
0x0003b70c bl 0x44820 | zbx_dsprintf ()
0x0003b710 str r0, [r6] | *(r6) = r0;
0x0003b712 b 0x3b67c | goto label_4;
| label_6:
0x0003b714 movs r0, 2 | r0 = 2;
0x0003b716 movs r1, 0 | r1 = 0;
0x0003b718 bx lr | return;
| }
; assembly | /* r2dec pseudo code output */
| /* /logs/firmware/patool_extraction/rootfs.img_unblob_extracted/rootfs.img_extract/0-80367616.squashfs_v4_le_extract/usr/sbin/zabbix_agentd @ 0x3ba98 */
| #include <stdint.h>
|
; (fcn) fcn.0003ba98 () | void fcn_0003ba98 (int16_t arg1, int16_t arg2) {
| r0 = arg1;
| r1 = arg2;
0x0003ba98 push.w {r4, r5, r6, r7, r8, sb, sl, lr} |
0x0003ba9c mov r8, r1 | r8 = r1;
0x0003ba9e ldrb r1, [r0] | r1 = *(r0);
0x0003baa0 mov sb, r0 | sb = r0;
0x0003baa2 mov r4, r0 | r4 = r0;
| if (r1 == 0) {
0x0003baa4 cbz r1, 0x3bac2 | goto label_2;
| }
0x0003baa6 ldr r6, [pc, 0x150] |
0x0003baa8 mov r5, r0 | r5 = r0;
0x0003baaa add r6, pc | r6 = 0x776a8;
0x0003baac b 0x3bab2 |
| while (r0 != 0) {
0x0003baae cmp r1, 0 |
| if (r1 == 0) {
0x0003bab0 beq 0x3bbb2 | goto label_5;
| }
0x0003bab2 mov r0, r6 | r0 = r6;
0x0003bab4 mov r4, r5 | r4 = r5;
0x0003bab6 blx 0xdcd4 | fcn_0000dcd4 ();
0x0003bab8 invalid |
0x0003babc ldrb r1, [r5] | r1 = *(r5);
0x0003babe cmp r0, 0 |
0x0003bac0 bne 0x3baae |
| }
| label_2:
0x0003bac2 ldrb r5, [r4, 1] | r5 = *((r4 + 1));
0x0003bac4 adds r4, 1 | r4++;
0x0003bac6 cmp r5, 0 |
| if (r5 == 0) {
0x0003bac8 beq 0x3bb90 | goto label_6;
| }
0x0003baca ldr r6, [pc, 0x130] |
0x0003bacc add r6, pc | r6 = 0x776ce;
0x0003bace b 0x3bad6 |
| while (r0 != 0) {
0x0003bad0 ldrb r5, [r4, 1]! | r5 = *((r4 += 1));
| if (r5 == 0) {
0x0003bad4 cbz r5, 0x3baf2 | goto label_7;
| }
0x0003bad6 mov r1, r5 | r1 = r5;
0x0003bad8 mov r0, r6 | r0 = r6;
0x0003bada blx 0xdcd4 | r0 = fcn_0000dcd4 ();
0x0003bade cmp r0, 0 |
0x0003bae0 bne 0x3bad0 |
| }
0x0003bae2 cmp r5, 0x7d |
| if (r5 == 0x7d) {
0x0003bae4 bne 0x3baf2 |
| label_4:
0x0003bae6 sub.w r0, r4, sb | r0 = r4 - sb;
0x0003baea adds r0, 1 | r0++;
0x0003baec asrs r1, r0, 0x1f | r1 = r0 >> 0x1f;
| label_1:
0x0003baee pop.w {r4, r5, r6, r7, r8, sb, sl, pc} |
| }
| label_7:
0x0003baf2 ldrb r3, [r4] | r3 = *(r4);
0x0003baf4 cmp r3, 0x22 |
| if (r3 != 0x22) {
0x0003baf6 bne 0x3bb90 | goto label_6;
| }
0x0003baf8 ldr r5, [pc, 0x104] |
0x0003bafa ldr r6, [pc, 0x108] |
0x0003bafc ldr r7, [pc, 0x108] |
0x0003bafe add r5, pc | r5 = 0x77702;
0x0003bb00 add r6, pc | r6 = 0x7770a;
0x0003bb02 add r7, pc | r7 = 0x7770e;
| label_0:
0x0003bb04 mov r1, r8 | r1 = r8;
0x0003bb06 mov r0, r4 | r0 = r4;
0x0003bb08 bl 0x3b604 | r0 = fcn_0003b604 (r0, r1);
0x0003bb0c orrs r1, r0 | r1 |= r0;
| if (r1 == r0) {
0x0003bb0e beq 0x3bbac | goto label_3;
| }
0x0003bb10 ldrb.w sl, [r4, r0] | sl = *((r4 + r0));
0x0003bb14 add r4, r0 | r4 += r0;
0x0003bb16 cmp.w sl, 0 |
| if (sl != 0) {
0x0003bb1a bne 0x3bb28 | goto label_8;
| }
0x0003bb1c b 0x3bbb6 | goto label_9;
| do {
0x0003bb1e ldrb sl, [r4, 1]! | sl = *((r4 += 1));
0x0003bb22 cmp.w sl, 0 |
| if (sl == 0) {
0x0003bb26 beq 0x3bbb6 | goto label_9;
| }
| label_8:
0x0003bb28 mov r1, sl | r1 = sl;
0x0003bb2a mov r0, r5 | r0 = r5;
0x0003bb2c blx 0xdcd4 | r0 = fcn_0000dcd4 ();
0x0003bb30 cmp r0, 0 |
0x0003bb32 bne 0x3bb1e |
| } while (r0 != 0);
0x0003bb34 cmp.w sl, 0x3a |
| if (sl != 0x3a) {
0x0003bb38 bne 0x3bbb6 | goto label_9;
| }
0x0003bb3a adds r4, 1 | r4++;
0x0003bb3c mov r1, r8 | r1 = r8;
0x0003bb3e mov r0, r4 | r0 = r4;
0x0003bb40 bl 0x3b744 | r0 = json_parse_value ();
0x0003bb44 orrs r1, r0 | r1 |= r0;
| if (r1 == r0) {
0x0003bb46 beq 0x3bbac | goto label_3;
| }
0x0003bb48 ldrb.w sl, [r4, r0] | sl = *((r4 + r0));
0x0003bb4c add r4, r0 | r4 += r0;
0x0003bb4e cmp.w sl, 0 |
| if (sl != 0) {
0x0003bb52 bne 0x3bb60 | goto label_10;
| }
0x0003bb54 b 0x3bbda | goto label_11;
| do {
0x0003bb56 ldrb sl, [r4, 1]! | sl = *((r4 += 1));
0x0003bb5a cmp.w sl, 0 |
| if (sl == 0) {
0x0003bb5e beq 0x3bbda | goto label_11;
| }
| label_10:
0x0003bb60 mov r1, sl | r1 = sl;
0x0003bb62 mov r0, r6 | r0 = r6;
0x0003bb64 blx 0xdcd4 | r0 = fcn_0000dcd4 ();
0x0003bb68 cmp r0, 0 |
0x0003bb6a bne 0x3bb56 |
| } while (r0 != 0);
0x0003bb6c cmp.w sl, 0x2c |
| if (sl != 0x2c) {
0x0003bb70 bne 0x3bbd4 | goto label_12;
| }
0x0003bb72 ldrb r1, [r4, 1] | r1 = *((r4 + 1));
0x0003bb74 adds r4, 1 | r4++;
| if (r1 != 0) {
0x0003bb76 cbnz r1, 0x3bb80 | goto label_13;
| }
0x0003bb78 b 0x3bb90 | goto label_6;
| do {
0x0003bb7a ldrb r1, [r4, 1]! | r1 = *((r4 += 1));
| if (r1 == 0) {
0x0003bb7e cbz r1, 0x3bb90 | goto label_6;
| }
| label_13:
0x0003bb80 mov r0, r7 | r0 = r7;
0x0003bb82 blx 0xdcd4 | r0 = fcn_0000dcd4 ();
0x0003bb86 cmp r0, 0 |
0x0003bb88 bne 0x3bb7a |
| } while (r0 != 0);
0x0003bb8a ldrb r3, [r4] | r3 = *(r4);
0x0003bb8c cmp r3, 0x22 |
| if (r3 == 0x22) {
0x0003bb8e beq 0x3bb04 | goto label_0;
| }
| label_6:
0x0003bb90 cmp.w r8, 0 |
| if (r8 == 0) {
0x0003bb94 beq 0x3bbac | goto label_3;
| }
0x0003bb96 ldr r2, [pc, 0x74] |
0x0003bb98 mov r3, r4 | r3 = r4;
0x0003bb9a ldr r1, [pc, 0x74] |
0x0003bb9c ldr.w r0, [r8] | r0 = *(r8);
0x0003bba0 add r2, pc | r2 = 0x777b2;
0x0003bba2 add r1, pc | r1 = 0x777b8;
0x0003bba4 bl 0x44820 | zbx_dsprintf ()
0x0003bba8 str.w r0, [r8] | __asm ("str.w r0, [r8]");
| do {
| label_3:
0x0003bbac movs r0, 0 | r0 = 0;
0x0003bbae mov r1, r0 | r1 = r0;
0x0003bbb0 b 0x3baee | goto label_1;
| label_5:
0x0003bbb2 mov r4, r5 | r4 = r5;
0x0003bbb4 b 0x3bac2 | goto label_2;
| label_9:
0x0003bbb6 cmp.w r8, 0 |
0x0003bbba beq 0x3bbac |
| } while (r8 == 0);
0x0003bbbc ldr r2, [pc, 0x54] |
0x0003bbbe mov r3, r4 | r3 = r4;
0x0003bbc0 ldr r1, [pc, 0x54] |
0x0003bbc2 ldr.w r0, [r8] | r0 = *(r8);
0x0003bbc6 add r2, pc | r2 = 0x777de;
0x0003bbc8 add r1, pc | r1 = 0x777e4;
0x0003bbca bl 0x44820 | zbx_dsprintf ()
0x0003bbce str.w r0, [r8] | __asm ("str.w r0, [r8]");
0x0003bbd0 movs r0, r0 |
0x0003bbd2 b 0x3bbac | goto label_3;
| label_12:
0x0003bbd4 cmp.w sl, 0x7d |
| if (sl == 0x7d) {
0x0003bbd8 beq 0x3bae6 | goto label_4;
| }
| label_11:
0x0003bbda cmp.w r8, 0 |
| if (r8 == 0) {
0x0003bbde beq 0x3bbac | goto label_3;
| }
0x0003bbe0 ldr r2, [pc, 0x38] |
0x0003bbe2 mov r3, r4 | r3 = r4;
0x0003bbe4 ldr r1, [pc, 0x38] |
0x0003bbe6 ldr.w r0, [r8] | r0 = *(r8);
0x0003bbea add r2, pc | r2 = 0x7780a;
0x0003bbec add r1, pc | r1 = 0x77810;
0x0003bbee bl 0x44820 | zbx_dsprintf ()
0x0003bbf2 str.w r0, [r8] | __asm ("str.w r0, [r8]");
0x0003bbf6 b 0x3bbac | goto label_3;
| }
; assembly | /* r2dec pseudo code output */
| /* /logs/firmware/patool_extraction/rootfs.img_unblob_extracted/rootfs.img_extract/0-80367616.squashfs_v4_le_extract/usr/sbin/zabbix_agentd @ 0x3bc24 */
| #include <stdint.h>
|
; (fcn) fcn.0003bc24 () | void fcn_0003bc24 (int16_t arg1, int16_t arg2) {
| r0 = arg1;
| r1 = arg2;
0x0003bc24 push.w {r4, r5, r6, r7, r8, lr} |
0x0003bc28 mov r8, r0 | r8 = r0;
0x0003bc2a ldrb r4, [r0, 1] | r4 = *((r0 + 1));
0x0003bc2c mov r7, r1 | r7 = r1;
0x0003bc2e adds r5, r0, 1 | r5 = r0 + 1;
| if (r4 == 0) {
0x0003bc30 cbz r4, 0x3bc5a | goto label_3;
| }
0x0003bc32 ldr r6, [pc, 0x88] |
0x0003bc34 add r6, pc | r6 = 0x778f6;
0x0003bc36 b 0x3bc3e |
| while (r0 != 0) {
0x0003bc38 ldrb r4, [r5, 1]! | r4 = *((r5 += 1));
| if (r4 == 0) {
0x0003bc3c cbz r4, 0x3bc5a | goto label_3;
| }
0x0003bc3e mov r1, r4 | r1 = r4;
0x0003bc40 mov r0, r6 | r0 = r6;
0x0003bc42 blx 0xdcd4 | r0 = fcn_0000dcd4 ();
0x0003bc46 cmp r0, 0 |
0x0003bc48 bne 0x3bc38 |
| }
0x0003bc4a cmp r4, 0x5d |
| if (r4 == 0x5d) {
0x0003bc4c bne 0x3bc5a |
| label_1:
0x0003bc4e sub.w r0, r5, r8 | r0 = r5 - r8;
0x0003bc52 adds r0, 1 | r0++;
0x0003bc54 asrs r1, r0, 0x1f | r1 = r0 >> 0x1f;
0x0003bc56 pop.w {r4, r5, r6, r7, r8, pc} |
| }
| label_3:
0x0003bc5a ldr r6, [pc, 0x64] |
0x0003bc5c mov r1, r7 | r1 = r7;
0x0003bc5e mov r0, r5 | r0 = r5;
0x0003bc60 bl 0x3b744 | r0 = json_parse_value ();
0x0003bc64 orrs r1, r0 | r1 |= r0;
0x0003bc66 add r6, pc | r6 = 0x7792c;
| if (r1 == r0) {
0x0003bc68 beq 0x3bc96 | goto label_2;
| }
| label_0:
0x0003bc6a add r5, r0 | r5 += r0;
0x0003bc6c ldrb r4, [r5] | r4 = *(r5);
| if (r4 != 0) {
0x0003bc6e cbnz r4, 0x3bc78 | goto label_4;
| }
0x0003bc70 b 0x3bca2 | goto label_5;
| do {
0x0003bc72 ldrb r4, [r5, 1]! | r4 = *((r5 += 1));
| if (r4 == 0) {
0x0003bc76 cbz r4, 0x3bca2 | goto label_5;
| }
| label_4:
0x0003bc78 mov r1, r4 | r1 = r4;
0x0003bc7a mov r0, r6 | r0 = r6;
0x0003bc7c blx 0xdcd4 | r0 = fcn_0000dcd4 ();
0x0003bc80 cmp r0, 0 |
0x0003bc82 bne 0x3bc72 |
| } while (r0 != 0);
0x0003bc84 cmp r4, 0x2c |
| if (r4 != 0x2c) {
0x0003bc86 bne 0x3bc9e | goto label_6;
| }
0x0003bc88 adds r5, 1 | r5++;
0x0003bc8a mov r1, r7 | r1 = r7;
0x0003bc8c mov r0, r5 | r0 = r5;
0x0003bc8e bl 0x3b744 | r0 = json_parse_value ();
0x0003bc92 orrs r1, r0 | r1 |= r0;
| if (r1 != r0) {
0x0003bc94 bne 0x3bc6a | goto label_0;
| }
| label_2:
0x0003bc96 movs r0, 0 | r0 = 0;
0x0003bc98 mov r1, r0 | r1 = r0;
0x0003bc9a pop.w {r4, r5, r6, r7, r8, pc} |
| label_6:
0x0003bc9e cmp r4, 0x5d |
| if (r4 == 0x5d) {
0x0003bca0 beq 0x3bc4e | goto label_1;
| }
| label_5:
0x0003bca2 cmp r7, 0 |
| if (r7 == 0) {
0x0003bca4 beq 0x3bc96 | goto label_2;
| }
0x0003bca6 ldr r2, [pc, 0x1c] |
0x0003bca8 mov r3, r5 | r3 = r5;
0x0003bcaa ldr r1, [pc, 0x1c] |
0x0003bcac ldr r0, [r7] | r0 = *(r7);
0x0003bcae add r2, pc | r2 = 0x77978;
0x0003bcb0 add r1, pc | r1 = 0x7797e;
0x0003bcb2 bl 0x44820 | zbx_dsprintf ()
0x0003bcb4 ldc2 p0, c6, [r5, 0xe0]! | __asm ("ldc2 p0, c6, [r5, 0xe0]!");
0x0003bcb8 b 0x3bc96 | goto label_2;
| }
; assembly | /* r2dec pseudo code output */
| /* /logs/firmware/patool_extraction/rootfs.img_unblob_extracted/rootfs.img_extract/0-80367616.squashfs_v4_le_extract/usr/sbin/zabbix_agentd @ 0x3c3b4 */
| #include <stdint.h>
|
; (fcn) fcn.0003c3b4 () | void fcn_0003c3b4 (int16_t arg1, int16_t arg2, int16_t arg3, int16_t arg4) {
| int16_t var_4h;
| int16_t var_8h;
| int16_t var_ch;
| int16_t var_8h_2;
| int32_t var_8h_3;
| int16_t var_18h;
| int16_t var_20h;
| int16_t var_834h;
| int32_t var_ch_2;
| int32_t var_10h;
| int32_t var_14h;
| int16_t var_3ch;
| int16_t var_858h;
| int16_t var_1040h;
| int16_t var_14h_2;
| int16_t var_1840h;
| int32_t var_0h;
| r0 = arg1;
| r1 = arg2;
| r2 = arg3;
| r3 = arg4;
0x0003c3b4 push.w {r4, r5, r6, r7, r8, sb, sl, fp, lr} |
0x0003c3b8 sub.w sp, sp, 0x1840 |
0x0003c3bc ldr r5, [pc, 0x3ac] |
0x0003c3be sub sp, 0x1c |
0x0003c3c0 add.w r7, sp, 0x1840 | r7 += var_1840h;
0x0003c3c4 addw sl, sp, 0x858 | __asm ("addw sl, var_858h");
0x0003c3c8 ldr r4, [pc, 0x3a4] | r4 = *(0x3c770);
0x0003c3ca adds r7, 0x14 | r7 += 0x14;
0x0003c3cc add r5, pc | r5 = 0x78b3c;
0x0003c3ce ldr r6, [pc, 0x3a4] |
0x0003c3d0 vmov.i32 d16, 0 | __asm ("vmov.i32 d16, 0");
0x0003c3d4 ldr r4, [r5, r4] |
0x0003c3d6 mov r5, r2 | r5 = r2;
0x0003c3d8 subw r2, sl, 0x834 | __asm ("subw r2, var_834h");
0x0003c3dc add r6, pc | r6 = 0x78b56;
0x0003c3de ldr r4, [r4] | r4 = *(0x78b3c);
0x0003c3e0 str r4, [r7] | *(r7) = r4;
0x0003c3e2 mov.w r4, 0 | r4 = 0;
0x0003c3e6 str r1, [sp, 4] | var_4h = r1;
0x0003c3e8 mov r4, r0 | r4 = r0;
0x0003c3ea mov r0, r1 | r0 = r1;
0x0003c3ec ldr r1, [pc, 0x388] | r1 = *(0x3c778);
0x0003c3ee movs r7, 0 | r7 = 0;
0x0003c3f0 vst1.32 {d16}, [r2] | __asm ("vst1.32 {d16}, [r2]");
0x0003c3f4 subw r2, sl, 0x838 | __asm ("subw r2, var_20h");
0x0003c3f8 str r3, [sp, 8] | var_8h = r3;
0x0003c3fa mov r3, r6 | r3 = r6;
0x0003c3fc str r7, [r2] | *(r2) = r7;
0x0003c3fe cmp r0, 7 |
0x0003c400 ldr r1, [r6, r1] | r1 = *(0x78b56);
0x0003c402 str r1, [r2, 0xc] | var_ch_2 = r1;
0x0003c404 ldr r1, [pc, 0x374] | r1 = *(0x3c77c);
0x0003c406 ldr r1, [r6, r1] | r1 = *(0x78b56);
0x0003c408 str r1, [r2, 0x10] | var_10h = r1;
0x0003c40a ldr r1, [pc, 0x374] | r1 = *(0x3c782);
0x0003c40c ldr r3, [r6, r1] | r3 = *(0x78b56);
0x0003c40e str r3, [r2, 0x14] | var_14h = r3;
0x0003c410 ldr r2, [r4, 4] | r2 = *((r4 + 4));
| if (r0 == 7) {
0x0003c412 beq.w 0x3c668 | goto label_12;
| }
0x0003c416 cmp r5, 0 |
| if (r5 != 0) {
0x0003c418 bne.w 0x3c600 | goto label_13;
| }
0x0003c41c mov r8, r5 | r8 = r5;
| label_6:
0x0003c41e ldr r3, [sp, 4] | r3 = var_4h;
0x0003c420 cmp r3, 4 |
| if (r3 == 4) {
0x0003c422 beq.w 0x3c712 | goto label_14;
| }
0x0003c426 ldr r3, [sp, 4] | r3 = var_4h;
0x0003c428 cmp r3, 5 |
| if (r3 == 5) {
0x0003c42a beq.w 0x3c6fe | goto label_15;
| }
0x0003c42c strh r0, [r5, 0xa] | *((r5 + 0xa)) = r0;
0x0003c42e cmp r2, 0 |
| if (r2 == 0) {
0x0003c430 beq.w 0x3c746 | goto label_16;
| }
0x0003c434 ldr r3, [r4] | r3 = *(r4);
0x0003c436 add.w sb, sp, 0x1040 | sb += var_1040h;
0x0003c43a add.w sb, sb, 0x14 | sb += var_14h_2;
0x0003c43e mov.w r2, 0x800 | r2 = 0x800;
0x0003c442 mov r1, sb | r1 = sb;
0x0003c444 ldr r7, [r3, 4] | r7 = *((r3 + 4));
0x0003c446 movs r3, 0 | r3 = 0;
0x0003c448 mov r0, r7 | r0 = r7;
0x0003c44a bl 0x3b1a8 | r0 = zbx_json_decodevalue ();
0x0003c44e cmp r0, 0 |
| if (r0 == 0) {
0x0003c450 beq.w 0x3c73a | goto label_17;
| }
0x0003c454 add r6, sp, 0x18 | r6 += var_18h;
0x0003c456 mov r0, sb | r0 = sb;
0x0003c458 sub.w r1, r6, 8 | r1 -= var_8h_2;
0x0003c45c bl 0x41798 | r0 = is_double ();
0x0003c460 cmp r0, 0 |
| if (r0 != 0) {
0x0003c462 bne.w 0x3c73a | goto label_17;
| }
0x0003c466 ldr r3, [r4, 4] | r3 = var_834h;
0x0003c468 cmp r3, 1 |
| if (r3 <= 1) {
0x0003c46a ble 0x3c4d2 | goto label_18;
| }
0x0003c46c ldr r3, [sp, 4] | r3 = var_4h;
0x0003c46e movs r7, 1 | r7 = 1;
0x0003c470 str.w r8, [sp, 0xc] | __asm ("str.w r8, [var_ch]");
0x0003c474 mov r8, r4 | r8 = r4;
0x0003c476 subs r3, 1 | r3--;
0x0003c478 mov fp, r3 |
| do {
0x0003c47a ldr.w r3, [r8] | r3 = *(r8);
0x0003c47e mov.w r2, 0x800 | r2 = 0x800;
0x0003c482 mov r1, sb | r1 = sb;
0x0003c484 add.w r3, r3, r7, lsl 3 | r3 += (r7 << 3);
0x0003c488 ldr r4, [r3, 4] | r4 = *((r3 + 4));
0x0003c48a movs r3, 0 | r3 = 0;
0x0003c48c mov r0, r4 | r0 = r4;
0x0003c48e bl 0x3b1a8 | r0 = zbx_json_decodevalue ();
0x0003c492 cmp r0, 0 |
| if (r0 == 0) {
0x0003c494 beq.w 0x3c59e | goto label_4;
| }
0x0003c498 mov r1, r6 | r1 = r6;
0x0003c49a mov r0, sb | r0 = sb;
0x0003c49c bl 0x41798 | r0 = is_double ();
0x0003c4a0 cmp r0, 0 |
| if (r0 != 0) {
0x0003c4a2 bne 0x3c59e | goto label_4;
| }
0x0003c4a4 cmp.w fp, 5 |
| if (fp <= 5) {
0x0003c4a8 bhi 0x3c4c4 |
| /* switch table (6 cases) at 0x3c4ae */
0x0003c4aa tbb [pc, fp] | __asm ("tbb [0x0003c4b0]");
0x0003c4b4 vldr d16, [r6, -8] | __asm ("vldr d16, [r6, -8]");
0x0003c4b8 vldr d17, [r6] | __asm ("vldr d17, [r6]");
0x0003c4bc vadd.f64 d16, d16, d17 | __asm ("vadd.f64 d16, d16, d17");
0x0003c4c0 vstr d16, [r6, -8] | __asm ("vstr d16, [r6, -8]");
| }
| label_0:
0x0003c4c4 ldr.w r3, [r8, 4] | r3 = var_834h;
0x0003c4c8 adds r7, 1 | r7++;
0x0003c4ca cmp r3, r7 |
0x0003c4cc bgt 0x3c47a |
| } while (r3 > r7);
| label_1:
0x0003c4ce ldr.w r8, [sp, 0xc] | r8 = var_ch;
| label_18:
0x0003c4d2 ldr r2, [sp, 4] | r2 = var_4h;
0x0003c4d4 ldrd r0, r1, [r6, -0x8] | __asm ("ldrd r0, r1, [r6, -0x8]");
0x0003c4d8 cmp r2, 3 |
| if (r2 == 3) {
0x0003c4da beq.w 0x3c6da | goto label_19;
| }
| label_8:
0x0003c4de mov r3, r1 | r3 = r1;
0x0003c4e0 ldr r1, [pc, 0x2a0] |
0x0003c4e2 mov r2, r0 | r2 = r0;
0x0003c4e4 movs r0, 0 | r0 = 0;
0x0003c4e6 add r1, pc | r1 = 0x78c6e;
0x0003c4e8 bl 0x44820 | zbx_dsprintf ()
0x0003c4ec ldr r3, [sp, 8] | r3 = var_8h;
0x0003c4ee movs r1, 0 | r1 = 0;
0x0003c4f0 str r0, [r3] | *(r3) = r0;
0x0003c4f2 bl 0x41798 | is_double ();
0x0003c4f6 ldr r3, [sp, 8] | r3 = var_8h;
0x0003c4f8 cmp r0, 0 |
| if (r0 != 0) {
0x0003c4fa bne.w 0x3c75a | goto label_20;
| }
0x0003c4fe ldr r0, [r3] | r0 = *(r3);
0x0003c500 bl 0x4448c | del_zeros ();
| label_10:
0x0003c504 movs r7, 0 | r7 = 0;
| label_3:
0x0003c506 cmp r5, 0 |
| if (r5 <= 0) {
0x0003c508 ble.w 0x3c6f4 | goto label_21;
| }
0x0003c50c movs r4, 0 | r4 = 0;
0x0003c50e mov r6, r4 | r6 = r4;
| do {
0x0003c510 ldr.w r0, [r8, r4, lsl 3] | offset_0 = r4 << 3;
| r0 = *((r8 + offset_0));
| if (r0 != 0) {
0x0003c514 cbz r0, 0x3c51e |
0x0003c516 blx 0xde30 | fcn_0000de30 ();
0x0003c51a str.w r6, [r8, r4, lsl 3] | __asm ("str.w r6, [r8, r4, lsl 3]");
0x0003c51c str r4, [r6] | *(r6) = r4;
| }
0x0003c51e adds r4, 1 | r4++;
0x0003c520 cmp r4, r5 |
0x0003c522 bne 0x3c510 |
| } while (r4 != r5);
| label_9:
0x0003c524 subw sl, sl, 0x838 | __asm ("subw sl, var_20h");
0x0003c528 mov r0, r8 | r0 = r8;
0x0003c52a ldr.w r3, [sl, 0x14] | r3 = var_14h;
0x0003c52e blx r3 | uint32_t (*r3)(uint32_t, uint32_t) (r0, r3);
| label_7:
0x0003c530 ldr r2, [pc, 0x254] |
0x0003c532 add.w r1, sp, 0x1840 | r1 += var_1840h;
0x0003c536 ldr r3, [pc, 0x238] | r3 = *(0x3c772);
0x0003c538 adds r1, 0x14 | r1 += 0x14;
0x0003c53a add r2, pc | r2 = 0x78cc6;
0x0003c53c ldr r3, [r2, r3] | r3 = *(0x78cc6);
0x0003c53e ldr r2, [r3] | r2 = *(0x78cc6);
0x0003c540 ldr r3, [r1] | r3 = *(r1);
0x0003c542 eors r2, r3 | r2 ^= r3;
0x0003c544 mov.w r3, 0 | r3 = 0;
| if (r2 != r3) {
0x0003c548 bne.w 0x3c766 | goto label_22;
| }
0x0003c54c mov r0, r7 | r0 = r7;
0x0003c54e add.w sp, sp, 0x1840 |
0x0003c552 add sp, 0x1c |
0x0003c554 pop.w {r4, r5, r6, r7, r8, sb, sl, fp, pc} |
| label_2:
0x0003c558 vldr d16, [r6] | __asm ("vldr d16, [r6]");
0x0003c55c vldr d17, [r6, -8] | __asm ("vldr d17, [r6, -8]");
0x0003c560 vcmpe.f64 d16, d17 | __asm ("vcmpe.f64 d16, d17");
0x0003c564 vmrs apsr_nzcv, fpscr | __asm ("vmrs apsr_nzcv, fpscr");
| if (r2 <= r3) {
0x0003c568 ble 0x3c4c4 | goto label_0;
| }
0x0003c56a ldr.w r3, [r8, 4] | r3 = var_834h;
0x0003c56e adds r7, 1 | r7++;
0x0003c570 vstr d16, [r6, -8] | __asm ("vstr d16, [r6, -8]");
0x0003c574 cmp r7, r3 |
| if (r7 >= r3) {
0x0003c576 bge 0x3c4ce | goto label_1;
| }
0x0003c578 ldr.w r3, [r8] | r3 = *(r8);
0x0003c57c mov.w r2, 0x800 | r2 = 0x800;
0x0003c580 mov r1, sb | r1 = sb;
0x0003c582 add.w r3, r3, r7, lsl 3 | r3 += (r7 << 3);
0x0003c586 ldr r4, [r3, 4] | r4 = *((r3 + 4));
0x0003c588 movs r3, 0 | r3 = 0;
0x0003c58a mov r0, r4 | r0 = r4;
0x0003c58c bl 0x3b1a8 | r0 = zbx_json_decodevalue ();
| if (r0 == 0) {
0x0003c590 cbz r0, 0x3c59e | goto label_4;
| }
0x0003c592 mov r1, r6 | r1 = r6;
0x0003c594 mov r0, sb | r0 = sb;
0x0003c596 bl 0x41798 | r0 = is_double ();
0x0003c59a cmp r0, 0 |
| if (r0 == 0) {
0x0003c59c beq 0x3c558 | goto label_2;
| }
| label_4:
0x0003c59e ldr r0, [pc, 0x1ec] |
0x0003c5a0 mov r1, r4 | r1 = r4;
0x0003c5a2 ldr.w r8, [sp, 0xc] | r8 = var_ch;
0x0003c5a6 add r0, pc | r0 = 0x78d38;
0x0003c5a8 bl 0x3a990 | zbx_set_json_strerror ();
| label_11:
0x0003c5ac mov.w r7, -1 | r7 = -1;
0x0003c5b0 b 0x3c506 | goto label_3;
| label_5:
0x0003c5b2 vldr d16, [r6] | __asm ("vldr d16, [r6]");
0x0003c5b6 vldr d17, [r6, -8] | __asm ("vldr d17, [r6, -8]");
0x0003c5ba vcmpe.f64 d16, d17 | __asm ("vcmpe.f64 d16, d17");
0x0003c5bc lsrs r1, r4, 0xf | r1 = r4 >> 0xf;
0x0003c5be vmrs apsr_nzcv, fpscr | __asm ("vmrs apsr_nzcv, fpscr");
| if (r1 >= r4) {
0x0003c5c2 bpl.w 0x3c4c4 | goto label_0;
| }
0x0003c5c6 ldr.w r3, [r8, 4] | r3 = var_834h;
0x0003c5ca adds r7, 1 | r7++;
0x0003c5cc vstr d16, [r6, -8] | __asm ("vstr d16, [r6, -8]");
0x0003c5d0 cmp r3, r7 |
| if (r3 <= r7) {
0x0003c5d2 ble.w 0x3c722 | goto label_23;
| }
0x0003c5d6 ldr.w r3, [r8] | r3 = *(r8);
0x0003c5da mov.w r2, 0x800 | r2 = 0x800;
0x0003c5dc str r0, [r0, 0x20] | *((r0 + 0x20)) = r0;
0x0003c5de mov r1, sb | r1 = sb;
0x0003c5e0 add.w r3, r3, r7, lsl 3 | r3 += (r7 << 3);
0x0003c5e4 ldr r4, [r3, 4] | r4 = *((r3 + 4));
0x0003c5e6 movs r3, 0 | r3 = 0;
0x0003c5e8 mov r0, r4 | r0 = r4;
0x0003c5ea bl 0x3b1a8 | r0 = zbx_json_decodevalue ();
0x0003c5ee cmp r0, 0 |
| if (r0 == 0) {
0x0003c5f0 beq 0x3c59e | goto label_4;
| }
0x0003c5f2 mov r1, r6 | r1 = r6;
0x0003c5f4 mov r0, sb | r0 = sb;
0x0003c5f6 bl 0x41798 | r0 = is_double ();
0x0003c5fa cmp r0, 0 |
| if (r0 == 0) {
0x0003c5fc beq 0x3c5b2 | goto label_5;
| }
0x0003c5fe b 0x3c59e | goto label_4;
| label_13:
0x0003c600 cmp r2, 0 |
| if (r2 == 0) {
0x0003c602 beq.w 0x3c72c | goto label_24;
| }
0x0003c606 ldr r3, [r4] | r3 = *(r4);
0x0003c608 ldr r0, [r3, 4] | r0 = *((r3 + 4));
0x0003c60a ldrb r3, [r0] | r3 = *(r0);
0x0003c60c cmp r3, 0x5b |
| if (r3 != 0x5b) {
0x0003c60e bne.w 0x3c72c | goto label_24;
| }
0x0003c612 add r6, sp, 0x18 | r6 += var_18h;
0x0003c614 mov r1, r6 | r1 = r6;
0x0003c616 bl 0x3b42c | zbx_json_brackets_open ();
0x0003c61a adds r0, 1 | r0++;
| if (r0 == 1) {
0x0003c61c beq.w 0x3c734 | goto label_25;
| }
0x0003c620 ldr.w sb, [pc, 0x16c] |
0x0003c624 add.w r8, sp, 0x1040 | r8 += var_1040h;
0x0003c628 mov r5, r7 | r5 = r7;
0x0003c62a add r4, sp, 0x20 | r4 += var_20h;
0x0003c62c add.w r8, r8, 0x14 | r8 += var_14h_2;
0x0003c630 add sb, pc | sb = 0x78dc4;
0x0003c632 b 0x3c64e |
| while (r0 != 0) {
0x0003c634 adds r2, r7, 1 | r2 = r7 + 1;
0x0003c636 mov r3, r7 | r3 = r7;
0x0003c638 movs r1, 0x16 | r1 = 0x16;
0x0003c63a mov r7, r2 | r7 = r2;
0x0003c63c mov r0, r8 | r0 = r8;
0x0003c63e mov r2, sb | r2 = sb;
0x0003c640 bl 0x43f38 | zbx_snprintf ();
0x0003c644 mov r2, r5 | r2 = r5;
0x0003c646 mov r1, r8 | r1 = r8;
0x0003c648 mov r0, r4 | r0 = r4;
0x0003c64a bl 0x3c288 | fcn_0003c288 (r0, r1, r2);
0x0003c64c invalid |
0x0003c64e mov r1, r5 | r1 = r5;
0x0003c650 mov r0, r6 | r0 = r6;
0x0003c652 bl 0x3b048 | r0 = zbx_json_next ();
0x0003c656 mov r5, r0 | r5 = r0;
0x0003c658 cmp r0, 0 |
0x0003c65a bne 0x3c634 |
| }
0x0003c65c subw r3, sl, 0x838 | __asm ("subw r3, var_20h");
0x0003c660 ldrd r8, r5, [r3] | __asm ("ldrd r8, r5, [r3]");
0x0003c664 mov r2, r5 | r2 = r5;
0x0003c666 b 0x3c41e | goto label_6;
| label_12:
0x0003c668 cmp r2, 0 |
| if (r2 == 0) {
0x0003c66a beq 0x3c750 | goto label_26;
| }
| if (r5 != 0) {
0x0003c66c cbnz r5, 0x3c6c0 | goto label_27;
| }
0x0003c66e add r6, sp, 0x3c | r6 += var_3ch;
0x0003c670 mov.w r1, 0x400 | r1 = 0x400;
0x0003c674 mov r0, r6 | r0 = r6;
0x0003c676 bl 0x3ab5c | zbx_json_initarray ();
0x0003c67a ldr r3, [r4, 4] | r3 = *((r4 + 4));
0x0003c67c cmp r3, 0 |
| if (r3 <= 0) {
0x0003c67e ble 0x3c698 | goto label_28;
| }
| do {
0x0003c680 ldr r2, [r4] | r2 = *(r4);
0x0003c682 movs r3, 1 | r3 = 1;
0x0003c684 movs r1, 0 | r1 = 0;
0x0003c686 mov r0, r6 | r0 = r6;
0x0003c688 ldr.w r2, [r2, r5, lsl 3] | offset_1 = r5 << 3;
| r2 = *((r2 + offset_1));
0x0003c68c add r5, r3 | r5 += r3;
0x0003c68e bl 0x3ac9c | zbx_json_addstring ();
0x0003c692 ldr r3, [r4, 4] | r3 = *((r4 + 4));
0x0003c694 cmp r3, r5 |
0x0003c696 bgt 0x3c680 |
| } while (r3 > r5);
| label_28:
0x0003c698 mov r0, r6 | r0 = r6;
0x0003c69a subw sl, sl, 0x81c | __asm ("subw sl, var_3ch");
0x0003c69e bl 0x3af6c | zbx_json_close ();
0x0003c6a2 ldr r0, [pc, 0xf0] |
0x0003c6a4 movs r2, 0 | r2 = 0;
0x0003c6a6 ldr.w r3, [sl] | r3 = *(sl);
0x0003c6aa mov.w r1, 0x850 | r1 = 0x850;
0x0003c6ae add r0, pc | r0 = 0x78e48;
0x0003c6b0 bl 0x40ed8 | zbx_strdup2 ();
0x0003c6b4 ldr r3, [sp, 8] | r3 = var_8h;
0x0003c6b6 str r0, [r3] | *(r3) = r0;
0x0003c6b8 mov r0, r6 | r0 = r6;
0x0003c6ba bl 0x3abf4 | zbx_json_clean ();
0x0003c6be b 0x3c6d6 | goto label_29;
| label_27:
0x0003c6c0 ldr r3, [r4] | r3 = *(r4);
0x0003c6c2 mov r2, r7 | r2 = r7;
0x0003c6c4 ldr r0, [pc, 0xd0] |
0x0003c6c6 movw r1, 0x854 | r1 = 0x854;
0x0003c6ca ldr r3, [r3] | r3 = *(r3);
0x0003c6cc add r0, pc | r0 = 0x78e68;
0x0003c6ce bl 0x40ed8 | zbx_strdup2 ();
0x0003c6d2 ldr r3, [sp, 8] | r3 = var_8h;
0x0003c6d4 str r0, [r3] | *(r3) = r0;
| label_29:
0x0003c6d6 movs r7, 0 | r7 = 0;
0x0003c6d8 b 0x3c530 | goto label_7;
| label_19:
0x0003c6da vmov s15, r3 | __asm ("vmov s15, r3");
0x0003c6de vcvt.f64.s32 d16, s15 | __asm ("vcvt.f64.s32 d16, s15");
0x0003c6e2 vmov d17, r0, r1 | __asm ("vmov d17, r0, r1");
0x0003c6e6 vdiv.f64 d16, d17, d16 | __asm ("vdiv.f64 d16, d17, d16");
0x0003c6ea vmov r0, r1, d16 | __asm ("vmov r0, r1, d16");
0x0003c6ee vstr d16, [r6, -8] | __asm ("vstr d16, [r6, -8]");
0x0003c6f2 b 0x3c4de | goto label_8;
| label_21:
0x0003c6f4 cmp.w r8, 0 |
| if (r8 == 0) {
0x0003c6f8 beq.w 0x3c530 | goto label_7;
| }
0x0003c6fc b 0x3c524 | goto label_9;
| label_15:
0x0003c6fe cmp r2, 0 |
| if (r2 <= 0) {
0x0003c700 ble.w 0x3c504 | goto label_10;
| }
0x0003c704 ldr r3, [r4] | r3 = *(r4);
0x0003c706 ldr r1, [sp, 8] | r1 = var_8h;
0x0003c708 ldr r0, [r3, 4] | r0 = *((r3 + 4));
0x0003c70a bl 0x3bee4 | r0 = fcn_0003bee4 (r0, r1, r2);
0x0003c70e mov r7, r0 | r7 = r0;
0x0003c710 b 0x3c506 | goto label_3;
| label_14:
0x0003c712 ldr r1, [pc, 0x88] |
0x0003c714 movs r0, 0 | r0 = 0;
0x0003c716 add r1, pc | r1 = 0x78eb8;
0x0003c718 bl 0x44820 | zbx_dsprintf ()
0x0003c71c ldr r3, [sp, 8] | r3 = var_8h;
0x0003c71e str r0, [r3] | *(r3) = r0;
0x0003c720 b 0x3c504 | goto label_10;
| label_23:
0x0003c722 ldr.w r8, [sp, 0xc] | r8 = var_ch;
0x0003c726 vmov r0, r1, d16 | __asm ("vmov r0, r1, d16");
0x0003c728 lsrs r0, r6, 0xc | r0 = r6 >> 0xc;
0x0003c72a b 0x3c4de | goto label_8;
| label_24:
0x0003c72c ldr r0, [pc, 0x70] |
0x0003c72e add r0, pc | r0 = 0x78ed2;
0x0003c730 bl 0x3a990 | zbx_set_json_strerror ();
| do {
| label_25:
0x0003c734 mov.w r7, -1 | r7 = -1;
0x0003c738 b 0x3c530 | goto label_7;
| label_17:
0x0003c73a ldr r0, [pc, 0x68] |
0x0003c73c mov r1, r7 | r1 = r7;
0x0003c73e add r0, pc | r0 = 0x78ee8;
0x0003c740 bl 0x3a990 | zbx_set_json_strerror ();
0x0003c744 b 0x3c5ac | goto label_11;
| label_16:
0x0003c746 ldr r0, [pc, 0x60] |
0x0003c748 add r0, pc | r0 = 0x78ef6;
0x0003c74a bl 0x3a990 | zbx_set_json_strerror ();
0x0003c74e b 0x3c5ac | goto label_11;
| label_26:
0x0003c750 ldr r0, [pc, 0x58] |
0x0003c752 add r0, pc | r0 = 0x78f02;
0x0003c754 bl 0x3a990 | zbx_set_json_strerror ();
0x0003c758 b 0x3c734 |
| } while (1);
| label_20:
0x0003c75a ldr r0, [pc, 0x54] |
0x0003c75c ldr r1, [r3] | r1 = *(r3);
0x0003c75e add r0, pc | r0 = 0x78f14;
0x0003c760 bl 0x3a990 | zbx_set_json_strerror ();
0x0003c764 b 0x3c5ac | goto label_11;
| label_22:
0x0003c766 blx 0xe158 | fcn_0000e158 ();
0x0003c76a nop |
0x0003c76c strb.w r0, [ip, r1] | *((ip + r1)) = r0;
0x0003c770 lsls r4, r2, 0xe | r4 = r2 << 0xe;
0x0003c772 movs r0, r0 |
0x0003c774 invalid |
| }
; assembly | /* r2dec pseudo code output */
| /* /logs/firmware/patool_extraction/rootfs.img_unblob_extracted/rootfs.img_extract/0-80367616.squashfs_v4_le_extract/usr/sbin/zabbix_agentd @ 0x2bca0 */
| #include <stdint.h>
|
| #define SWAP32(n) ((uint32_t) (((n & 0x000000ff) << 24) | \
| ((n & 0x0000ff00) << 8) | \
| ((n & 0x00ff0000) >> 8) | \
| ((n & 0xff000000) >> 24)))
|
; (fcn) sym.NET_DNS () | void NET_DNS (int16_t arg_2h, int16_t arg_4h, int16_t arg_8h, int16_t arg_ah, int16_t arg_bh, int16_t arg_ch, int16_t arg_eh, int16_t arg_fh, int16_t arg_10h, int16_t arg_1d0h, int16_t arg_1dch, int16_t arg_1e0h, 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_50h, int16_t arg_54h, int16_t arg_90h, int16_t arg_94h, int16_t arg_2d0h, int16_t arg_4cch, int16_t arg_8cch, int16_t arg_10c0h, int16_t arg_18c0h, int16_t arg_20c0h, int16_t arg1, int16_t arg2) {
| int16_t var_78h;
| int16_t var_74h;
| int16_t var_70h;
| int16_t var_6ch;
| int16_t var_68h;
| int16_t var_64h;
| int16_t var_50h;
| int16_t var_bp_30h;
| int16_t var_bp_20h;
| int16_t var_bp_1ch;
| int16_t var_18h;
| int16_t var_8h;
| int16_t var_4h;
| int16_t var_0h;
| int16_t var_sp_4h;
| int16_t var_10h;
| int16_t var_14h;
| int16_t var_1ch;
| int16_t var_20h;
| int16_t var_24h;
| int16_t var_28h;
| int16_t var_2ch;
| int16_t var_30h;
| int16_t var_34h;
| r0 = arg1;
| r1 = arg2;
| label_22:
0x0002ab7c svcmi 0xf0e92d | __asm ("svcmi 0xf0e92d");
0x0002ab80 mov r5, r0 | r5 = r0;
0x0002ab82 ldr.w r4, [pc, 0xc7c] | r4 = *(0x0002b800);
0x0002ab86 sub.w sp, sp, 0x20c0 |
0x0002ab8a sub sp, 0x14 |
0x0002ab8c movs r7, 0 | r7 = 0;
0x0002ab8e ldr.w r0, [pc, 0xc74] |
0x0002ab92 add.w r6, sp, 0x20c0 | r6 += arg_20c0h;
0x0002ab96 ldr.w r3, [pc, 0xc70] | r3 = *(0x2b80a);
0x0002ab9a add r4, pc | r4 += pc;
0x0002ab9c str r4, [sp, 0x44] | *(arg_44h) = r4;
0x0002ab9e adds r6, 0xc | r6 += 0xc;
0x0002aba0 add r0, pc | r0 = 0x563aa;
0x0002aba2 add.w fp, sp, 0xd0 |
0x0002aba6 ldr r3, [r0, r3] |
0x0002aba8 ldr r3, [r3] | r3 = *(0x563aa);
0x0002abaa str r3, [r6] | *(r6) = r3;
0x0002abac mov.w r3, 0 | r3 = 0;
0x0002abb0 ldr r3, [r5, 4] | r3 = *((r5 + 4));
0x0002abb2 str r2, [sp, 0x40] | *(arg_40h) = r2;
0x0002abb4 add.w r2, sp, 0x10c0 | r2 += arg_10c0h;
0x0002abb8 adds r2, 0x10 | r2 += 0x10;
0x0002abba str r7, [fp, -0x6c] | var_6ch = r7;
0x0002abbe cmp r3, 6 |
0x0002abc0 str r1, [sp, 0x30] | var_30h = r1;
0x0002abc2 str r2, [sp, 0x1c] | var_1ch = r2;
0x0002abc4 strb r7, [r2, -0x4] | *((r2 - 0x4)) = r7;
| if (r3 > 6) {
0x0002abc8 bgt.w 0x2af7c | goto label_26;
| }
0x0002abcc cmp r3, 0 |
| if (r3 <= 0) {
0x0002abce ble.w 0x2acd4 | goto label_27;
| }
0x0002abd2 ldr r2, [r5, 8] | r2 = *((r5 + 8));
0x0002abd4 cmp r3, 1 |
0x0002abd6 mov.w r3, 4 | r3 = 4;
0x0002abd8 lsls r4, r0, 0xc | r4 = r0 << 0xc;
0x0002abda add r4, sp, 0x90 | r4 += arg_90h;
0x0002abdc ldr r1, [r2] | r1 = *(r2);
0x0002abde str r3, [fp, -0x50] | var_50h = r3;
0x0002abe2 it ne |
| if (r4 == r0) {
0x0002abe4 ldrne r7, [r2, 4] | r7 = *((r2 + 4));
| }
0x0002abe6 sub.w r2, r4, 0x10 | r2 = r4 - 0x10;
0x0002abea str r1, [sp, 0x20] | var_20h = r1;
0x0002abec movs r1, 0 | r1 = 0;
0x0002abee ldr r3, [sp, 0x20] | r3 = var_20h;
0x0002abf0 strd r1, r1, [r4, -0xc] | __asm ("strd r1, r1, [r4, -0xc]");
0x0002abf4 strd r1, r1, [r4, -0x4] | __asm ("strd r1, r1, [r4, -0x4]");
0x0002abf8 strd r1, r1, [r4, 4] | __asm ("strd r1, r1, [r4, 4]");
0x0002abfc str r1, [r4, 0xc] | *((r4 + 0xc)) = r1;
| if (r3 != 0) {
0x0002abfe cbz r3, 0x2ac08 |
0x0002ac00 ldrb r3, [r3] | r3 = *(r3);
0x0002ac02 cmp r3, 0 |
| if (r3 != 0) {
0x0002ac04 bne.w 0x2b7b8 | goto label_28;
| }
| }
0x0002ac08 movs r3, 2 | r3 = 2;
0x0002ac0a str r3, [sp, 0x24] | var_24h = r3;
| label_15:
0x0002ac0c cmp r7, 0 |
| if (r7 == 0) {
0x0002ac0e beq 0x2acf0 | goto label_29;
| }
0x0002ac10 ldrb r3, [r7] | r3 = *(r7);
0x0002ac12 cmp r3, 0 |
| if (r3 == 0) {
0x0002ac14 beq 0x2acf0 | goto label_29;
| }
0x0002ac16 mov r1, r7 | r1 = r7;
0x0002ac18 addw r7, sp, 0x8cc | __asm ("addw r7, arg_8cch");
0x0002ac1c mov.w r2, 0x800 | r2 = 0x800;
0x0002ac20 mov r0, r7 | r0 = r7;
0x0002ac22 bl 0x4465c | zbx_strlcpy ();
0x0002ac26 ldr.w sl, [r5, 4] | sl = *((r5 + 4));
0x0002ac2a cmp.w sl, 2 |
| if (sl <= 2) {
0x0002ac2e ble 0x2ad0e | goto label_30;
| }
| do {
0x0002ac30 ldr r3, [r5, 8] | r3 = *((r5 + 8));
0x0002ac32 ldr r6, [r3, 8] | r6 = *((r3 + 8));
| if (r6 != 0) {
0x0002ac34 cbz r6, 0x2ac3e |
0x0002ac36 ldrb r2, [r6] | r2 = *(r6);
0x0002ac38 cmp r2, 0 |
| if (r2 != 0) {
0x0002ac3a bne.w 0x2afcc | goto label_31;
| }
| }
0x0002ac3e movs r6, 6 | r6 = 6;
| label_0:
0x0002ac40 cmp.w sl, 3 |
0x0002ac44 itt eq |
| if (sl != 3) {
0x0002ac46 moveq r3, 1 | r3 = 1;
| }
| if (sl != 3) {
0x0002ac48 streq r3, [fp, -0x78] | var_78h = r3;
| }
| if (sl == 3) {
0x0002ac4c beq 0x2ad16 | goto label_32;
| }
0x0002ac4e ldr r0, [r3, 0xc] | r0 = *((r3 + 0xc));
| if (r0 != 0) {
0x0002ac50 cbz r0, 0x2ac5a |
0x0002ac52 ldrb r3, [r0] | r3 = *(r0);
0x0002ac54 cmp r3, 0 |
| if (r3 != 0) {
0x0002ac56 bne.w 0x2b1fc | goto label_33;
| }
| }
0x0002ac5a movs r3, 1 | r3 = 1;
0x0002ac5c str r3, [fp, -0x78] | var_78h = r3;
| label_4:
0x0002ac60 cmp.w sl, 4 |
| if (sl <= 4) {
0x0002ac64 ble 0x2ad16 | goto label_32;
| }
0x0002ac66 ldr r3, [r5, 8] | r3 = *((r5 + 8));
0x0002ac68 ldr r0, [r3, 0x10] | r0 = *((r3 + 0x10));
| if (r0 != 0) {
0x0002ac6a cbz r0, 0x2ac74 |
0x0002ac6c ldrb r3, [r0] | r3 = *(r0);
0x0002ac6e cmp r3, 0 |
| if (r3 != 0) {
0x0002ac70 bne.w 0x2b234 | goto label_34;
| }
| }
0x0002ac74 movs r3, 2 | r3 = 2;
0x0002ac76 str r3, [fp, -0x74] | var_74h = r3;
| label_5:
0x0002ac7a cmp.w sl, 5 |
| if (sl <= 5) {
0x0002ac7e ble 0x2ad1c | goto label_35;
| }
0x0002ac80 ldr r3, [r5, 8] | r3 = *((r5 + 8));
0x0002ac82 ldr r5, [r3, 0x14] | r5 = *((r3 + 0x14));
0x0002ac84 cmp r5, 0 |
| if (r5 == 0) {
0x0002ac86 beq 0x2ad1c | goto label_35;
| }
0x0002ac88 ldrb r3, [r5] | r3 = *(r5);
0x0002ac8a cmp r3, 0 |
| if (r3 == 0) {
0x0002ac8c beq 0x2ad1c | goto label_35;
| }
0x0002ac8e ldr.w r1, [pc, 0xb7c] |
0x0002ac92 mov r0, r5 | r0 = r5;
0x0002ac94 add r1, pc | r1 = 0x564a6;
0x0002ac96 blx 0xe3b0 | r0 = fcn_0000e3b0 ();
0x0002ac9a mov r8, r0 | r8 = r0;
0x0002ac9c cmp r0, 0 |
| if (r0 == 0) {
0x0002ac9e beq 0x2ad20 | goto label_36;
| }
0x0002aca0 ldr.w r1, [pc, 0xb6c] | r1 = *(0x0002b810);
0x0002aca4 mov r0, r5 | r0 = r5;
0x0002aca6 mov.w r8, 1 | r8 = 1;
0x0002acaa add r1, pc | r1 += pc;
0x0002acac blx 0xe3b0 | r0 = fcn_0000e3b0 ();
| if (r0 == 0) {
0x0002acb0 cbz r0, 0x2ad20 | goto label_36;
| }
0x0002acb2 ldr r4, [sp, 0x30] | r4 = var_30h;
0x0002acb4 movs r2, 0 | r2 = 0;
0x0002acb6 ldr.w r3, [pc, 0xb5c] |
0x0002acba mov.w r1, 0x130 | r1 = 0x130;
0x0002acbe ldr r0, [r4, 0x28] | r0 = *((r4 + 0x28));
0x0002acc0 add r3, pc | r3 = 0x564da;
0x0002acc2 orr r0, r0, 0x20 | r0 |= 0x20;
0x0002acc6 str r0, [r4, 0x28] | *((r4 + 0x28)) = r0;
0x0002acc8 ldr.w r0, [pc, 0xb4c] |
0x0002accc add r0, pc | r0 = 0x564e8;
0x0002acce bl 0x40ed8 | zbx_strdup2 ();
0x0002acd2 b 0x2af9a | goto label_13;
| label_27:
0x0002acd4 movs r3, 4 | r3 = 4;
0x0002acd6 add r4, sp, 0x90 | r4 += arg_90h;
0x0002acd8 str r3, [fp, -0x50] | var_50h = r3;
0x0002acdc movs r3, 2 | r3 = 2;
0x0002acde strd r7, r7, [r4, -0xc] | __asm ("strd r7, r7, [r4, -0xc]");
0x0002ace2 strd r7, r7, [r4, -0x4] | __asm ("strd r7, r7, [r4, -0x4]");
0x0002ace6 strd r7, r7, [r4, 4] | __asm ("strd r7, r7, [r4, 4]");
0x0002acea str r7, [sp, 0x20] | var_20h = r7;
0x0002acec str r3, [sp, 0x24] | var_24h = r3;
0x0002acee str r7, [r4, 0xc] | *((r4 + 0xc)) = r7;
| label_29:
0x0002acf0 ldr.w r1, [pc, 0xb28] | r1 = *(0x0002b81c);
0x0002acf4 addw r7, sp, 0x8cc | __asm ("addw r7, arg_8cch");
0x0002acf8 mov.w r2, 0x800 | r2 = 0x800;
0x0002acfc mov r0, r7 | r0 = r7;
0x0002acfe add r1, pc | r1 += pc;
0x0002ad00 bl 0x4465c | zbx_strlcpy ();
0x0002ad04 ldr.w sl, [r5, 4] | sl = *((r5 + 4));
0x0002ad08 cmp.w sl, 2 |
0x0002ad0c bgt 0x2ac30 |
| } while (sl > 2);
| label_30:
0x0002ad0e movs r6, 6 | r6 = 6;
0x0002ad10 movs r3, 1 | r3 = 1;
0x0002ad12 str r3, [fp, -0x78] | var_78h = r3;
| label_32:
0x0002ad16 movs r3, 2 | r3 = 2;
0x0002ad18 str r3, [fp, -0x74] | var_74h = r3;
| label_35:
0x0002ad1c mov.w r8, 0 | r8 = 0;
| label_36:
0x0002ad20 sub.w r5, fp, 4 | r5 = fp - 4;
0x0002ad24 mov.w sl, 0x200 | sl = 0x200;
0x0002ad28 mov r2, sl | r2 = sl;
0x0002ad2a movs r1, 0 | r1 = 0;
0x0002ad2c mov r0, r5 | r0 = r5;
0x0002ad2e blx 0xdd6c | uname ();
0x0002ad32 mov r0, r5 | r0 = r5;
0x0002ad34 blx 0xe0b8 | fcn_0000e0b8 ();
0x0002ad38 adds r0, 1 | r0++;
| if (r0 == 1) {
0x0002ad3a beq.w 0x2b978 | goto label_37;
| }
0x0002ad3e mov r2, r7 | r2 = r7;
0x0002ad40 mov.w r3, 0x400 | r3 = 0x400;
0x0002ad44 movs r7, 0 | r7 = 0;
0x0002ad46 str r6, [sp] | *(sp) = r6;
0x0002ad48 addw r6, sp, 0x4cc | __asm ("addw r6, arg_4cch");
0x0002ad4c str r3, [sp, 0x14] | var_14h = r3;
0x0002ad4e mov r1, r7 | r1 = r7;
0x0002ad50 movs r3, 1 | r3 = 1;
0x0002ad52 mov r0, r5 | r0 = r5;
0x0002ad54 strd r7, r7, [sp, 8] | __asm ("strd r7, r7, [sp, 8]");
0x0002ad58 str r7, [sp, 4] | var_sp_4h = r7;
0x0002ad5a str r6, [sp, 0x10] | var_10h = r6;
0x0002ad5c blx 0xdc74 | r0 = fcn_0000dc74 ();
0x0002ad60 cmp.w r0, -1 |
0x0002ad64 mov sb, r0 | sb = r0;
| if (r0 == -1) {
0x0002ad66 beq.w 0x2b9f8 | goto label_38;
| }
0x0002ad6a ldr r3, [sp, 0x20] | r3 = var_20h;
0x0002ad6c cmp r3, 0 |
| if (r3 == 0) {
0x0002ad6e beq.w 0x2b944 | goto label_39;
| }
0x0002ad72 ldrb r3, [r3] | r3 = *(r3);
| if (r3 != 0) {
0x0002ad74 cbz r3, 0x2add8 |
0x0002ad76 ldr r3, [sp, 0x24] | r3 = var_24h;
0x0002ad78 cmp r3, 2 |
| if (r3 == 2) {
0x0002ad7a beq.w 0x2babe | goto label_40;
| }
0x0002ad7e sub.w sl, fp, 0x30 | sl = fp - 0x30;
0x0002ad82 ldr r1, [sp, 0x20] | r1 = var_20h;
0x0002ad84 mov r2, sl | r2 = sl;
0x0002ad86 movs r0, 0xa | r0 = 0xa;
0x0002ad88 blx 0xde84 | r0 = fcn_0000de84 ();
0x0002ad8c cmp r0, 0 |
| if (r0 == 0) {
0x0002ad8e beq.w 0x2ba88 | goto label_41;
| }
0x0002ad92 mov.w r2, -1 | r2 = -1;
0x0002ad96 movs r3, 0xa |
0x0002ad98 movt r3, 0x3500 | r3 = 0x3500000a;
0x0002ad9c str.w r2, [fp, 0x1d0] | __asm ("str.w r2, [arg_1d0h]");
0x0002ada0 ldr.w r2, [fp, 0x1e0] | r2 = *(arg_1e0h);
0x0002ada4 str r3, [fp, -0x20] | var_bp_20h = r3;
0x0002ada8 movs r3, 1 | r3 = 1;
0x0002adaa strh.w r3, [fp, 0x1dc] | *(arg_1dch) = r3;
0x0002adae str.w r3, [fp, 8] | __asm ("str.w r3, [arg_8h]");
0x0002adb2 sub.w r3, fp, 0x20 | r3 = fp - 0x20;
0x0002adb6 str r2, [sp, 0x34] | var_34h = r2;
0x0002adb8 str.w r3, [fp, 0x1e0] | __asm ("str.w r3, [arg_1e0h]");
0x0002adbc ldm.w sl, {r0, r1, r2, r3} | r0 = *(sl);
| r1 = *((sl + 4));
| r2 = *((sl + 8));
| r3 = *((sl + 12));
0x0002adc0 str r7, [fp, -0x8] | *((fp - 0x8)) = r7;
0x0002adc4 str r7, [fp, -0x1c] | var_bp_1ch = r7;
0x0002adc8 strd r7, r7, [fp, 0xc] | __asm ("strd r7, r7, [fp, 0xc]");
0x0002adcc strd r7, r7, [fp, 0x14] | __asm ("strd r7, r7, [fp, 0x14]");
0x0002add0 sub.w r7, fp, 0x18 | r7 = fp - 0x18;
0x0002add4 stm.w r7, {r0, r1, r2, r3} | *(r7) = r0;
| *((r7 + 4)) = r1;
| *((r7 + 8)) = r2;
| *((r7 + 12)) = r3;
| }
| label_20:
0x0002add8 ldrd r2, r3, [fp, -0x78] | __asm ("ldrd r2, r3, [var_78h]");
0x0002addc cmp.w r8, 0 |
| if (r8 != 0) {
0x0002ade0 bne.w 0x2b016 | goto label_42;
| }
0x0002ade4 add r7, sp, 0x2d0 | r7 += arg_2d0h;
0x0002ade6 mov r1, r6 | r1 = r6;
0x0002ade8 strd r2, r3, [fp, -0x4] | __asm ("strd r2, r3, [fp, -0x4]");
0x0002adec mov.w r3, 0x200 | r3 = 0x200;
0x0002adf0 str r3, [sp] | *(sp) = r3;
0x0002adf2 mov r2, sb | r2 = sb;
0x0002adf4 subs r3, r7, 4 | r3 = r7 - 4;
0x0002adf6 mov r0, r5 | r0 = r5;
0x0002adf8 str r3, [sp, 0x2c] | var_2ch = r3;
0x0002adfa blx 0xdd2c | r0 = fcn_0000dd2c ();
0x0002adfe mov r8, r0 | r8 = r0;
| label_1:
0x0002ae00 ldr r3, [sp, 0x20] | r3 = var_20h;
0x0002ae02 ldr r2, [sp, 0x24] | r2 = var_24h;
0x0002ae04 ldrb r3, [r3] | r3 = *(r3);
0x0002ae06 subs r3, 0 |
0x0002ae08 it ne |
| if (r3 == 0) {
0x0002ae0a movne r3, 1 | r3 = 1;
| }
0x0002ae0c cmp r2, 0xa |
0x0002ae0e it ne |
| if (r2 == 0xa) {
0x0002ae10 movne r3, 0 | r3 = 0;
| }
0x0002ae12 cmp r3, 0 |
| if (r3 != 0) {
0x0002ae14 bne.w 0x2ba1c | goto label_43;
| }
| label_16:
0x0002ae18 mov r0, r5 | r0 = r5;
0x0002ae1a blx 0xe1d0 | fcn_0000e1d0 ();
0x0002ae1e ldr r3, [sp, 0x40] | r3 = *(arg_40h);
0x0002ae20 cmp r3, 1 |
| if (r3 == 1) {
0x0002ae22 beq.w 0x2b99c | goto label_44;
| }
0x0002ae26 cmp.w r8, -1 |
| if (r8 == -1) {
0x0002ae2a beq.w 0x2b75e | goto label_45;
| }
0x0002ae2e ldr r3, [sp, 0x1c] | r3 = var_1ch;
0x0002ae30 subw r3, r3, 0xe04 | __asm ("subw r3, r3, 0xe04");
0x0002ae34 ldrb r2, [r3, 3] | r2 = *((r3 + 3));
0x0002ae36 lsls r2, r2, 0x1c | r2 <<= 0x1c;
| if (r2 != r2) {
0x0002ae38 bne.w 0x2b75e | goto label_45;
| }
0x0002ae3c ldrh r2, [r3, 6] | r2 = *((r3 + 6));
0x0002ae3e cmp r2, 0 |
| if (r2 == 0) {
0x0002ae40 beq.w 0x2b75e | goto label_45;
| }
0x0002ae44 ldrh r3, [r3, 4] | r3 = *((r3 + 4));
0x0002ae46 rev16 r2, r2 | __asm ("rev16 r2, r2");
0x0002ae48 ldr r1, [sp, 0x2c] | r1 = var_2ch;
0x0002ae4a sub.w r0, r4, 0x28 | r0 = r4 - 0x28;
0x0002ae4e uxth r2, r2 | r2 = (int16_t) r2;
0x0002ae50 str r0, [sp, 0x38] | *(arg_38h) = r0;
0x0002ae52 rev16 r4, r3 | __asm ("rev16 r4, r3");
0x0002ae54 add.w r5, r1, r8 | r5 = r1 + r8;
0x0002ae58 uxth r4, r4 | r4 = (int16_t) r4;
0x0002ae5a add.w r8, r7, 8 | r8 = r7 + 8;
0x0002ae5e str r5, [sp, 0x20] | var_20h = r5;
0x0002ae60 str r2, [sp, 0x24] | var_24h = r2;
0x0002ae62 bl 0x32978 | zbx_vector_str_create ();
0x0002ae66 cmp r5, r8 |
0x0002ae68 ite ls |
| if (r5 > r8) {
0x0002ae6a movls r3, 0 | r3 = 0;
| }
| if (r5 <= r8) {
0x0002ae6c movhi r3, 1 | r3 = 1;
| }
0x0002ae6e cmp r4, 0 |
0x0002ae70 it ne |
| if (r4 != 0) {
0x0002ae72 cmpne r5, r8 | __asm ("cmpne r5, r8");
| }
| if (r4 < 0) {
0x0002ae74 bls 0x2ae9a | goto label_46;
| }
| do {
0x0002ae76 mov r0, r8 | r0 = r8;
0x0002ae78 mov r1, r5 | r1 = r5;
0x0002ae7a blx 0xe170 | fcn_0000e170 ();
0x0002ae7e adds r0, 4 | r0 += 4;
0x0002ae80 subs r4, 1 | r4--;
0x0002ae82 add r8, r0 | r8 += r0;
0x0002ae84 cmp r8, r5 |
0x0002ae86 ite hs |
| if (r8 < r5) {
0x0002ae88 movhs r3, 0 | r3 = 0;
| }
| if (r8 >= r5) {
0x0002ae8a movlo r3, 1 | r3 = 1;
| }
0x0002ae8c cmp r4, 0 |
0x0002ae8e ite le |
| if (r4 > 0) {
0x0002ae90 movle r2, 0 | r2 = 0;
| }
| if (r4 <= 0) {
0x0002ae92 andgt r2, r3, 1 | r2 = r3 & 1;
| }
0x0002ae96 cmp r2, 0 |
0x0002ae98 bne 0x2ae76 |
| } while (r2 != 0);
| label_46:
0x0002ae9a ldr r2, [sp, 0x24] | r2 = var_24h;
0x0002ae9c cmp r2, 0 |
0x0002ae9e ite le |
| if (r2 > 0) {
0x0002aea0 movle r3, 0 | r3 = 0;
| }
| if (r2 <= 0) {
0x0002aea2 andgt r3, r3, 1 | r3 &= 1;
| }
0x0002aea6 cmp r3, 0 |
| if (r3 == 0) {
0x0002aea8 beq.w 0x2bc08 | goto label_47;
| }
0x0002aeac ldr.w r3, [pc, 0x970] |
0x0002aeb0 str.w fp, [sp, 0x48] | __asm ("str.w fp, [arg_48h]");
0x0002aeb4 add r3, pc |
0x0002aeb6 adds r3, 0x10 | r3 += 0x10;
0x0002aeb8 str r3, [sp, 0x3c] | *(arg_3ch) = r3;
0x0002aeba ldr.w r3, [pc, 0x968] | r3 = *(0x0002b824);
0x0002aebe add r3, pc | r3 = 0x8159a;
0x0002aec0 adds r3, 0x10 | r3 += 0x10;
0x0002aec2 str r3, [sp, 0x50] | *(arg_50h) = r3;
0x0002aec4 ldr.w r3, [pc, 0x960] |
0x0002aec8 add r3, pc | r3 = 0x566f4;
0x0002aeca str r3, [sp, 0x54] | *(arg_54h) = r3;
| label_2:
0x0002aecc ldr r4, [sp, 0x3c] | r4 = *(arg_3ch);
0x0002aece mov.w r5, 0x800 | r5 = 0x800;
0x0002aed2 ldr r1, [sp, 0x20] | r1 = var_20h;
0x0002aed4 mov r2, r8 | r2 = r8;
0x0002aed6 ldr r0, [sp, 0x2c] | r0 = var_2ch;
0x0002aed8 mov r3, r4 | r3 = r4;
0x0002aeda str r5, [sp] | *(sp) = r5;
0x0002aedc blx 0xdd9c | r0 = setsid ();
0x0002aee0 cmp.w r0, -1 |
0x0002aee4 mov fp, r0 |
| if (r0 == -1) {
0x0002aee6 beq.w 0x2b77c | goto label_48;
| }
0x0002aeea ldr r2, [sp, 0x1c] | r2 = var_1ch;
0x0002aeec mov r3, r4 | r3 = r4;
0x0002aeee mov r1, r5 | r1 = r5;
0x0002aef0 subs r6, r2, 4 | r6 = r2 - 4;
0x0002aef2 ldr.w r2, [pc, 0x938] |
0x0002aef6 mov r0, r6 | r0 = r6;
0x0002aef8 add r2, pc | r2 = 0x5672a;
0x0002aefa bl 0x43f38 | zbx_snprintf ();
0x0002aefe ldrh.w r3, [r8, fp] | r3 = *((r8 + fp));
0x0002af02 add fp, r8 |
0x0002af04 ldrh.w r7, [fp, 2] | r7 = *(arg_2h);
0x0002af08 mov r5, r0 | r5 = r0;
0x0002af0a add.w r4, fp, 0xa | r4 += arg_ah;
0x0002af0e add.w sb, r6, r0 | sb = r6 + r0;
0x0002af12 rev16 r3, r3 | __asm ("rev16 r3, r3");
0x0002af14 rsb.w sl, r0, 0x800 | sl = 0x800 - r0;
0x0002af18 rev16 r7, r7 | __asm ("rev16 r7, r7");
0x0002af1a uxth r3, r3 | r3 = (int16_t) r3;
0x0002af1c uxth r2, r7 | r2 = (int16_t) r7;
0x0002af1e add.w r8, r3, -1 | r8 = r3 + -1;
0x0002af22 str r2, [sp, 0x34] | var_34h = r2;
0x0002af24 ldrh.w r2, [fp, 8] | r2 = *(arg_8h);
0x0002af28 rev16 r2, r2 | __asm ("rev16 r2, r2");
0x0002af2a uxth r2, r2 | r2 = (int16_t) r2;
0x0002af2c str r2, [sp, 0x28] | var_28h = r2;
0x0002af2e cmp.w r8, 0x20 |
| if (r8 > 0x20) {
0x0002af32 bhi.w 0x2b044 | goto label_49;
| }
| /* switch table (34 cases) at 0x2af3a */
0x0002af36 tbh [pc, r8, lsl 1] | __asm ("tbh [pc, r8, lsl 1]");
| label_26:
0x0002af7c ldr r0, [r1, 0x28] | r0 = *((r1 + 0x28));
0x0002af7e mov r4, r1 | r4 = r1;
0x0002af80 ldr.w r3, [pc, 0x8ac] | r3 = *(0x0002b830);
0x0002af84 mov r2, r7 | r2 = r7;
0x0002af86 movs r1, 0xe7 | r1 = 0xe7;
0x0002af88 orr r0, r0, 0x20 | r0 |= 0x20;
0x0002af8c str r0, [r4, 0x28] | *((r4 + 0x28)) = r0;
0x0002af8e add r3, pc | r3 += pc;
0x0002af90 ldr.w r0, [pc, 0x8a0] |
0x0002af94 add r0, pc | r0 = 0x567cc;
0x0002af96 bl 0x40ed8 | zbx_strdup2 ();
| label_13:
0x0002af9a ldr r3, [sp, 0x30] | r3 = var_30h;
0x0002af9c movs r4, 1 | r4 = 1;
0x0002af9e str r0, [r3, 0x20] | *((r3 + 0x20)) = r0;
| label_14:
0x0002afa0 ldr.w r2, [pc, 0x894] | r2 = *(0x0002b838);
0x0002afa4 add.w r1, sp, 0x20c0 | r1 += arg_20c0h;
0x0002afa8 ldr.w r3, [pc, 0x85c] | r3 = *(0x2b808);
0x0002afac adds r1, 0xc | r1 += 0xc;
0x0002afae add r2, pc | r2 += pc;
0x0002afb0 ldr r3, [r2, r3] | r3 = *((r2 + r3));
0x0002afb2 ldr r2, [r3] | r2 = *(0x2b808);
0x0002afb4 ldr r3, [r1] | r3 = *(r1);
0x0002afb6 eors r2, r3 | r2 ^= r3;
0x0002afb8 mov.w r3, 0 | r3 = 0;
| if (r2 != r3) {
0x0002afbc bne.w 0x2bc12 | goto label_50;
| }
0x0002afc0 mov r0, r4 | r0 = r4;
0x0002afc2 add.w sp, sp, 0x20c0 |
0x0002afc6 add sp, 0x14 |
0x0002afc8 pop.w {r4, r5, r6, r7, r8, sb, sl, fp, pc} |
| label_31:
0x0002afcc ldr.w r0, [pc, 0x86c] |
0x0002afd0 mov.w sb, 0 | sb = 0;
0x0002afd4 ldr.w r8, [pc, 0x868] |
0x0002afd8 str r3, [sp, 0x28] | var_28h = r3;
0x0002afda mov r3, r7 | r3 = r7;
0x0002afdc add r0, pc | r0 = "invalid object name";
0x0002afde mov r7, r4 | r7 = r4;
0x0002afe0 add r8, pc | r8 = 0x56824;
0x0002afe2 mov r4, sb | r4 = sb;
0x0002afe4 mov sb, r3 | sb = r3;
0x0002afe6 b 0x2aff4 |
| while (r0 != 0) {
0x0002afe8 adds r4, 1 | r4++;
0x0002afea ldr.w r0, [r8, r4, lsl 3] | offset_0 = r4 << 3;
| r0 = *((r8 + offset_0));
0x0002afee cmp r0, 0 |
| if (r0 == 0) {
0x0002aff0 beq.w 0x2b9ca | goto label_51;
| }
0x0002aff4 mov r1, r6 | r1 = r6;
0x0002aff6 blx 0xdcf8 | r0 = fcn_0000dcf8 ();
0x0002affa cmp r0, 0 |
0x0002affc bne 0x2afe8 |
| }
0x0002affe mov r2, sb | r2 = sb;
0x0002b000 mov sb, r4 | sb = r4;
0x0002b002 mov r4, r7 | r4 = r7;
0x0002b004 mov r7, r2 | r7 = r2;
0x0002b006 ldr.w r2, [pc, 0x83c] |
0x0002b00a ldr r3, [sp, 0x28] | r3 = var_28h;
0x0002b00c add r2, pc | r2 = 0x56856;
0x0002b00e add.w r2, r2, sb, lsl 3 | r2 += (sb << 3);
0x0002b012 ldr r6, [r2, 4] | r6 = *((r2 + 4));
0x0002b014 b 0x2ac40 | goto label_0;
| label_42:
0x0002b016 strd r2, r3, [fp, -0x4] | __asm ("strd r2, r3, [fp, -0x4]");
0x0002b01a add r7, sp, 0x2d0 | r7 += arg_2d0h;
0x0002b01c ldr.w r3, [fp, 4] | r3 = *(arg_4h);
0x0002b020 mov r2, sb | r2 = sb;
0x0002b022 mov r1, r6 | r1 = r6;
0x0002b024 orr r3, r3, 8 | r3 |= 8;
0x0002b028 str.w r3, [fp, 4] | __asm ("str.w r3, [arg_4h]");
0x0002b02c subs r3, r7, 4 | r3 = r7 - 4;
0x0002b02e mov r0, r3 | r0 = r3;
0x0002b030 str r3, [sp, 0x2c] | var_2ch = r3;
0x0002b032 mov.w r3, 0x200 | r3 = 0x200;
0x0002b036 str r3, [sp] | *(sp) = r3;
0x0002b038 mov r3, r0 | r3 = r0;
0x0002b03a mov r0, r5 | r0 = r5;
0x0002b03c blx 0xdd2c | r0 = fcn_0000dd2c ();
0x0002b040 mov r8, r0 | r8 = r0;
0x0002b042 b 0x2ae00 | goto label_1;
| label_49:
0x0002b044 ldr.w r0, [pc, 0x800] | r0 = *(0x0002b848);
0x0002b048 movs r1, 0x10 | r1 = 0x10;
0x0002b04a ldr.w r2, [pc, 0x800] | r2 = *(0x0002b84c);
0x0002b04e add r0, pc | r0 += pc;
0x0002b050 mov r7, r0 | r7 = r0;
0x0002b052 add r2, pc | r2 += pc;
0x0002b054 bl 0x43f38 | zbx_snprintf ();
0x0002b058 mov r3, r7 | r3 = r7;
| label_11:
0x0002b05a ldr.w r2, [pc, 0x7f4] | r2 = *(0x0002b850);
0x0002b05e mov r1, sl | r1 = sl;
0x0002b060 mov r0, sb | r0 = sb;
0x0002b062 add r2, pc | r2 += pc;
0x0002b064 bl 0x43f38 | r0 = zbx_snprintf ();
0x0002b068 add r5, r0 | r5 += r0;
0x0002b06a cmp.w r8, 0x20 |
| if (r8 > 0x20) {
0x0002b06e bhi.w 0x2b1f4 | goto label_12;
| }
| /* switch table (34 cases) at 0x2b076 */
0x0002b072 tbh [pc, r8, lsl 1] | __asm ("tbh [pc, r8, lsl 1]");
0x0002b0b8 ldr.w r3, [pc, 0x798] |
0x0002b0bc add r3, pc | r3 = 0x56914;
| label_7:
0x0002b0be ldr.w r2, [pc, 0x798] | r2 = *(0x0002b858);
0x0002b0c2 mov r1, sl | r1 = sl;
0x0002b0c4 mov r0, sb | r0 = sb;
0x0002b0c6 add r2, pc | r2 += pc;
0x0002b0c8 bl 0x43f38 | r0 = zbx_snprintf ();
0x0002b0cc add r5, r0 | r5 += r0;
0x0002b0ce ldr.w r7, [pc, 0x78c] |
0x0002b0d2 mov.w r3, 0x800 | r3 = 0x800;
0x0002b0d6 str r3, [sp] | *(sp) = r3;
0x0002b0d8 mov r2, r4 | r2 = r4;
0x0002b0da ldr r1, [sp, 0x20] | r1 = var_20h;
0x0002b0dc add r7, pc | r7 = 0x5693e;
0x0002b0de ldr r0, [sp, 0x2c] | r0 = var_2ch;
0x0002b0e0 adds r7, 0x10 | r7 += 0x10;
0x0002b0e2 mov r3, r7 | r3 = r7;
0x0002b0e4 blx 0xdd9c | r0 = setsid ();
0x0002b0e8 adds r3, r0, 1 | r3 = r0 + 1;
| if (r3 == r0) {
0x0002b0ea beq.w 0x2bb8a | goto label_52;
| }
0x0002b0ec strh r6, [r1, 0x2a] | *((r1 + 0x2a)) = r6;
0x0002b0ee ldr.w r2, [pc, 0x770] | r2 = *(0x0002b860);
0x0002b0f2 rsb.w r1, r5, 0x800 | r1 = 0x800 - r5;
0x0002b0f6 add.w r8, r4, r0 | r8 = r4 + r0;
0x0002b0fa mov r3, r7 | r3 = r7;
0x0002b0fc adds r0, r6, r5 | r0 = r6 + r5;
0x0002b0fe add r2, pc | r2 += pc;
0x0002b100 bl 0x43f38 | r0 = zbx_snprintf ();
0x0002b104 add r5, r0 | r5 += r0;
| label_3:
0x0002b106 ldr r3, [sp, 0x24] | r3 = var_24h;
0x0002b108 rsb.w r1, r5, 0x800 | r1 = 0x800 - r5;
0x0002b10c ldr.w r2, [pc, 0x754] |
0x0002b110 adds r0, r6, r5 | r0 = r6 + r5;
0x0002b112 subs r4, r3, 1 | r4 = r3 - 1;
0x0002b114 add r2, pc | r2 = 0x5697c;
0x0002b116 str r4, [sp, 0x24] | var_24h = r4;
0x0002b118 bl 0x43f38 | zbx_snprintf ();
0x0002b11c ldr.w r0, [pc, 0x748] |
0x0002b120 mov r3, r6 | r3 = r6;
0x0002b122 movs r2, 0 | r2 = 0;
0x0002b124 mov.w r1, 0x364 | r1 = 0x364;
0x0002b128 add r0, pc | r0 = 0x56994;
0x0002b12a bl 0x40ed8 | r0 = zbx_strdup2 ();
0x0002b12e mov r1, r0 | r1 = r0;
0x0002b130 ldr r0, [sp, 0x38] | r0 = *(arg_38h);
0x0002b132 bl 0x32a08 | zbx_vector_str_append ();
0x0002b136 ldr r2, [sp, 0x20] | r2 = var_20h;
0x0002b138 cmp r4, 0 |
0x0002b13a mov r3, r4 | r3 = r4;
0x0002b13c ldr r1, [sp, 0x1c] | r1 = var_1ch;
0x0002b13e ite le |
| if (r4 > 0) {
0x0002b140 movle r3, 0 | r3 = 0;
| }
| if (r4 <= 0) {
0x0002b142 movgt r3, 1 | r3 = 1;
| }
0x0002b144 cmp r2, r8 |
0x0002b146 mov.w r2, 0 | r2 = 0;
0x0002b14a it ls |
| if (r2 > r8) {
0x0002b14c movls r3, 0 | r3 = 0;
| }
0x0002b14e strb r2, [r1, -0x4] | *((r1 - 0x4)) = r2;
0x0002b152 cmp r3, 0 |
| if (r3 != 0) {
0x0002b154 bne.w 0x2aecc | goto label_2;
| }
0x0002b158 ldr.w fp, [sp, 0x48] | fp = *(arg_48h);
| label_21:
0x0002b15c ldr r2, [sp, 0x44] | r2 = *(arg_44h);
0x0002b15e ldr.w r3, [pc, 0x70c] | r3 = *(0x2b86e);
0x0002b162 ldr r0, [sp, 0x38] | r0 = *(arg_38h);
0x0002b164 ldr r3, [r2, r3] | r3 = *((r2 + r3));
0x0002b166 mov r1, r3 | r1 = r3;
0x0002b168 str r3, [sp, 0x20] | var_20h = r3;
0x0002b16a bl 0x32ba8 | zbx_vector_str_sort ();
0x0002b16e ldr r3, [fp, -0x64] | r3 = var_64h;
0x0002b172 cmp r3, 0 |
| if (r3 <= 0) {
0x0002b174 ble 0x2b1ae | goto label_53;
| }
0x0002b176 ldr.w r7, [pc, 0x6f8] | r7 = *(0x0002b870);
0x0002b17a movs r4, 0 | r4 = 0;
0x0002b17c ldr r5, [sp, 0x40] | r5 = *(arg_40h);
0x0002b17e add r7, pc | r7 += pc;
| do {
0x0002b180 ldr r3, [fp, -0x68] | r3 = var_68h;
0x0002b184 rsb.w r1, r4, 0x800 | r1 = 0x800 - r4;
0x0002b188 adds r0, r6, r4 | r0 = r6 + r4;
0x0002b18a mov r2, r7 | r2 = r7;
0x0002b18c ldr.w r3, [r3, r5, lsl 2] | offset_1 = r5 << 2;
| r3 = *((r3 + offset_1));
0x0002b190 adds r5, 1 | r5++;
0x0002b192 bl 0x43f38 | zbx_snprintf ();
0x0002b196 ldr r3, [fp, -0x64] | r3 = var_64h;
0x0002b19a add r4, r0 | r4 += r0;
0x0002b19c cmp r3, r5 |
0x0002b19e bgt 0x2b180 |
| } while (r3 > r5);
| if (r4 != 0) {
0x0002b1a0 cbz r4, 0x2b1ae |
0x0002b1a2 ldr r3, [sp, 0x1c] | r3 = var_1ch;
0x0002b1a4 add r3, r4 | r3 += r4;
0x0002b1a6 mov r4, r3 | r4 = r3;
0x0002b1a8 movs r3, 0 | r3 = 0;
0x0002b1aa strb r3, [r4, -0x5] | *((r4 - 0x5)) = r3;
| }
| label_53:
0x0002b1ae ldr r5, [sp, 0x30] | r5 = var_30h;
0x0002b1b0 mov r3, r6 | r3 = r6;
0x0002b1b2 ldr.w r0, [pc, 0x6c0] | r0 = *(0x0002b874);
0x0002b1b6 movw r1, 0x372 | r1 = 0x372;
0x0002b1ba ldr r4, [sp, 0x40] | r4 = *(arg_40h);
0x0002b1bc ldr r2, [r5, 0x28] | r2 = *((r5 + 0x28));
0x0002b1be add r0, pc | r0 += pc;
0x0002b1c0 orr r2, r2, 8 | r2 |= 8;
0x0002b1c4 str r2, [r5, 0x28] | *((r5 + 0x28)) = r2;
0x0002b1c6 movs r2, 0 | r2 = 0;
0x0002b1c8 bl 0x40ed8 | zbx_strdup2 ();
0x0002b1cc str r0, [r5, 0x1c] | *((r5 + 0x1c)) = r0;
0x0002b1ce b 0x2b79c | goto label_54;
0x0002b1d0 ldr.w r3, [pc, 0x6a4] |
0x0002b1d4 mov r1, sl | r1 = sl;
0x0002b1d6 ldr.w r2, [pc, 0x6a4] | r2 = *(0x0002b87c);
0x0002b1da mov r0, sb | r0 = sb;
0x0002b1dc add r3, pc | r3 = "invalid function result: %s";
0x0002b1de add r2, pc | r2 += pc;
0x0002b1e0 bl 0x43f38 | r0 = zbx_snprintf ();
0x0002b1e4 add r5, r0 | r5 += r0;
0x0002b1e6 ldr r3, [sp, 0x34] | r3 = var_34h;
0x0002b1e8 cmp r3, 1 |
| if (r3 == 1) {
0x0002b1ea beq.w 0x2b73c | goto label_55;
| }
0x0002b1ee cmp r3, 4 |
| if (r3 == 4) {
0x0002b1f0 beq.w 0x2b73c | goto label_55;
| }
| label_12:
0x0002b1f4 ldr r3, [sp, 0x28] | r3 = var_28h;
0x0002b1f6 add r3, r4 | r3 += r4;
0x0002b1f8 mov r8, r3 | r8 = r3;
0x0002b1fa b 0x2b106 | goto label_3;
| label_33:
0x0002b1fc vmov.i32 d16, 0 | __asm ("vmov.i32 d16, 0");
0x0002b200 mvn r8, 0x80000000 | r8 = ~0x80000000;
0x0002b204 mov.w sb, 0 | sb = 0;
0x0002b208 movs r3, 4 | r3 = 4;
0x0002b20a sub.w r2, r4, 0x38 | r2 = r4 - 0x38;
0x0002b20e mov.w r1, -1 | r1 = -1;
0x0002b212 vstr d16, [sp] | __asm ("vstr d16, [sp]");
0x0002b216 strd r8, sb, [sp, 8] | __asm ("strd r8, sb, [sp, 8]");
0x0002b21a bl 0x419a8 | r0 = is_uint_n_range ();
0x0002b21e cmp r0, 0 |
| if (r0 != 0) {
0x0002b220 bne.w 0x2ba48 | goto label_56;
| }
0x0002b224 ldr r3, [fp, -0x78] | r3 = var_78h;
0x0002b228 cmp r3, 0 |
| if (r3 == 0) {
0x0002b22a beq.w 0x2ba48 | goto label_56;
| }
0x0002b22c strh r5, [r1, 0x20] | *((r1 + 0x20)) = r5;
0x0002b22e ldr.w sl, [r5, 4] | sl = *((r5 + 4));
0x0002b232 b 0x2ac60 | goto label_4;
| label_34:
0x0002b234 vmov.i32 d16, 0 | __asm ("vmov.i32 d16, 0");
0x0002b238 mvn r8, 0x80000000 | r8 = ~0x80000000;
0x0002b23c mov.w sb, 0 | sb = 0;
0x0002b240 movs r3, 4 | r3 = 4;
0x0002b242 sub.w r2, r4, 0x34 | r2 = r4 - 0x34;
0x0002b246 mov.w r1, -1 | r1 = -1;
0x0002b24a vstr d16, [sp] | __asm ("vstr d16, [sp]");
0x0002b24e strd r8, sb, [sp, 8] | __asm ("strd r8, sb, [sp, 8]");
0x0002b250 ldrh r2, [r0, 8] | r2 = *((r0 + 8));
0x0002b252 bl 0x419a8 | r0 = is_uint_n_range ();
0x0002b256 cmp r0, 0 |
| if (r0 != 0) {
0x0002b258 bne.w 0x2ba68 | goto label_57;
| }
0x0002b25c ldr r3, [fp, -0x74] | r3 = var_74h;
0x0002b260 cmp r3, 0 |
| if (r3 == 0) {
0x0002b262 beq.w 0x2ba68 | goto label_57;
| }
0x0002b266 ldr.w sl, [r5, 4] | sl = *((r5 + 4));
0x0002b26a b 0x2ac7a | goto label_5;
0x0002b26c ldr.w r3, [pc, 0x610] |
0x0002b270 mov r1, sl | r1 = sl;
0x0002b272 ldr.w r2, [pc, 0x610] | r2 = *(0x0002b884);
0x0002b276 mov r0, sb | r0 = sb;
0x0002b278 add r3, pc | r3 = 0x56afc;
0x0002b27a add r2, pc | r2 += pc;
0x0002b27c bl 0x43f38 | r0 = zbx_snprintf ();
0x0002b280 add r5, r0 | r5 += r0;
0x0002b282 ldrh.w r3, [fp, 0xa] | r3 = *(arg_ah);
0x0002b286 rsb.w r1, r5, 0x800 | r1 = 0x800 - r5;
0x0002b28a ldr.w r7, [pc, 0x5fc] | r7 = *(0x0002b888);
0x0002b28e adds r0, r6, r5 | r0 = r6 + r5;
0x0002b290 add.w r8, fp, 0x10 | r8 += arg_10h;
0x0002b294 rev16 r3, r3 | __asm ("rev16 r3, r3");
0x0002b296 add r7, pc | r7 += pc;
0x0002b298 uxth r3, r3 | r3 = (int16_t) r3;
0x0002b29a mov r2, r7 | r2 = r7;
0x0002b29c bl 0x43f38 | zbx_snprintf ();
0x0002b2a0 ldrh.w r3, [fp, 0xc] | r3 = *(arg_ch);
0x0002b2a4 add r5, r0 | r5 += r0;
0x0002b2a6 rsb.w r1, r5, 0x800 | r1 = 0x800 - r5;
0x0002b2aa mov r2, r7 | r2 = r7;
0x0002b2ac adds r0, r6, r5 | r0 = r6 + r5;
0x0002b2ae rev16 r3, r3 | __asm ("rev16 r3, r3");
0x0002b2b0 uxth r3, r3 | r3 = (int16_t) r3;
0x0002b2b2 bl 0x43f38 | zbx_snprintf ();
0x0002b2b6 ldrh.w r3, [fp, 0xe] | r3 = *(arg_eh);
0x0002b2ba add r5, r0 | r5 += r0;
0x0002b2bc rsb.w r1, r5, 0x800 | r1 = 0x800 - r5;
0x0002b2c0 mov r2, r7 | r2 = r7;
0x0002b2c2 adds r0, r6, r5 | r0 = r6 + r5;
0x0002b2c4 rev16 r3, r3 | __asm ("rev16 r3, r3");
0x0002b2c6 uxth r3, r3 | r3 = (int16_t) r3;
0x0002b2c8 bl 0x43f38 | zbx_snprintf ();
0x0002b2cc ldr r4, [sp, 0x50] | r4 = *(arg_50h);
0x0002b2ce mov.w r3, 0x800 | r3 = 0x800;
0x0002b2d2 str r3, [sp] | *(sp) = r3;
0x0002b2d4 add r5, r0 | r5 += r0;
0x0002b2d6 ldr r1, [sp, 0x20] | r1 = var_20h;
0x0002b2d8 mov r2, r8 | r2 = r8;
0x0002b2da mov r3, r4 | r3 = r4;
0x0002b2dc ldr r0, [sp, 0x2c] | r0 = var_2ch;
0x0002b2de blx 0xdd9c | r0 = setsid ();
0x0002b2e2 adds r3, r0, 1 | r3 = r0 + 1;
| if (r3 == r0) {
0x0002b2e4 beq.w 0x2bbaa | goto label_58;
| }
0x0002b2e8 ldr.w r2, [pc, 0x5a0] | r2 = *(0x0002b88c);
0x0002b2ec rsb.w r1, r5, 0x800 | r1 = 0x800 - r5;
0x0002b2f0 add r8, r0 | r8 += r0;
0x0002b2f2 mov r3, r4 | r3 = r4;
0x0002b2f4 adds r0, r6, r5 | r0 = r6 + r5;
0x0002b2f6 add r2, pc | r2 += pc;
0x0002b2f8 bl 0x43f38 | r0 = zbx_snprintf ();
0x0002b2fc add r5, r0 | r5 += r0;
0x0002b2fe b 0x2b106 | goto label_3;
0x0002b300 ldr.w r3, [pc, 0x58c] |
0x0002b304 mov r1, sl | r1 = sl;
0x0002b306 ldr.w r2, [pc, 0x58c] | r2 = *(0x0002b894);
0x0002b30a mov r0, sb | r0 = sb;
0x0002b30c add r3, pc | r3 = 0x56ba0;
0x0002b30e add r2, pc | r2 += pc;
0x0002b310 bl 0x43f38 | r0 = zbx_snprintf ();
0x0002b314 add r5, r0 | r5 += r0;
0x0002b316 ldr r3, [sp, 0x28] | r3 = var_28h;
0x0002b318 rsb.w r1, r5, 0x800 | r1 = 0x800 - r5;
0x0002b31c ldr.w r2, [pc, 0x578] | r2 = *(0x0002b898);
0x0002b320 adds r0, r6, r5 | r0 = r6 + r5;
0x0002b322 add r3, r4 | r3 += r4;
0x0002b324 mov sb, r3 | sb = r3;
0x0002b326 add r2, pc | r2 += pc;
0x0002b328 bl 0x43f38 | zbx_snprintf ();
0x0002b32c cmp r4, sb |
0x0002b32e add.w r7, r0, r5 | r7 = r0 + r5;
| if (r4 >= sb) {
0x0002b332 bhs.w 0x2b7ea | goto label_59;
| }
0x0002b336 ldr.w r5, [pc, 0x564] | r5 = *(0x0002b89c);
0x0002b33a add r5, pc | r5 += pc;
| label_6:
0x0002b33c mov r8, r4 | r8 = r4;
0x0002b33e ldrb sl, [r8], 1 | sl = *(r8);
| r8++;
0x0002b342 cmp.w sl, 0 |
0x0002b346 it ne |
| if (sl != 0) {
0x0002b348 cmpne r8, sb | __asm ("cmpne r8, sb");
| }
| if (sl >= 0) {
0x0002b34a bhs 0x2b370 | goto label_60;
| }
| do {
0x0002b34c ldrb r3, [r8], 1 | r3 = *(r8);
| r8++;
0x0002b350 rsb.w r1, r7, 0x800 | r1 = 0x800 - r7;
0x0002b354 adds r0, r6, r7 | r0 = r6 + r7;
0x0002b356 mov r2, r5 | r2 = r5;
0x0002b358 bl 0x43f38 | zbx_snprintf ();
0x0002b35c rsb.w r3, r8, 1 | r3 = 1 - r8;
0x0002b360 rsb.w r2, sl, 0 | r2 = sl - ;
0x0002b364 add r3, r4 | r3 += r4;
0x0002b366 add r7, r0 | r7 += r0;
0x0002b368 cmp r2, r3 |
0x0002b36a it ne |
| if (r2 != r3) {
0x0002b36c cmpne r8, sb | __asm ("cmpne r8, sb");
| }
0x0002b36e blo 0x2b34c |
| } while (r2 <= r3);
| label_60:
0x0002b370 cmp sb, r8 |
| if (sb < r8) {
0x0002b372 bls.w 0x2b7ec | goto label_61;
| }
0x0002b376 mov r4, r8 | r4 = r8;
0x0002b378 b 0x2b33c | goto label_6;
0x0002b37a ldr.w r3, [pc, 0x524] | r3 = *(0x0002b8a0);
0x0002b37e mov r1, sl | r1 = sl;
0x0002b380 ldr.w r2, [pc, 0x520] |
0x0002b384 mov r0, sb | r0 = sb;
0x0002b386 add r3, pc | r3 += pc;
0x0002b388 add r2, pc | r2 = 0x56c30;
0x0002b38a bl 0x43f38 | r0 = zbx_snprintf ();
0x0002b38e add r5, r0 | r5 += r0;
0x0002b390 ldrh.w r3, [fp, 0xa] | r3 = *(arg_ah);
0x0002b394 rsb.w r1, r5, 0x800 | r1 = 0x800 - r5;
0x0002b398 ldr.w r2, [pc, 0x50c] | r2 = *(0x0002b8a8);
0x0002b39c adds r0, r6, r5 | r0 = r6 + r5;
0x0002b39e add.w r8, fp, 0xc | r8 += arg_ch;
0x0002b3a2 rev16 r3, r3 | __asm ("rev16 r3, r3");
0x0002b3a4 uxth r3, r3 | r3 = (int16_t) r3;
0x0002b3a6 add r2, pc | r2 += pc;
0x0002b3a8 bl 0x43f38 | r0 = zbx_snprintf ();
0x0002b3ac adds r4, r5, r0 | r4 = r5 + r0;
0x0002b3ae ldr.w r5, [pc, 0x4fc] |
0x0002b3b2 mov.w r3, 0x800 | r3 = 0x800;
0x0002b3b6 ldr r1, [sp, 0x20] | r1 = var_20h;
0x0002b3b8 str r3, [sp] | *(sp) = r3;
0x0002b3ba mov r2, r8 | r2 = r8;
0x0002b3bc add r5, pc | r5 = 0x56c6e;
0x0002b3be ldr r0, [sp, 0x2c] | r0 = var_2ch;
0x0002b3c0 adds r5, 0x10 | r5 += 0x10;
0x0002b3c2 mov r3, r5 | r3 = r5;
0x0002b3c4 blx 0xdd9c | r0 = setsid ();
0x0002b3c8 adds r7, r0, 1 | r7 = r0 + 1;
| if (r7 == r0) {
0x0002b3ca beq.w 0x2bb6a | goto label_62;
| }
0x0002b3ce ldr.w r2, [pc, 0x4e0] |
0x0002b3d2 mov r3, r5 | r3 = r5;
0x0002b3d4 add r8, r0 | r8 += r0;
0x0002b3d6 rsb.w r1, r4, 0x800 | r1 = 0x800 - r4;
0x0002b3da adds r0, r6, r4 | r0 = r6 + r4;
0x0002b3dc add r2, pc | r2 = 0x56c92;
0x0002b3de bl 0x43f38 | zbx_snprintf ();
0x0002b3e0 stc2 p8, c1, [fp, 0x94]! | __asm ("stc2 p8, c1, [fp, 0x94]!");
0x0002b3e4 b 0x2b106 | goto label_3;
0x0002b3e6 ldr.w r3, [pc, 0x4cc] | r3 = *(0x0002b8b4);
0x0002b3ea add r3, pc | r3 += pc;
0x0002b3ec b 0x2b0be | goto label_7;
0x0002b3ee ldr.w r3, [pc, 0x4c8] | r3 = *(0x0002b8b8);
0x0002b3f2 mov r1, sl | r1 = sl;
0x0002b3f4 ldr.w r2, [pc, 0x4c4] |
0x0002b3f8 mov r0, sb | r0 = sb;
0x0002b3fa add r3, pc | r3 += pc;
0x0002b3fc add r2, pc | r2 = 0x56cbc;
0x0002b3fe bl 0x43f38 | r0 = zbx_snprintf ();
0x0002b402 add r5, r0 | r5 += r0;
0x0002b404 ldr.w r7, [pc, 0x4b8] | r7 = *(0x0002b8c0);
0x0002b408 mov.w r8, 0x800 | r8 = 0x800;
0x0002b40c ldr.w fp, [sp, 0x20] | fp = var_20h;
0x0002b410 mov r2, r4 | r2 = r4;
0x0002b412 ldr.w sl, [sp, 0x2c] | sl = var_2ch;
0x0002b416 add r7, pc | r7 += pc;
0x0002b418 str.w r8, [sp] | __asm ("str.w r8, [sp]");
0x0002b41c adds r7, 0x10 | r7 += 0x10;
0x0002b41e mov r1, fp | r1 = fp;
0x0002b420 mov r3, r7 | r3 = r7;
0x0002b422 mov r0, sl | r0 = sl;
0x0002b424 blx 0xdd9c | r0 = setsid ();
0x0002b428 adds r1, r0, 1 | r1 = r0 + 1;
| if (r1 == r0) {
0x0002b42a beq.w 0x2bb4a | goto label_63;
| }
0x0002b42e ldr.w sb, [pc, 0x494] |
0x0002b432 sub.w r1, r8, r5 | r1 = r8 - r5;
0x0002b436 add r4, r0 | r4 += r0;
0x0002b438 mov r3, r7 | r3 = r7;
0x0002b43a adds r0, r6, r5 | r0 = r6 + r5;
0x0002b43c add sb, pc | sb = 0x56d06;
0x0002b43e mov r2, sb | r2 = sb;
0x0002b440 bl 0x43f38 | zbx_snprintf ();
0x0002b444 mov r2, r4 | r2 = r4;
0x0002b446 str.w r8, [sp] | __asm ("str.w r8, [sp]");
0x0002b44a mov r3, r7 | r3 = r7;
0x0002b44c add.w r8, r0, r5 | r8 = r0 + r5;
0x0002b450 mov r1, fp | r1 = fp;
0x0002b452 mov r0, sl | r0 = sl;
0x0002b454 blx 0xdd9c | r0 = setsid ();
0x0002b458 adds r2, r0, 1 | r2 = r0 + 1;
0x0002b45a mov r5, r0 | r5 = r0;
| if (r2 == r0) {
0x0002b45c beq.w 0x2bb2a | goto label_64;
| }
0x0002b460 mov r3, r7 | r3 = r7;
0x0002b462 rsb.w r1, r8, 0x800 | r1 = 0x800 - r8;
0x0002b466 mov r2, sb | r2 = sb;
0x0002b468 add.w r0, r6, r8 | r0 = r6 + r8;
0x0002b46c bl 0x43f38 | zbx_snprintf ();
0x0002b470 ldr r3, [r4, r5] | r3 = *((r4 + r5));
0x0002b472 add.w r7, r8, r0 | r7 = r8 + r0;
0x0002b476 ldr.w r2, [pc, 0x450] | r2 = *(0x0002b8c8);
0x0002b47a rsb.w r1, r7, 0x800 | r1 = 0x800 - r7;
0x0002b47c str r0, [r0, 0x10] | *((r0 + 0x10)) = r0;
0x0002b47e adds r0, r6, r7 | r0 = r6 + r7;
0x0002b480 add.w r8, r4, r5 | r8 = r4 + r5;
0x0002b484 rev r3, r3 | r3 = SWAP32 (r3);
0x0002b486 add.w r8, r8, 0x14 | r8 += 0x14;
0x0002b48a add r2, pc | r2 += pc;
0x0002b48c bl 0x43f38 | r0 = zbx_snprintf ();
0x0002b490 adds r4, r7, r0 | r4 = r7 + r0;
0x0002b492 ldr.w r7, [pc, 0x438] |
0x0002b496 ldr r3, [r8, -0x10] | r3 = *((r8 - 0x10));
0x0002b49a rsb.w r1, r4, 0x800 | r1 = 0x800 - r4;
0x0002b49e adds r0, r6, r4 | r0 = r6 + r4;
0x0002b4a0 add r7, pc | r7 = 0x56d72;
0x0002b4a2 rev r3, r3 | r3 = SWAP32 (r3);
0x0002b4a4 mov r2, r7 | r2 = r7;
0x0002b4a6 bl 0x43f38 | zbx_snprintf ();
0x0002b4aa ldr r3, [r8, -0xc] | r3 = *((r8 - 0xc));
0x0002b4ae add r4, r0 | r4 += r0;
0x0002b4b0 rsb.w r1, r4, 0x800 | r1 = 0x800 - r4;
0x0002b4b4 mov r2, r7 | r2 = r7;
0x0002b4b6 adds r0, r6, r4 | r0 = r6 + r4;
0x0002b4b8 rev r3, r3 | r3 = SWAP32 (r3);
0x0002b4ba bl 0x43f38 | zbx_snprintf ();
0x0002b4bc ldc2 p8, c15, [sp, -0x160]! | __asm ("ldc2 p8, c15, [sp, -0x160]!");
0x0002b4c0 subs r4, 8 | r4 -= 8;
0x0002b4c2 add r4, r0 | r4 += r0;
0x0002b4c4 rsb.w r1, r4, 0x800 | r1 = 0x800 - r4;
0x0002b4c8 mov r2, r7 | r2 = r7;
0x0002b4ca adds r0, r6, r4 | r0 = r6 + r4;
0x0002b4cc rev r3, r3 | r3 = SWAP32 (r3);
0x0002b4ce bl 0x43f38 | zbx_snprintf ();
0x0002b4d2 ldr r3, [r8, -0x4] | r3 = *((r8 - 0x4));
0x0002b4d6 add r4, r0 | r4 += r0;
0x0002b4d8 mov r2, r7 | r2 = r7;
0x0002b4da rsb.w r1, r4, 0x800 | r1 = 0x800 - r4;
0x0002b4de adds r0, r6, r4 | r0 = r6 + r4;
0x0002b4e0 rev r3, r3 | r3 = SWAP32 (r3);
0x0002b4e2 bl 0x43f38 | r0 = zbx_snprintf ();
0x0002b4e6 adds r5, r4, r0 | r5 = r4 + r0;
0x0002b4e8 b 0x2b106 | goto label_3;
0x0002b4ea ldr r3, [pc, 0x3e4] |
0x0002b4ec add r3, pc | r3 = 0x56dc2;
0x0002b4ee b 0x2b0be | goto label_7;
0x0002b4f0 ldr r3, [pc, 0x3e0] |
0x0002b4f2 add r3, pc | r3 = 0x56dca;
0x0002b4f4 b 0x2b0be | goto label_7;
0x0002b4f6 ldr r3, [pc, 0x3e0] |
0x0002b4f8 add r3, pc | r3 = 0x56dd6;
0x0002b4fa b 0x2b0be | goto label_7;
0x0002b4fc ldr r3, [pc, 0x3dc] |
0x0002b4fe mov r1, sl | r1 = sl;
0x0002b500 ldr r2, [pc, 0x3dc] |
0x0002b502 mov r0, sb | r0 = sb;
0x0002b504 add r3, pc | r3 = 0x56de4;
0x0002b506 add r2, pc | r2 = 0x56dea;
0x0002b508 bl 0x43f38 | r0 = zbx_snprintf ();
0x0002b50c add r5, r0 | r5 += r0;
0x0002b50e ldr r7, [pc, 0x3d4] |
0x0002b510 mov.w sb, 0x800 | sb = 0x800;
0x0002b514 ldr.w fp, [sp, 0x20] | fp = var_20h;
0x0002b518 mov r2, r4 | r2 = r4;
0x0002b51a ldr.w sl, [sp, 0x2c] | sl = var_2ch;
0x0002b51e add r7, pc | r7 = 0x56e08;
0x0002b520 str.w sb, [sp] | __asm ("str.w sb, [sp]");
0x0002b524 adds r7, 0x10 | r7 += 0x10;
0x0002b526 mov r1, fp | r1 = fp;
0x0002b528 mov r3, r7 | r3 = r7;
0x0002b52a mov r0, sl | r0 = sl;
0x0002b52c blx 0xdd9c | r0 = setsid ();
0x0002b530 adds r1, r0, 1 | r1 = r0 + 1;
| if (r1 == r0) {
0x0002b532 beq.w 0x2bb0a | goto label_65;
| }
0x0002b536 add.w r8, r4, r0 | r8 = r4 + r0;
0x0002b53a ldr r4, [pc, 0x3ac] |
0x0002b53c sub.w r1, sb, r5 | r1 = sb - r5;
0x0002b540 mov r3, r7 | r3 = r7;
0x0002b542 adds r0, r6, r5 | r0 = r6 + r5;
0x0002b544 add r4, pc | r4 = 0x56e32;
0x0002b546 mov r2, r4 | r2 = r4;
0x0002b548 bl 0x43f38 | zbx_snprintf ();
0x0002b54c mov r2, r8 | r2 = r8;
0x0002b54e add r5, r0 | r5 += r0;
0x0002b550 mov r3, r7 | r3 = r7;
0x0002b552 mov r1, fp | r1 = fp;
0x0002b554 mov r0, sl | r0 = sl;
0x0002b556 str.w sb, [sp] | __asm ("str.w sb, [sp]");
0x0002b55a blx 0xdd9c | r0 = setsid ();
0x0002b55e adds r2, r0, 1 | r2 = r0 + 1;
| if (r2 == r0) {
0x0002b560 beq.w 0x2baea | goto label_66;
| }
0x0002b564 rsb.w r1, r5, 0x800 | r1 = 0x800 - r5;
0x0002b568 add r8, r0 | r8 += r0;
0x0002b56a mov r3, r7 | r3 = r7;
0x0002b56c adds r0, r6, r5 | r0 = r6 + r5;
0x0002b56e mov r2, r4 | r2 = r4;
0x0002b570 bl 0x43f38 | r0 = zbx_snprintf ();
0x0002b574 add r5, r0 | r5 += r0;
0x0002b576 b 0x2b106 | goto label_3;
0x0002b578 ldr r3, [pc, 0x370] |
0x0002b57a mov r1, sl | r1 = sl;
0x0002b57c ldr r2, [pc, 0x370] |
0x0002b57e mov r0, sb | r0 = sb;
0x0002b580 add r3, pc | r3 = 0x56e70;
0x0002b582 add r2, pc | r2 = 0x56e76;
0x0002b584 bl 0x43f38 | r0 = zbx_snprintf ();
0x0002b588 add r5, r0 | r5 += r0;
0x0002b58a ldr r2, [pc, 0x368] |
0x0002b58c rsb.w r1, r5, 0x800 | r1 = 0x800 - r5;
0x0002b590 ldr r3, [sp, 0x28] | r3 = var_28h;
0x0002b592 adds r0, r6, r5 | r0 = r6 + r5;
0x0002b594 add r2, pc | r2 = 0x56e8e;
0x0002b596 add.w r8, r4, r3 | r8 = r4 + r3;
0x0002b59a bl 0x43f38 | r0 = zbx_snprintf ();
0x0002b59e add r5, r0 | r5 += r0;
0x0002b5a0 b 0x2b106 | goto label_3;
0x0002b5a2 ldr r3, [pc, 0x354] |
0x0002b5a4 add r3, pc | r3 = 0x56ea2;
0x0002b5a6 b 0x2b0be | goto label_7;
0x0002b5a8 ldr r3, [pc, 0x350] |
0x0002b5aa mov r1, sl | r1 = sl;
0x0002b5ac ldr r2, [pc, 0x350] |
0x0002b5ae mov r0, sb | r0 = sb;
0x0002b5b0 add r3, pc | r3 = 0x56eb0;
0x0002b5b2 add r2, pc | r2 = 0x56eb6;
0x0002b5b4 bl 0x43f38 | r0 = zbx_snprintf ();
0x0002b5b8 add r5, r0 | r5 += r0;
0x0002b5ba ldr r3, [sp, 0x28] | r3 = var_28h;
0x0002b5bc cmp r3, 4 |
| if (r3 <= 4) {
0x0002b5be ble.w 0x2bbe8 | goto label_67;
| }
0x0002b5c2 ldr r3, [sp, 0x28] | r3 = var_28h;
0x0002b5c4 ldr r7, [pc, 0x33c] |
0x0002b5c6 ldr.w r0, [fp, 0xa] | r0 = *(arg_ah);
0x0002b5ca add r3, r4 | r3 += r4;
0x0002b5cc str r3, [sp, 0x28] | var_28h = r3;
0x0002b5ce add r7, pc | r7 = 0x56ed6;
0x0002b5d0 ldr r3, [sp, 0x48] | r3 = *(arg_48h);
0x0002b5d2 str r0, [r3, -0x70] | *((r3 - 0x70)) = r0;
0x0002b5d6 blx 0xdc1c | clock_gettime ();
0x0002b5da rsb.w r1, r5, 0x800 | r1 = 0x800 - r5;
0x0002b5de mov r3, r0 | r3 = r0;
0x0002b5e0 mov r2, r7 | r2 = r7;
0x0002b5e2 adds r0, r6, r5 | r0 = r6 + r5;
0x0002b5e4 bl 0x43f38 | r0 = zbx_snprintf ();
0x0002b5e8 add r5, r0 | r5 += r0;
0x0002b5ea ldrb.w r0, [fp, 0xe] | r0 = *(arg_eh);
0x0002b5ee blx 0xdeb4 | r0 = fcn_0000deb4 ();
0x0002b5f2 mov sb, r0 | sb = r0;
0x0002b5f4 cmp r0, 0 |
| if (r0 == 0) {
0x0002b5f6 beq.w 0x2baa8 | goto label_68;
| }
0x0002b5fa ldr r3, [r0] | r3 = *(r0);
0x0002b5fc rsb.w r1, r5, 0x800 | r1 = 0x800 - r5;
0x0002b600 adds r0, r6, r5 | r0 = r6 + r5;
0x0002b602 mov r2, r7 | r2 = r7;
0x0002b604 bl 0x43f38 | r0 = zbx_snprintf ();
0x0002b608 add r5, r0 | r5 += r0;
| label_19:
0x0002b60a ldr r3, [sp, 0x28] | r3 = var_28h;
0x0002b60c add.w r8, fp, 0xf | r8 += arg_fh;
0x0002b610 cmp r8, r3 |
| if (r8 >= r3) {
0x0002b612 bhs.w 0x2b106 | goto label_3;
| }
0x0002b616 ldr.w sl, [pc, 0x2f0] | sl = *(0x0002b908);
0x0002b61a str.w fp, [sp, 0x34] | __asm ("str.w fp, [var_34h]");
0x0002b61e mov fp, r8 |
0x0002b620 str.w r8, [sp, 0x4c] | __asm ("str.w r8, [arg_4ch]");
0x0002b624 mov r8, r6 | r8 = r6;
0x0002b626 ldr r4, [sp, 0x40] | r4 = *(arg_40h);
0x0002b628 mov r6, sb | r6 = sb;
0x0002b62a ldr.w sb, [sp, 0x54] | sb = *(arg_54h);
0x0002b62e add sl, pc | sl += pc;
| label_10:
0x0002b630 ldrb r7, [fp], 1 | r7 = *(fp);
| fp++;
0x0002b634 b 0x2b648 | goto label_9;
| label_8:
0x0002b636 ldr r3, [r3] | r3 = *(r3);
0x0002b638 mov r2, sl | r2 = sl;
0x0002b63a bl 0x43f38 | r0 = zbx_snprintf ();
0x0002b63e add r5, r0 | r5 += r0;
| do {
0x0002b640 adds r4, 1 | r4++;
0x0002b642 lsls r7, r7, 1 | r7 <<= 1;
0x0002b644 lsls r0, r4, 0x1d | r0 = r4 << 0x1d;
| if (r0 == r4) {
0x0002b646 beq 0x2b67a | goto label_69;
| }
| label_9:
0x0002b648 lsls r3, r7, 0x18 | r3 = r7 << 0x18;
0x0002b64a bpl 0x2b640 |
| } while (r3 >= r7);
0x0002b64c rev16 r0, r4 | __asm ("rev16 r0, r4");
0x0002b64e mov r1, r6 | r1 = r6;
0x0002b650 uxth r0, r0 | r0 = (int16_t) r0;
| if (r6 != 0) {
0x0002b652 cbz r6, 0x2b656 |
0x0002b654 ldr r1, [r6] | r1 = *(r6);
| }
0x0002b656 blx 0xe2d4 | r0 = fcn_0000e2d4 ();
0x0002b65a mov r3, r0 | r3 = r0;
0x0002b65c rsb.w r1, r5, 0x800 | r1 = 0x800 - r5;
0x0002b660 add.w r0, r8, r5 | r0 = r8 + r5;
0x0002b664 cmp r3, 0 |
| if (r3 != 0) {
0x0002b666 bne 0x2b636 | goto label_8;
| }
0x0002b668 mov r3, r4 | r3 = r4;
0x0002b66a mov r2, sb | r2 = sb;
0x0002b66c adds r4, 1 | r4++;
0x0002b66e lsls r7, r7, 1 | r7 <<= 1;
0x0002b670 bl 0x43f38 | r0 = zbx_snprintf ();
0x0002b674 add r5, r0 | r5 += r0;
0x0002b676 lsls r0, r4, 0x1d | r0 = r4 << 0x1d;
| if (r0 != r4) {
0x0002b678 bne 0x2b648 | goto label_9;
| }
| label_69:
0x0002b67a ldr r3, [sp, 0x28] | r3 = var_28h;
0x0002b67c cmp fp, r3 |
| if (fp != r3) {
0x0002b67e bne 0x2b630 | goto label_10;
| }
0x0002b680 mov r3, fp | r3 = fp;
0x0002b682 ldr.w fp, [sp, 0x34] | fp = var_34h;
0x0002b686 mov r6, r8 | r6 = r8;
0x0002b688 ldr.w r8, [sp, 0x4c] | r8 = *(arg_4ch);
0x0002b68c sub.w r3, r3, fp | r3 -= fp;
0x0002b690 subs r3, 0xf | r3 -= 0xf;
0x0002b692 add r8, r3 | r8 += r3;
0x0002b694 b 0x2b106 | goto label_3;
0x0002b696 ldr r3, [pc, 0x274] |
0x0002b698 mov r1, sl | r1 = sl;
0x0002b69a ldr r2, [pc, 0x274] |
0x0002b69c mov r0, sb | r0 = sb;
0x0002b69e add r3, pc | r3 = 0x56fb0;
0x0002b6a0 add r2, pc | r2 = 0x56fb6;
0x0002b6a2 bl 0x43f38 | r0 = zbx_snprintf ();
0x0002b6a6 add r5, r0 | r5 += r0;
0x0002b6a8 ldr r3, [sp, 0x28] | r3 = var_28h;
0x0002b6aa add.w r8, fp, 0xb | r8 += arg_bh;
0x0002b6ae add r4, r3 | r4 += r3;
0x0002b6b0 ldrb.w r3, [fp, 0xa] | r3 = *(arg_ah);
0x0002b6b4 cmp r3, 0 |
| if (r3 != 0) {
0x0002b6b6 bne.w 0x2ba26 | goto label_70;
| }
| label_17:
0x0002b6ba cmp r4, r8 |
| if (r4 < r8) {
0x0002b6bc bls.w 0x2b106 | goto label_3;
| }
0x0002b6c0 ldrb r3, [r8], 1 | r3 = *(r8);
| r8++;
0x0002b6c4 cmp r3, 0 |
| if (r3 == 0) {
0x0002b6c6 beq.w 0x2b106 | goto label_3;
| }
0x0002b6ca ldr r2, [pc, 0x248] |
0x0002b6cc rsb.w r1, r5, 0x800 | r1 = 0x800 - r5;
0x0002b6d0 adds r0, r6, r5 | r0 = r6 + r5;
0x0002b6d2 str.w r8, [sp] | __asm ("str.w r8, [sp]");
0x0002b6d6 add r8, r3 | r8 += r3;
0x0002b6d8 add r2, pc | r2 = 0x56ff2;
0x0002b6da bl 0x43f38 | r0 = zbx_snprintf ();
0x0002b6de add r5, r0 | r5 += r0;
0x0002b6e0 b 0x2b106 | goto label_3;
0x0002b6e2 ldr r3, [pc, 0x234] |
0x0002b6e4 add r3, pc | r3 = 0x57002;
0x0002b6e6 b 0x2b05a | goto label_11;
0x0002b6e8 ldr r3, [pc, 0x230] |
0x0002b6ea add r3, pc | r3 = 0x5700a;
0x0002b6ec b 0x2b0be | goto label_7;
0x0002b6ee ldr r3, [pc, 0x230] |
0x0002b6f0 add r3, pc | r3 = 0x57016;
0x0002b6f2 b 0x2b0be | goto label_7;
0x0002b6f4 ldr r3, [sp, 0x34] | r3 = var_34h;
0x0002b6f6 cmp r3, 1 |
| if (r3 == 1) {
0x0002b6f8 beq 0x2b700 | goto label_71;
| }
0x0002b6fa cmp r3, 4 |
| if (r3 != 4) {
0x0002b6fc bne.w 0x2b1f4 | goto label_12;
| }
| label_71:
0x0002b700 ldr r7, [sp, 0x48] | r7 = *(arg_48h);
0x0002b702 ldr.w r0, [fp, 0xa] | r0 = *(arg_ah);
0x0002b706 ldr r1, [r4, 4] | r1 = *((r4 + 4));
0x0002b708 ldr r2, [r4, 8] | r2 = *((r4 + 8));
0x0002b70a sub.w ip, r7, 0x30 |
0x0002b70e ldr r3, [r4, 0xc] | r3 = *((r4 + 0xc));
0x0002b710 mov lr, ip | lr = ip;
0x0002b712 stm.w lr!, {r0, r1, r2, r3} | *(lr!) = r0;
| *((lr! + 4)) = r1;
| *((lr! + 8)) = r2;
| *((lr! + 12)) = r3;
0x0002b716 add.w r2, sp, 0x18c0 | r2 += arg_18c0h;
0x0002b71a mov r1, ip | r1 = ip;
0x0002b71c adds r2, 0xc | r2 += 0xc;
0x0002b71e mov.w r3, 0x800 | r3 = 0x800;
0x0002b722 movs r0, 0xa | r0 = 0xa;
0x0002b724 blx 0xdb6c | fcn_0000db6c ();
0x0002b728 ldr r2, [pc, 0x1f8] |
0x0002b72a mov r3, r0 | r3 = r0;
0x0002b72c rsb.w r1, r5, 0x800 | r1 = 0x800 - r5;
0x0002b730 adds r0, r6, r5 | r0 = r6 + r5;
0x0002b732 add r2, pc | r2 = 0x5705a;
0x0002b734 bl 0x43f38 | r0 = zbx_snprintf ();
0x0002b738 add r5, r0 | r5 += r0;
0x0002b73a b 0x2b1f4 | goto label_12;
| label_55:
0x0002b73c ldr r3, [sp, 0x48] | r3 = *(arg_48h);
0x0002b73e ldr.w r0, [fp, 0xa] | r0 = *(arg_ah);
0x0002b742 str r0, [r3, -0x70] | *((r3 - 0x70)) = r0;
0x0002b746 blx 0xdc1c | clock_gettime ();
0x0002b74a ldr r2, [pc, 0x1dc] |
0x0002b74c mov r3, r0 | r3 = r0;
0x0002b74e rsb.w r1, r5, 0x800 | r1 = 0x800 - r5;
0x0002b752 adds r0, r6, r5 | r0 = r6 + r5;
0x0002b754 add r2, pc | r2 = 0x57082;
0x0002b756 bl 0x43f38 | r0 = zbx_snprintf ();
0x0002b75a add r5, r0 | r5 += r0;
0x0002b75c b 0x2b1f4 | goto label_12;
| label_45:
0x0002b75e ldr r4, [sp, 0x30] | r4 = var_30h;
0x0002b760 movs r2, 0 | r2 = 0;
0x0002b762 ldr r3, [pc, 0x1c8] |
0x0002b764 movw r1, 0x26b | r1 = 0x26b;
0x0002b768 ldr r0, [r4, 0x28] | r0 = *((r4 + 0x28));
0x0002b76a add r3, pc | r3 = 0x5709c;
0x0002b76c orr r0, r0, 0x20 | r0 |= 0x20;
0x0002b770 str r0, [r4, 0x28] | *((r4 + 0x28)) = r0;
0x0002b772 ldr r0, [pc, 0x1bc] |
0x0002b774 add r0, pc | r0 = 0x570aa;
0x0002b776 bl 0x40ed8 | zbx_strdup2 ();
0x0002b77a b 0x2af9a | goto label_13;
| label_48:
0x0002b77c ldr r5, [sp, 0x30] | r5 = var_30h;
0x0002b77e movs r4, 1 | r4 = 1;
0x0002b780 ldr r3, [pc, 0x1b0] |
0x0002b782 movw r1, 0x27f | r1 = 0x27f;
0x0002b786 ldr r0, [pc, 0x1b0] |
0x0002b788 ldr r2, [r5, 0x28] | r2 = *((r5 + 0x28));
0x0002b78a add r3, pc | r3 = 0x570c2;
0x0002b78c add r0, pc | r0 = 0x570ca;
0x0002b78e orr r2, r2, 0x20 | r2 |= 0x20;
0x0002b792 str r2, [r5, 0x28] | *((r5 + 0x28)) = r2;
0x0002b794 movs r2, 0 | r2 = 0;
0x0002b796 bl 0x40ed8 | zbx_strdup2 ();
0x0002b79a str r0, [r5, 0x20] | *((r5 + 0x20)) = r0;
| label_54:
0x0002b79c ldr r2, [sp, 0x44] | r2 = *(arg_44h);
0x0002b79e ldr r3, [pc, 0x19c] | r3 = *(0x2b93e);
0x0002b7a0 ldr r5, [sp, 0x38] | r5 = *(arg_38h);
0x0002b7a2 ldr r3, [r2, r3] | r3 = *((r2 + r3));
0x0002b7a4 mov r0, r5 | r0 = r5;
0x0002b7a6 mov r1, r3 | r1 = r3;
0x0002b7a8 str r3, [sp, 0x1c] | var_1ch = r3;
0x0002b7aa bl 0x32de8 | zbx_vector_str_clear_ext ();
0x0002b7ae mov r0, r5 | r0 = r5;
0x0002b7b0 bl 0x329d8 | zbx_vector_str_destroy ();
0x0002b7b4 b.w 0x2afa0 | goto label_14;
| label_28:
0x0002b7b8 ldr r0, [sp, 0x20] | r0 = var_20h;
0x0002b7ba sub.w r3, r4, 0x2c | r3 = r4 - 0x2c;
0x0002b7be blx 0xdf14 | r0 = fcn_0000df14 ();
| if (r0 != 0) {
0x0002b7c2 cbnz r0, 0x2b7da | goto label_72;
| }
0x0002b7c4 ldr r0, [fp, -0x6c] | r0 = var_6ch;
0x0002b7c8 ldr r3, [r0, 4] | r3 = *((r0 + 4));
0x0002b7ca cmp r3, 0xa |
0x0002b7cc it ne |
| if (r3 == 0xa) {
0x0002b7ce movne r3, 2 | r3 = 2;
| }
0x0002b7d0 str r3, [sp, 0x24] | var_24h = r3;
| do {
0x0002b7d2 blx 0xdd90 | strrchr (r0, r1);
0x0002b7d6 b.w 0x2ac0c | goto label_15;
| label_72:
0x0002b7da ldr r0, [fp, -0x6c] | r0 = var_6ch;
0x0002b7de movs r3, 2 | r3 = 2;
0x0002b7e0 str r3, [sp, 0x24] | var_24h = r3;
0x0002b7e2 cmp r0, 0 |
0x0002b7e4 bne 0x2b7d2 |
| } while (r0 != 0);
0x0002b7e6 b.w 0x2ac0c | goto label_15;
| label_59:
0x0002b7ea mov r8, r4 | r8 = r4;
| label_61:
0x0002b7ec ldr r2, [pc, 0x150] |
0x0002b7ee rsb.w r1, r7, 0x800 | r1 = 0x800 - r7;
0x0002b7f2 adds r0, r6, r7 | r0 = r6 + r7;
0x0002b7f4 add r2, pc | r2 = 0x57138;
0x0002b7f6 bl 0x43f38 | r0 = zbx_snprintf ();
0x0002b7fa adds r5, r0, r7 | r5 = r0 + r7;
0x0002b7fc b 0x2b106 | goto label_3;
| label_39:
0x0002b944 ldrd r2, r3, [fp, -0x78] | __asm ("ldrd r2, r3, [var_78h]");
0x0002b948 cmp.w r8, 0 |
| if (r8 == 0) {
0x0002b94c beq 0x2b9ea | goto label_73;
| }
0x0002b94e str.w sl, [sp] | __asm ("str.w sl, [sp]");
0x0002b952 mov r1, r6 | r1 = r6;
0x0002b954 strd r2, r3, [fp, -0x4] | __asm ("strd r2, r3, [fp, -0x4]");
0x0002b958 mov r2, r0 | r2 = r0;
0x0002b95a ldr.w r3, [fp, 4] | r3 = *(arg_4h);
0x0002b95e orr r3, r3, 8 | r3 |= 8;
0x0002b962 str.w r3, [fp, 4] | __asm ("str.w r3, [arg_4h]");
| do {
0x0002b966 add r7, sp, 0x2d0 | r7 += arg_2d0h;
0x0002b968 mov r0, r5 | r0 = r5;
0x0002b96a subs r3, r7, 4 | r3 = r7 - 4;
0x0002b96c str r3, [sp, 0x2c] | var_2ch = r3;
0x0002b96e blx 0xdd2c | r0 = fcn_0000dd2c ();
0x0002b972 mov r8, r0 | r8 = r0;
0x0002b974 b.w 0x2ae18 | goto label_16;
| label_37:
0x0002b978 ldr r2, [sp, 0x30] | r2 = var_30h;
0x0002b97a ldr r3, [r2, 0x28] | r3 = *((r2 + 0x28));
0x0002b97c orr r3, r3, 0x20 | r3 |= 0x20;
0x0002b980 str r3, [r2, 0x28] | *((r2 + 0x28)) = r3;
0x0002b982 blx 0xe3d4 | r0 = fcn_0000e3d4 ();
0x0002b986 ldr r0, [r0] | r0 = *(r0);
0x0002b988 bl 0x30b74 | zbx_strerror ();
0x0002b98c ldr r1, [pc, 0x288] |
0x0002b98e mov r2, r0 | r2 = r0;
0x0002b990 movs r0, 0 | r0 = 0;
0x0002b992 add r1, pc | r1 = 0x575ae;
0x0002b994 bl 0x44820 | zbx_dsprintf ()
0x0002b998 b.w 0x2af9a | goto label_13;
| label_44:
0x0002b99c ldr r2, [sp, 0x30] | r2 = var_30h;
0x0002b99e cmp.w r8, -1 |
0x0002b9a2 ldr r3, [r2, 0x28] | r3 = *((r2 + 0x28));
0x0002b9a4 orr r3, r3, 1 | r3 |= 1;
0x0002b9a8 str r3, [r2, 0x28] | *((r2 + 0x28)) = r3;
| if (r8 != -1) {
0x0002b9aa beq 0x2b9ba |
0x0002b9ac ldr r3, [sp, 0x1c] | r3 = var_1ch;
0x0002b9ae subw r2, r3, 0xe04 | __asm ("subw r2, r3, 0xe04");
0x0002b9b2 ldrb r3, [r2, 3] | r3 = *((r2 + 3));
0x0002b9b4 ands r3, r3, 0xf | r3 &= 0xf;
| if (r3 == r3) {
0x0002b9b8 beq 0x2ba3e | goto label_74;
| }
| }
0x0002b9ba movs r2, 0 | r2 = 0;
0x0002b9bc mov r3, r2 | r3 = r2;
| label_18:
0x0002b9be ldr r1, [sp, 0x30] | r1 = var_30h;
0x0002b9c0 movs r4, 0 | r4 = 0;
0x0002b9c2 strd r2, r3, [r1, 8] | __asm ("strd r2, r3, [r1, 8]");
0x0002b9c6 b.w 0x2afa0 | goto label_14;
| label_51:
0x0002b9ca ldr r5, [sp, 0x30] | r5 = var_30h;
0x0002b9cc mov r2, r0 | r2 = r0;
0x0002b9ce ldr r3, [pc, 0x24c] |
0x0002b9d0 movw r1, 0x10f | r1 = 0x10f;
0x0002b9d4 ldr r0, [pc, 0x248] |
0x0002b9d6 ldr r4, [r5, 0x28] | r4 = *((r5 + 0x28));
0x0002b9d8 add r3, pc | r3 = 0x575fa;
0x0002b9da add r0, pc | r0 = 0x575fe;
0x0002b9dc orr r4, r4, 0x20 | r4 |= 0x20;
0x0002b9e0 str r4, [r5, 0x28] | *((r5 + 0x28)) = r4;
0x0002b9e2 bl 0x40ed8 | zbx_strdup2 ();
0x0002b9e6 b.w 0x2af9a | goto label_13;
| label_73:
0x0002b9ea str.w sl, [sp] | __asm ("str.w sl, [sp]");
0x0002b9ee mov r1, r6 | r1 = r6;
0x0002b9f0 strd r2, r3, [fp, -0x4] | __asm ("strd r2, r3, [fp, -0x4]");
0x0002b9f4 mov r2, sb | r2 = sb;
0x0002b9f6 b 0x2b966 |
| } while (1);
| label_38:
0x0002b9f8 ldr r2, [sp, 0x30] | r2 = var_30h;
0x0002b9fa ldr r3, [r2, 0x28] | r3 = *((r2 + 0x28));
0x0002b9fc orr r3, r3, 0x20 | r3 |= 0x20;
0x0002ba00 str r3, [r2, 0x28] | *((r2 + 0x28)) = r3;
0x0002ba02 blx 0xe3d4 | r0 = fcn_0000e3d4 ();
0x0002ba06 ldr r0, [r0] | r0 = *(r0);
0x0002ba08 bl 0x30b74 | zbx_strerror ();
0x0002ba0c ldr r1, [pc, 0x214] |
0x0002ba0e mov r2, r0 | r2 = r0;
0x0002ba10 mov r0, r7 | r0 = r7;
0x0002ba12 add r1, pc | r1 = 0x5763a;
0x0002ba14 bl 0x44820 | zbx_dsprintf ()
0x0002ba18 b.w 0x2af9a | goto label_13;
| label_43:
0x0002ba1c ldr r3, [sp, 0x34] | r3 = var_34h;
0x0002ba1e str.w r3, [fp, 0x1e0] | __asm ("str.w r3, [arg_1e0h]");
0x0002ba22 b.w 0x2ae18 | goto label_16;
| label_70:
0x0002ba26 ldr r2, [pc, 0x200] |
0x0002ba28 rsb.w r1, r5, 0x800 | r1 = 0x800 - r5;
0x0002ba2c adds r0, r6, r5 | r0 = r6 + r5;
0x0002ba2e str.w r8, [sp] | __asm ("str.w r8, [sp]");
0x0002ba32 add r8, r3 | r8 += r3;
0x0002ba34 add r2, pc | r2 = 0x57662;
0x0002ba36 bl 0x43f38 | r0 = zbx_snprintf ();
0x0002ba3a add r5, r0 | r5 += r0;
0x0002ba3c b 0x2b6ba | goto label_17;
| label_74:
0x0002ba3e ldrh r2, [r2, 6] | r2 = *((r2 + 6));
0x0002ba40 subs r2, 0 |
0x0002ba42 it ne |
| if (r2 == 0) {
0x0002ba44 movne r2, 1 | r2 = 1;
| }
0x0002ba46 b 0x2b9be | goto label_18;
| label_56:
0x0002ba48 ldr r4, [sp, 0x30] | r4 = var_30h;
0x0002ba4a movs r2, 0 | r2 = 0;
0x0002ba4c ldr r3, [pc, 0x1dc] |
0x0002ba4e mov.w r1, 0x11a | r1 = 0x11a;
0x0002ba52 ldr r0, [r4, 0x28] | r0 = *((r4 + 0x28));
0x0002ba54 add r3, pc | r3 = "java poller";
0x0002ba56 orr r0, r0, 0x20 | r0 |= 0x20;
0x0002ba5a str r0, [r4, 0x28] | *((r4 + 0x28)) = r0;
0x0002ba5c ldr r0, [pc, 0x1d0] |
0x0002ba5e add r0, pc | r0 = 0x57692;
0x0002ba60 bl 0x40ed8 | zbx_strdup2 ();
0x0002ba64 b.w 0x2af9a | goto label_13;
| label_57:
0x0002ba68 ldr r4, [sp, 0x30] | r4 = var_30h;
0x0002ba6a movs r2, 0 | r2 = 0;
0x0002ba6c ldr r3, [pc, 0x1c4] |
0x0002ba6e mov.w r1, 0x124 | r1 = 0x124;
0x0002ba72 ldr r0, [r4, 0x28] | r0 = *((r4 + 0x28));
0x0002ba74 add r3, pc | r3 = 0x576ac;
0x0002ba76 orr r0, r0, 0x20 | r0 |= 0x20;
0x0002ba7a str r0, [r4, 0x28] | *((r4 + 0x28)) = r0;
0x0002ba7c ldr r0, [pc, 0x1b8] |
0x0002ba7e add r0, pc | r0 = 0x576ba;
0x0002ba80 bl 0x40ed8 | zbx_strdup2 ();
0x0002ba84 b.w 0x2af9a | goto label_13;
| label_41:
0x0002ba88 ldr r5, [sp, 0x30] | r5 = var_30h;
0x0002ba8a mov r2, r0 | r2 = r0;
0x0002ba8c ldr r3, [pc, 0x1ac] |
0x0002ba8e mov.w r1, 0x1f6 | r1 = 0x1f6;
0x0002ba92 ldr r0, [pc, 0x1ac] |
0x0002ba94 ldr r4, [r5, 0x28] | r4 = *((r5 + 0x28));
0x0002ba96 add r3, pc | r3 = 0x576d6;
0x0002ba98 add r0, pc | r0 = 0x576de;
0x0002ba9a orr r4, r4, 0x20 | r4 |= 0x20;
0x0002ba9e str r4, [r5, 0x28] | *((r5 + 0x28)) = r4;
0x0002baa0 bl 0x40ed8 | zbx_strdup2 ();
0x0002baa4 b.w 0x2af9a | goto label_13;
| label_68:
0x0002baa8 ldr r2, [pc, 0x198] |
0x0002baaa rsb.w r1, r5, 0x800 | r1 = 0x800 - r5;
0x0002baae adds r0, r6, r5 | r0 = r6 + r5;
0x0002bab0 ldrb.w r3, [fp, 0xe] | r3 = *(arg_eh);
0x0002bab4 add r2, pc | r2 = "data sender";
0x0002bab6 bl 0x43f38 | r0 = zbx_snprintf ();
0x0002baba add r5, r0 | r5 += r0;
0x0002babc b 0x2b60a | goto label_19;
| label_40:
0x0002babe ldr r0, [sp, 0x20] | r0 = var_20h;
0x0002bac0 sub.w r1, r4, 0x30 | r1 = r4 - 0x30;
0x0002bac4 blx 0xdf2c | r0 = fcn_0000df2c ();
0x0002bac8 mov r2, r0 | r2 = r0;
0x0002baca cmp r0, 0 |
| if (r0 != 0) {
0x0002bacc beq 0x2bbca |
0x0002bace ldr r3, [fp, -0x70] | r3 = var_70h;
0x0002bad2 str.w r3, [fp, 0x10] | __asm ("str.w r3, [arg_10h]");
0x0002bad6 movs r3, 2 |
0x0002bad8 movt r3, 0x3500 | r3 = 0x35000002;
0x0002badc str.w r3, [fp, 0xc] | __asm ("str.w r3, [arg_ch]");
0x0002bae0 movs r3, 1 | r3 = 1;
0x0002bae2 str.w r3, [fp, 8] | __asm ("str.w r3, [arg_8h]");
0x0002bae6 b.w 0x2add8 | goto label_20;
| label_66:
0x0002baea ldr r4, [sp, 0x30] | r4 = var_30h;
0x0002baec movs r2, 0 | r2 = 0;
0x0002baee ldr r3, [pc, 0x158] |
0x0002baf0 mov.w r1, 0x338 | r1 = 0x338;
0x0002baf4 ldr r0, [r4, 0x28] | r0 = *((r4 + 0x28));
0x0002baf6 add r3, pc | r3 = "vmware collector";
0x0002baf8 orr r0, r0, 0x20 | r0 |= 0x20;
0x0002bafc str r0, [r4, 0x28] | *((r4 + 0x28)) = r0;
0x0002bafe ldr r0, [pc, 0x14c] |
0x0002bb00 add r0, pc | r0 = 0x57752;
0x0002bb02 bl 0x40ed8 | zbx_strdup2 ();
0x0002bb06 b.w 0x2af9a | goto label_13;
| label_65:
0x0002bb0a ldr r4, [sp, 0x30] | r4 = var_30h;
0x0002bb0c movs r2, 0 | r2 = 0;
0x0002bb0e ldr r3, [pc, 0x140] |
0x0002bb10 movw r1, 0x331 | r1 = 0x331;
0x0002bb14 ldr r0, [r4, 0x28] | r0 = *((r4 + 0x28));
0x0002bb16 add r3, pc | r3 = 0x5776c;
0x0002bb18 orr r0, r0, 0x20 | r0 |= 0x20;
0x0002bb1c str r0, [r4, 0x28] | *((r4 + 0x28)) = r0;
0x0002bb1e ldr r0, [pc, 0x134] |
0x0002bb20 add r0, pc | r0 = 0x5777a;
0x0002bb22 bl 0x40ed8 | zbx_strdup2 ();
0x0002bb26 b.w 0x2af9a | goto label_13;
| label_64:
0x0002bb2a ldr r4, [sp, 0x30] | r4 = var_30h;
0x0002bb2c movs r2, 0 | r2 = 0;
0x0002bb2e ldr r3, [pc, 0x128] |
0x0002bb30 movw r1, 0x2d3 | r1 = 0x2d3;
0x0002bb34 ldr r0, [r4, 0x28] | r0 = *((r4 + 0x28));
0x0002bb36 add r3, pc | r3 = "preprocessing manager";
0x0002bb38 orr r0, r0, 0x20 | r0 |= 0x20;
0x0002bb3c str r0, [r4, 0x28] | *((r4 + 0x28)) = r0;
0x0002bb3e ldr r0, [pc, 0x11c] |
0x0002bb40 add r0, pc | r0 = 0x577a2;
0x0002bb42 bl 0x40ed8 | zbx_strdup2 ();
0x0002bb46 b.w 0x2af9a | goto label_13;
| label_63:
0x0002bb4a ldr r4, [sp, 0x30] | r4 = var_30h;
0x0002bb4c movs r2, 0 | r2 = 0;
0x0002bb4e ldr r3, [pc, 0x110] |
0x0002bb50 mov.w r1, 0x2cc | r1 = 0x2cc;
0x0002bb54 ldr r0, [r4, 0x28] | r0 = *((r4 + 0x28));
0x0002bb56 add r3, pc | r3 = 0x577bc;
0x0002bb58 orr r0, r0, 0x20 | r0 |= 0x20;
0x0002bb5c str r0, [r4, 0x28] | *((r4 + 0x28)) = r0;
0x0002bb5e ldr r0, [pc, 0x104] |
0x0002bb60 add r0, pc | r0 = 0x577ca;
0x0002bb62 bl 0x40ed8 | zbx_strdup2 ();
0x0002bb66 b.w 0x2af9a | goto label_13;
| label_62:
0x0002bb6a ldr r4, [sp, 0x30] | r4 = var_30h;
0x0002bb6c movs r2, 0 | r2 = 0;
0x0002bb6e ldr r3, [pc, 0xf8] |
0x0002bb70 movw r1, 0x2c3 | r1 = 0x2c3;
0x0002bb74 ldr r0, [r4, 0x28] | r0 = *((r4 + 0x28));
0x0002bb76 add r3, pc | r3 = 0x577e4;
0x0002bb78 orr r0, r0, 0x20 | r0 |= 0x20;
0x0002bb7c str r0, [r4, 0x28] | *((r4 + 0x28)) = r0;
0x0002bb7e ldr r0, [pc, 0xec] |
0x0002bb80 add r0, pc | r0 = 0x577f2;
0x0002bb82 bl 0x40ed8 | zbx_strdup2 ();
0x0002bb86 b.w 0x2af9a | goto label_13;
| label_52:
0x0002bb8a ldr r4, [sp, 0x30] | r4 = var_30h;
0x0002bb8c movs r2, 0 | r2 = 0;
0x0002bb8e ldr r3, [pc, 0xe0] |
0x0002bb90 mov.w r1, 0x2b8 | r1 = 0x2b8;
0x0002bb94 ldr r0, [r4, 0x28] | r0 = *((r4 + 0x28));
0x0002bb96 add r3, pc | r3 = 0x5780c;
0x0002bb98 orr r0, r0, 0x20 | r0 |= 0x20;
0x0002bb9c str r0, [r4, 0x28] | *((r4 + 0x28)) = r0;
0x0002bb9e ldr r0, [pc, 0xd4] |
0x0002bba0 add r0, pc | r0 = 0x5781a;
0x0002bba2 bl 0x40ed8 | zbx_strdup2 ();
0x0002bba6 b.w 0x2af9a | goto label_13;
| label_58:
0x0002bbaa ldr r4, [sp, 0x30] | r4 = var_30h;
0x0002bbac movs r2, 0 | r2 = 0;
0x0002bbae ldr r3, [pc, 0xc8] |
0x0002bbb0 movw r1, 0x357 | r1 = 0x357;
0x0002bbb4 ldr r0, [r4, 0x28] | r0 = *((r4 + 0x28));
0x0002bbb6 add r3, pc | r3 = "service manager";
0x0002bbb8 orr r0, r0, 0x20 | r0 |= 0x20;
0x0002bbbc str r0, [r4, 0x28] | *((r4 + 0x28)) = r0;
0x0002bbbe ldr r0, [pc, 0xbc] |
0x0002bbc0 add r0, pc | r0 = 0x57842;
0x0002bbc2 bl 0x40ed8 | zbx_strdup2 ();
0x0002bbc6 b.w 0x2af9a | goto label_13;
| }
0x0002bbca ldr r4, [sp, 0x30] | r4 = var_30h;
0x0002bbcc movw r1, 0x1df | r1 = 0x1df;
0x0002bbd0 ldr r3, [pc, 0xac] |
0x0002bbd2 ldr r0, [r4, 0x28] | r0 = *((r4 + 0x28));
0x0002bbd4 add r3, pc | r3 = "ha manager";
0x0002bbd6 orr r0, r0, 0x20 | r0 |= 0x20;
0x0002bbda str r0, [r4, 0x28] | *((r4 + 0x28)) = r0;
0x0002bbdc ldr r0, [pc, 0xa4] |
0x0002bbde add r0, pc | r0 = 0x57866;
0x0002bbe0 bl 0x40ed8 | zbx_strdup2 ();
0x0002bbe4 b.w 0x2af9a | goto label_13;
| label_67:
0x0002bbe8 ldr r4, [sp, 0x30] | r4 = var_30h;
0x0002bbea movs r2, 0 | r2 = 0;
0x0002bbec ldr r3, [pc, 0x98] |
0x0002bbee movw r1, 0x2ef | r1 = 0x2ef;
0x0002bbf2 ldr r0, [r4, 0x28] | r0 = *((r4 + 0x28));
0x0002bbf4 add r3, pc | r3 = "sender";
0x0002bbf6 orr r0, r0, 0x20 | r0 |= 0x20;
0x0002bbfa str r0, [r4, 0x28] | *((r4 + 0x28)) = r0;
0x0002bbfc ldr r0, [pc, 0x8c] |
0x0002bbfe add r0, pc | r0 = 0x5788e;
0x0002bc00 bl 0x40ed8 | zbx_strdup2 ();
0x0002bc04 b.w 0x2af9a | goto label_13;
| label_47:
0x0002bc08 add.w r6, sp, 0x10c0 | r6 += arg_10c0h;
0x0002bc0c adds r6, 0xc | r6 += 0xc;
0x0002bc0e b.w 0x2b15c | goto label_21;
| label_50:
0x0002bc12 blx 0xe158 | fcn_0000e158 ();
0x0002bc16 nop |
0x0002bc18 ldrb r2, [r5, 7] | r2 = *((r5 + 7));
0x0002bc1a movs r2, r0 | r2 = r0;
0x0002bc1c strb r4, [r7, r3] | *((r7 + r3)) = r4;
0x0002bc1e movs r2, r0 | r2 = r0;
0x0002bc20 ldrb r2, [r5, 5] | r2 = *((r5 + 5));
0x0002bc22 movs r2, r0 | r2 = r0;
0x0002bc24 ldrb r6, [r1, 6] | r6 = *((r1 + 6));
0x0002bc26 movs r2, r0 | r2 = r0;
0x0002bc28 ldrb r0, [r3, 8] | r0 = *((r3 + 8));
0x0002bc2a movs r2, r0 | r2 = r0;
0x0002bc2c subs r4, 0x68 | r4 -= 0x68;
0x0002bc2e movs r2, r0 | r2 = r0;
0x0002bc30 ldrb r6, [r4, 3] | r6 = *((r4 + 3));
0x0002bc32 movs r2, r0 | r2 = r0;
0x0002bc34 subs r4, 0x64 | r4 -= 0x64;
0x0002bc36 movs r2, r0 | r2 = r0;
0x0002bc38 ldrb r6, [r0, 3] | r6 = *((r0 + 3));
0x0002bc3a movs r2, r0 | r2 = r0;
0x0002bc3c ldrb r2, [r7, 4] | r2 = *((r7 + 4));
0x0002bc3e movs r2, r0 | r2 = r0;
0x0002bc40 ldrb r4, [r5, 2] | r4 = *((r5 + 2));
0x0002bc42 movs r2, r0 | r2 = r0;
0x0002bc44 strh r4, [r5, 0x32] | *((r5 + 0x32)) = r4;
0x0002bc46 movs r2, r0 | r2 = r0;
0x0002bc48 ldrb r6, [r2, 4] | r6 = *((r2 + 4));
0x0002bc4a movs r2, r0 | r2 = r0;
0x0002bc4c ldrb r4, [r0, 1] | r4 = *((r0 + 1));
0x0002bc4e movs r2, r0 | r2 = r0;
0x0002bc50 ldrb r6, [r6, 3] | r6 = *((r6 + 3));
0x0002bc52 movs r2, r0 | r2 = r0;
0x0002bc54 ldrb r4, [r4] | r4 = *(r4);
0x0002bc56 movs r2, r0 | r2 = r0;
0x0002bc58 ldrb r6, [r2, 3] | r6 = *((r2 + 3));
0x0002bc5a movs r2, r0 | r2 = r0;
0x0002bc5c ldrb r4, [r0] | r4 = *(r0);
0x0002bc5e movs r2, r0 | r2 = r0;
0x0002bc60 ldrb r6, [r6, 2] | r6 = *((r6 + 2));
0x0002bc62 movs r2, r0 | r2 = r0;
0x0002bc64 strb r4, [r4, 0x1f] | *((r4 + 0x1f)) = r4;
0x0002bc66 movs r2, r0 | r2 = r0;
0x0002bc68 ldrb r6, [r2, 2] | r6 = *((r2 + 2));
0x0002bc6a movs r2, r0 | r2 = r0;
0x0002bc6c strb r4, [r0, 0x1f] | *((r0 + 0x1f)) = r4;
0x0002bc6e movs r2, r0 | r2 = r0;
0x0002bc70 ldrb r6, [r6, 1] | r6 = *((r6 + 1));
0x0002bc72 movs r2, r0 | r2 = r0;
0x0002bc74 strb r4, [r4, 0x1e] | *((r4 + 0x1e)) = r4;
0x0002bc76 movs r2, r0 | r2 = r0;
0x0002bc78 ldrb r6, [r2, 1] | r6 = *((r2 + 1));
0x0002bc7a movs r2, r0 | r2 = r0;
0x0002bc7c strb r4, [r0, 0x1e] | *((r0 + 0x1e)) = r4;
0x0002bc7e movs r2, r0 | r2 = r0;
0x0002bc80 strb r0, [r5, 0x1f] | *((r5 + 0x1f)) = r0;
0x0002bc82 movs r2, r0 | r2 = r0;
0x0002bc84 strb r6, [r4, 0x1d] | *((r4 + 0x1d)) = r6;
0x0002bc86 movs r2, r0 | r2 = r0;
0x0002bc88 ldrb r0, [r3] | r0 = *(r3);
0x0002bc8a movs r2, r0 | r2 = r0;
0x0002bc8c strb r6, [r0, 0x1d] | *((r0 + 0x1d)) = r6;
0x0002bc8e movs r2, r0 | r2 = r0;
0x0002bc90 movs r2, 1 | r2 = 1;
0x0002bc92 b.w 0x2ab7c | goto label_22;
0x0002bca0 push {r3, r4, r5, lr} |
0x0002bca2 mov r4, r0 | r4 = r0;
0x0002bca4 ldr r3, [r0, 4] | r3 = *((r0 + 4));
0x0002bca6 mov r5, r1 | r5 = r1;
0x0002bca8 cmp r3, 5 |
| if (r3 > 5) {
0x0002bcaa ble 0x2bccc |
0x0002bcac ldr r3, [r0, 8] | r3 = *((r0 + 8));
0x0002bcae ldr r0, [r3, 0x14] | r0 = *((r3 + 0x14));
| if (r0 == 0) {
0x0002bcb0 cbz r0, 0x2bccc | goto label_75;
| }
0x0002bcb2 ldr r1, [pc, 0x28] |
0x0002bcb4 add r1, pc | r1 = 0x57996;
0x0002bcb6 blx 0xe3b0 | r0 = fcn_0000e3b0 ();
| if (r0 != 0) {
0x0002bcba cbnz r0, 0x2bccc | goto label_75;
| }
0x0002bcbc ldr r0, [pc, 0x20] |
0x0002bcbe mov r2, r5 | r2 = r5;
0x0002bcc0 mov r1, r4 | r1 = r4;
0x0002bcc2 pop.w {r3, r4, r5, lr} |
0x0002bcc6 add r0, pc | r0 = 0x579aa;
0x0002bcc8 b.w 0x1d378 | void (*0x1d378)() ();
| }
| label_75:
0x0002bccc mov r1, r5 | r1 = r5;
0x0002bcce mov r0, r4 | r0 = r4;
0x0002bcd0 movs r2, 1 | r2 = 1;
0x0002bcd2 pop.w {r3, r4, r5, lr} |
0x0002bcd6 b.w 0x2ab7c | goto label_22;
| label_25:
0x000383b4 lsl.w r2, r2, r7 | r2 <<= r7;
0x000383b8 mov.w r3, 0 | r3 = 0;
0x000383bc add.w r0, r5, 1 | r0 = r5 + 1;
0x000383c0 orr.w r2, r2, r1 | r2 |= r1;
0x000383c4 it eq |
| if (r2 != 1) {
0x000383c6 moveq r1, r4 | r1 = r4;
| }
0x000383c8 str r2, [ip, -0x84] | *((ip - 0x84)) = r2;
0x000383cc itte ne |
| if (r2 == 1) {
0x000383ce movne r1, r3 | r1 = r3;
| }
| if (r2 == 1) {
0x000383d0 movne r2, r4 | r2 = r4;
| }
| if (r2 != 1) {
0x000383d2 moveq r2, r3 | r2 = r3;
| }
0x000383d4 blx 0xe09c | r0 = fwrite (r0, r1, r2, r3);
0x000383d8 adds r3, r0, 1 | r3 = r0 + 1;
0x000383da mov r4, r0 | r4 = r0;
| if (r3 == r0) {
0x000383dc beq 0x38410 | goto label_76;
| }
| label_24:
0x000383de ldr r3, [r6] | r3 = *(r6);
0x000383e0 cmp r3, 3 |
0x000383e2 bgt 0x383fe |
| while (1) {
| label_23:
0x000383e4 ldr r2, [pc, 0x80] |
0x000383e6 ldr r3, [pc, 0x74] | r3 = *(0x3845e);
0x000383e8 add r2, pc | r2 = 0x70854;
0x000383ea ldr r3, [r2, r3] | r3 = *(0x70854);
0x000383ec ldr r2, [r3] | r2 = *(0x70854);
0x000383ee ldr r3, [sp, 0x94] | r3 = *(arg_94h);
0x000383f0 eors r2, r3 | r2 ^= r3;
0x000383f2 mov.w r3, 0 | r3 = 0;
0x000383f4 lsls r0, r0, 0xc | r0 <<= 0xc;
| if (r0 != r0) {
0x000383f6 bne 0x38448 | goto label_77;
| }
0x000383f8 mov r0, r4 | r0 = r4;
0x000383fa add sp, 0x9c |
0x000383fc pop {r4, r5, r6, r7, pc} |
0x000383fe ldr r2, [pc, 0x6c] |
0x00038400 mov r3, r4 | r3 = r4;
0x00038402 ldr r1, [pc, 0x6c] |
0x00038404 movs r0, 4 | r0 = 4;
0x00038406 add r2, pc | r2 = 0x70878;
0x00038408 add r1, pc | r1 = 0x7087e;
0x0003840a bl 0x30d1c | zbx_zabbix_log ();
0x0003840e b 0x383e4 |
| }
| label_76:
0x00038410 ldr r3, [r6] | r3 = *(r6);
0x00038412 cmp r3, 3 |
| if (r3 <= 3) {
0x00038414 ble 0x383e4 | goto label_23;
| }
0x00038416 blx 0xe3d4 | r0 = fcn_0000e3d4 ();
0x0003841a ldr r5, [r0] | r5 = *(r0);
0x0003841c mov r0, r5 | r0 = r5;
0x0003841e bl 0x31154 | strerror_from_system ();
0x00038422 ldr r2, [pc, 0x50] |
0x00038424 mov r3, r4 | r3 = r4;
0x00038426 ldr r1, [pc, 0x50] |
0x00038428 strd r5, r0, [sp] | __asm ("strd r5, r0, [sp]");
0x0003842c movs r0, 4 | r0 = 4;
0x0003842e add r2, pc | r2 = 0x708a8;
0x00038430 add r1, pc | r1 = 0x708ae;
0x00038432 bl 0x30d1c | zbx_zabbix_log ();
0x00038436 b 0x383de | goto label_24;
| label_77:
0x00038448 blx 0xe158 | fcn_0000e158 ();
0x0003844a cdp p3, 8, c15, c6, c15, 5 | __asm ("cdp p3, 8, c15, c6, c15, 5");
0x0003844e strh r0, [r0] | *(r0) = r0;
0x00038450 movs r0, r0 |
0x00038452 movs r0, r0 |
0x00038454 strh r0, [r4, 0x34] | *((r4 + 0x34)) = r0;
0x00038456 movs r1, r0 | r1 = r0;
0x00038458 subs r0, 0x72 | r0 -= 0x72;
0x0003845a movs r2, r0 | r2 = r0;
0x0003845c lsls r4, r2, 0xe | r4 = r2 << 0xe;
0x0003845e movs r0, r0 |
0x00038460 subs r0, 0x68 | r0 -= 0x68;
0x00038462 movs r2, r0 | r2 = r0;
0x00038464 lsls r4, r7, 0xe | r4 = r7 << 0xe;
0x00038466 movs r0, r0 |
0x00038468 adds r7, 0xf0 | r7 += 0xf0;
0x0003846a movs r2, r0 | r2 = r0;
| if (r2 >= r0) {
0x0003846c bge 0x384ec | void (*0x384ec)() ();
| }
0x0003846e movs r1, r0 | r1 = r0;
0x00038470 str r0, [r3, 4] | *((r3 + 4)) = r0;
0x00038472 movs r1, r0 | r1 = r0;
| if (r1 >= r0) {
0x00038474 bge 0x384a4 | void (*0x384a4)() ();
| }
0x00038476 movs r1, r0 | r1 = r0;
| if (r1 > r0) {
0x00038478 bhi 0x383b4 | goto label_25;
| }
0x0003847a movs r1, r0 | r1 = r0;
| if (r1 >= r0) {
0x0003847c bge 0x3848c | void (*0x3848c)() ();
| }
0x0003847e movs r1, r0 | r1 = r0;
0x00038480 ldrsb r4, [r0, r4] | r4 = *((r0 + r4));
0x00038482 movs r1, r0 | r1 = r0;
| }
; assembly | /* r2dec pseudo code output */
| /* /logs/firmware/patool_extraction/rootfs.img_unblob_extracted/rootfs.img_extract/0-80367616.squashfs_v4_le_extract/usr/sbin/zabbix_agentd @ 0x2bce4 */
| #include <stdint.h>
|
; (fcn) sym.NET_DNS_RECORD () | void NET_DNS_RECORD (int16_t arg1, int16_t arg2) {
| r0 = arg1;
| r1 = arg2;
0x0002bce4 push {r3, r4, r5, lr} |
0x0002bce6 mov r4, r0 | r4 = r0;
0x0002bce8 ldr r3, [r0, 4] | r3 = *((r0 + 4));
0x0002bcea mov r5, r1 | r5 = r1;
0x0002bcec cmp r3, 5 |
| if (r3 > 5) {
0x0002bcee ble 0x2bd10 |
0x0002bcf0 ldr r3, [r0, 8] | r3 = *((r0 + 8));
0x0002bcf2 ldr r0, [r3, 0x14] | r0 = *((r3 + 0x14));
| if (r0 == 0) {
0x0002bcf4 cbz r0, 0x2bd10 | goto label_0;
| }
0x0002bcf6 ldr r1, [pc, 0x28] |
0x0002bcf8 add r1, pc | r1 = 0x57a1e;
0x0002bcfa blx 0xe3b0 | r0 = fcn_0000e3b0 ();
| if (r0 != 0) {
0x0002bcfe cbnz r0, 0x2bd10 | goto label_0;
| }
0x0002bd00 ldr r0, [pc, 0x20] |
0x0002bd02 mov r2, r5 | r2 = r5;
0x0002bd04 mov r1, r4 | r1 = r4;
0x0002bd06 pop.w {r3, r4, r5, lr} |
0x0002bd0a add r0, pc | r0 = 0x57a32;
0x0002bd0c b.w 0x1d378 | void (*0x1d378)() ();
| }
| label_0:
0x0002bd10 mov r1, r5 | r1 = r5;
0x0002bd12 mov r0, r4 | r0 = r4;
0x0002bd14 movs r2, 0 | r2 = 0;
0x0002bd16 pop.w {r3, r4, r5, lr} |
0x0002bd1a b.w 0x2ab7c | return void (*0x2ab7c)() ();
| }
; assembly | /* r2dec pseudo code output */
| /* /logs/firmware/patool_extraction/rootfs.img_unblob_extracted/rootfs.img_extract/0-80367616.squashfs_v4_le_extract/usr/sbin/zabbix_agentd @ 0x20228 */
| #include <stdint.h>
|
; (fcn) sym.NET_IF_DISCOVERY () | void NET_IF_DISCOVERY (int16_t arg2) {
| int16_t var_4h;
| int16_t var_16h;
| int16_t var_18h;
| int16_t var_1ch;
| int16_t var_20h;
| int16_t var_24h;
| int16_t var_64h;
| int16_t var_1000h;
| int16_t var_1800h;
| r1 = arg2;
0x00020228 ldr r2, [pc, 0x124] |
0x0002022a ldr r3, [pc, 0x128] | r3 = *(0x20356);
0x0002022c push.w {r4, r5, r6, r7, r8, sb, lr} |
0x00020230 mov sb, r1 | sb = r1;
0x00020232 add r2, pc | r2 = 0x40586;
0x00020234 ldr r0, [pc, 0x120] |
0x00020236 sub.w sp, sp, 0x1820 |
0x0002023a ldr r1, [pc, 0x120] |
0x0002023c sub sp, 4 |
0x0002023e ldr r3, [r2, r3] |
0x00020240 add.w r4, sp, 0x1800 | r4 += var_1800h;
0x00020244 add r0, pc | r0 = 0x405a0;
0x00020246 adds r4, 0x1c | r4 += 0x1c;
0x00020248 add r1, pc | r1 = 0x405aa;
0x0002024a ldr r3, [r3] | r3 = *(0x40586);
0x0002024c str r3, [r4] | *(r4) = r3;
0x0002024e mov.w r3, 0 | r3 = 0;
0x00020252 blx 0xdf90 | r0 = fcn_0000df90 ();
0x00020256 mov r7, r0 | r7 = r0;
0x00020258 cmp r0, 0 |
| if (r0 == 0) {
0x0002025a beq 0x2031e | goto label_7;
| }
0x0002025c ldr.w r8, [pc, 0x100] | r8 = *(0x00020360);
0x00020260 add.w r5, sp, 0x1000 | r5 += var_1000h;
0x00020264 add r6, sp, 4 | r6 += var_4h;
0x00020266 adds r5, 0x1c | r5 += 0x1c;
0x00020268 mov.w r1, 0x1000 | r1 = 0x1000;
0x0002026c mov r0, r6 | r0 = r6;
0x0002026e add r8, pc | r8 += pc;
0x00020270 bl 0x3ab5c | zbx_json_initarray ();
| do {
0x00020274 mov r2, r7 | r2 = r7;
0x00020276 mov.w r1, 0x800 | r1 = 0x800;
0x0002027a mov r0, r5 | r0 = r5;
0x0002027c blx 0xdc98 | r0 = fcn_0000dc98 ();
0x00020280 mov r4, r0 | r4 = r0;
| if (r0 == 0) {
0x00020282 cbz r0, 0x202d0 | goto label_8;
| }
| label_0:
0x00020284 movs r1, 0x3a | r1 = 0x3a;
0x00020286 mov r0, r5 | r0 = r5;
0x00020288 blx 0xdcd4 | r0 = fcn_0000dcd4 ();
0x0002028c cmp r0, 0 |
0x0002028e beq 0x20274 |
| } while (r0 == 0);
0x00020290 movs r3, 0 | r3 = 0;
0x00020292 mov r4, r5 | r4 = r5;
0x00020294 strb r3, [r0] | *(r0) = r3;
0x00020296 ldrb r3, [r5] | r3 = *(r5);
0x00020298 cmp r3, 0x20 |
| if (r3 != 0x20) {
0x0002029a bne 0x202a4 | goto label_9;
| }
| do {
0x0002029c ldrb r3, [r4, 1]! | r3 = *((r4 += 1));
0x000202a0 cmp r3, 0x20 |
0x000202a2 beq 0x2029c |
| } while (r3 == 0x20);
| label_9:
0x000202a4 movs r1, 0 | r1 = 0;
0x000202a6 mov r0, r6 | r0 = r6;
0x000202a8 bl 0x3ac94 | zbx_json_addobject ();
0x000202ac mov r2, r4 | r2 = r4;
0x000202ae movs r3, 1 | r3 = 1;
0x000202b0 mov r1, r8 | r1 = r8;
0x000202b2 mov r0, r6 | r0 = r6;
0x000202b4 bl 0x3ac9c | zbx_json_addstring ();
0x000202b8 mov r0, r6 | r0 = r6;
0x000202ba bl 0x3af6c | zbx_json_close ();
0x000202be mov r2, r7 | r2 = r7;
0x000202c0 mov.w r1, 0x800 | r1 = 0x800;
0x000202c4 mov r0, r5 | r0 = r5;
0x000202c6 blx 0xdc98 | r0 = fcn_0000dc98 ();
0x000202ca mov r4, r0 | r4 = r0;
0x000202cc cmp r0, 0 |
| if (r0 != 0) {
0x000202ce bne 0x20284 | goto label_0;
| }
| label_8:
0x000202d0 mov r0, r7 | r0 = r7;
0x000202d2 blx 0xdc8c | fcn_0000dc8c ();
0x000202d6 mov r0, r6 | r0 = r6;
0x000202d8 bl 0x3af6c | zbx_json_close ();
0x000202dc ldr.w r3, [sb, 0x28] | r3 = *((sb + 0x28));
0x000202e0 ldr r0, [sp, 4] | r0 = var_4h;
0x000202e2 orr r3, r3, 4 | r3 |= 4;
0x000202e6 str.w r3, [sb, 0x28] | __asm ("str.w r3, [sb, 0x28]");
0x000202ea blx 0xe11c | fcn_0000e11c ();
0x000202ec invalid |
0x000202f0 movs r0, r3 | r0 = r3;
0x000202f2 mov r0, r6 | r0 = r6;
0x000202f4 bl 0x3ac14 | zbx_json_free ();
0x000202f8 mov r0, r4 | r0 = r4;
| do {
0x000202fa ldr r2, [pc, 0x68] |
0x000202fc add.w r1, sp, 0x1800 | r1 += var_1800h;
0x00020300 ldr r3, [pc, 0x50] | r3 = *(0x20354);
0x00020302 adds r1, 0x1c | r1 += 0x1c;
0x00020304 add r2, pc | r2 = 0x4066e;
0x00020306 ldr r3, [r2, r3] | r3 = *(0x4066e);
0x00020308 ldr r2, [r3] | r2 = *(0x4066e);
0x0002030a ldr r3, [r1] | r3 = *(r1);
0x0002030c eors r2, r3 | r2 ^= r3;
0x0002030e mov.w r3, 0 | r3 = 0;
| if (r2 != r3) {
0x00020312 bne 0x2034a | goto label_10;
| }
0x00020314 add.w sp, sp, 0x1820 |
0x00020318 add sp, 4 |
0x0002031a pop.w {r4, r5, r6, r7, r8, sb, pc} |
| label_7:
0x0002031e ldr.w r3, [sb, 0x28] | r3 = *((sb + 0x28));
0x00020322 orr r3, r3, 0x20 | r3 |= 0x20;
0x00020326 str.w r3, [sb, 0x28] | __asm ("str.w r3, [sb, 0x28]");
0x0002032a blx 0xe3d4 | r0 = fcn_0000e3d4 ();
0x0002032e ldr r0, [r0] | r0 = *(r0);
0x00020330 bl 0x30b74 | zbx_strerror ();
0x00020334 ldr r1, [pc, 0x30] |
0x00020336 mov r2, r0 | r2 = r0;
0x00020338 mov r0, r7 | r0 = r7;
0x0002033a add r1, pc | r1 = 0x406a6;
0x0002033c bl 0x44820 | r0 = zbx_dsprintf ()
0x00020340 mov r3, r0 | r3 = r0;
0x00020342 movs r0, 1 | r0 = 1;
0x00020344 str.w r3, [sb, 0x20] | __asm ("str.w r3, [sb, 0x20]");
0x00020348 b 0x202fa |
| } while (1);
| label_10:
0x0002034a blx 0xe158 | fcn_0000e158 ();
0x0002034e nop |
| if (r6 == 0) {
0x00020350 cbnz r6, 0x2037c |
0x00020352 movs r3, r0 | r3 = r0;
0x00020354 lsls r4, r2, 0xe | r4 = r2 << 0xe;
0x00020356 movs r0, r0 |
0x00020358 asrs r4, r5, 0xe | r4 = r5 >> 0xe;
0x0002035a movs r3, r0 | r3 = r0;
0x0002035c asrs r0, r1, 3 | r0 = r1 >> 3;
0x0002035e movs r3, r0 | r3 = r0;
0x00020360 asrs r6, r7, 0x18 | r6 = r7 >> 0x18;
0x00020362 movs r3, r0 | r3 = r0;
0x00020364 invalid |
| }
0x0002037c ldr r3, [pc, 0x1dc] |
0x0002037e add r4, pc | r4 += pc;
0x00020380 ldr r7, [r0, 4] | r7 = *((r0 + 4));
0x00020382 ldr r6, [pc, 0x1dc] |
0x00020384 ldr r3, [r4, r3] | r3 = *((r4 + r3));
0x00020386 mov r4, r1 | r4 = r1;
0x00020388 cmp r7, 1 |
0x0002038a add r6, pc | r6 = 0x408f0;
0x0002038c ldr r3, [r3] | r3 = *(0x2055c);
0x0002038e str r3, [sp, 0x64] | var_64h = r3;
0x00020390 mov.w r3, 0 | r3 = 0;
0x00020394 str r2, [sp, 0x18] | var_18h = r2;
| if (r7 > 1) {
0x00020396 bgt 0x203fc | goto label_11;
| }
| if (r7 == 1) {
0x00020398 bne 0x203c0 |
0x0002039a ldr r3, [r0, 8] | r3 = *((r0 + 8));
0x0002039c ldr r0, [r3] | r0 = *(r3);
| if (r0 == 0) {
0x0002039e cbz r0, 0x203c0 | goto label_12;
| }
0x000203a0 vmov.i64 d17, 0xffff | __asm ("vmov.i64 d17, 0xffff");
0x000203a4 movs r3, 2 | r3 = 2;
0x000203a6 vmov.i32 d16, 0 | __asm ("vmov.i32 d16, 0");
0x000203aa add.w r2, sp, 0x16 | r2 += var_16h;
0x000203ae mov.w r1, -1 | r1 = -1;
0x000203b2 vstr d17, [sp, 8] | __asm ("vstr d17, [sp, 8]");
0x000203b6 vstr d16, [sp] | __asm ("vstr d16, [sp]");
0x000203ba bl 0x419a8 | r0 = is_uint_n_range ();
| if (r0 == 0) {
0x000203be cbz r0, 0x20416 | goto label_13;
| }
| }
| label_12:
0x000203c0 ldr r0, [r4, 0x28] | r0 = *((r4 + 0x28));
0x000203c2 movs r2, 0 | r2 = 0;
0x000203c4 ldr r3, [pc, 0x19c] |
0x000203c6 mov.w r1, 0x284 | r1 = 0x284;
0x000203ca orr r0, r0, 0x20 | r0 |= 0x20;
0x000203ce str r0, [r4, 0x28] | *((r4 + 0x28)) = r0;
0x000203d0 add r3, pc | r3 = 0x40938;
0x000203d2 ldr r0, [pc, 0x194] |
0x000203d4 add r0, pc | r0 = 0x40942;
0x000203d6 bl 0x40ed8 | zbx_strdup2 ();
| do {
0x000203da movs r5, 1 | r5 = 1;
0x000203dc str r0, [r4, 0x20] | *((r4 + 0x20)) = r0;
| label_1:
0x000203de ldr r2, [pc, 0x18c] |
0x000203e0 ldr r3, [pc, 0x178] | r3 = *(0x2055c);
0x000203e2 add r2, pc | r2 = 0x40954;
0x000203e4 ldr r3, [r2, r3] | r3 = *(0x40954);
0x000203e6 ldr r2, [r3] | r2 = *(0x40954);
0x000203e8 ldr r3, [sp, 0x64] | r3 = var_64h;
0x000203ea eors r2, r3 | r2 ^= r3;
0x000203ec mov.w r3, 0 | r3 = 0;
| if (r2 != r3) {
0x000203f0 bne.w 0x2054c | goto label_14;
| }
0x000203f4 mov r0, r5 | r0 = r5;
0x000203f6 add sp, 0x6c |
0x000203f8 pop.w {r4, r5, r6, r7, r8, sb, pc} |
| label_11:
0x000203fc ldr r0, [r1, 0x28] | r0 = *((r1 + 0x28));
0x000203fe mov.w r1, 0x27c | r1 = 0x27c;
0x00020402 ldr r3, [pc, 0x16c] |
0x00020404 orr r0, r0, 0x20 | r0 |= 0x20;
0x00020408 str r0, [r4, 0x28] | *((r4 + 0x28)) = r0;
0x0002040a add r3, pc | r3 = 0x40980;
0x0002040c ldr r0, [pc, 0x164] |
0x0002040e add r0, pc | r0 = 0x40986;
0x00020410 bl 0x40ed8 | zbx_strdup2 ();
0x00020414 b 0x203da |
| } while (1);
| label_13:
0x00020416 ldrh.w r0, [sp, 0x16] | r0 = var_16h;
0x0002041a add r1, sp, 0x20 | r1 += var_20h;
0x0002041c bl 0x1f914 | r0 = fcn_0001f914 (r0, r1, r2, r3, r4, r5);
0x00020420 mov r5, r0 | r5 = r0;
| if (r0 != 0) {
0x00020422 cbnz r0, 0x20436 | goto label_15;
| }
0x00020424 ldr r6, [sp, 0x20] | r6 = var_20h;
0x00020426 asrs r7, r6, 0x1f | r7 = r6 >> 0x1f;
| do {
| label_3:
0x00020428 ldr r3, [r4, 0x28] | r3 = *((r4 + 0x28));
0x0002042a strd r6, r7, [r4, 8] | __asm ("strd r6, r7, [r4, 8]");
0x0002042e orr r3, r3, 1 | r3 |= 1;
0x00020432 str r3, [r4, 0x28] | *((r4 + 0x28)) = r3;
0x00020434 b 0x203de | goto label_1;
| label_15:
0x00020436 ldr r3, [pc, 0x140] |
0x00020438 add r3, pc |
0x0002043a ldr r3, [r3] | r3 = *(0x409b6);
0x0002043c subs r3, 1 | r3--;
0x0002043e cmp r3, 7 |
| if (r3 > 7) {
0x00020440 bhi.w 0x20550 | goto label_16;
| }
| /* switch table (8 cases) at 0x20448 */
0x00020444 tbb [pc, r3] | __asm ("tbb [0x0002044c]");
0x00020450 ldr r2, [pc, 0x128] |
0x00020452 add r2, pc | r2 = 0x409d2;
| label_2:
0x00020454 ldr r3, [pc, 0x128] | r3 = *(0x20580);
0x00020456 ldr r5, [r6, r3] | r5 = *((r6 + r3));
0x00020458 ldr r3, [r5] | r3 = *(r5);
0x0002045a cmp r3, 3 |
| if (r3 > 3) {
0x0002045c bgt 0x20508 | goto label_17;
| }
| label_5:
0x0002045e ldr r0, [pc, 0x124] |
0x00020460 mov.w r3, 0x10000 | r3 = 0x10000;
0x00020464 movs r2, 0 | r2 = 0;
0x00020466 movw r1, 0x2b3 | r1 = 0x2b3;
0x0002046a add.w sb, sp, 0x1c | sb += var_1ch;
0x0002046e add r6, sp, 0x18 | r6 += var_18h;
0x00020470 add r0, pc | r0 = 0x409fa;
0x00020472 bl 0x40dd8 | zbx_malloc2 ();
0x00020476 str r0, [sp, 0x18] | var_18h = r0;
0x00020478 mov r2, sb | r2 = sb;
0x0002047a ldr r0, [pc, 0x10c] |
0x0002047c mov r1, r6 | r1 = r6;
0x0002047e add r0, pc | r0 = 0x40a0c;
0x00020480 bl 0x1eeec | r0 = fcn_0001eeec (r0, r1);
0x00020484 cmp r0, 0 |
| if (r0 <= 0) {
0x00020486 ble 0x204e2 | goto label_18;
| }
0x00020488 ldr r2, [pc, 0x100] |
0x0002048a add r5, sp, 0x24 | r5 += var_24h;
0x0002048c ldrh.w r3, [sp, 0x16] | r3 = var_16h;
0x00020490 movs r1, 0x40 | r1 = 0x40;
0x00020492 mov r0, r5 | r0 = r5;
0x00020494 add r2, pc | r2 = 0x40a24;
0x00020496 bl 0x43f38 | zbx_snprintf ();
0x0002049a ldr.w r8, [sp, 0x18] | r8 = var_18h;
0x0002049e mov r1, r5 | r1 = r5;
0x000204a0 mov r0, r8 | r0 = r8;
0x000204a2 blx 0xe090 | r0 = res_ninit ();
0x000204a6 mov r5, r0 | r5 = r0;
| if (r0 == 0) {
0x000204a8 cbz r0, 0x204e4 | goto label_19;
| }
0x000204aa movs r6, 1 | r6 = 1;
0x000204ac movs r7, 0 | r7 = 0;
| label_6:
0x000204ae movs r5, 0 | r5 = 0;
| label_4:
0x000204b0 mov r0, r8 | r0 = r8;
0x000204b2 blx 0xde30 | fcn_0000de30 ();
0x000204b6 b 0x20428 |
| } while (1);
0x000204b8 ldr r2, [pc, 0xd4] |
0x000204ba add r2, pc | r2 = 0x40a4e;
0x000204bc b 0x20454 | goto label_2;
0x000204be ldr r2, [pc, 0xd4] |
0x000204c0 add r2, pc | r2 = 0x40a5a;
0x000204c2 b 0x20454 | goto label_2;
0x000204c4 ldr r2, [pc, 0xd0] |
0x000204c6 add r2, pc | r2 = 0x40a62;
0x000204c8 b 0x20454 | goto label_2;
0x000204ca ldr r2, [pc, 0xd0] |
0x000204cc add r2, pc | r2 = 0x40a6e;
0x000204ce b 0x20454 | goto label_2;
0x000204d0 ldr r2, [pc, 0xcc] |
0x000204d2 add r2, pc | r2 = 0x40a76;
0x000204d4 b 0x20454 | goto label_2;
0x000204d6 ldr r2, [pc, 0xcc] |
0x000204d8 add r2, pc | r2 = 0x40a82;
0x000204da b 0x20454 | goto label_2;
0x000204dc ldr r2, [pc, 0xc8] |
0x000204de add r2, pc | r2 = 0x40a8a;
0x000204e0 b 0x20454 | goto label_2;
| label_18:
0x000204e2 mov r5, r7 | r5 = r7;
| label_19:
0x000204e4 ldr r0, [pc, 0xc4] |
0x000204e6 mov r2, sb | r2 = sb;
0x000204e8 mov r1, r6 | r1 = r6;
0x000204ea add r0, pc | r0 = 0x40a9a;
0x000204ec bl 0x1eeec | r0 = fcn_0001eeec (r0, r1);
0x000204f0 cmp r0, 0 |
| if (r0 > 0) {
0x000204f2 bgt 0x20524 | goto label_20;
| }
0x000204f4 ldr.w r8, [sp, 0x18] | r8 = var_18h;
0x000204f8 mov r6, r8 | r6 = r8;
0x000204fa mov r7, r8 | r7 = r8;
0x000204fc cmp.w r8, 0 |
| if (r8 == 0) {
0x00020500 beq 0x20428 | goto label_3;
| }
0x00020502 movs r6, 0 | r6 = 0;
0x00020504 mov r7, r6 | r7 = r6;
0x00020506 b 0x204b0 | goto label_4;
| label_17:
0x00020508 ldr r1, [pc, 0xa4] |
0x0002050a movs r0, 4 | r0 = 4;
0x0002050c add r1, pc | r1 = 0x40ac0;
0x0002050e bl 0x30d1c | zbx_zabbix_log ();
0x00020512 ldr r3, [r5] | r3 = *(r5);
0x00020514 cmp r3, 3 |
| if (r3 <= 3) {
0x00020516 ble 0x2045e | goto label_5;
| }
0x00020518 ldr r1, [pc, 0x98] |
0x0002051a movs r0, 4 | r0 = 4;
0x0002051c add r1, pc | r1 = 0x40ad4;
0x0002051e bl 0x30d1c | zbx_zabbix_log ();
0x00020522 b 0x2045e | goto label_5;
| label_20:
0x00020524 ldr r2, [pc, 0x90] |
0x00020526 add r5, sp, 0x24 | r5 += var_24h;
0x00020528 ldrh.w r3, [sp, 0x16] | r3 = var_16h;
0x0002052c movs r1, 0x40 | r1 = 0x40;
0x0002052e mov r0, r5 | r0 = r5;
0x00020530 movs r7, 0 | r7 = 0;
0x00020532 add r2, pc | r2 = 0x40aee;
0x00020534 bl 0x43f38 | zbx_snprintf ();
0x00020538 ldr.w r8, [sp, 0x18] | r8 = var_18h;
0x0002053c mov r1, r5 | r1 = r5;
0x0002053e mov r0, r8 | r0 = r8;
0x00020540 blx 0xe090 | r0 = res_ninit ();
0x00020544 subs r6, r0, r7 | r6 = r0 - r7;
0x00020546 it ne |
| if (r6 == r0) {
0x00020548 movne r6, 1 | r6 = 1;
| }
0x0002054a b 0x204ae | goto label_6;
| label_14:
0x0002054c blx 0xe158 | fcn_0000e158 ();
| label_16:
0x00020550 ldr r2, [pc, 0x68] |
0x00020552 add r2, pc | r2 = 0x40b12;
0x00020554 b 0x20454 | goto label_2;
| }
; assembly | /* r2dec pseudo code output */
| /* /logs/firmware/patool_extraction/rootfs.img_unblob_extracted/rootfs.img_extract/0-80367616.squashfs_v4_le_extract/usr/sbin/zabbix_agentd @ 0x23030 */
| #include <stdint.h>
|
; (fcn) sym.PROC_CPU_UTIL () | void PROC_CPU_UTIL (int16_t arg_8ch, int16_t arg_280h, int16_t arg_360h, int16_t arg_368h, int16_t arg_10a0h, int16_t arg_18a0h, int16_t arg_2080h, int16_t arg_2880h, int16_t arg1, int16_t arg2) {
| int16_t var_85ch;
| int16_t var_858h;
| int16_t var_854h;
| int16_t var_850h;
| int16_t var_84ch;
| int16_t var_838h;
| int16_t var_81ch;
| int16_t var_0h;
| int32_t var_8h;
| int32_t var_8h_2;
| int16_t var_10h;
| int16_t var_14h;
| int16_t var_18h;
| int16_t var_1ch;
| int16_t var_20h;
| int16_t var_24h;
| int16_t var_28h;
| int16_t var_2ch;
| int16_t var_30h;
| int16_t var_34h;
| int16_t var_38h;
| int16_t var_3ch;
| int16_t var_40h;
| int16_t var_44h;
| r0 = arg1;
| r1 = arg2;
0x00023030 push.w {r4, r5, r6, r7, r8, sb, sl, fp, lr} |
0x00023034 movs r2, 0 | r2 = 0;
0x00023036 ldr r4, [pc, 0x2b4] |
0x00023038 ldr r3, [pc, 0x2b4] | r3 = *(0x232f0);
0x0002303a ldr r7, [r0, 4] | r7 = *((r0 + 4));
0x0002303c add r4, pc | r4 = 0x4632e;
0x0002303e vpush {d8} | __asm ("vpush {d8}");
0x00023042 sub sp, 0x4c |
0x00023044 ldr r3, [r4, r3] |
0x00023046 ldr.w sb, [pc, 0x2ac] | sb = *(0x000232f4);
0x0002304a cmp r7, 5 |
0x0002304c ldr r3, [r3] | r3 = *(0x4632e);
0x0002304e str r3, [sp, 0x44] | var_44h = r3;
0x00023050 mov.w r3, 0 | r3 = 0;
0x00023054 str r2, [sp, 0x24] | var_24h = r2;
0x00023056 add sb, pc | sb += pc;
0x00023058 str r1, [sp, 0x1c] | var_1ch = r1;
| if (r7 > 5) {
0x0002305a bgt.w 0x2322e | goto label_66;
| }
0x0002305e cmp r7, 0 |
| if (r7 > 0) {
0x00023060 ble 0x2311c |
0x00023062 ldr.w sl, [r0, 8] | sl = *((r0 + 8));
0x00023066 ldr.w r6, [sl] | r6 = *(sl);
| if (r6 != 0) {
0x0002306a cbz r6, 0x23074 |
0x0002306c ldrb r3, [r6] | r3 = *(r6);
0x0002306e cmp r3, 0 |
0x00023070 it eq |
| if (r3 == 0) {
0x00023072 moveq r6, 0 | r6 = 0;
| goto label_67;
| }
| }
| label_67:
0x00023074 cmp r7, 1 |
| if (r7 == 1) {
0x00023076 beq.w 0x232be | goto label_68;
| }
0x0002307a ldr.w r5, [sl, 4] | r5 = *((sl + 4));
| if (r5 != 0) {
0x0002307e cbz r5, 0x23088 |
0x00023080 ldrb r3, [r5] | r3 = *(r5);
0x00023082 cmp r3, 0 |
0x00023084 it eq |
| if (r3 == 0) {
0x00023086 moveq r5, 0 | r5 = 0;
| goto label_69;
| }
| }
| label_69:
0x00023088 cmp r7, 3 |
| if (r7 <= 3) {
0x0002308a ble.w 0x231b8 | goto label_70;
| }
0x0002308e ldr.w r4, [sl, 0xc] | r4 = *((sl + 0xc));
| if (r4 != 0) {
0x00023092 cbz r4, 0x2309c |
0x00023094 ldrb r3, [r4] | r3 = *(r4);
0x00023096 cmp r3, 0 |
0x00023098 it eq |
| if (r3 == 0) {
0x0002309a moveq r4, 0 | r4 = 0;
| goto label_71;
| }
| }
| label_71:
0x0002309c ldr.w r8, [sl, 8] | r8 = *((sl + 8));
0x000230a0 cmp.w r8, 0 |
| if (r8 != 0) {
0x000230a4 beq 0x230b0 |
0x000230a6 ldrb.w r3, [r8] | r3 = *(r8);
0x000230aa cmp r3, 0 |
| if (r3 != 0) {
0x000230ac bne.w 0x2324c | goto label_72;
| }
| }
| label_2:
0x000230b0 mov.w r8, 3 | r8 = 3;
| label_3:
0x000230b4 cmp r7, 5 |
| if (r7 != 5) {
0x000230b6 bne.w 0x231e2 | goto label_73;
| }
0x000230ba ldr.w r7, [sl, 0x10] | r7 = *((sl + 0x10));
0x000230be cmp r7, 0 |
| if (r7 == 0) {
0x000230c0 beq.w 0x231e2 | goto label_73;
| }
0x000230c4 ldrb r3, [r7] | r3 = *(r7);
0x000230c6 cmp r3, 0 |
| if (r3 == 0) {
0x000230c8 beq.w 0x231e2 | goto label_73;
| }
0x000230cc ldr r1, [pc, 0x228] |
0x000230ce mov r0, r7 | r0 = r7;
0x000230d0 add r1, pc | r1 = 0x463cc;
0x000230d2 blx 0xe3b0 | r0 = fcn_0000e3b0 ();
0x000230d6 cmp r0, 0 |
| if (r0 == 0) {
0x000230d8 beq.w 0x231e2 | goto label_73;
| }
0x000230dc ldr r1, [pc, 0x21c] |
0x000230de mov r0, r7 | r0 = r7;
0x000230e0 add r1, pc | r1 = 0x463e0;
0x000230e2 blx 0xe3b0 | r0 = fcn_0000e3b0 ();
0x000230e6 cmp r0, 0 |
| if (r0 == 0) {
0x000230e8 beq.w 0x232ca | goto label_74;
| }
0x000230ec ldr r1, [pc, 0x210] |
0x000230ee mov r0, r7 | r0 = r7;
0x000230f0 mov.w r7, 0x384 | r7 = 0x384;
0x000230f4 add r1, pc | r1 = 0x463f8;
0x000230f6 blx 0xe3b0 | r0 = fcn_0000e3b0 ();
| if (r0 == 0) {
0x000230fa cbz r0, 0x23128 | goto label_6;
| }
0x000230fc ldr r4, [sp, 0x1c] | r4 = var_1ch;
0x000230fe movs r2, 0 | r2 = 0;
0x00023100 ldr r3, [pc, 0x200] |
0x00023102 movw r1, 0x60a | r1 = 0x60a;
0x00023106 ldr r0, [r4, 0x28] | r0 = *((r4 + 0x28));
0x00023108 add r3, pc | r3 = 0x46410;
0x0002310a orr r0, r0, 0x20 | r0 |= 0x20;
0x0002310e str r0, [r4, 0x28] | *((r4 + 0x28)) = r0;
0x00023110 ldr r0, [pc, 0x1f4] |
0x00023112 add r0, pc | r0 = 0x4641e;
0x00023114 bl 0x40ed8 | r0 = zbx_strdup2 ();
0x00023118 mov r3, r0 | r3 = r0;
0x0002311a b 0x2320a | goto label_4;
| }
0x0002311c mov r4, r2 | r4 = r2;
0x0002311e mov.w r8, 3 | r8 = 3;
0x00023122 mov r5, r2 | r5 = r2;
0x00023124 mov r6, r2 | r6 = r2;
0x00023126 movs r7, 0x3c | r7 = 0x3c;
| label_6:
0x00023128 bl 0x147a8 | r0 = zbx_procstat_collector_started ();
0x0002312c cmp r0, 0 |
| if (r0 != 0) {
0x0002312e bne 0x231ec | goto label_75;
| }
| label_1:
0x00023130 add r0, sp, 0x34 | r0 += var_34h;
0x00023132 vmov.i32 d8, 0 | __asm ("vmov.i32 d8, 0");
0x00023136 bl 0x3fee8 | zbx_timespec ();
0x0002313a ldr r3, [pc, 0x1d0] | r3 = *(0x2330e);
0x0002313c add.w sl, sp, 0x24 | sl += var_24h;
0x00023140 add.w fp, sp, 0x3c |
0x00023144 ldr.w r3, [sb, r3] | r3 = *((sb + r3));
0x00023148 add.w sb, sp, 0x28 | sb += var_28h;
0x0002314c ldr r2, [r3] | r2 = *(0x2330e);
0x0002314e ldr r3, [sp, 0x34] | r3 = var_34h;
0x00023150 add r3, r2 | r3 += r2;
0x00023152 str r3, [sp, 0x34] | var_34h = r3;
0x00023154 b 0x2315e |
| while (r2 != r3) {
| if (r0 < 0) {
0x00023156 blt 0x23198 | goto label_76;
| }
| label_0:
0x00023158 movs r0, 1 | r0 = 1;
0x0002315a blx 0xe1dc | fcn_0000e1dc ();
0x0002315e mov r2, r4 | r2 = r4;
0x00023160 mov r1, r5 | r1 = r5;
0x00023162 mov r0, r6 | r0 = r6;
0x00023164 strd sb, sl, [sp, 0x10] | __asm ("strd sb, sl, [var_14h]");
0x00023168 strd r7, r8, [sp, 8] | __asm ("strd r7, r8, [var_8h]");
0x0002316c vstr d8, [sp] | __asm ("vstr d8, [sp]");
0x00023170 bl 0x14908 | r0 = zbx_procstat_get_util ();
0x00023174 cmp r0, 0 |
| if (r0 == 0) {
0x00023176 beq.w 0x2329e | goto label_77;
| }
0x0002317a ldr r3, [sp, 0x24] | r3 = var_24h;
0x0002317c cmp r3, 0 |
| if (r3 != 0) {
0x0002317e bne.w 0x232b2 | goto label_78;
| }
0x00023182 mov r0, fp | r0 = fp;
0x00023184 bl 0x3fee8 | zbx_timespec ();
0x00023188 ldr r2, [sp, 0x34] | r2 = var_34h;
0x0002318a ldr r3, [sp, 0x3c] | r3 = var_3ch;
0x0002318c cmp r2, r3 |
0x0002318e bne 0x23156 |
| }
0x00023190 ldr r2, [sp, 0x38] | r2 = var_38h;
0x00023192 ldr r3, [sp, 0x40] | r3 = var_40h;
0x00023194 cmp r2, r3 |
| if (r2 >= r3) {
0x00023196 bge 0x23158 | goto label_0;
| }
| label_76:
0x00023198 ldr r4, [sp, 0x1c] | r4 = var_1ch;
0x0002319a movs r2, 0 | r2 = 0;
0x0002319c ldr r3, [pc, 0x170] |
0x0002319e movw r1, 0x626 | r1 = 0x626;
0x000231a2 ldr r0, [r4, 0x28] | r0 = *((r4 + 0x28));
0x000231a4 add r3, pc | r3 = 0x464b8;
0x000231a6 orr r0, r0, 0x20 | r0 |= 0x20;
0x000231aa str r0, [r4, 0x28] | *((r4 + 0x28)) = r0;
0x000231ac ldr r0, [pc, 0x164] |
0x000231ae add r0, pc | r0 = 0x464c6;
0x000231b0 bl 0x40ed8 | r0 = zbx_strdup2 ();
0x000231b4 mov r3, r0 | r3 = r0;
0x000231b6 b 0x2320a | goto label_4;
| if (r2 != 0) {
| label_70:
0x000231b8 bne.w 0x232d6 | goto label_79;
| }
0x000231bc ldr.w r4, [sl, 8] | r4 = *((sl + 8));
0x000231c0 cmp r4, 0 |
| if (r4 == 0) {
0x000231c2 beq.w 0x232e0 | goto label_80;
| }
0x000231c6 ldrb r3, [r4] | r3 = *(r4);
| if (r3 != 0) {
0x000231c8 cbz r3, 0x231de |
0x000231ca ldr r1, [pc, 0x14c] |
0x000231cc mov r0, r4 | r0 = r4;
0x000231ce mov r8, r4 | r8 = r4;
0x000231d0 movs r4, 0 | r4 = 0;
0x000231d2 add r1, pc | r1 = 0x464f0;
0x000231d4 blx 0xe3b0 | r0 = fcn_0000e3b0 ();
0x000231d8 mov r3, r0 | r3 = r0;
0x000231da cmp r0, 0 |
| if (r0 != 0) {
0x000231dc bne 0x2325c | goto label_81;
| }
| }
0x000231de mov r8, r7 | r8 = r7;
0x000231e0 mov r4, r3 | r4 = r3;
| label_73:
0x000231e2 movs r7, 0x3c | r7 = 0x3c;
0x000231e4 bl 0x147a8 | r0 = zbx_procstat_collector_started ();
0x000231e8 cmp r0, 0 |
| if (r0 == 0) {
0x000231ea beq 0x23130 | goto label_1;
| }
| label_75:
0x000231ec ldr r4, [sp, 0x1c] | r4 = var_1ch;
0x000231ee movs r2, 0 | r2 = 0;
0x000231f0 ldr r3, [pc, 0x128] |
0x000231f2 mov.w r1, 0x610 | r1 = 0x610;
0x000231f6 ldr r0, [r4, 0x28] | r0 = *((r4 + 0x28));
0x000231f8 add r3, pc | r3 = 0x46518;
0x000231fa orr r0, r0, 0x20 | r0 |= 0x20;
0x000231fe str r0, [r4, 0x28] | *((r4 + 0x28)) = r0;
0x00023200 ldr r0, [pc, 0x11c] |
0x00023202 add r0, pc | r0 = 0x46526;
0x00023204 bl 0x40ed8 | r0 = zbx_strdup2 ();
0x00023208 mov r3, r0 | r3 = r0;
| do {
| label_4:
0x0002320a ldr r2, [sp, 0x1c] | r2 = var_1ch;
0x0002320c movs r0, 1 | r0 = 1;
0x0002320e str r3, [r2, 0x20] | *((r2 + 0x20)) = r3;
| label_5:
0x00023210 ldr r2, [pc, 0x110] |
0x00023212 ldr r3, [pc, 0xdc] | r3 = *(0x232f2);
0x00023214 add r2, pc | r2 = 0x4653c;
0x00023216 ldr r3, [r2, r3] | r3 = *(0x4653c);
0x00023218 ldr r2, [r3] | r2 = *(0x4653c);
0x0002321a ldr r3, [sp, 0x44] | r3 = var_44h;
0x0002321c eors r2, r3 | r2 ^= r3;
0x0002321e mov.w r3, 0 | r3 = 0;
| if (r2 != r3) {
0x00023222 bne 0x232e6 | goto label_82;
| }
0x00023224 add sp, 0x4c |
0x00023226 vpop {d8} | __asm ("vpop {d8}");
0x0002322a pop.w {r4, r5, r6, r7, r8, sb, sl, fp, pc} |
| label_66:
0x0002322e ldr r0, [r1, 0x28] | r0 = *((r1 + 0x28));
0x00023230 mov r4, r1 | r4 = r1;
0x00023232 ldr r3, [pc, 0xf4] |
0x00023234 movw r1, 0x5d9 | r1 = 0x5d9;
0x00023238 orr r0, r0, 0x20 | r0 |= 0x20;
0x0002323c str r0, [r4, 0x28] | *((r4 + 0x28)) = r0;
0x0002323e add r3, pc | r3 = 0x4656c;
0x00023240 ldr r0, [pc, 0xe8] |
0x00023242 add r0, pc | r0 = 0x46572;
0x00023244 bl 0x40ed8 | r0 = zbx_strdup2 ();
0x00023248 mov r3, r0 | r3 = r0;
0x0002324a b 0x2320a |
| } while (1);
| label_72:
0x0002324c ldr r1, [pc, 0xe0] |
0x0002324e mov r0, r8 | r0 = r8;
0x00023250 add r1, pc | r1 = 0x46584;
0x00023252 blx 0xe3b0 | r0 = fcn_0000e3b0 ();
0x00023256 cmp r0, 0 |
| if (r0 == 0) {
0x00023258 beq.w 0x230b0 | goto label_2;
| }
| label_81:
0x0002325c ldr r1, [pc, 0xd4] |
0x0002325e mov r0, r8 | r0 = r8;
0x00023260 add r1, pc | r1 = 0x46598;
0x00023262 blx 0xe3b0 | r0 = fcn_0000e3b0 ();
0x00023266 cmp r0, 0 |
| if (r0 == 0) {
0x00023268 beq 0x232d0 | goto label_83;
| }
0x0002326a ldr r1, [pc, 0xcc] |
0x0002326c mov r0, r8 | r0 = r8;
0x0002326e mov.w r8, 2 | r8 = 2;
0x00023272 add r1, pc | r1 = 0x465b0;
0x00023274 blx 0xe3b0 | r0 = fcn_0000e3b0 ();
0x00023278 cmp r0, 0 |
| if (r0 == 0) {
0x0002327a beq.w 0x230b4 | goto label_3;
| }
0x0002327e ldr r4, [sp, 0x1c] | r4 = var_1ch;
0x00023280 movs r2, 0 | r2 = 0;
0x00023282 ldr r3, [pc, 0xb8] |
0x00023284 movw r1, 0x5f7 | r1 = 0x5f7;
0x00023288 ldr r0, [r4, 0x28] | r0 = *((r4 + 0x28));
0x0002328a add r3, pc | r3 = 0x465cc;
0x0002328c orr r0, r0, 0x20 | r0 |= 0x20;
0x00023290 str r0, [r4, 0x28] | *((r4 + 0x28)) = r0;
0x00023292 ldr r0, [pc, 0xac] |
0x00023294 add r0, pc | r0 = 0x465da;
0x00023296 bl 0x40ed8 | r0 = zbx_strdup2 ();
0x0002329a mov r3, r0 | r3 = r0;
0x0002329c b 0x2320a | goto label_4;
| label_77:
0x0002329e ldr r2, [sp, 0x1c] | r2 = var_1ch;
0x000232a0 ldrd r4, r5, [sp, 0x28] | __asm ("ldrd r4, r5, [var_2ch]");
0x000232a4 ldr r3, [r2, 0x28] | r3 = *((r2 + 0x28));
0x000232a6 strd r4, r5, [r2, 0x10] | __asm ("strd r4, r5, [r2, 0x10]");
0x000232aa orr r3, r3, 2 | r3 |= 2;
0x000232ae str r3, [r2, 0x28] | *((r2 + 0x28)) = r3;
0x000232b0 b 0x23210 | goto label_5;
| label_78:
0x000232b2 ldr r1, [sp, 0x1c] | r1 = var_1ch;
0x000232b4 ldr r2, [r1, 0x28] | r2 = *((r1 + 0x28));
0x000232b6 orr r2, r2, 0x20 | r2 |= 0x20;
0x000232ba str r2, [r1, 0x28] | *((r1 + 0x28)) = r2;
0x000232bc b 0x2320a | goto label_4;
| label_68:
0x000232be movs r4, 0 | r4 = 0;
0x000232c0 mov.w r8, 3 | r8 = 3;
0x000232c4 mov r5, r4 | r5 = r4;
0x000232c6 movs r7, 0x3c | r7 = 0x3c;
0x000232c8 b 0x23128 | goto label_6;
| label_74:
0x000232ca mov.w r7, 0x12c | r7 = 0x12c;
0x000232ce b 0x23128 | goto label_6;
| label_83:
0x000232d0 mov.w r8, 1 | r8 = 1;
0x000232d4 b 0x230b4 | goto label_3;
| label_79:
0x000232d6 mov.w r8, 3 | r8 = 3;
0x000232da movs r4, 0 | r4 = 0;
0x000232dc movs r7, 0x3c | r7 = 0x3c;
0x000232de b 0x23128 | goto label_6;
| label_80:
0x000232e0 mov r8, r7 | r8 = r7;
0x000232e2 movs r7, 0x3c | r7 = 0x3c;
0x000232e4 b 0x23128 | goto label_6;
| label_82:
0x000232e6 blx 0xe158 | fcn_0000e158 ();
0x000232ea nop |
0x000232ec ldrh r4, [r3, 0x1c] | r4 = *((r3 + 0x1c));
0x000232ee movs r3, r0 | r3 = r0;
0x000232f0 lsls r4, r2, 0xe | r4 = r2 << 0xe;
0x000232f2 movs r0, r0 |
0x000232f4 ldrh r2, [r0, 0x1c] | r2 = *((r0 + 0x1c));
0x000232f6 movs r3, r0 | r3 = r0;
0x000232f8 b 0x2365c | goto label_84;
| do {
| label_7:
0x00023490 ldr r0, [sp, 0x14] | r0 = var_14h;
0x00023492 blx 0xe28c | r0 = fcn_0000e28c ();
0x00023496 mov r6, r0 | r6 = r0;
0x00023498 cmp r0, 0 |
| if (r0 == 0) {
0x0002349a beq.w 0x237dc | goto label_85;
| }
| label_10:
0x0002349e ldr r3, [sp, 0x10] | r3 = var_10h;
| if (r3 != 0) {
0x000234a0 cbz r3, 0x234a8 |
0x000234a2 mov r0, r3 | r0 = r3;
0x000234a4 blx 0xdc8c | fcn_0000dc8c ();
| }
| if (r4 != 0) {
0x000234a8 cbz r4, 0x234b0 |
0x000234aa mov r0, r4 | r0 = r4;
0x000234ac blx 0xdc8c | fcn_0000dc8c ();
| }
0x000234b0 subw r4, fp, 0x858 | __asm ("subw r4, fp, 0x858");
0x000234b4 ldr r0, [r4] | r0 = *(r4);
| if (r0 != 0) {
0x000234b6 cbz r0, 0x234c0 |
0x000234b8 blx 0xde30 | fcn_0000de30 ();
0x000234bc movs r3, 0 | r3 = 0;
0x000234be str r3, [r4] | *(r4) = r3;
| }
0x000234c0 subw r4, fp, 0x85c | __asm ("subw r4, fp, 0x85c");
0x000234c4 ldr r0, [r4] | r0 = *(r4);
| if (r0 != 0) {
0x000234c6 cbz r0, 0x234d0 |
0x000234c8 blx 0xde30 | fcn_0000de30 ();
0x000234cc movs r3, 0 | r3 = 0;
0x000234ce str r3, [r4] | *(r4) = r3;
| }
0x000234d0 cmp.w sl, 0 |
| if (sl != 0) {
0x000234d4 beq 0x234dc |
0x000234d6 mov r0, sl | r0 = sl;
0x000234d8 blx 0xde30 | fcn_0000de30 ();
| }
| if (r5 != 0) {
0x000234dc cbz r5, 0x234e4 |
0x000234de mov r0, r5 | r0 = r5;
0x000234e0 blx 0xde30 | fcn_0000de30 ();
| }
0x000234e4 vmov.i64 d17, 0xffffffff | __asm ("vmov.i64 d17, 0xffffffff");
0x000234e8 adds r6, 0x13 | r6 += 0x13;
0x000234ea vmov.i32 d16, 0 | __asm ("vmov.i32 d16, 0");
0x000234ec movs r0, r2 | r0 = r2;
0x000234ee movs r3, 4 | r3 = 4;
0x000234f0 sub.w r2, sb, 0x14 | r2 = sb - 0x14;
0x000234f4 mov.w r1, -1 | r1 = -1;
0x000234f8 mov r0, r6 | r0 = r6;
0x000234fa vstr d17, [sp, 8] | __asm ("vstr d17, [sp, 8]");
0x000234fe vstr d16, [sp] | __asm ("vstr d16, [sp]");
0x00023502 bl 0x419a8 | is_uint_n_range ();
0x00023506 adds r0, 1 | r0++;
| if (r0 == 1) {
0x00023508 beq.w 0x23eb6 | goto label_86;
| }
0x0002350c ldr.w r4, [pc, 0xb10] | r4 = *(0x00024020);
0x00023510 add.w r3, sp, 0x10a0 | r3 += arg_10a0h;
0x00023514 ldr.w r2, [pc, 0xb0c] |
0x00023518 adds r3, 4 | r3 += 4;
0x0002351a mov r7, r3 | r7 = r3;
0x0002351c mov.w r1, 0x800 | r1 = 0x800;
0x00023520 str r3, [sp, 0x18] | var_18h = r3;
0x00023522 add r4, pc | r4 += pc;
0x00023524 add r2, pc | r2 = 0x4754c;
0x00023526 mov r3, r6 | r3 = r6;
0x00023528 mov r0, r7 | r0 = r7;
0x0002352a bl 0x43f38 | zbx_snprintf ();
0x0002352e mov r1, r4 | r1 = r4;
0x00023530 mov r0, r7 | r0 = r7;
0x00023532 blx 0xdf90 | r0 = fcn_0000df90 ();
0x00023536 mov r5, r0 | r5 = r0;
0x00023538 str r0, [sp, 0x10] | var_10h = r0;
0x0002353a cmp r0, 0 |
| if (r0 == 0) {
0x0002353c beq.w 0x24b18 | goto label_87;
| }
0x00023540 ldr.w r2, [pc, 0xae4] |
0x00023544 mov r3, r6 | r3 = r6;
0x00023546 mov.w r1, 0x800 | r1 = 0x800;
0x0002354a mov r0, r7 | r0 = r7;
0x0002354c add r2, pc | r2 = 0x47578;
0x0002354e bl 0x43f38 | zbx_snprintf ();
0x00023552 mov r1, r4 | r1 = r4;
0x00023554 mov r0, r7 | r0 = r7;
0x00023556 blx 0xdf90 | r0 = fcn_0000df90 ();
0x0002355a mov r4, r0 | r4 = r0;
0x0002355c cmp r0, 0 |
| if (r0 == 0) {
0x0002355e beq.w 0x24b24 | goto label_88;
| }
0x00023562 sub.w r2, sb, 0x10 | r2 = sb - 0x10;
0x00023566 sub.w r1, sb, 0x18 | r1 = sb - 0x18;
0x0002356a mov r0, r5 | r0 = r5;
0x0002356c bl 0x208bc | r0 = fcn_000208bc (r0, r1, r2);
0x00023570 mov r8, r0 | r8 = r0;
0x00023572 cmp r0, 0 |
| if (r0 != 0) {
0x00023574 bne.w 0x23eae | goto label_89;
| }
0x00023578 ldr.w r1, [pc, 0xab0] |
0x0002357c sub.w r3, sb, 0x1c | r3 = sb - 0x1c;
0x00023580 mov r2, r0 | r2 = r0;
0x00023582 str r3, [sp] | *(sp) = r3;
0x00023584 mov r3, r0 | r3 = r0;
0x00023586 mov r0, r4 | r0 = r4;
0x00023588 add r1, pc | r1 = 0x475b8;
0x0002358a bl 0x20e0c | fcn_00020e0c (r0, r1, r2, r3, r4, r5, r6);
0x0002358e subw r3, fp, 0x858 | __asm ("subw r3, fp, 0x858");
0x00023590 lsls r0, r3, 0xd | r0 = r3 << 0xd;
0x00023592 ldr r3, [r3] | r3 = *(r3);
0x00023594 str r3, [sp, 0x1c] | var_1ch = r3;
0x00023596 ldrb r3, [r3] | r3 = *(r3);
0x00023598 cmp r3, 0 |
| if (r3 != 0) {
0x0002359a bne.w 0x24458 | goto label_90;
| }
| label_45:
0x0002359e subw r3, fp, 0x85c | __asm ("subw r3, fp, 0x85c");
0x000235a2 ldr r0, [r3] | r0 = *(r3);
0x000235a4 cmp r0, 0 |
| if (r0 == 0) {
0x000235a6 beq.w 0x23eae | goto label_89;
| }
0x000235aa ldr r1, [sp, 0x30] | r1 = var_30h;
| if (r1 != 0) {
0x000235ac cbz r1, 0x235bc |
0x000235ae ldrb r3, [r1] | r3 = *(r1);
| if (r3 == 0) {
0x000235b0 cbz r3, 0x235bc | goto label_91;
| }
0x000235b2 blx 0xe3b0 | r0 = fcn_0000e3b0 ();
0x000235b6 cmp r0, 0 |
| if (r0 != 0) {
0x000235b8 bne.w 0x23eae | goto label_89;
| }
| }
| label_91:
0x000235bc sub.w r2, sb, 8 | r2 = sb - 8;
0x000235c0 movs r1, 0 | r1 = 0;
0x000235c2 mov r0, r4 | r0 = r4;
0x000235c4 bl 0x21040 | fcn_00021040 (r0, r1, r2, r3);
0x000235c8 ldr r3, [sp, 0x28] | r3 = var_28h;
0x000235ca mov r5, r0 | r5 = r0;
0x000235cc cmp r3, 0 |
| if (r3 == 0) {
0x000235ce beq.w 0x24526 | goto label_92;
| }
0x000235d2 cmp r0, 0 |
| if (r0 != 0) {
0x000235d4 bne.w 0x23eae | goto label_89;
| }
0x000235d8 ldrd sl, r8, [sb, -0x8] | __asm ("ldrd sl, r8, [sb, -0x8]");
0x000235dc ldr r1, [r3, 8] | r1 = *((r3 + 8));
0x000235de cmp r0, r8 |
0x000235e0 it eq |
| if (r0 == r8) {
0x000235e2 cmpeq r1, sl | __asm ("cmpeq r1, sl");
| }
0x000235e4 it ne |
| if (r0 == r8) {
0x000235e6 movne sl, r0 | sl = r0;
| }
0x000235e8 bne.w 0x23490 |
| } while (r0 != r8);
0x000235ec ldr r3, [sp, 0x3c] | r3 = var_3ch;
0x000235ee cmp r3, 0 |
| if (r3 == 0) {
0x000235f0 beq.w 0x23de0 | goto label_93;
| }
0x000235f4 ldr r3, [sp, 0x3c] | r3 = var_3ch;
0x000235f6 ldrb r3, [r3] | r3 = *(r3);
0x000235f8 cmp r3, 0 |
| if (r3 == 0) {
0x000235fa beq.w 0x23de0 | goto label_93;
| }
| label_51:
0x000235fe ldr r1, [sp, 0x3c] | r1 = var_3ch;
0x00023600 movs r2, 0 | r2 = 0;
0x00023602 ldr r0, [sp, 0x1c] | r0 = var_1ch;
0x00023604 bl 0x31a84 | r0 = zbx_regexp_match ();
0x00023608 cmp r0, 0 |
| if (r0 == 0) {
0x0002360a beq.w 0x23eae | goto label_89;
| }
| label_50:
0x0002360e ldr r3, [sp, 0x20] | r3 = var_20h;
0x00023610 cmp r3, 2 |
| if (r3 == 2) {
0x00023612 beq.w 0x23e1a | goto label_94;
| }
0x00023616 cmp r5, 0 |
| if (r5 == 0) {
0x00023618 beq.w 0x24ad0 | goto label_95;
| }
0x0002361c ldr.w r3, [pc, 0xa10] | r3 = *(0x00024030);
0x00023620 movs r2, 0 | r2 = 0;
0x00023622 ldr.w r0, [pc, 0xa10] |
0x00023626 movw r1, 0x791 | r1 = 0x791;
0x0002362a vmov.i8 d16, 0xff | __asm ("vmov.i8 d16, 0xff");
0x0002362e add r3, pc | r3 += pc;
0x00023630 add r0, pc | r0 = 0x4766a;
0x00023632 vstr d16, [sb, -8] | __asm ("vstr d16, [sb, -8]");
0x00023634 lsrs r2, r0, 0xc | r2 = r0 >> 0xc;
0x00023636 bl 0x40ed8 | r0 = zbx_strdup2 ();
0x0002363a mov sl, r0 | sl = r0;
| label_62:
0x0002363c mov r2, sb | r2 = sb;
0x0002363e movs r1, 1 | r1 = 1;
0x00023640 mov r0, r4 | r0 = r4;
0x00023642 bl 0x21040 | r0 = fcn_00021040 (r0, r1, r2, r3);
0x00023646 mov r5, r0 | r5 = r0;
0x00023648 cmp r0, 0 |
| if (r0 == 0) {
0x0002364a beq.w 0x24994 | goto label_96;
| }
| label_12:
0x0002364e ldr.w r3, [pc, 0x9e8] | r3 = *(0x2403a);
0x00023652 movs r2, 0 | r2 = 0;
0x00023654 ldr.w r0, [pc, 0x9e4] | r0 = *(0x0002403c);
0x00023658 movw r1, 0x79e | r1 = 0x79e;
| label_84:
0x0002365c vmov.i8 d16, 0xff | __asm ("vmov.i8 d16, 0xff");
0x00023660 add r3, pc | r3 += pc;
0x00023662 add r0, pc | r0 += pc;
0x00023664 vstr d16, [sb] | __asm ("vstr d16, [sb]");
0x00023668 bl 0x40ed8 | r0 = zbx_strdup2 ();
0x0002366c mov r5, r0 | r5 = r0;
| label_55:
0x0002366e ldr r3, [sp, 0x20] | r3 = var_20h;
0x00023670 cmp r3, 1 |
| if (r3 != 1) {
0x00023672 bne.w 0x23e1e | goto label_97;
| }
0x00023676 mov r3, r6 | r3 = r6;
0x00023678 ldr.w r2, [pc, 0x9c4] | r2 = *(0x00024040);
0x0002367c ldr r6, [sp, 0x18] | r6 = var_18h;
0x0002367e mov.w r1, 0x800 | r1 = 0x800;
0x00023682 add r2, pc | r2 += pc;
0x00023684 mov r0, r6 | r0 = r6;
0x00023686 bl 0x43f38 | zbx_snprintf ();
0x0002368a mov r0, r6 | r0 = r6;
0x0002368c blx 0xdbdc | fcn_0000dbdc ();
0x00023690 str r0, [sp, 0x1c] | var_1ch = r0;
0x00023692 cmp r0, 0 |
| if (r0 == 0) {
0x00023694 beq.w 0x23490 | goto label_7;
| }
0x00023698 vmov.i32 d9, 0 | __asm ("vmov.i32 d9, 0");
0x0002369c vmov.i64 d8, 0xffffffff | __asm ("vmov.i64 d8, 0xffffffff");
0x000236a0 str r4, [sp, 0x44] | var_44h = r4;
| do {
| label_8:
0x000236a2 ldr r0, [sp, 0x1c] | r0 = var_1ch;
0x000236a4 blx 0xe28c | r0 = fcn_0000e28c ();
0x000236a8 cmp r0, 0 |
| if (r0 == 0) {
0x000236aa beq.w 0x237c6 | goto label_98;
| }
| label_9:
0x000236ae add.w r4, r0, 0x13 | r4 = r0 + 0x13;
0x000236b2 ldr r2, [sp, 0x40] | r2 = var_40h;
0x000236b4 movs r3, 4 | r3 = 4;
0x000236b6 mov.w r1, -1 | r1 = -1;
0x000236ba mov r0, r4 | r0 = r4;
0x000236bc vstr d8, [sp, 8] | __asm ("vstr d8, [sp, 8]");
0x000236c0 vstr d9, [sp] | __asm ("vstr d9, [sp]");
0x000236c4 bl 0x419a8 | is_uint_n_range ();
0x000236c8 adds r0, 1 | r0++;
0x000236ca beq 0x236a2 |
| } while (r0 == 1);
0x000236cc ldr.w r2, [pc, 0x974] | r2 = *(0x00024044);
0x000236d0 add.w r7, sp, 0x18a0 | r7 += arg_18a0h;
0x000236d4 adds r7, 4 | r7 += 4;
0x000236d6 ldr r3, [sp, 0x18] | r3 = var_18h;
0x000236d8 mov.w r1, 0x800 | r1 = 0x800;
0x000236dc str r4, [sp] | *(sp) = r4;
0x000236de add r2, pc | r2 += pc;
0x000236e0 mov r0, r7 | r0 = r7;
0x000236e2 bl 0x43f38 | zbx_snprintf ();
0x000236e6 ldr.w r8, [pc, 0x960] | r8 = *(0x00024048);
0x000236ea add.w r6, sp, 0x2080 | r6 += arg_2080h;
0x000236ee ldr.w r2, [pc, 0x95c] | r2 = *(0x0002404c);
0x000236f2 adds r6, 0x24 | r6 += 0x24;
0x000236f4 mov r3, r7 | r3 = r7;
0x000236f6 mov.w r1, 0x800 | r1 = 0x800;
0x000236fa add r8, pc | r8 += pc;
0x000236fc mov r0, r6 | r0 = r6;
0x000236fe add r2, pc | r2 += pc;
0x00023700 bl 0x43f38 | zbx_snprintf ();
0x00023704 mov r1, r8 | r1 = r8;
0x00023706 mov r0, r6 | r0 = r6;
0x00023708 blx 0xdf90 | r0 = fcn_0000df90 ();
0x0002370c mov r4, r0 | r4 = r0;
0x0002370e cmp r0, 0 |
| if (r0 == 0) {
0x00023710 beq 0x236a2 | goto label_8;
| }
0x00023712 ldr.w r2, [pc, 0x93c] | r2 = *(0x00024050);
0x00023716 mov r3, r7 | r3 = r7;
0x00023718 mov.w r1, 0x800 | r1 = 0x800;
0x0002371c mov r0, r6 | r0 = r6;
0x0002371e add r2, pc | r2 += pc;
0x00023720 bl 0x43f38 | zbx_snprintf ();
0x00023724 mov r1, r8 | r1 = r8;
0x00023726 mov r0, r6 | r0 = r6;
0x00023728 blx 0xdf90 | r0 = fcn_0000df90 ();
0x0002372c mov r7, r0 | r7 = r0;
0x0002372e cmp r0, 0 |
| if (r0 == 0) {
0x00023730 beq.w 0x24b50 | goto label_99;
| }
0x00023734 mov r1, r0 | r1 = r0;
0x00023736 movs r2, 1 | r2 = 1;
0x00023738 mov r0, r4 | r0 = r4;
0x0002373a bl 0x21718 | r0 = fcn_00021718 (r0, r1, r2, r3, r4, r5, r6);
0x0002373e mov r6, r0 | r6 = r0;
0x00023740 mov r0, r4 | r0 = r4;
0x00023742 blx 0xdc8c | fcn_0000dc8c ();
0x00023746 mov r0, r7 | r0 = r7;
0x00023748 blx 0xdc8c | fcn_0000dc8c ();
0x0002374c cmp r6, 0 |
| if (r6 == 0) {
0x0002374e beq 0x236a2 | goto label_8;
| }
0x00023750 subw r3, fp, 0x854 | __asm ("subw r3, fp, 0x854");
0x00023754 ldr.w r4, [pc, 0x8fc] | r4 = *(0x00024054);
0x00023758 ldr r3, [r3] | r3 = *(r3);
0x0002375a movs r7, 0 | r7 = 0;
0x0002375c mov r2, r7 | r2 = r7;
0x0002375e movw r1, 0x7ba | r1 = 0x7ba;
0x00023762 add r4, pc | r4 += pc;
0x00023764 str r7, [r6, 0x18] | *((r6 + 0x18)) = r7;
0x00023766 str r3, [r6] | *(r6) = r3;
0x00023768 subw r3, fp, 0x84c | __asm ("subw r3, fp, 0x84c");
0x0002376c ldr r3, [r3] | r3 = *(r3);
0x0002376e mov r0, r4 | r0 = r4;
0x00023770 str r3, [r6, 4] | *((r6 + 4)) = r3;
0x00023772 subw r3, fp, 0x85c | __asm ("subw r3, fp, 0x85c");
0x00023776 ldr r3, [r3] | r3 = *(r3);
0x00023778 bl 0x40ed8 | zbx_strdup2 ();
0x0002377c vldr d16, [sb, -8] | __asm ("vldr d16, [sb, -8]");
0x00023780 mov r3, sl | r3 = sl;
0x00023782 mov r2, r7 | r2 = r7;
0x00023784 movw r1, 0x7bd | r1 = 0x7bd;
0x00023788 str r0, [r6, 0x10] | *((r6 + 0x10)) = r0;
0x0002378a mov r0, r4 | r0 = r4;
0x0002378c vstr d16, [r6, 0x30] | __asm ("vstr d16, [r6, 0x30]");
0x00023790 vldr d16, [sb] | __asm ("vldr d16, [sb]");
0x00023794 vstr d16, [r6, 0x38] | __asm ("vstr d16, [r6, 0x38]");
0x00023798 bl 0x40ed8 | zbx_strdup2 ();
0x0002379c mov r2, r7 | r2 = r7;
0x0002379e movw r1, 0x7be | r1 = 0x7be;
0x000237a2 mov r3, r5 | r3 = r5;
0x000237a4 str r0, [r6, 0x28] | *((r6 + 0x28)) = r0;
0x000237a6 mov r0, r4 | r0 = r4;
0x000237a8 bl 0x40ed8 | zbx_strdup2 ();
0x000237ac ldr r3, [sp, 0x34] | r3 = var_34h;
0x000237ae mov r1, r6 | r1 = r6;
0x000237b0 str r0, [r6, 0x2c] | *((r6 + 0x2c)) = r0;
0x000237b2 sub.w r0, r3, 0x38 | r0 = r3 - 0x38;
0x000237b6 bl 0x21164 | zbx_vector_proc_data_ptr_append ();
0x000237ba ldr r0, [sp, 0x1c] | r0 = var_1ch;
0x000237bc blx 0xe28c | r0 = fcn_0000e28c ();
0x000237c0 cmp r0, 0 |
| if (r0 != 0) {
0x000237c2 bne.w 0x236ae | goto label_9;
| }
| label_98:
0x000237c6 ldr r0, [sp, 0x1c] | r0 = var_1ch;
0x000237c8 ldr r4, [sp, 0x44] | r4 = var_44h;
0x000237ca blx 0xe0d0 | fcn_0000e0d0 ();
0x000237ce ldr r0, [sp, 0x14] | r0 = var_14h;
0x000237d0 blx 0xe28c | r0 = fcn_0000e28c ();
0x000237d4 mov r6, r0 | r6 = r0;
0x000237d6 cmp r0, 0 |
| if (r0 != 0) {
0x000237d8 bne.w 0x2349e | goto label_10;
| }
| label_85:
0x000237dc ldr r7, [sp, 0x10] | r7 = var_10h;
| if (r7 != 0) {
0x000237de cbz r7, 0x237e6 |
0x000237e0 mov r0, r7 | r0 = r7;
0x000237e2 blx 0xdc8c | fcn_0000dc8c ();
| }
| if (r4 != 0) {
0x000237e6 cbz r4, 0x237ee |
0x000237e8 mov r0, r4 | r0 = r4;
0x000237ea blx 0xdc8c | fcn_0000dc8c ();
0x000237ec invalid |
| }
0x000237ee ldr r3, [sp, 0x2c] | r3 = var_2ch;
| if (r3 != 0) {
0x000237f0 cbz r3, 0x237f8 |
0x000237f2 mov r0, r3 | r0 = r3;
0x000237f4 blx 0xdc8c | fcn_0000dc8c ();
| }
0x000237f8 ldr r0, [sp, 0x14] | r0 = var_14h;
0x000237fa subw r4, fp, 0x858 | __asm ("subw r4, fp, 0x858");
0x000237fe blx 0xe0d0 | fcn_0000e0d0 ();
0x00023802 ldr r0, [r4] | r0 = *(r4);
| if (r0 != 0) {
0x00023804 cbz r0, 0x2380e |
0x00023806 blx 0xde30 | fcn_0000de30 ();
0x0002380a movs r3, 0 | r3 = 0;
0x0002380c str r3, [r4] | *(r4) = r3;
| }
0x0002380e subw r4, fp, 0x85c | __asm ("subw r4, fp, 0x85c");
0x00023812 ldr r0, [r4] | r0 = *(r4);
| if (r0 != 0) {
0x00023814 cbz r0, 0x2381e |
0x00023816 blx 0xde30 | fcn_0000de30 ();
0x0002381a movs r3, 0 | r3 = 0;
0x0002381c str r3, [r4] | *(r4) = r3;
| }
0x0002381e cmp.w sl, 0 |
| if (sl != 0) {
0x00023822 beq 0x2382a |
0x00023824 mov r0, sl | r0 = sl;
0x00023826 blx 0xde30 | fcn_0000de30 ();
| }
| if (r5 != 0) {
0x0002382a cbz r5, 0x23832 |
0x0002382c mov r0, r5 | r0 = r5;
0x0002382e blx 0xde30 | fcn_0000de30 ();
| }
0x00023832 ldr r3, [sp, 0x20] | r3 = var_20h;
0x00023834 subw r8, fp, 0x838 | __asm ("subw r8, fp, 0x838");
0x00023838 ldrd r6, sl, [r8] | __asm ("ldrd r6, sl, [r8]");
0x0002383c cmp r3, 2 |
| if (r3 == 2) {
0x0002383e beq.w 0x2453c | goto label_100;
| }
| label_54:
0x00023842 ldr r3, [sp, 0x34] | r3 = var_34h;
0x00023844 mov.w r1, 0x1000 | r1 = 0x1000;
0x00023848 sub.w r5, r3, 0x1c | r5 = r3 - 0x1c;
0x0002384c mov r0, r5 | r0 = r5;
0x0002384e bl 0x3ab5c | zbx_json_initarray ();
0x00023852 cmp.w sl, 0 |
| if (sl <= 0) {
0x00023856 ble.w 0x23d7c | goto label_63;
| }
0x0002385a ldr.w r3, [pc, 0x7fc] | r3 = *(0x00024058);
0x0002385e sub.w sb, r6, 4 | sb = r6 - 4;
0x00023862 ldr.w r2, [pc, 0x7f8] |
0x00023866 mov r8, sb | r8 = sb;
0x00023868 ldr.w r1, [pc, 0x7f4] |
0x0002386c movs r7, 0 | r7 = 0;
0x0002386e add r3, pc | r3 += pc;
0x00023870 strd sb, fp, [sp, 0x18] | __asm ("strd sb, fp, [var_1ch]");
0x00023874 add r2, pc | r2 = 0x478d6;
0x00023876 str r6, [sp, 0x14] | var_14h = r6;
0x00023878 add r1, pc | r1 = 0x478dc;
0x0002387a ldr r6, [sp, 0x20] | r6 = var_20h;
0x0002387c mov sb, r3 | sb = r3;
0x0002387e mov fp, r2 |
0x00023880 str r1, [sp, 0x10] | var_10h = r1;
0x00023882 b 0x23a80 |
| while (r6 != 0) {
0x00023884 cmp r6, 1 |
| if (r6 == 1) {
0x00023886 beq.w 0x23ed6 | goto label_101;
| }
0x0002388a ldr r2, [r4, 0x10] | r2 = *((r4 + 0x10));
0x0002388c movs r3, 1 | r3 = 1;
0x0002388e mov r1, sb | r1 = sb;
0x00023890 mov r0, r5 | r0 = r5;
0x00023892 bl 0x3ac9c | zbx_json_addstring ();
0x00023896 ldrd r2, r3, [r4, 0x20] | __asm ("ldrd r2, r3, [r4, 0x20]");
0x0002389a mov r1, fp | r1 = fp;
0x0002389c mov r0, r5 | r0 = r5;
0x0002389e bl 0x3ae40 | zbx_json_adduint64 ();
0x000238a2 ldrd r2, r3, [r4, 0x68] | __asm ("ldrd r2, r3, [r4, 0x68]");
0x000238a6 cmp.w r3, -1 |
0x000238aa it eq |
| if (r3 == -1) {
0x000238ac cmpeq r2, -1 | __asm ("cmpeq r2, -1");
| }
| if (r3 == -1) {
0x000238b0 beq.w 0x23fe2 | goto label_102;
| }
0x000238b4 ldr.w r1, [pc, 0x7ac] | r1 = *(0x00024064);
0x000238b8 mov r0, r5 | r0 = r5;
0x000238ba add r1, pc | r1 += pc;
0x000238bc bl 0x3ae40 | zbx_json_adduint64 ();
| label_14:
0x000238c0 vldr d0, [r4, 0x70] | __asm ("vldr d0, [r4, 0x70]");
0x000238c4 mov r0, r5 | r0 = r5;
0x000238c6 ldr r1, [sp, 0x10] | r1 = var_10h;
0x000238c8 bl 0x3af08 | zbx_json_addfloat ();
0x000238cc ldrd r2, r3, [r4, 0x78] | __asm ("ldrd r2, r3, [r4, 0x78]");
0x000238d0 cmp.w r3, -1 |
0x000238d4 it eq |
| if (r3 == -1) {
0x000238d6 cmpeq r2, -1 | __asm ("cmpeq r2, -1");
| }
| if (r3 == -1) {
0x000238da beq.w 0x242a0 | goto label_103;
| }
0x000238de ldr.w r1, [pc, 0x788] |
0x000238e2 mov r0, r5 | r0 = r5;
0x000238e4 add r1, pc | r1 = 0x47952;
0x000238e6 bl 0x3ae40 | zbx_json_adduint64 ();
| label_24:
0x000238ea ldrd r2, r3, [r4, 0x80] | __asm ("ldrd r2, r3, [r4, 0x80]");
0x000238ee cmp.w r3, -1 |
0x000238f0 subs r7, 0xff | r7 -= 0xff;
0x000238f2 it eq |
| if (r7 == 0xff) {
0x000238f4 cmpeq r2, -1 | __asm ("cmpeq r2, -1");
| }
| if (r7 == 0xff) {
0x000238f8 beq.w 0x24168 | goto label_104;
| }
0x000238fc ldr.w r1, [pc, 0x76c] | r1 = *(0x0002406c);
0x00023900 mov r0, r5 | r0 = r5;
0x00023902 add r1, pc | r1 += pc;
0x00023904 bl 0x3ae40 | zbx_json_adduint64 ();
0x00023908 ldrd r2, r3, [r4, 0x88] | __asm ("ldrd r2, r3, [r4, 0x88]");
0x0002390c cmp.w r3, -1 |
0x00023910 it eq |
| if (r3 == -1) {
0x00023912 cmpeq r2, -1 | __asm ("cmpeq r2, -1");
| }
| if (r3 == -1) {
0x00023916 beq.w 0x2418e | goto label_105;
| }
| label_15:
0x0002391a ldr.w r1, [pc, 0x754] |
0x0002391e mov r0, r5 | r0 = r5;
0x00023920 add r1, pc | r1 = 0x47996;
0x00023922 bl 0x3ae40 | zbx_json_adduint64 ();
0x00023926 ldrd r2, r3, [r4, 0x98] | __asm ("ldrd r2, r3, [r4, 0x98]");
0x0002392a cmp.w r3, -1 |
0x0002392e it eq |
| if (r3 == -1) {
0x00023930 cmpeq r2, -1 | __asm ("cmpeq r2, -1");
| }
| if (r3 == -1) {
0x00023934 beq.w 0x241b2 | goto label_106;
| }
| label_16:
0x00023938 ldr.w r1, [pc, 0x738] | r1 = *(0x00024074);
0x0002393c mov r0, r5 | r0 = r5;
0x0002393e add r1, pc | r1 += pc;
0x00023940 bl 0x3ae40 | zbx_json_adduint64 ();
0x00023944 ldrd r2, r3, [r4, 0xa0] | __asm ("ldrd r2, r3, [r4, 0xa0]");
0x00023948 cmp.w r3, -1 |
0x0002394c it eq |
| if (r3 == -1) {
0x0002394e cmpeq r2, -1 | __asm ("cmpeq r2, -1");
| }
| if (r3 == -1) {
0x00023952 beq.w 0x241d6 | goto label_107;
| }
| label_17:
0x00023956 ldr.w r1, [pc, 0x720] |
0x0002395a mov r0, r5 | r0 = r5;
0x0002395c add r1, pc | r1 = 0x479da;
0x0002395e bl 0x3ae40 | zbx_json_adduint64 ();
0x00023962 ldrd r2, r3, [r4, 0xb0] | __asm ("ldrd r2, r3, [r4, 0xb0]");
0x00023964 movs r3, 0x2c | r3 = 0x2c;
0x00023966 cmp.w r3, -1 |
0x0002396a it eq |
| if (r3 == -1) {
0x0002396c cmpeq r2, -1 | __asm ("cmpeq r2, -1");
| }
| if (r3 == -1) {
0x00023970 beq.w 0x241fa | goto label_108;
| }
| label_18:
0x00023974 ldr.w r1, [pc, 0x704] | r1 = *(0x0002407c);
0x00023978 mov r0, r5 | r0 = r5;
0x0002397a add r1, pc | r1 += pc;
0x0002397c bl 0x3ae40 | zbx_json_adduint64 ();
0x00023980 ldrd r2, r3, [r4, 0xb8] | __asm ("ldrd r2, r3, [r4, 0xb8]");
0x00023984 cmp.w r3, -1 |
0x00023988 it eq |
| if (r3 == -1) {
0x0002398a cmpeq r2, -1 | __asm ("cmpeq r2, -1");
| }
| if (r3 == -1) {
0x0002398e beq.w 0x2421e | goto label_109;
| }
| label_19:
0x00023992 ldr.w r1, [pc, 0x6ec] |
0x00023996 mov r0, r5 | r0 = r5;
0x00023998 add r1, pc | r1 = 0x47a1e;
0x0002399a bl 0x3ae40 | zbx_json_adduint64 ();
0x0002399e ldrd r2, r3, [r4, 0xc0] | __asm ("ldrd r2, r3, [r4, 0xc0]");
0x000239a2 cmp.w r3, -1 |
0x000239a6 it eq |
| if (r3 == -1) {
0x000239a8 cmpeq r2, -1 | __asm ("cmpeq r2, -1");
| }
| if (r3 == -1) {
0x000239ac beq.w 0x24242 | goto label_110;
| }
| label_20:
0x000239b0 ldr.w r1, [pc, 0x6d0] | r1 = *(0x00024084);
0x000239b4 mov r0, r5 | r0 = r5;
0x000239b6 add r1, pc | r1 += pc;
0x000239b8 bl 0x3ae40 | zbx_json_adduint64 ();
0x000239bc ldrd r2, r3, [r4, 0xc8] | __asm ("ldrd r2, r3, [r4, 0xc8]");
0x000239c0 cmp.w r3, -1 |
0x000239c4 it eq |
| if (r3 == -1) {
0x000239c6 cmpeq r2, -1 | __asm ("cmpeq r2, -1");
| }
| if (r3 == -1) {
0x000239ca beq.w 0x24266 | goto label_111;
| }
| label_21:
0x000239ce ldr.w r1, [pc, 0x6b8] |
0x000239d2 mov r0, r5 | r0 = r5;
0x000239d4 add r1, pc | r1 = 0x47a62;
0x000239d6 bl 0x3ae40 | zbx_json_adduint64 ();
0x000239da ldrd r2, r3, [r4, 0xd0] | __asm ("ldrd r2, r3, [r4, 0xd0]");
0x000239de cmp.w r3, -1 |
0x000239e2 it eq |
| if (r3 == -1) {
0x000239e4 cmpeq r2, -1 | __asm ("cmpeq r2, -1");
| }
| if (r3 == -1) {
0x000239e8 beq.w 0x2428a | goto label_112;
| }
| label_22:
0x000239ec ldr.w r1, [pc, 0x69c] | r1 = *(0x0002408c);
0x000239f0 mov r0, r5 | r0 = r5;
0x000239f2 add r1, pc | r1 += pc;
0x000239f4 bl 0x3ae40 | zbx_json_adduint64 ();
| label_23:
0x000239f8 ldr.w r1, [pc, 0x694] | r1 = *(0x00024090);
0x000239fc mov r0, r5 | r0 = r5;
0x000239fe vldr d0, [r4, 0x40] | __asm ("vldr d0, [r4, 0x40]");
0x00023a02 add r1, pc | r1 += pc;
0x00023a04 bl 0x3af08 | zbx_json_addfloat ();
0x00023a08 ldr.w r1, [pc, 0x688] | r1 = *(0x00024094);
0x00023a0c mov r0, r5 | r0 = r5;
0x00023a0e vldr d0, [r4, 0x48] | __asm ("vldr d0, [r4, 0x48]");
0x00023a12 add r1, pc | r1 += pc;
0x00023a14 bl 0x3af08 | zbx_json_addfloat ();
0x00023a18 ldrd r2, r3, [r4, 0x50] | __asm ("ldrd r2, r3, [r4, 0x50]");
0x00023a1c cmp.w r3, -1 |
0x00023a20 it eq |
| if (r3 == -1) {
0x00023a22 cmpeq r2, -1 | __asm ("cmpeq r2, -1");
| }
| if (r3 == -1) {
0x00023a26 beq.w 0x242cc | goto label_113;
| }
0x00023a2a ldr.w r1, [pc, 0x66c] |
0x00023a2e mov r0, r5 | r0 = r5;
0x00023a30 add r1, pc | r1 = 0x47ace;
0x00023a32 bl 0x3ae40 | zbx_json_adduint64 ();
| label_26:
0x00023a36 ldrd r2, r3, [r4, 0x58] | __asm ("ldrd r2, r3, [r4, 0x58]");
0x00023a3a cmp.w r3, -1 |
0x00023a3e it eq |
| if (r3 == -1) {
0x00023a40 cmpeq r2, -1 | __asm ("cmpeq r2, -1");
| }
| if (r3 == -1) {
0x00023a44 beq.w 0x242b6 | goto label_114;
| }
0x00023a48 ldr.w r1, [pc, 0x650] | r1 = *(0x0002409c);
0x00023a4c mov r0, r5 | r0 = r5;
0x00023a4e add r1, pc | r1 += pc;
0x00023a50 bl 0x3ae40 | zbx_json_adduint64 ();
| label_25:
0x00023a54 ldrd r2, r3, [r4, 0x60] | __asm ("ldrd r2, r3, [r4, 0x60]");
0x00023a58 cmp.w r3, -1 |
0x00023a5c it eq |
| if (r3 == -1) {
0x00023a5e cmpeq r2, -1 | __asm ("cmpeq r2, -1");
| }
| if (r3 == -1) {
0x00023a62 beq.w 0x23ec2 | goto label_115;
| }
0x00023a66 ldr.w r1, [pc, 0x638] |
0x00023a6a mov r0, r5 | r0 = r5;
0x00023a6c add r1, pc | r1 = 0x47b12;
0x00023a6e bl 0x3ae40 | zbx_json_adduint64 ();
| label_13:
0x00023a72 adds r7, 1 | r7++;
0x00023a74 mov r0, r5 | r0 = r5;
0x00023a76 bl 0x3af6c | zbx_json_close ();
0x00023a7a cmp r7, sl |
| if (r7 == sl) {
0x00023a7c beq.w 0x23d64 | goto label_116;
| }
| label_11:
0x00023a80 movs r1, 0 | r1 = 0;
0x00023a82 mov r0, r5 | r0 = r5;
0x00023a84 ldr r4, [r8, 4]! | r4 = *((r8 += 4));
0x00023a88 bl 0x3ac94 | zbx_json_addobject ();
0x00023a8c cmp r6, 0 |
0x00023a8e bne.w 0x23884 |
| }
0x00023a92 ldr.w r1, [pc, 0x610] |
0x00023a96 mov r3, r6 | r3 = r6;
0x00023a98 ldr r2, [r4] | r2 = *(r4);
0x00023a9a mov r0, r5 | r0 = r5;
0x00023a9c add r1, pc | r1 = 0x47b46;
0x00023a9e bl 0x3ae40 | zbx_json_adduint64 ();
0x00023aa2 ldrd r2, r3, [r4, 8] | __asm ("ldrd r2, r3, [r4, 8]");
0x00023aa4 movs r3, 2 | r3 = 2;
0x00023aa6 cmp.w r3, -1 |
0x00023aaa it eq |
| if (r3 == -1) {
0x00023aac cmpeq r2, -1 | __asm ("cmpeq r2, -1");
| }
| if (r3 == -1) {
0x00023ab0 beq.w 0x24442 | goto label_117;
| }
0x00023ab4 ldr.w r1, [pc, 0x5f0] | r1 = *(0x000240a8);
0x00023ab8 mov r0, r5 | r0 = r5;
0x00023aba add r1, pc | r1 += pc;
0x00023abc bl 0x3ae40 | zbx_json_adduint64 ();
| label_44:
0x00023ac0 ldr.w r1, [pc, 0x5e8] | r1 = *(0x000240ac);
0x00023ac4 movs r3, 1 | r3 = 1;
0x00023ac6 ldr r2, [r4, 0x10] | r2 = *((r4 + 0x10));
0x00023ac8 mov r0, r5 | r0 = r5;
0x00023aca add r1, pc | r1 += pc;
0x00023acc bl 0x3ac9c | zbx_json_addstring ();
0x00023ad0 ldr.w r1, [pc, 0x5dc] | r1 = *(0x000240b0);
0x00023ad4 movs r3, 1 | r3 = 1;
0x00023ad6 ldr r2, [r4, 0x18] | r2 = *((r4 + 0x18));
0x00023ad8 mov r0, r5 | r0 = r5;
0x00023ada add r1, pc | r1 += pc;
0x00023adc bl 0x3ac9c | zbx_json_addstring ();
0x00023ae0 ldr.w r1, [pc, 0x5d0] | r1 = *(0x000240b4);
0x00023ae4 movs r3, 1 | r3 = 1;
0x00023ae6 ldr r2, [r4, 0x28] | r2 = *((r4 + 0x28));
0x00023ae8 mov r0, r5 | r0 = r5;
0x00023aea add r1, pc | r1 += pc;
0x00023aec bl 0x3ac9c | zbx_json_addstring ();
0x00023af0 ldr.w r1, [pc, 0x5c4] | r1 = *(0x000240b8);
0x00023af4 movs r3, 1 | r3 = 1;
0x00023af6 ldr r2, [r4, 0x2c] | r2 = *((r4 + 0x2c));
0x00023af8 mov r0, r5 | r0 = r5;
0x00023afa add r1, pc | r1 += pc;
0x00023afc bl 0x3ac9c | zbx_json_addstring ();
0x00023b00 ldrd r2, r3, [r4, 0x30] | __asm ("ldrd r2, r3, [r4, 0x30]");
0x00023b04 cmp.w r3, -1 |
0x00023b08 it eq |
| if (r3 == -1) {
0x00023b0a cmpeq r2, -1 | __asm ("cmpeq r2, -1");
| }
| if (r3 == -1) {
0x00023b0e beq.w 0x2442c | goto label_118;
| }
0x00023b12 ldr.w r1, [pc, 0x5a8] |
0x00023b16 mov r0, r5 | r0 = r5;
0x00023b18 add r1, pc | r1 = 0x47bda;
0x00023b1a bl 0x3ae40 | zbx_json_adduint64 ();
0x00023b1c invalid |
| label_43:
0x00023b1e ldrd r2, r3, [r4, 0x38] | __asm ("ldrd r2, r3, [r4, 0x38]");
0x00023b22 cmp.w r3, -1 |
0x00023b26 it eq |
| if (r3 == -1) {
0x00023b28 cmpeq r2, -1 | __asm ("cmpeq r2, -1");
| }
| if (r3 == -1) {
0x00023b2c beq.w 0x24416 | goto label_119;
| }
0x00023b30 ldr.w r1, [pc, 0x58c] | r1 = *(0x000240c0);
0x00023b34 mov r0, r5 | r0 = r5;
0x00023b36 add r1, pc | r1 += pc;
0x00023b38 bl 0x3ae40 | zbx_json_adduint64 ();
| label_42:
0x00023b3c ldrd r2, r3, [r4, 0x68] | __asm ("ldrd r2, r3, [r4, 0x68]");
0x00023b40 cmp.w r3, -1 |
0x00023b44 it eq |
| if (r3 == -1) {
0x00023b46 cmpeq r2, -1 | __asm ("cmpeq r2, -1");
| }
| if (r3 == -1) {
0x00023b4a beq.w 0x24400 | goto label_120;
| }
0x00023b4e ldr.w r1, [pc, 0x574] |
0x00023b52 mov r0, r5 | r0 = r5;
0x00023b54 add r1, pc | r1 = 0x47c1e;
0x00023b56 bl 0x3ae40 | zbx_json_adduint64 ();
| label_41:
0x00023b5a ldr.w r1, [pc, 0x56c] |
0x00023b5e mov r0, r5 | r0 = r5;
0x00023b60 vldr d0, [r4, 0x70] | __asm ("vldr d0, [r4, 0x70]");
0x00023b64 add r1, pc | r1 = 0x47c32;
0x00023b66 bl 0x3af08 | zbx_json_addfloat ();
0x00023b6a ldrd r2, r3, [r4, 0x78] | __asm ("ldrd r2, r3, [r4, 0x78]");
0x00023b6e cmp.w r3, -1 |
0x00023b72 it eq |
| if (r3 == -1) {
0x00023b74 cmpeq r2, -1 | __asm ("cmpeq r2, -1");
| }
| if (r3 == -1) {
0x00023b78 beq.w 0x243ea | goto label_121;
| }
0x00023b7c ldr.w r1, [pc, 0x54c] | r1 = *(0x000240cc);
0x00023b80 mov r0, r5 | r0 = r5;
0x00023b82 add r1, pc | r1 += pc;
0x00023b84 bl 0x3ae40 | zbx_json_adduint64 ();
| label_40:
0x00023b88 ldrd r2, r3, [r4, 0x80] | __asm ("ldrd r2, r3, [r4, 0x80]");
0x00023b8c cmp.w r3, -1 |
0x00023b90 it eq |
| if (r3 == -1) {
0x00023b92 cmpeq r2, -1 | __asm ("cmpeq r2, -1");
| }
| if (r3 == -1) {
0x00023b96 beq.w 0x243d4 | goto label_122;
| }
0x00023b9a ldr.w r1, [pc, 0x534] |
0x00023b9e mov r0, r5 | r0 = r5;
0x00023ba0 add r1, pc | r1 = 0x47c76;
0x00023ba2 bl 0x3ae40 | zbx_json_adduint64 ();
| label_39:
0x00023ba6 ldrd r2, r3, [r4, 0x88] | __asm ("ldrd r2, r3, [r4, 0x88]");
0x00023baa cmp.w r3, -1 |
0x00023bae it eq |
| if (r3 == -1) {
0x00023bb0 cmpeq r2, -1 | __asm ("cmpeq r2, -1");
| }
| if (r3 == -1) {
0x00023bb4 beq.w 0x243be | goto label_123;
| }
0x00023bb8 ldr.w r1, [pc, 0x518] | r1 = *(0x000240d4);
0x00023bbc mov r0, r5 | r0 = r5;
0x00023bbe add r1, pc | r1 += pc;
0x00023bc0 bl 0x3ae40 | zbx_json_adduint64 ();
| label_38:
0x00023bc4 ldrd r2, r3, [r4, 0x90] | __asm ("ldrd r2, r3, [r4, 0x90]");
0x00023bc8 cmp.w r3, -1 |
0x00023bcc it eq |
| if (r3 == -1) {
0x00023bce cmpeq r2, -1 | __asm ("cmpeq r2, -1");
| }
| if (r3 == -1) {
0x00023bd2 beq.w 0x243aa | goto label_124;
| }
0x00023bd6 ldr.w r1, [pc, 0x500] |
0x00023bda mov r0, r5 | r0 = r5;
0x00023bdc add r1, pc | r1 = 0x47cba;
0x00023bde bl 0x3ae40 | zbx_json_adduint64 ();
| label_37:
0x00023be2 ldrd r2, r3, [r4, 0x98] | __asm ("ldrd r2, r3, [r4, 0x98]");
0x00023be6 cmp.w r3, -1 |
0x00023bea it eq |
| if (r3 == -1) {
0x00023bec cmpeq r2, -1 | __asm ("cmpeq r2, -1");
| }
| if (r3 == -1) {
0x00023bf0 beq.w 0x24396 | goto label_125;
| }
0x00023bf4 ldr.w r1, [pc, 0x4e4] | r1 = *(0x000240dc);
0x00023bf8 mov r0, r5 | r0 = r5;
0x00023bfa add r1, pc | r1 += pc;
0x00023bfc bl 0x3ae40 | zbx_json_adduint64 ();
| label_36:
0x00023c00 ldrd r2, r3, [r4, 0xa0] | __asm ("ldrd r2, r3, [r4, 0xa0]");
0x00023c04 cmp.w r3, -1 |
0x00023c08 it eq |
| if (r3 == -1) {
0x00023c0a cmpeq r2, -1 | __asm ("cmpeq r2, -1");
| }
0x00023c0c subs r7, 0xff | r7 -= 0xff;
| if (r7 == 0xff) {
0x00023c0e beq.w 0x24382 | goto label_126;
| }
0x00023c12 ldr.w r1, [pc, 0x4cc] |
0x00023c16 mov r0, r5 | r0 = r5;
0x00023c18 add r1, pc | r1 = 0x47cfe;
0x00023c1a bl 0x3ae40 | zbx_json_adduint64 ();
| label_35:
0x00023c1e ldrd r2, r3, [r4, 0xa8] | __asm ("ldrd r2, r3, [r4, 0xa8]");
0x00023c22 cmp.w r3, -1 |
0x00023c26 it eq |
| if (r3 == -1) {
0x00023c28 cmpeq r2, -1 | __asm ("cmpeq r2, -1");
| }
| if (r3 == -1) {
0x00023c2c beq.w 0x2436e | goto label_127;
| }
0x00023c30 ldr.w r1, [pc, 0x4b0] | r1 = *(0x000240e4);
0x00023c34 mov r0, r5 | r0 = r5;
0x00023c36 add r1, pc | r1 += pc;
0x00023c38 bl 0x3ae40 | zbx_json_adduint64 ();
| label_34:
0x00023c3c ldrd r2, r3, [r4, 0xb0] | __asm ("ldrd r2, r3, [r4, 0xb0]");
0x00023c40 cmp.w r3, -1 |
0x00023c44 it eq |
| if (r3 == -1) {
0x00023c46 cmpeq r2, -1 | __asm ("cmpeq r2, -1");
| }
| if (r3 == -1) {
0x00023c4a beq.w 0x2435a | goto label_128;
| }
0x00023c4e ldr.w r1, [pc, 0x498] |
0x00023c52 mov r0, r5 | r0 = r5;
0x00023c54 add r1, pc | r1 = 0x47d42;
0x00023c56 bl 0x3ae40 | zbx_json_adduint64 ();
| label_33:
0x00023c5a ldrd r2, r3, [r4, 0xb8] | __asm ("ldrd r2, r3, [r4, 0xb8]");
0x00023c5e cmp.w r3, -1 |
0x00023c62 it eq |
| if (r3 == -1) {
0x00023c64 cmpeq r2, -1 | __asm ("cmpeq r2, -1");
| }
| if (r3 == -1) {
0x00023c68 beq.w 0x24346 | goto label_129;
| }
0x00023c6c ldr.w r1, [pc, 0x47c] | r1 = *(0x000240ec);
0x00023c70 mov r0, r5 | r0 = r5;
0x00023c72 add r1, pc | r1 += pc;
0x00023c74 bl 0x3ae40 | zbx_json_adduint64 ();
| label_32:
0x00023c78 ldrd r2, r3, [r4, 0xc0] | __asm ("ldrd r2, r3, [r4, 0xc0]");
0x00023c7c cmp.w r3, -1 |
0x00023c80 it eq |
| if (r3 == -1) {
0x00023c82 cmpeq r2, -1 | __asm ("cmpeq r2, -1");
| }
| if (r3 == -1) {
0x00023c86 beq.w 0x24332 | goto label_130;
| }
0x00023c8a ldr.w r1, [pc, 0x464] |
0x00023c8e mov r0, r5 | r0 = r5;
0x00023c90 add r1, pc | r1 = 0x47d86;
0x00023c92 bl 0x3ae40 | zbx_json_adduint64 ();
0x00023c94 invalid |
| label_31:
0x00023c96 ldrd r2, r3, [r4, 0xc8] | __asm ("ldrd r2, r3, [r4, 0xc8]");
0x00023c9a cmp.w r3, -1 |
0x00023c9e it eq |
| if (r3 == -1) {
0x00023ca0 cmpeq r2, -1 | __asm ("cmpeq r2, -1");
| }
| if (r3 == -1) {
0x00023ca4 beq.w 0x2431e | goto label_131;
| }
0x00023ca8 ldr.w r1, [pc, 0x448] | r1 = *(0x000240f4);
0x00023cac mov r0, r5 | r0 = r5;
0x00023cae add r1, pc | r1 += pc;
0x00023cb0 bl 0x3ae40 | zbx_json_adduint64 ();
| label_30:
0x00023cb4 ldrd r2, r3, [r4, 0xd0] | __asm ("ldrd r2, r3, [r4, 0xd0]");
0x00023cb8 cmp.w r3, -1 |
0x00023cbc it eq |
| if (r3 == -1) {
0x00023cbe cmpeq r2, -1 | __asm ("cmpeq r2, -1");
| }
| if (r3 == -1) {
0x00023cc2 beq.w 0x2430a | goto label_132;
| }
0x00023cc6 ldr.w r1, [pc, 0x430] |
0x00023cca mov r0, r5 | r0 = r5;
0x00023ccc add r1, pc | r1 = 0x47dca;
0x00023cce bl 0x3ae40 | zbx_json_adduint64 ();
| label_29:
0x00023cd2 ldr.w r1, [pc, 0x428] |
0x00023cd6 mov r0, r5 | r0 = r5;
0x00023cd8 vldr d0, [r4, 0x40] | __asm ("vldr d0, [r4, 0x40]");
0x00023cdc add r1, pc | r1 = 0x47dde;
0x00023cde bl 0x3af08 | zbx_json_addfloat ();
0x00023ce2 ldr.w r1, [pc, 0x41c] |
0x00023ce6 mov r0, r5 | r0 = r5;
0x00023ce8 vldr d0, [r4, 0x48] | __asm ("vldr d0, [r4, 0x48]");
0x00023cec add r1, pc | r1 = 0x47df2;
0x00023cee bl 0x3af08 | zbx_json_addfloat ();
0x00023cf2 ldr.w r1, [pc, 0x410] |
0x00023cf6 movs r3, 1 | r3 = 1;
0x00023cf8 ldr r2, [r4, 0x1c] | r2 = *((r4 + 0x1c));
0x00023cfa mov r0, r5 | r0 = r5;
0x00023cfc add r1, pc | r1 = 0x47e06;
0x00023cfe bl 0x3ac9c | zbx_json_addstring ();
0x00023d02 ldrd r2, r3, [r4, 0x50] | __asm ("ldrd r2, r3, [r4, 0x50]");
0x00023d06 cmp.w r3, -1 |
0x00023d0a it eq |
| if (r3 == -1) {
0x00023d0c cmpeq r2, -1 | __asm ("cmpeq r2, -1");
| }
| if (r3 == -1) {
0x00023d10 beq.w 0x242f6 | goto label_133;
| }
0x00023d14 ldr r1, [pc, 0x3f0] |
0x00023d16 mov r0, r5 | r0 = r5;
0x00023d18 add r1, pc | r1 = zbx_trim_float;
0x00023d1a bl 0x3ae40 | zbx_json_adduint64 ();
0x00023d1c invalid |
| label_28:
0x00023d1e ldrd r2, r3, [r4, 0x58] | __asm ("ldrd r2, r3, [r4, 0x58]");
0x00023d22 cmp.w r3, -1 |
0x00023d26 it eq |
| if (r3 == -1) {
0x00023d28 cmpeq r2, -1 | __asm ("cmpeq r2, -1");
| }
| if (r3 == -1) {
0x00023d2c beq.w 0x242e2 | goto label_134;
| }
0x00023d30 ldr r1, [pc, 0x3d8] |
0x00023d32 mov r0, r5 | r0 = r5;
0x00023d34 add r1, pc | r1 = 0x47e44;
0x00023d36 bl 0x3ae40 | zbx_json_adduint64 ();
| label_27:
0x00023d3a ldrd r2, r3, [r4, 0x60] | __asm ("ldrd r2, r3, [r4, 0x60]");
0x00023d3e cmp.w r3, -1 |
0x00023d42 it eq |
| if (r3 == -1) {
0x00023d44 cmpeq r2, -1 | __asm ("cmpeq r2, -1");
| }
| if (r3 == -1) {
0x00023d48 beq.w 0x23ec2 | goto label_115;
| }
0x00023d4c ldr r1, [pc, 0x3c0] |
0x00023d4e mov r0, r5 | r0 = r5;
0x00023d50 adds r7, 1 | r7++;
0x00023d52 add r1, pc | r1 = 0x47e66;
0x00023d54 bl 0x3ae40 | zbx_json_adduint64 ();
0x00023d58 mov r0, r5 | r0 = r5;
0x00023d5a bl 0x3af6c | zbx_json_close ();
0x00023d5e cmp r7, sl |
| if (r7 != sl) {
0x00023d60 bne.w 0x23a80 | goto label_11;
| }
| label_116:
0x00023d64 ldrd r6, sb, [sp, 0x14] | __asm ("ldrd r6, sb, [var_18h]");
0x00023d68 movs r4, 0 | r4 = 0;
0x00023d6a ldr.w fp, [sp, 0x1c] | fp = var_1ch;
| do {
0x00023d6e ldr r0, [sb, 4]! | r0 = *((sb += 4));
0x00023d72 adds r4, 1 | r4++;
0x00023d74 bl 0x2087c | fcn_0002087c (r0);
0x00023d78 cmp r4, sl |
0x00023d7a bne 0x23d6e |
| } while (r4 != sl);
| if (r6 != 0) {
| label_63:
0x00023d7c cbz r6, 0x23d88 |
0x00023d7e subw r3, fp, 0x838 | __asm ("subw r3, fp, 0x838");
0x00023d82 mov r0, r6 | r0 = r6;
0x00023d84 ldr r3, [r3, 0x14] | r3 = *((r3 + 0x14));
0x00023d86 blx r3 | uint32_t (*r3)(uint32_t, uint32_t) (r0, r3);
| }
0x00023d88 mov r0, r5 | r0 = r5;
0x00023d8a bl 0x3af6c | zbx_json_close ();
0x00023d8e ldr r4, [sp, 0x38] | r4 = var_38h;
0x00023d90 subw r3, fp, 0x81c | __asm ("subw r3, fp, 0x81c");
0x00023d94 ldr r0, [pc, 0x37c] |
0x00023d96 movs r2, 0 | r2 = 0;
0x00023d98 ldr r3, [r3] | r3 = *(r3);
0x00023d9a ldr r1, [r4, 0x28] | r1 = *((r4 + 0x28));
0x00023d9c add r0, pc | r0 = 0x47eb4;
0x00023d9e orr r1, r1, 4 | r1 |= 4;
0x00023da2 str r1, [r4, 0x28] | *((r4 + 0x28)) = r1;
0x00023da4 movw r1, 0x873 | r1 = 0x873;
0x00023da8 bl 0x40ed8 | zbx_strdup2 ();
0x00023dac str r0, [r4, 0x18] | *((r4 + 0x18)) = r0;
0x00023dae mov r0, r5 | r0 = r5;
0x00023db0 bl 0x3ac14 | zbx_json_free ();
0x00023db4 movs r0, 0 | r0 = 0;
0x00023db6 ldr r2, [pc, 0x360] |
0x00023db8 add.w r1, sp, 0x2880 | r1 += arg_2880h;
0x00023dbc ldr r3, [pc, 0x23c] | r3 = *(0x23ffc);
0x00023dbe adds r1, 0x24 | r1 += 0x24;
0x00023dc0 add r2, pc | r2 = 0x47ede;
0x00023dc2 ldr r3, [r2, r3] | r3 = *(0x47ede);
0x00023dc4 ldr r2, [r3] | r2 = *(0x47ede);
0x00023dc6 ldr r3, [r1] | r3 = *(r1);
0x00023dc8 eors r2, r3 | r2 ^= r3;
0x00023dca mov.w r3, 0 | r3 = 0;
| if (r2 != r3) {
0x00023dce bne.w 0x24b5a | goto label_135;
| }
0x00023dd2 add.w sp, sp, 0x2880 |
0x00023dd6 add sp, 0x2c |
0x00023dd8 vpop {d8, d9, d10} | __asm ("vpop {d8, d9, d10}");
0x00023ddc pop.w {r4, r5, r6, r7, r8, sb, sl, fp, pc} |
| label_93:
0x00023de0 ldr r3, [sp, 0x20] | r3 = var_20h;
0x00023de2 cmp r3, 2 |
| if (r3 == 2) {
0x00023de4 beq 0x23e1a | goto label_94;
| }
| label_64:
0x00023de6 mov r0, sl | r0 = sl;
0x00023de8 blx 0xdf9c | r0 = fcn_0000df9c ();
0x00023dec cmp r0, 0 |
| if (r0 == 0) {
0x00023dee beq.w 0x24a6c | goto label_136;
| }
0x00023df2 ldr r3, [r0] | r3 = *(r0);
0x00023df4 movs r2, 0 | r2 = 0;
0x00023df6 ldr r0, [pc, 0x324] |
0x00023df8 movw r1, 0x78b | r1 = 0x78b;
0x00023dfc add r0, pc | r0 = 0x47f1e;
0x00023dfe bl 0x40ed8 | zbx_strdup2 ();
0x00023e02 mov r2, sb | r2 = sb;
0x00023e04 mov sl, r0 | sl = r0;
0x00023e06 movs r1, 1 | r1 = 1;
0x00023e08 mov r0, r4 | r0 = r4;
0x00023e0a bl 0x21040 | r0 = fcn_00021040 (r0, r1, r2, r3);
0x00023e0e mov r5, r0 | r5 = r0;
0x00023e10 cmp r0, 0 |
| if (r0 != 0) {
0x00023e12 bne.w 0x2364e | goto label_12;
| }
0x00023e14 add r4, sp, 0x70 | r4 = sp + 0x70;
0x00023e16 b.w 0x24994 | goto label_96;
| label_94:
0x00023e1a movs r5, 0 | r5 = 0;
0x00023e1c mov sl, r5 | sl = r5;
| label_97:
0x00023e1e ldr r3, [sp, 0x2c] | r3 = var_2ch;
| if (r3 != 0) {
0x00023e20 cbz r3, 0x23e28 |
0x00023e22 mov r0, r3 | r0 = r3;
0x00023e24 blx 0xdc8c | fcn_0000dc8c ();
| }
0x00023e28 mov r3, r6 | r3 = r6;
0x00023e2a ldr r2, [pc, 0x2f4] |
0x00023e2c ldr r6, [sp, 0x18] | r6 = var_18h;
0x00023e2e mov.w r1, 0x800 | r1 = 0x800;
0x00023e32 add r2, pc | r2 = 0x47f58;
0x00023e34 mov r0, r6 | r0 = r6;
0x00023e36 bl 0x43f38 | zbx_snprintf ();
0x00023e3a ldr r1, [pc, 0x2e8] |
0x00023e3c mov r0, r6 | r0 = r6;
0x00023e3e add r1, pc | r1 = 0x47f68;
0x00023e40 blx 0xdf90 | r0 = fcn_0000df90 ();
0x00023e44 mov r1, r0 | r1 = r0;
0x00023e46 str r0, [sp, 0x2c] | var_2ch = r0;
0x00023e48 cmp r0, 0 |
| if (r0 == 0) {
0x00023e4a beq.w 0x23490 | goto label_7;
| }
0x00023e4e ldr r7, [sp, 0x20] | r7 = var_20h;
0x00023e50 mov r0, r4 | r0 = r4;
0x00023e52 mov r2, r7 | r2 = r7;
0x00023e54 bl 0x21718 | r0 = fcn_00021718 (r0, r1, r2, r3, r4, r5, r6);
0x00023e58 mov r6, r0 | r6 = r0;
0x00023e5a cmp r0, 0 |
| if (r0 == 0) {
0x00023e5c beq.w 0x23490 | goto label_7;
| }
0x00023e60 cmp r7, 0 |
| if (r7 != 0) {
0x00023e62 bne.w 0x24a14 | goto label_137;
| }
0x00023e66 subw r3, fp, 0x854 | __asm ("subw r3, fp, 0x854");
0x00023e6a ldr r3, [r3] | r3 = *(r3);
0x00023e6c str r3, [r0] | *(r0) = r3;
0x00023e6e ldrd r2, r3, [sb, -0x8] | __asm ("ldrd r2, r3, [sb, -0x8]");
0x00023e72 strd r2, r3, [r0, 0x30] | __asm ("strd r2, r3, [r0, 0x30]");
0x00023e76 ldrd r2, r3, [sb] | __asm ("ldrd r2, r3, [sb]");
0x00023e7a strd r2, r3, [r0, 0x38] | __asm ("strd r2, r3, [r0, 0x38]");
| label_61:
0x00023e7e ldr r3, [sp, 0x1c] | r3 = var_1ch;
0x00023e80 subw r8, fp, 0x85c | __asm ("subw r8, fp, 0x85c");
0x00023e84 strd sl, r5, [r6, 0x28] | __asm ("strd sl, r5, [r6, 0x28]");
0x00023e88 mov r1, r6 | r1 = r6;
0x00023e8a movs r5, 0 | r5 = 0;
0x00023e8c str r3, [r6, 0x18] | *((r6 + 0x18)) = r3;
0x00023e8e mov sl, r5 | sl = r5;
0x00023e90 ldr.w r3, [r8] | r3 = *(r8);
0x00023e94 str r3, [r6, 0x10] | *((r6 + 0x10)) = r3;
0x00023e96 ldr r3, [sp, 0x34] | r3 = var_34h;
0x00023e98 sub.w r0, r3, 0x38 | r0 = r3 - 0x38;
0x00023e9c bl 0x21164 | zbx_vector_proc_data_ptr_append ();
0x00023ea0 subw r3, fp, 0x858 | __asm ("subw r3, fp, 0x858");
0x00023ea4 str.w r5, [r8] | __asm ("str.w r5, [r8]");
0x00023ea8 str r5, [r3] | *(r3) = r5;
0x00023eaa b.w 0x23490 | goto label_7;
0x00023eac revsh r1, r6 | __asm ("revsh r1, r6");
| label_89:
0x00023eae movs r5, 0 | r5 = 0;
0x00023eb0 mov sl, r5 | sl = r5;
0x00023eb2 b.w 0x23490 | goto label_7;
| label_86:
0x00023eb6 movs r4, 0 | r4 = 0;
0x00023eb8 mov r5, r4 | r5 = r4;
0x00023eba mov sl, r4 | sl = r4;
0x00023ebc str r4, [sp, 0x10] | var_10h = r4;
0x00023ebe b.w 0x23490 | goto label_7;
| do {
| label_115:
0x00023ec2 ldr r1, [pc, 0x264] |
0x00023ec4 mov r0, r5 | r0 = r5;
0x00023ec6 mov.w r2, -1 | r2 = -1;
0x00023eca mov.w r3, -1 | r3 = -1;
0x00023ece add r1, pc | r1 = 0x47ffc;
0x00023ed0 bl 0x3aea4 | zbx_json_addint64 ();
0x00023ed4 b 0x23a72 | goto label_13;
| label_101:
0x00023ed6 ldr r1, [pc, 0x254] |
0x00023ed8 movs r3, 0 | r3 = 0;
0x00023eda ldr r2, [r4] | r2 = *(r4);
0x00023edc mov r0, r5 | r0 = r5;
0x00023ede add r1, pc | r1 = 0x48010;
0x00023ee0 bl 0x3ae40 | zbx_json_adduint64 ();
0x00023ee4 ldrd r2, r3, [r4, 8] | __asm ("ldrd r2, r3, [r4, 8]");
0x00023ee8 cmp.w r3, -1 |
0x00023eec it eq |
| if (r3 == -1) {
0x00023eee cmpeq r2, -1 | __asm ("cmpeq r2, -1");
| }
| if (r3 == -1) {
0x00023ef2 beq.w 0x24512 | goto label_138;
| }
0x00023ef6 ldr r1, [pc, 0x238] |
0x00023ef8 mov r0, r5 | r0 = r5;
0x00023efa add r1, pc | r1 = 0x48030;
0x00023efc bl 0x3ae40 | zbx_json_adduint64 ();
| label_49:
0x00023f00 ldr r1, [pc, 0x230] |
0x00023f02 movs r3, 1 | r3 = 1;
0x00023f04 ldr r2, [r4, 0x10] | r2 = *((r4 + 0x10));
0x00023f06 mov r0, r5 | r0 = r5;
0x00023f08 add r1, pc | r1 = 0x48040;
0x00023f0a bl 0x3ac9c | zbx_json_addstring ();
0x00023f0e ldr r1, [pc, 0x228] |
0x00023f10 movs r3, 1 | r3 = 1;
0x00023f12 ldr r2, [r4, 0x28] | r2 = *((r4 + 0x28));
0x00023f14 mov r0, r5 | r0 = r5;
0x00023f16 add r1, pc | r1 = 0x48054;
0x00023f18 bl 0x3ac9c | zbx_json_addstring ();
0x00023f1c ldr r1, [pc, 0x21c] |
0x00023f1e movs r3, 1 | r3 = 1;
0x00023f20 ldr r2, [r4, 0x2c] | r2 = *((r4 + 0x2c));
0x00023f22 mov r0, r5 | r0 = r5;
0x00023f24 add r1, pc | r1 = 0x48064;
0x00023f26 bl 0x3ac9c | zbx_json_addstring ();
0x00023f2a ldrd r2, r3, [r4, 0x30] | __asm ("ldrd r2, r3, [r4, 0x30]");
0x00023f2e cmp.w r3, -1 |
0x00023f32 it eq |
| if (r3 == -1) {
0x00023f34 cmpeq r2, -1 | __asm ("cmpeq r2, -1");
| }
| if (r3 == -1) {
0x00023f38 beq.w 0x244fe | goto label_139;
| }
0x00023f3c ldr r1, [pc, 0x200] |
0x00023f3e mov r0, r5 | r0 = r5;
0x00023f40 add r1, pc | r1 = 0x48084;
0x00023f42 bl 0x3ae40 | zbx_json_adduint64 ();
| label_48:
0x00023f46 ldrd r2, r3, [r4, 0x38] | __asm ("ldrd r2, r3, [r4, 0x38]");
0x00023f4a cmp.w r3, -1 |
0x00023f4e it eq |
| if (r3 == -1) {
0x00023f50 cmpeq r2, -1 | __asm ("cmpeq r2, -1");
| }
| if (r3 == -1) {
0x00023f54 beq.w 0x244ea | goto label_140;
| }
0x00023f58 ldr r1, [pc, 0x1e8] |
0x00023f5a mov r0, r5 | r0 = r5;
0x00023f5c add r1, pc | r1 = 0x480a4;
0x00023f5e bl 0x3ae40 | zbx_json_adduint64 ();
| label_47:
0x00023f62 ldr r1, [pc, 0x1e4] |
0x00023f64 movs r3, 0 | r3 = 0;
0x00023f66 ldr r2, [r4, 4] | r2 = *((r4 + 4));
0x00023f68 mov r0, r5 | r0 = r5;
0x00023f6a add r1, pc | r1 = 0x480b8;
0x00023f6c bl 0x3ae40 | zbx_json_adduint64 ();
0x00023f70 ldr r1, [pc, 0x1d8] |
0x00023f72 movs r3, 1 | r3 = 1;
0x00023f74 ldr r2, [r4, 0x14] | r2 = *((r4 + 0x14));
0x00023f76 mov r0, r5 | r0 = r5;
0x00023f78 add r1, pc | r1 = 0x480c8;
0x00023f7a bl 0x3ac9c | zbx_json_addstring ();
0x00023f7e ldr r1, [pc, 0x1d0] |
0x00023f80 mov r0, r5 | r0 = r5;
0x00023f82 vldr d0, [r4, 0x40] | __asm ("vldr d0, [r4, 0x40]");
0x00023f86 add r1, pc | r1 = 0x480dc;
0x00023f88 bl 0x3af08 | zbx_json_addfloat ();
0x00023f8c ldr r1, [pc, 0x1c4] |
0x00023f8e mov r0, r5 | r0 = r5;
0x00023f90 vldr d0, [r4, 0x48] | __asm ("vldr d0, [r4, 0x48]");
0x00023f94 add r1, pc | r1 = 0x480ec;
0x00023f96 bl 0x3af08 | zbx_json_addfloat ();
0x00023f9a ldr r1, [pc, 0x1bc] |
0x00023f9c movs r3, 1 | r3 = 1;
0x00023f9e ldr r2, [r4, 0x1c] | r2 = *((r4 + 0x1c));
0x00023fa0 mov r0, r5 | r0 = r5;
0x00023fa2 add r1, pc | r1 = 0x48100;
0x00023fa4 bl 0x3ac9c | zbx_json_addstring ();
0x00023fa8 ldrd r2, r3, [r4, 0x50] | __asm ("ldrd r2, r3, [r4, 0x50]");
0x00023fac cmp.w r3, -1 |
0x00023fb0 it eq |
| if (r3 == -1) {
0x00023fb2 cmpeq r2, -1 | __asm ("cmpeq r2, -1");
| }
| if (r3 == -1) {
0x00023fb6 beq.w 0x244d6 | goto label_141;
| }
0x00023fba ldr r1, [pc, 0x1a0] |
0x00023fbc mov r0, r5 | r0 = r5;
0x00023fbe add r1, pc | r1 = 0x48120;
0x00023fc0 bl 0x3ae40 | zbx_json_adduint64 ();
| label_46:
0x00023fc4 ldrd r2, r3, [r4, 0x60] | __asm ("ldrd r2, r3, [r4, 0x60]");
0x00023fc8 cmp.w r3, -1 |
0x00023fcc it eq |
| if (r3 == -1) {
0x00023fce cmpeq r2, -1 | __asm ("cmpeq r2, -1");
| }
0x00023fd2 beq.w 0x23ec2 |
| } while (r3 == -1);
0x00023fd6 ldr r1, [pc, 0x188] |
0x00023fd8 mov r0, r5 | r0 = r5;
0x00023fda add r1, pc | r1 = 0x48140;
0x00023fdc bl 0x3ae40 | zbx_json_adduint64 ();
0x00023fe0 b 0x23a72 | goto label_13;
| label_102:
0x00023fe2 ldr r1, [pc, 0x180] |
0x00023fe4 mov r0, r5 | r0 = r5;
0x00023fe6 mov.w r2, -1 | r2 = -1;
0x00023fea mov.w r3, -1 | r3 = -1;
0x00023fee add r1, pc | r1 = 0x48158;
0x00023ff0 bl 0x3aea4 | zbx_json_addint64 ();
0x00023ff4 b 0x238c0 | goto label_14;
| label_104:
0x00024168 ldr.w r1, [pc, 0x414] | r1 = *(0x00024580);
0x0002416c mov.w r2, -1 | r2 = -1;
0x00024170 mov.w r3, -1 | r3 = -1;
0x00024174 mov r0, r5 | r0 = r5;
0x00024176 add r1, pc | r1 += pc;
0x00024178 bl 0x3aea4 | zbx_json_addint64 ();
0x0002417c ldrd r2, r3, [r4, 0x88] | __asm ("ldrd r2, r3, [r4, 0x88]");
0x00024180 cmp.w r3, -1 |
0x00024184 it eq |
| if (r3 != -1) {
0x00024186 cmpeq r2, -1 | __asm ("cmpeq r2, -1");
| goto label_142;
| }
| if (r3 != -1) {
| label_142:
0x0002418a bne.w 0x2391a | goto label_15;
| }
0x0002418c add r3, sp, 0x318 | r3 = sp + 0x318;
| label_105:
0x0002418e ldr r1, [pc, 0x3f4] |
0x00024190 mov.w r2, -1 | r2 = -1;
0x00024194 mov.w r3, -1 | r3 = -1;
0x00024198 mov r0, r5 | r0 = r5;
0x0002419a add r1, pc | r1 = 0x48724;
0x0002419c bl 0x3aea4 | zbx_json_addint64 ();
0x000241a0 ldrd r2, r3, [r4, 0x98] | __asm ("ldrd r2, r3, [r4, 0x98]");
0x000241a4 cmp.w r3, -1 |
0x000241a8 it eq |
| if (r3 != -1) {
0x000241aa cmpeq r2, -1 | __asm ("cmpeq r2, -1");
| goto label_143;
| }
| if (r3 != -1) {
| label_143:
0x000241ae bne.w 0x23938 | goto label_16;
| }
| label_106:
0x000241b2 ldr r1, [pc, 0x3d4] |
0x000241b4 mov.w r2, -1 | r2 = -1;
0x000241b8 mov.w r3, -1 | r3 = -1;
0x000241bc mov r0, r5 | r0 = r5;
0x000241be add r1, pc | r1 = 0x4874c;
0x000241c0 bl 0x3aea4 | zbx_json_addint64 ();
0x000241c4 ldrd r2, r3, [r4, 0xa0] | __asm ("ldrd r2, r3, [r4, 0xa0]");
0x000241c8 cmp.w r3, -1 |
0x000241cc it eq |
| if (r3 != -1) {
0x000241ce cmpeq r2, -1 | __asm ("cmpeq r2, -1");
| goto label_144;
| }
| if (r3 != -1) {
| label_144:
0x000241d2 bne.w 0x23956 | goto label_17;
| }
| label_107:
0x000241d6 ldr r1, [pc, 0x3b4] |
0x000241d8 mov.w r2, -1 | r2 = -1;
0x000241dc mov.w r3, -1 | r3 = -1;
0x000241e0 mov r0, r5 | r0 = r5;
0x000241e2 add r1, pc | r1 = zbx_timespec_str;
0x000241e4 bl 0x3aea4 | zbx_json_addint64 ();
0x000241e8 ldrd r2, r3, [r4, 0xb0] | __asm ("ldrd r2, r3, [r4, 0xb0]");
0x000241ec cmp.w r3, -1 |
0x000241f0 it eq |
| if (r3 != -1) {
0x000241f2 cmpeq r2, -1 | __asm ("cmpeq r2, -1");
| goto label_145;
| }
| if (r3 != -1) {
| label_145:
0x000241f6 bne.w 0x23974 | goto label_18;
| }
| label_108:
0x000241fa ldr r1, [pc, 0x394] |
0x000241fc mov.w r2, -1 | r2 = -1;
0x00024200 mov.w r3, -1 | r3 = -1;
0x00024204 mov r0, r5 | r0 = r5;
0x00024206 add r1, pc | r1 = 0x4879c;
0x00024208 bl 0x3aea4 | zbx_json_addint64 ();
0x0002420c ldrd r2, r3, [r4, 0xb8] | __asm ("ldrd r2, r3, [r4, 0xb8]");
0x00024210 cmp.w r3, -1 |
0x00024214 it eq |
| if (r3 != -1) {
0x00024216 cmpeq r2, -1 | __asm ("cmpeq r2, -1");
| goto label_146;
| }
| if (r3 != -1) {
| label_146:
0x0002421a bne.w 0x23992 | goto label_19;
| }
| label_109:
0x0002421e ldr r1, [pc, 0x374] |
0x00024220 mov.w r2, -1 | r2 = -1;
0x00024224 mov.w r3, -1 | r3 = -1;
0x00024228 mov r0, r5 | r0 = r5;
0x0002422a add r1, pc | r1 = 0x487c4;
0x0002422c bl 0x3aea4 | zbx_json_addint64 ();
0x00024230 ldrd r2, r3, [r4, 0xc0] | __asm ("ldrd r2, r3, [r4, 0xc0]");
0x00024234 cmp.w r3, -1 |
0x00024238 it eq |
| if (r3 != -1) {
0x0002423a cmpeq r2, -1 | __asm ("cmpeq r2, -1");
| goto label_147;
| }
| if (r3 != -1) {
| label_147:
0x0002423e bne.w 0x239b0 | goto label_20;
| }
| label_110:
0x00024242 ldr r1, [pc, 0x354] |
0x00024244 mov.w r2, -1 | r2 = -1;
0x00024248 mov.w r3, -1 | r3 = -1;
0x0002424c mov r0, r5 | r0 = r5;
0x0002424e add r1, pc | r1 = 0x487ec;
0x00024250 bl 0x3aea4 | zbx_json_addint64 ();
0x00024254 ldrd r2, r3, [r4, 0xc8] | __asm ("ldrd r2, r3, [r4, 0xc8]");
0x00024258 cmp.w r3, -1 |
0x0002425c it eq |
| if (r3 != -1) {
0x0002425e cmpeq r2, -1 | __asm ("cmpeq r2, -1");
| goto label_148;
| }
| if (r3 != -1) {
| label_148:
0x00024262 bne.w 0x239ce | goto label_21;
| }
| label_111:
0x00024266 ldr r1, [pc, 0x334] |
0x00024268 mov.w r2, -1 | r2 = -1;
0x0002426c mov.w r3, -1 | r3 = -1;
0x00024270 mov r0, r5 | r0 = r5;
0x00024272 add r1, pc | r1 = 0x48814;
0x00024274 bl 0x3aea4 | zbx_json_addint64 ();
0x00024278 ldrd r2, r3, [r4, 0xd0] | __asm ("ldrd r2, r3, [r4, 0xd0]");
0x0002427c cmp.w r3, -1 |
0x00024280 it eq |
| if (r3 != -1) {
0x00024282 cmpeq r2, -1 | __asm ("cmpeq r2, -1");
| goto label_149;
| }
| if (r3 != -1) {
| label_149:
0x00024286 bne.w 0x239ec | goto label_22;
| }
0x00024288 add r3, sp, 0x2c4 | r3 = sp + 0x2c4;
| label_112:
0x0002428a ldr r1, [pc, 0x314] |
0x0002428c mov r0, r5 | r0 = r5;
0x0002428e mov.w r2, -1 | r2 = -1;
0x00024292 mov.w r3, -1 | r3 = -1;
0x00024296 add r1, pc | r1 = 0x4883c;
0x00024298 bl 0x3aea4 | zbx_json_addint64 ();
0x0002429c b.w 0x239f8 | goto label_23;
| label_103:
0x000242a0 ldr r1, [pc, 0x300] |
0x000242a2 mov r0, r5 | r0 = r5;
0x000242a4 mov.w r2, -1 | r2 = -1;
0x000242a8 mov.w r3, -1 | r3 = -1;
0x000242ac add r1, pc | r1 = 0x48854;
0x000242ae bl 0x3aea4 | zbx_json_addint64 ();
0x000242b2 b.w 0x238ea | goto label_24;
| label_114:
0x000242b6 ldr r1, [pc, 0x2f0] |
0x000242b8 mov r0, r5 | r0 = r5;
0x000242ba mov.w r2, -1 | r2 = -1;
0x000242be mov.w r3, -1 | r3 = -1;
0x000242c2 add r1, pc | r1 = 0x48870;
0x000242c4 bl 0x3aea4 | zbx_json_addint64 ();
0x000242c8 b.w 0x23a54 | goto label_25;
| label_113:
0x000242cc ldr r1, [pc, 0x2dc] |
0x000242ce mov r0, r5 | r0 = r5;
0x000242d0 mov.w r2, -1 | r2 = -1;
0x000242d4 mov.w r3, -1 | r3 = -1;
0x000242d8 add r1, pc | r1 = 0x48888;
0x000242da bl 0x3aea4 | zbx_json_addint64 ();
0x000242de b.w 0x23a36 | goto label_26;
| label_134:
0x000242e2 ldr r1, [pc, 0x2cc] |
0x000242e4 mov r0, r5 | r0 = r5;
0x000242e6 mov.w r2, -1 | r2 = -1;
0x000242ea mov.w r3, -1 | r3 = -1;
0x000242ee add r1, pc | r1 = 0x488a4;
0x000242f0 bl 0x3aea4 | zbx_json_addint64 ();
0x000242f4 b 0x23d3a | goto label_27;
| label_133:
0x000242f6 ldr r1, [pc, 0x2bc] |
0x000242f8 mov r0, r5 | r0 = r5;
0x000242fa mov.w r2, -1 | r2 = -1;
0x000242fe mov.w r3, -1 | r3 = -1;
0x00024302 add r1, pc | r1 = zbx_tm_sub;
0x00024304 bl 0x3aea4 | zbx_json_addint64 ();
0x00024308 b 0x23d1e | goto label_28;
| label_132:
0x0002430a ldr r1, [pc, 0x2ac] |
0x0002430c mov r0, r5 | r0 = r5;
0x0002430e mov.w r2, -1 | r2 = -1;
0x00024312 mov.w r3, -1 | r3 = -1;
0x00024316 add r1, pc | r1 = 0x488d4;
0x00024318 bl 0x3aea4 | zbx_json_addint64 ();
0x0002431c b 0x23cd2 | goto label_29;
| label_131:
0x0002431e ldr r1, [pc, 0x29c] |
0x00024320 mov r0, r5 | r0 = r5;
0x00024322 mov.w r2, -1 | r2 = -1;
0x00024326 mov.w r3, -1 | r3 = -1;
0x0002432a add r1, pc | r1 = 0x488ec;
0x0002432c bl 0x3aea4 | zbx_json_addint64 ();
0x00024330 b 0x23cb4 | goto label_30;
| label_130:
0x00024332 ldr r1, [pc, 0x28c] |
0x00024334 mov r0, r5 | r0 = r5;
0x00024336 mov.w r2, -1 | r2 = -1;
0x0002433a mov.w r3, -1 | r3 = -1;
0x0002433e add r1, pc | r1 = 0x48904;
0x00024340 bl 0x3aea4 | zbx_json_addint64 ();
0x00024344 b 0x23c96 | goto label_31;
| label_129:
0x00024346 ldr r1, [pc, 0x27c] |
0x00024348 mov r0, r5 | r0 = r5;
0x0002434a mov.w r2, -1 | r2 = -1;
0x0002434e mov.w r3, -1 | r3 = -1;
0x00024352 add r1, pc | r1 = 0x4891c;
0x00024354 bl 0x3aea4 | zbx_json_addint64 ();
0x00024358 b 0x23c78 | goto label_32;
| label_128:
0x0002435a ldr r1, [pc, 0x26c] |
0x0002435c mov r0, r5 | r0 = r5;
0x0002435e mov.w r2, -1 | r2 = -1;
0x00024362 mov.w r3, -1 | r3 = -1;
0x00024366 add r1, pc | r1 = 0x48934;
0x00024368 bl 0x3aea4 | zbx_json_addint64 ();
0x0002436c b 0x23c5a | goto label_33;
| label_127:
0x0002436e ldr r1, [pc, 0x25c] |
0x00024370 mov r0, r5 | r0 = r5;
0x00024372 mov.w r2, -1 | r2 = -1;
0x00024376 mov.w r3, -1 | r3 = -1;
0x0002437a add r1, pc | r1 = 0x4894c;
0x0002437c bl 0x3aea4 | zbx_json_addint64 ();
0x00024380 b 0x23c3c | goto label_34;
| label_126:
0x00024382 ldr r1, [pc, 0x24c] |
0x00024384 mov r0, r5 | r0 = r5;
0x00024386 mov.w r2, -1 | r2 = -1;
0x0002438a mov.w r3, -1 | r3 = -1;
0x0002438e add r1, pc | r1 = 0x48964;
0x00024390 bl 0x3aea4 | zbx_json_addint64 ();
0x00024394 b 0x23c1e | goto label_35;
| label_125:
0x00024396 ldr r1, [pc, 0x23c] |
0x00024398 mov r0, r5 | r0 = r5;
0x0002439a mov.w r2, -1 | r2 = -1;
0x0002439e mov.w r3, -1 | r3 = -1;
0x000243a2 add r1, pc | r1 = 0x4897c;
0x000243a4 bl 0x3aea4 | zbx_json_addint64 ();
0x000243a8 b 0x23c00 | goto label_36;
| label_124:
0x000243aa ldr r1, [pc, 0x22c] |
0x000243ac mov r0, r5 | r0 = r5;
0x000243ae mov.w r2, -1 | r2 = -1;
0x000243b2 mov.w r3, -1 | r3 = -1;
0x000243b6 add r1, pc | r1 = 0x48994;
0x000243b8 bl 0x3aea4 | zbx_json_addint64 ();
0x000243bc b 0x23be2 | goto label_37;
| label_123:
0x000243be ldr r1, [pc, 0x21c] |
0x000243c0 mov r0, r5 | r0 = r5;
0x000243c2 mov.w r2, -1 | r2 = -1;
0x000243c6 mov.w r3, -1 | r3 = -1;
0x000243ca add r1, pc | r1 = 0x489ac;
0x000243cc bl 0x3aea4 | zbx_json_addint64 ();
0x000243d0 b.w 0x23bc4 | goto label_38;
| label_122:
0x000243d4 ldr r1, [pc, 0x208] |
0x000243d6 mov r0, r5 | r0 = r5;
0x000243d8 mov.w r2, -1 | r2 = -1;
0x000243dc mov.w r3, -1 | r3 = -1;
0x000243e0 add r1, pc | r1 = 0x489c4;
0x000243e2 bl 0x3aea4 | zbx_json_addint64 ();
0x000243e6 b.w 0x23ba6 | goto label_39;
| label_121:
0x000243ea ldr r1, [pc, 0x1f8] |
0x000243ec mov r0, r5 | r0 = r5;
0x000243ee mov.w r2, -1 | r2 = -1;
0x000243f2 mov.w r3, -1 | r3 = -1;
0x000243f6 add r1, pc | r1 = 0x489e0;
0x000243f8 bl 0x3aea4 | zbx_json_addint64 ();
0x000243fc b.w 0x23b88 | goto label_40;
| label_120:
0x00024400 ldr r1, [pc, 0x1e4] |
0x00024402 mov r0, r5 | r0 = r5;
0x00024404 mov.w r2, -1 | r2 = -1;
0x00024408 mov.w r3, -1 | r3 = -1;
0x0002440c add r1, pc | r1 = 0x489f8;
0x0002440e bl 0x3aea4 | zbx_json_addint64 ();
0x00024412 b.w 0x23b5a | goto label_41;
| label_119:
0x00024416 ldr r1, [pc, 0x1d4] |
0x00024418 mov r0, r5 | r0 = r5;
0x0002441a mov.w r2, -1 | r2 = -1;
0x0002441e mov.w r3, -1 | r3 = -1;
0x00024420 adds r3, 0xff | r3 += 0xff;
0x00024422 add r1, pc | r1 = 0x48a14;
0x00024424 bl 0x3aea4 | zbx_json_addint64 ();
0x00024428 b.w 0x23b3c | goto label_42;
| label_118:
0x0002442c ldr r1, [pc, 0x1c0] |
0x0002442e mov r0, r5 | r0 = r5;
0x00024430 mov.w r2, -1 | r2 = -1;
0x00024434 mov.w r3, -1 | r3 = -1;
0x00024438 add r1, pc | r1 = 0x48a2c;
0x0002443a bl 0x3aea4 | zbx_json_addint64 ();
0x0002443e b.w 0x23b1e | goto label_43;
| label_117:
0x00024442 ldr r1, [pc, 0x1b0] |
0x00024444 mov r0, r5 | r0 = r5;
0x00024446 mov.w r2, -1 | r2 = -1;
0x0002444a mov.w r3, -1 | r3 = -1;
0x0002444c adds r3, 0xff | r3 += 0xff;
0x0002444e add r1, pc | r1 = 0x48a48;
0x00024450 bl 0x3aea4 | zbx_json_addint64 ();
0x00024454 b.w 0x23ac0 | goto label_44;
| label_90:
0x00024458 ldr r1, [pc, 0x19c] |
0x0002445a ldr r0, [sp, 0x1c] | r0 = var_1ch;
0x0002445c add r1, pc | r1 = 0x48a58;
0x0002445e blx 0xe388 | r0 = fcn_0000e388 ();
0x00024462 mov r5, r0 | r5 = r0;
| if (r0 != 0) {
0x00024464 cbz r0, 0x2446e |
0x00024466 ldrb r3, [r0] | r3 = *(r0);
0x00024468 strb.w r8, [r0] | *(r0) = r8;
0x0002446c str r3, [sp, 0x24] | var_24h = r3;
| }
0x0002446e ldr r0, [sp, 0x1c] | r0 = var_1ch;
0x00024470 movs r1, 0x2f | r1 = 0x2f;
0x00024472 blx 0xdda8 | r0 = statvfs64 ();
0x00024476 add.w sl, r0, 1 | sl = r0 + 1;
0x0002447a cmp r0, 0 |
| if (r0 == 0) {
0x0002447c beq.w 0x24a0e | goto label_150;
| }
| label_60:
0x00024480 subw r3, fp, 0x85c | __asm ("subw r3, fp, 0x85c");
0x00024484 ldr.w r8, [r3] | r8 = *(r3);
0x00024488 cmp.w r8, 0 |
| if (r8 == 0) {
0x0002448c beq.w 0x249c8 | goto label_151;
| }
0x00024490 mov r0, sl | r0 = sl;
0x00024492 blx 0xdf68 | fcn_0000df68 ();
0x00024496 str r0, [sp, 0x44] | var_44h = r0;
0x00024498 mov r0, r8 | r0 = r8;
0x0002449a blx 0xdf68 | fcn_0000df68 ();
0x0002449e ldr r3, [sp, 0x44] | r3 = var_44h;
0x000244a0 cmp r3, r0 |
| if (r3 > r0) {
0x000244a2 bhi.w 0x249b8 | goto label_152;
| }
| if (r5 != 0) {
| label_56:
0x000244a6 cbz r5, 0x244ac |
0x000244a8 ldr r3, [sp, 0x24] | r3 = var_24h;
0x000244aa strb r3, [r5] | *(r5) = r3;
| }
0x000244ac sub.w r2, fp, 0x850 | r2 = fp - 0x850;
0x000244b0 ldr r1, [r2] | r1 = *(r2);
0x000244b2 subs r3, r1, 2 | r3 = r1 - 2;
0x000244b4 str r3, [r2] | *(r2) = r3;
0x000244b6 cmp r3, 0 |
| if (r3 == 0) {
0x000244b8 beq.w 0x2359e | goto label_45;
| }
0x000244bc ldr r3, [sp, 0x1c] | r3 = var_1ch;
0x000244be subs r1, 3 | r1 -= 3;
0x000244c0 movs r0, 0x20 | r0 = 0x20;
0x000244c2 add r1, r3 | r1 += r3;
0x000244c4 subs r3, 1 | r3--;
| do {
0x000244c6 ldrb r2, [r3, 1]! | r2 = *((r3 += 1));
| if (r2 == 0) {
0x000244ca cbnz r2, 0x244ce |
0x000244cc strb r0, [r3] | *(r3) = r0;
| }
0x000244ce cmp r1, r3 |
0x000244d0 bne 0x244c6 |
| } while (r1 != r3);
0x000244d2 b.w 0x2359e | goto label_45;
| label_141:
0x000244d6 ldr r1, [pc, 0x124] |
0x000244d8 mov r0, r5 | r0 = r5;
0x000244da mov.w r2, -1 | r2 = -1;
0x000244de mov.w r3, -1 | r3 = -1;
0x000244e2 add r1, pc | r1 = iprange_parse;
0x000244e4 bl 0x3aea4 | zbx_json_addint64 ();
0x000244e8 b 0x23fc4 | goto label_46;
| label_140:
0x000244ea ldr r1, [pc, 0x114] |
0x000244ec mov r0, r5 | r0 = r5;
0x000244ee mov.w r2, -1 | r2 = -1;
0x000244f2 mov.w r3, -1 | r3 = -1;
0x000244f6 add r1, pc | r1 = 0x48afc;
0x000244f8 bl 0x3aea4 | zbx_json_addint64 ();
0x000244fc b 0x23f62 | goto label_47;
| label_139:
0x000244fe ldr r1, [pc, 0x104] |
0x00024500 mov r0, r5 | r0 = r5;
0x00024502 mov.w r2, -1 | r2 = -1;
0x00024506 mov.w r3, -1 | r3 = -1;
0x0002450a add r1, pc | r1 = 0x48b14;
0x0002450c bl 0x3aea4 | zbx_json_addint64 ();
0x00024510 b 0x23f46 | goto label_48;
| label_138:
0x00024512 ldr r1, [pc, 0xf4] |
0x00024514 mov r0, r5 | r0 = r5;
0x00024516 mov.w r2, -1 | r2 = -1;
0x0002451a mov.w r3, -1 | r3 = -1;
0x0002451e add r1, pc | r1 = 0x48b2c;
0x00024520 bl 0x3aea4 | zbx_json_addint64 ();
0x00024524 b 0x23f00 | goto label_49;
| label_92:
0x00024526 ldr r3, [sp, 0x3c] | r3 = var_3ch;
0x00024528 cmp r3, 0 |
| if (r3 == 0) {
0x0002452a beq.w 0x2360e | goto label_50;
| }
0x0002452e ldr r3, [sp, 0x3c] | r3 = var_3ch;
0x00024530 ldrb r3, [r3] | r3 = *(r3);
0x00024532 cmp r3, 0 |
| if (r3 == 0) {
0x00024534 beq.w 0x2360e | goto label_50;
| }
0x00024538 b.w 0x235fe | goto label_51;
| label_100:
0x0002453c cmp.w sl, 0 |
| if (sl <= 0) {
0x00024540 ble.w 0x24a90 | goto label_153;
| }
0x00024544 mov.w sb, 0 | sb = 0;
0x00024548 mov r3, sl | r3 = sl;
0x0002454a vldr d9, [pc, 0x2c] | __asm ("vldr d9, [0x0002457c]");
0x0002454e mov sl, sb | sl = sb;
0x00024550 ldr.w sb, [sp, 0x34] | sb = var_34h;
0x00024554 vmov.i8 d8, 0xff | __asm ("vmov.i8 d8, 0xff");
0x00024558 vmov.f64 d10, -1.000000e+00 | __asm ("vmov.f64 d10, -1");
| label_53:
0x0002455c ldr.w r4, [r6, sl, lsl 2] | offset_0 = sl << 2;
| r4 = *((r6 + offset_0));
0x00024560 add.w sl, sl, 1 | sl++;
0x00024564 cmp sl, r3 |
0x00024566 vstr d9, [r4, 0x20] | __asm ("vstr d9, [r4, 0x20]");
| if (sl >= r3) {
0x0002456a bge.w 0x24966 | goto label_154;
| }
0x0002456e mov r7, sl | r7 = sl;
0x00024570 b 0x24618 |
| while (r0 != 0) {
0x0002460c ldr.w r3, [r8, 4] | r3 = *((r8 + 4));
0x00024610 adds r7, 1 | r7++;
0x00024612 cmp r3, r7 |
| if (r3 <= r7) {
0x00024614 ble.w 0x24960 | goto label_155;
| }
| label_52:
0x00024618 ldr.w r5, [r6, r7, lsl 2] | offset_1 = r7 << 2;
| r5 = *((r6 + offset_1));
0x0002461c ldr r0, [r4, 0x10] | r0 = *((r4 + 0x10));
0x0002461e ldr r1, [r5, 0x10] | r1 = *((r5 + 0x10));
0x00024620 blx 0xe3b0 | r0 = fcn_0000e3b0 ();
0x00024624 cmp r0, 0 |
0x00024626 bne 0x2460c |
| }
0x00024628 ldr r3, [r4, 0x20] | r3 = *((r4 + 0x20));
0x0002462a adds r3, 1 | r3++;
0x0002462c str r3, [r4, 0x20] | *((r4 + 0x20)) = r3;
0x0002462e ldr r3, [r4, 0x24] | r3 = *((r4 + 0x24));
0x00024630 adc r3, r3, 0 | __asm ("adc r3, r3, 0");
0x00024634 str r3, [r4, 0x24] | *((r4 + 0x24)) = r3;
0x00024636 ldrd r3, r2, [r4, 0x68] | __asm ("ldrd r3, r2, [r4, 0x68]");
0x0002463a cmp.w r2, -1 |
0x0002463e it eq |
| if (r2 == -1) {
0x00024640 cmpeq r3, -1 | __asm ("cmpeq r3, -1");
| }
| if (r2 != -1) {
0x00024644 beq 0x24666 |
0x00024646 ldrd r1, r0, [r5, 0x68] | __asm ("ldrd r1, r0, [r5, 0x68]");
0x0002464a cmp.w r0, -1 |
0x0002464e it eq |
| if (r0 == -1) {
0x00024650 cmpeq r1, -1 | __asm ("cmpeq r1, -1");
| }
0x00024654 it eq |
| if (r0 == -1) {
0x00024656 vstreq d8, [r4, 0x68] | __asm ("vstreq d8, [r4, 0x68]");
| }
| if (r0 == -1) {
0x0002465a beq 0x24666 | goto label_156;
| }
0x0002465c adds r3, r3, r1 | r3 += r1;
0x0002465e adc.w r2, r2, r0 | __asm ("adc.w r2, r2, r0");
0x00024662 strd r3, r2, [r4, 0x68] | __asm ("strd r3, r2, [r4, 0x68]");
| }
| label_156:
0x00024666 ldrd r3, r2, [r4, 0x78] | __asm ("ldrd r3, r2, [r4, 0x78]");
0x0002466a cmp.w r2, -1 |
0x0002466e it eq |
| if (r2 == -1) {
0x00024670 cmpeq r3, -1 | __asm ("cmpeq r3, -1");
| }
| if (r2 != -1) {
0x00024674 beq 0x24696 |
0x00024676 ldrd r1, r0, [r5, 0x78] | __asm ("ldrd r1, r0, [r5, 0x78]");
0x0002467a cmp.w r0, -1 |
0x0002467e it eq |
| if (r0 == -1) {
0x00024680 cmpeq r1, -1 | __asm ("cmpeq r1, -1");
| }
0x00024684 it eq |
| if (r0 == -1) {
0x00024686 vstreq d8, [r4, 0x78] | __asm ("vstreq d8, [r4, 0x78]");
| }
| if (r0 == -1) {
0x0002468a beq 0x24696 | goto label_157;
| }
0x0002468c adds r3, r3, r1 | r3 += r1;
0x0002468e adc.w r2, r2, r0 | __asm ("adc.w r2, r2, r0");
0x00024692 strd r3, r2, [r4, 0x78] | __asm ("strd r3, r2, [r4, 0x78]");
| }
| label_157:
0x00024696 ldrd r3, r2, [r4, 0x80] | __asm ("ldrd r3, r2, [r4, 0x80]");
0x0002469a cmp.w r2, -1 |
0x0002469e it eq |
| if (r2 == -1) {
0x000246a0 cmpeq r3, -1 | __asm ("cmpeq r3, -1");
| }
| if (r2 != -1) {
0x000246a4 beq 0x246c6 |
0x000246a6 ldrd r1, r0, [r5, 0x80] | __asm ("ldrd r1, r0, [r5, 0x80]");
0x000246aa cmp.w r0, -1 |
0x000246ae it eq |
| if (r0 == -1) {
0x000246b0 cmpeq r1, -1 | __asm ("cmpeq r1, -1");
| }
0x000246b4 it eq |
| if (r0 == -1) {
0x000246b6 vstreq d8, [r4, 0x80] | __asm ("vstreq d8, [r4, 0x80]");
| }
0x000246b8 ldrh r0, [r4, 0x18] | r0 = *((r4 + 0x18));
| if (r0 == -1) {
0x000246ba beq 0x246c6 | goto label_158;
| }
0x000246bc adds r3, r3, r1 | r3 += r1;
0x000246be adc.w r2, r2, r0 | __asm ("adc.w r2, r2, r0");
0x000246c2 strd r3, r2, [r4, 0x80] | __asm ("strd r3, r2, [r4, 0x80]");
| }
| label_158:
0x000246c6 ldrd r3, r2, [r4, 0x88] | __asm ("ldrd r3, r2, [r4, 0x88]");
0x000246ca cmp.w r2, -1 |
0x000246ce it eq |
| if (r2 == -1) {
0x000246d0 cmpeq r3, -1 | __asm ("cmpeq r3, -1");
| }
| if (r2 != -1) {
0x000246d4 beq 0x246f6 |
0x000246d6 ldrd r1, r0, [r5, 0x88] | __asm ("ldrd r1, r0, [r5, 0x88]");
0x000246da cmp.w r0, -1 |
0x000246de it eq |
| if (r0 == -1) {
0x000246e0 cmpeq r1, -1 | __asm ("cmpeq r1, -1");
| }
0x000246e4 it eq |
| if (r0 == -1) {
0x000246e6 vstreq d8, [r4, 0x88] | __asm ("vstreq d8, [r4, 0x88]");
| }
| if (r0 == -1) {
0x000246ea beq 0x246f6 | goto label_159;
| }
0x000246ec adds r3, r3, r1 | r3 += r1;
0x000246ee adc.w r2, r2, r0 | __asm ("adc.w r2, r2, r0");
0x000246f2 strd r3, r2, [r4, 0x88] | __asm ("strd r3, r2, [r4, 0x88]");
| }
| label_159:
0x000246f6 ldrd r3, r2, [r4, 0x98] | __asm ("ldrd r3, r2, [r4, 0x98]");
0x000246fa cmp.w r2, -1 |
0x000246fe it eq |
| if (r2 == -1) {
0x00024700 cmpeq r3, -1 | __asm ("cmpeq r3, -1");
| }
| if (r2 != -1) {
0x00024704 beq 0x24726 |
0x00024706 ldrd r1, r0, [r5, 0x98] | __asm ("ldrd r1, r0, [r5, 0x98]");
0x0002470a cmp.w r0, -1 |
0x0002470e it eq |
| if (r0 == -1) {
0x00024710 cmpeq r1, -1 | __asm ("cmpeq r1, -1");
| }
0x00024714 it eq |
| if (r0 == -1) {
0x00024716 vstreq d8, [r4, 0x98] | __asm ("vstreq d8, [r4, 0x98]");
| }
| if (r0 == -1) {
0x0002471a beq 0x24726 | goto label_160;
| }
0x0002471c adds r3, r3, r1 | r3 += r1;
0x0002471e adc.w r2, r2, r0 | __asm ("adc.w r2, r2, r0");
0x00024722 strd r3, r2, [r4, 0x98] | __asm ("strd r3, r2, [r4, 0x98]");
| }
| label_160:
0x00024726 ldrd r3, r2, [r4, 0xa0] | __asm ("ldrd r3, r2, [r4, 0xa0]");
0x0002472a cmp.w r2, -1 |
0x0002472e it eq |
| if (r2 == -1) {
0x00024730 cmpeq r3, -1 | __asm ("cmpeq r3, -1");
| }
| if (r2 != -1) {
0x00024734 beq 0x24756 |
0x00024736 ldrd r1, r0, [r5, 0xa0] | __asm ("ldrd r1, r0, [r5, 0xa0]");
0x0002473a cmp.w r0, -1 |
0x0002473e it eq |
| if (r0 == -1) {
0x00024740 cmpeq r1, -1 | __asm ("cmpeq r1, -1");
| }
0x00024744 it eq |
| if (r0 == -1) {
0x00024746 vstreq d8, [r4, 0xa0] | __asm ("vstreq d8, [r4, 0xa0]");
| }
| if (r0 == -1) {
0x0002474a beq 0x24756 | goto label_161;
| }
0x0002474c adds r3, r3, r1 | r3 += r1;
0x0002474e adc.w r2, r2, r0 | __asm ("adc.w r2, r2, r0");
0x00024752 strd r3, r2, [r4, 0xa0] | __asm ("strd r3, r2, [r4, 0xa0]");
| }
| label_161:
0x00024756 ldrd r3, r2, [r4, 0xb0] | __asm ("ldrd r3, r2, [r4, 0xb0]");
0x0002475a cmp.w r2, -1 |
0x0002475e it eq |
| if (r2 == -1) {
0x00024760 cmpeq r3, -1 | __asm ("cmpeq r3, -1");
| }
| if (r2 != -1) {
0x00024764 beq 0x24786 |
0x00024766 ldrd r1, r0, [r5, 0xb0] | __asm ("ldrd r1, r0, [r5, 0xb0]");
0x0002476a cmp.w r0, -1 |
0x0002476e it eq |
| if (r0 == -1) {
0x00024770 cmpeq r1, -1 | __asm ("cmpeq r1, -1");
| }
0x00024774 it eq |
| if (r0 == -1) {
0x00024776 vstreq d8, [r4, 0xb0] | __asm ("vstreq d8, [r4, 0xb0]");
| }
| if (r0 == -1) {
0x0002477a beq 0x24786 | goto label_162;
| }
0x0002477c adds r3, r3, r1 | r3 += r1;
0x0002477e adc.w r2, r2, r0 | __asm ("adc.w r2, r2, r0");
0x00024782 strd r3, r2, [r4, 0xb0] | __asm ("strd r3, r2, [r4, 0xb0]");
| }
| label_162:
0x00024786 ldrd r3, r2, [r4, 0xb8] | __asm ("ldrd r3, r2, [r4, 0xb8]");
0x0002478a cmp.w r2, -1 |
0x0002478e it eq |
| if (r2 == -1) {
0x00024790 cmpeq r3, -1 | __asm ("cmpeq r3, -1");
| }
| if (r2 != -1) {
0x00024794 beq 0x247b6 |
0x00024796 ldrd r1, r0, [r5, 0xb8] | __asm ("ldrd r1, r0, [r5, 0xb8]");
0x0002479a cmp.w r0, -1 |
0x0002479e it eq |
| if (r0 == -1) {
0x000247a0 cmpeq r1, -1 | __asm ("cmpeq r1, -1");
| }
0x000247a4 it eq |
| if (r0 == -1) {
0x000247a6 vstreq d8, [r4, 0xb8] | __asm ("vstreq d8, [r4, 0xb8]");
| }
| if (r0 == -1) {
0x000247aa beq 0x247b6 | goto label_163;
| }
0x000247ac adds r3, r3, r1 | r3 += r1;
0x000247ae adc.w r2, r2, r0 | __asm ("adc.w r2, r2, r0");
0x000247b2 strd r3, r2, [r4, 0xb8] | __asm ("strd r3, r2, [r4, 0xb8]");
| }
| label_163:
0x000247b6 ldrd r3, r2, [r4, 0xc0] | __asm ("ldrd r3, r2, [r4, 0xc0]");
0x000247ba cmp.w r2, -1 |
0x000247be it eq |
| if (r2 == -1) {
0x000247c0 cmpeq r3, -1 | __asm ("cmpeq r3, -1");
| }
| if (r2 != -1) {
0x000247c4 beq 0x247e6 |
0x000247c6 ldrd r1, r0, [r5, 0xc0] | __asm ("ldrd r1, r0, [r5, 0xc0]");
0x000247ca cmp.w r0, -1 |
0x000247ce it eq |
| if (r0 == -1) {
0x000247d0 cmpeq r1, -1 | __asm ("cmpeq r1, -1");
| }
0x000247d4 it eq |
| if (r0 == -1) {
0x000247d6 vstreq d8, [r4, 0xc0] | __asm ("vstreq d8, [r4, 0xc0]");
| }
| if (r0 == -1) {
0x000247da beq 0x247e6 | goto label_164;
| }
0x000247dc adds r3, r3, r1 | r3 += r1;
0x000247de adc.w r2, r2, r0 | __asm ("adc.w r2, r2, r0");
0x000247e2 strd r3, r2, [r4, 0xc0] | __asm ("strd r3, r2, [r4, 0xc0]");
| }
| label_164:
0x000247e6 ldrd r3, r2, [r4, 0xc8] | __asm ("ldrd r3, r2, [r4, 0xc8]");
0x000247ea cmp.w r2, -1 |
0x000247ee it eq |
| if (r2 == -1) {
0x000247f0 cmpeq r3, -1 | __asm ("cmpeq r3, -1");
| }
| if (r2 != -1) {
0x000247f4 beq 0x24816 |
0x000247f6 ldrd r1, r0, [r5, 0xc8] | __asm ("ldrd r1, r0, [r5, 0xc8]");
0x000247fa cmp.w r0, -1 |
0x000247fe it eq |
| if (r0 == -1) {
0x00024800 cmpeq r1, -1 | __asm ("cmpeq r1, -1");
| }
0x00024804 it eq |
| if (r0 == -1) {
0x00024806 vstreq d8, [r4, 0xc8] | __asm ("vstreq d8, [r4, 0xc8]");
| }
| if (r0 == -1) {
0x0002480a beq 0x24816 | goto label_165;
| }
0x0002480c adds r3, r3, r1 | r3 += r1;
0x0002480e adc.w r2, r2, r0 | __asm ("adc.w r2, r2, r0");
0x00024812 strd r3, r2, [r4, 0xc8] | __asm ("strd r3, r2, [r4, 0xc8]");
| }
| label_165:
0x00024816 ldrd r3, r2, [r4, 0xd0] | __asm ("ldrd r3, r2, [r4, 0xd0]");
0x0002481a cmp.w r2, -1 |
0x0002481e it eq |
| if (r2 == -1) {
0x00024820 cmpeq r3, -1 | __asm ("cmpeq r3, -1");
| }
| if (r2 != -1) {
0x00024824 beq 0x24846 |
0x00024826 ldrd r1, r0, [r5, 0xd0] | __asm ("ldrd r1, r0, [r5, 0xd0]");
0x0002482a cmp.w r0, -1 |
0x0002482e it eq |
| if (r0 == -1) {
0x00024830 cmpeq r1, -1 | __asm ("cmpeq r1, -1");
| }
0x00024834 it eq |
| if (r0 == -1) {
0x00024836 vstreq d8, [r4, 0xd0] | __asm ("vstreq d8, [r4, 0xd0]");
| }
| if (r0 == -1) {
0x0002483a beq 0x24846 | goto label_166;
| }
0x0002483c adds r3, r3, r1 | r3 += r1;
0x0002483e adc.w r2, r2, r0 | __asm ("adc.w r2, r2, r0");
0x00024842 strd r3, r2, [r4, 0xd0] | __asm ("strd r3, r2, [r4, 0xd0]");
| }
| label_166:
0x00024846 ldrd r3, r2, [r4, 0x50] | __asm ("ldrd r3, r2, [r4, 0x50]");
0x0002484a cmp.w r2, -1 |
0x0002484e it eq |
| if (r2 == -1) {
0x00024850 cmpeq r3, -1 | __asm ("cmpeq r3, -1");
| }
| if (r2 != -1) {
0x00024854 beq 0x24876 |
0x00024856 ldrd r1, r0, [r5, 0x50] | __asm ("ldrd r1, r0, [r5, 0x50]");
0x0002485a cmp.w r0, -1 |
0x0002485e it eq |
| if (r0 == -1) {
0x00024860 cmpeq r1, -1 | __asm ("cmpeq r1, -1");
| }
0x00024864 it eq |
| if (r0 == -1) {
0x00024866 vstreq d8, [r4, 0x50] | __asm ("vstreq d8, [r4, 0x50]");
| }
0x00024868 ldrh r4, [r2, 0x18] | r4 = *((r2 + 0x18));
| if (r0 == -1) {
0x0002486a beq 0x24876 | goto label_167;
| }
0x0002486c adds r3, r3, r1 | r3 += r1;
0x0002486e adc.w r2, r2, r0 | __asm ("adc.w r2, r2, r0");
0x00024872 strd r3, r2, [r4, 0x50] | __asm ("strd r3, r2, [r4, 0x50]");
| }
| label_167:
0x00024876 ldrd r3, r2, [r4, 0x58] | __asm ("ldrd r3, r2, [r4, 0x58]");
0x0002487a cmp.w r2, -1 |
0x0002487e it eq |
| if (r2 == -1) {
0x00024880 cmpeq r3, -1 | __asm ("cmpeq r3, -1");
| }
| if (r2 != -1) {
0x00024884 beq 0x248a6 |
0x00024886 ldrd r1, r0, [r5, 0x58] | __asm ("ldrd r1, r0, [r5, 0x58]");
0x0002488a cmp.w r0, -1 |
0x0002488e it eq |
| if (r0 == -1) {
0x00024890 cmpeq r1, -1 | __asm ("cmpeq r1, -1");
| }
0x00024894 it eq |
| if (r0 == -1) {
0x00024896 vstreq d8, [r4, 0x58] | __asm ("vstreq d8, [r4, 0x58]");
| }
| if (r0 == -1) {
0x0002489a beq 0x248a6 | goto label_168;
| }
0x0002489c adds r3, r3, r1 | r3 += r1;
0x0002489e adc.w r2, r2, r0 | __asm ("adc.w r2, r2, r0");
0x000248a0 lsls r0, r0, 8 | r0 <<= 8;
0x000248a2 strd r3, r2, [r4, 0x58] | __asm ("strd r3, r2, [r4, 0x58]");
| }
| label_168:
0x000248a6 ldrd r3, r2, [r4, 0x60] | __asm ("ldrd r3, r2, [r4, 0x60]");
0x000248aa cmp.w r2, -1 |
0x000248ae it eq |
| if (r2 == -1) {
0x000248b0 cmpeq r3, -1 | __asm ("cmpeq r3, -1");
| }
| if (r2 != -1) {
0x000248b4 beq 0x248d6 |
0x000248b6 ldrd r1, r0, [r5, 0x60] | __asm ("ldrd r1, r0, [r5, 0x60]");
0x000248ba cmp.w r0, -1 |
0x000248be it eq |
| if (r0 == -1) {
0x000248c0 cmpeq r1, -1 | __asm ("cmpeq r1, -1");
| }
0x000248c4 it eq |
| if (r0 == -1) {
0x000248c6 vstreq d8, [r4, 0x60] | __asm ("vstreq d8, [r4, 0x60]");
| }
| if (r0 == -1) {
0x000248ca beq 0x248d6 | goto label_169;
| }
0x000248cc adds r3, r3, r1 | r3 += r1;
0x000248ce adc.w r2, r2, r0 | __asm ("adc.w r2, r2, r0");
0x000248d2 strd r3, r2, [r4, 0x60] | __asm ("strd r3, r2, [r4, 0x60]");
| }
| label_169:
0x000248d6 vldr d16, [r4, 0x70] | __asm ("vldr d16, [r4, 0x70]");
0x000248da vcmpe.f64 d16, 0 | __asm ("vcmpe.f64 d16, 0");
0x000248de vmrs apsr_nzcv, fpscr | __asm ("vmrs apsr_nzcv, fpscr");
| if (r3 >= r3) {
0x000248e2 blt 0x248fa |
0x000248e4 vldr d17, [r5, 0x70] | __asm ("vldr d17, [r5, 0x70]");
0x000248e8 vcmpe.f64 d17, 0 | __asm ("vcmpe.f64 d17, 0");
0x000248ec vmrs apsr_nzcv, fpscr | __asm ("vmrs apsr_nzcv, fpscr");
| if (r3 < r3) {
0x000248f0 blt 0x249ec | goto label_170;
| }
0x000248f2 vadd.f64 d16, d16, d17 | __asm ("vadd.f64 d16, d16, d17");
0x000248f6 vstr d16, [r4, 0x70] | __asm ("vstr d16, [r4, 0x70]");
| }
| label_57:
0x000248fa vldr d16, [r4, 0x40] | __asm ("vldr d16, [r4, 0x40]");
0x000248fe vcmpe.f64 d16, 0 | __asm ("vcmpe.f64 d16, 0");
0x00024902 vmrs apsr_nzcv, fpscr | __asm ("vmrs apsr_nzcv, fpscr");
| if (r3 >= r3) {
0x00024906 blt 0x2491e |
0x00024908 vldr d17, [r5, 0x40] | __asm ("vldr d17, [r5, 0x40]");
0x0002490c vcmpe.f64 d17, 0 | __asm ("vcmpe.f64 d17, 0");
0x00024910 vmrs apsr_nzcv, fpscr | __asm ("vmrs apsr_nzcv, fpscr");
| if (r3 < r3) {
0x00024914 blt 0x249f2 | goto label_171;
| }
0x00024916 vadd.f64 d16, d16, d17 | __asm ("vadd.f64 d16, d16, d17");
0x0002491a vstr d16, [r4, 0x40] | __asm ("vstr d16, [r4, 0x40]");
| }
| label_58:
0x0002491e vldr d16, [r4, 0x48] | __asm ("vldr d16, [r4, 0x48]");
0x00024922 vcmpe.f64 d16, 0 | __asm ("vcmpe.f64 d16, 0");
0x00024926 vmrs apsr_nzcv, fpscr | __asm ("vmrs apsr_nzcv, fpscr");
| if (r3 >= r3) {
0x0002492a blt 0x24942 |
0x0002492c vldr d17, [r5, 0x48] | __asm ("vldr d17, [r5, 0x48]");
0x00024930 vcmpe.f64 d17, 0 | __asm ("vcmpe.f64 d17, 0");
0x00024934 vmrs apsr_nzcv, fpscr | __asm ("vmrs apsr_nzcv, fpscr");
| if (r3 < r3) {
0x00024938 blt 0x249f8 | goto label_172;
| }
0x0002493a vadd.f64 d16, d16, d17 | __asm ("vadd.f64 d16, d16, d17");
0x0002493e vstr d16, [r4, 0x48] | __asm ("vstr d16, [r4, 0x48]");
| }
| label_59:
0x00024942 mov r0, r5 | r0 = r5;
0x00024944 bl 0x2087c | fcn_0002087c (r0);
0x00024948 mov r1, r7 | r1 = r7;
0x0002494a sub.w r0, sb, 0x38 | r0 = sb - 0x38;
0x0002494e bl 0x212b0 | zbx_vector_proc_data_ptr_remove ();
0x00024952 ldr.w r3, [r8, 4] | r3 = *((r8 + 4));
0x00024956 ldr.w r6, [r8] | r6 = *(r8);
0x00024958 str r0, [r0] | *(r0) = r0;
0x0002495a cmp r3, r7 |
| if (r3 > r7) {
0x0002495c bgt.w 0x24618 | goto label_52;
| }
| label_155:
0x00024960 cmp r3, sl |
| if (r3 > sl) {
0x00024962 bgt.w 0x2455c | goto label_53;
| }
| label_154:
0x00024966 mov sl, r3 | sl = r3;
0x00024968 b.w 0x23842 | goto label_54;
| label_96:
0x00024994 ldrd r8, r7, [sb] | __asm ("ldrd r8, r7, [sb]");
0x00024998 mov r0, r8 | r0 = r8;
0x0002499a blx 0xe1b8 | r0 = fcn_0000e1b8 ();
0x0002499e cmp r0, 0 |
| if (r0 == 0) {
0x000249a0 beq 0x24a5a | goto label_173;
| }
0x000249a2 ldr r3, [r0] | r3 = *(r0);
0x000249a4 mov r2, r5 | r2 = r5;
0x000249a6 ldr r0, [pc, 0x1c0] |
0x000249a8 mov.w r1, 0x798 | r1 = 0x798;
0x000249ac add r0, pc | r0 = 0x4951a;
0x000249ae bl 0x40ed8 | r0 = zbx_strdup2 ();
0x000249b2 mov r5, r0 | r5 = r0;
0x000249b4 b.w 0x2366e | goto label_55;
| label_152:
0x000249b8 mov r2, r0 | r2 = r0;
0x000249ba mov r1, r8 | r1 = r8;
0x000249bc mov r0, sl | r0 = sl;
0x000249be blx 0xe2c8 | r0 = fcn_0000e2c8 ();
0x000249c2 cmp r0, 0 |
| if (r0 != 0) {
0x000249c4 bne.w 0x244a6 | goto label_56;
| }
| label_151:
0x000249c8 ldr r0, [pc, 0x1a0] |
0x000249ca mov r3, sl | r3 = sl;
0x000249cc mov r2, r8 | r2 = r8;
0x000249ce movw r1, 0x76c | r1 = 0x76c;
0x000249d0 strb r4, [r5, 5] | *((r5 + 5)) = r4;
0x000249d2 add r0, pc | r0 = 0x49542;
0x000249d4 bl 0x40ed8 | zbx_strdup2 ();
0x000249d8 subw r3, fp, 0x85c | __asm ("subw r3, fp, 0x85c");
0x000249dc str r0, [r3] | *(r3) = r0;
0x000249de b 0x244a6 | goto label_56;
| label_170:
0x000249ec vstr d10, [r4, 0x70] | __asm ("vstr d10, [r4, 0x70]");
0x000249f0 b 0x248fa | goto label_57;
| label_171:
0x000249f2 vstr d10, [r4, 0x40] | __asm ("vstr d10, [r4, 0x40]");
0x000249f6 b 0x2491e | goto label_58;
| label_172:
0x000249f8 vstr d10, [r4, 0x48] | __asm ("vstr d10, [r4, 0x48]");
0x000249fc b 0x24942 | goto label_59;
| label_150:
0x00024a0e ldr.w sl, [sp, 0x1c] | sl = var_1ch;
0x00024a12 b 0x24480 | goto label_60;
| label_137:
0x00024a14 ldr r0, [sp, 0x1c] | r0 = var_1ch;
0x00024a16 blx 0xde30 | fcn_0000de30 ();
0x00024a1a cmp.w sl, 0 |
| if (sl != 0) {
0x00024a1e beq 0x24a26 |
0x00024a20 mov r0, sl | r0 = sl;
0x00024a22 blx 0xde30 | fcn_0000de30 ();
| }
| if (r5 != 0) {
0x00024a26 cbz r5, 0x24a2e |
0x00024a28 mov r0, r5 | r0 = r5;
0x00024a2a blx 0xde30 | fcn_0000de30 ();
| }
0x00024a2e movs r3, 0 | r3 = 0;
0x00024a30 mov r5, r3 | r5 = r3;
0x00024a32 mov sl, r3 | sl = r3;
0x00024a34 str r3, [sp, 0x1c] | var_1ch = r3;
0x00024a36 b.w 0x23e7e | goto label_61;
| label_173:
0x00024a5a ldr r1, [pc, 0x114] |
0x00024a5c mov r2, r8 | r2 = r8;
0x00024a5e mov r3, r7 | r3 = r7;
0x00024a60 add r1, pc | r1 = 0x495d6;
0x00024a62 bl 0x44820 | r0 = zbx_dsprintf ()
0x00024a66 mov r5, r0 | r5 = r0;
0x00024a68 b.w 0x2366e | goto label_55;
| label_136:
0x00024a6c ldr r1, [pc, 0x104] |
0x00024a6e mov r2, sl | r2 = sl;
0x00024a70 mov r3, r8 | r3 = r8;
0x00024a72 add r1, pc | r1 = 0x495ea;
0x00024a74 bl 0x44820 | r0 = zbx_dsprintf ()
0x00024a78 mov sl, r0 | sl = r0;
0x00024a7a b.w 0x2363c | goto label_62;
| label_153:
0x00024a90 ldr r3, [sp, 0x34] | r3 = var_34h;
0x00024a92 mov.w r1, 0x1000 | r1 = 0x1000;
0x00024a96 sub.w r5, r3, 0x1c | r5 = r3 - 0x1c;
0x00024a9a mov r0, r5 | r0 = r5;
0x00024a9c bl 0x3ab5c | zbx_json_initarray ();
0x00024aa0 b.w 0x23d7c | goto label_63;
| label_95:
0x00024ad0 ldrd sl, r8, [sb, -0x8] | __asm ("ldrd sl, r8, [sb, -0x8]");
0x00024ad4 b.w 0x23de6 | goto label_64;
| label_87:
0x00024b18 ldr.w sl, [sp, 0x10] | sl = var_10h;
0x00024b1c mov r4, sl | r4 = sl;
0x00024b1e mov r5, sl | r5 = sl;
0x00024b20 b.w 0x23490 | goto label_7;
| label_88:
0x00024b24 mov r5, r0 | r5 = r0;
0x00024b26 mov sl, r0 | sl = r0;
0x00024b28 b.w 0x23490 | goto label_7;
| label_99:
0x00024b50 mov r0, r4 | r0 = r4;
0x00024b52 blx 0xdc8c | fcn_0000dc8c ();
0x00024b56 b.w 0x236a2 | goto label_8;
0x00024b58 pop {r2, r5, r7, pc} |
| label_135:
0x00024b5a blx 0xe158 | fcn_0000e158 ();
0x00024b5e nop |
0x00024b60 add r4, sp, 0x368 | r4 += arg_368h;
0x00024b62 movs r2, r0 | r2 = r0;
| if (r2 != r0) {
| label_65:
0x00024b64 bne 0x24c4c | void (*0x24c4c)() ();
| }
0x00024b66 movs r2, r0 | r2 = r0;
| if (r2 != r0) {
0x00024b68 bne 0x24bfc | void (*0x24bfc)() ();
| }
0x00024b6a movs r2, r0 | r2 = r0;
| if (r2 != r0) {
0x00024b6c bne 0x24bb4 | goto label_174;
| }
0x00024b6e movs r2, r0 | r2 = r0;
| if (r2 < r0) {
0x00024b70 blt 0x24bb4 | goto label_174;
| }
0x00024b72 movs r2, r0 | r2 = r0;
| if (r2 < r0) {
0x00024b74 blt 0x24b94 | void (*0x24b94)() ();
| }
0x00024b76 movs r2, r0 | r2 = r0;
0x00024b78 add r3, sp, 0x360 | r3 += arg_360h;
0x00024b7a movs r2, r0 | r2 = r0;
| if (r2 == r0) {
0x00024b7c beq 0x24b8c | void (*0x24b8c)() ();
| }
0x00024b7e movs r2, r0 | r2 = r0;
| if (r2 != r0) {
0x00024b80 bne 0x24c50 | void (*0x24c50)() ();
| }
0x00024b82 movs r2, r0 | r2 = r0;
| if (r2 != r0) {
0x00024b84 bne 0x24b64 | goto label_65;
| }
0x00024b86 movs r2, r0 | r2 = r0;
| label_174:
0x00024bb4 str r0, [sp, 0x280] | *(arg_280h) = r0;
0x00024bb6 mov r6, r1 | r6 = r1;
0x00024bb8 add.w r8, sp, 0x8c | r8 += arg_8ch;
0x00024bbc add sl, pc | sl += pc;
0x00024bbe add sb, pc | sb += pc;
| }
; assembly | /* r2dec pseudo code output */
| /* /logs/firmware/patool_extraction/rootfs.img_unblob_extracted/rootfs.img_extract/0-80367616.squashfs_v4_le_extract/usr/sbin/zabbix_agentd @ 0x23344 */
| #include <stdint.h>
|
; (fcn) sym.PROC_GET () | void PROC_GET (int16_t arg_68h, int16_t arg_8ch, int16_t arg_a8h, int16_t arg_2880h, int16_t arg1, int16_t arg2) {
| int16_t var_85ch;
| int16_t var_858h;
| int16_t var_838h;
| int16_t var_834h;
| int16_t var_2880h;
| int16_t var_10h;
| int16_t var_14h;
| int16_t var_20h;
| int16_t var_24h;
| int16_t var_28h;
| int16_t var_2ch;
| int16_t var_30h;
| int16_t var_34h;
| int16_t var_38h;
| int16_t var_3ch;
| int16_t var_40h;
| r0 = arg1;
| r1 = arg2;
0x00023344 ldr.w r2, [pc, 0xcb0] | r2 = *(0x00023ff8);
0x00023348 ldr.w r3, [pc, 0xcb0] |
0x0002334c push.w {r4, r5, r6, r7, r8, sb, sl, fp, lr} |
0x00023350 mov r4, r0 | r4 = r0;
0x00023352 vpush {d8, d9, d10} | __asm ("vpush {d8, d9, d10}");
0x00023356 sub.w sp, sp, 0x2880 |
0x0002335a sub sp, 0x2c |
0x0002335c movs r0, 0 | r0 = 0;
0x0002335e add r2, pc | r2 += pc;
0x00023360 str r0, [sp, 0x24] | var_24h = r0;
0x00023362 ldr r3, [r2, r3] | r3 = *((r2 + r3));
0x00023364 add.w r6, sp, 0x2880 | r6 += arg_2880h;
0x00023368 addw fp, sp, 0x8a8 | __asm ("addw fp, sp, 0x8a8");
0x0002336c ldr.w r5, [pc, 0xc90] | r5 = *(0x00024000);
0x00023370 subw r2, fp, 0x85c | __asm ("subw r2, fp, 0x85c");
0x00023374 adds r6, 0x24 | r6 += 0x24;
0x00023376 ldr r3, [r3] | r3 = *(0x23ffc);
0x00023378 str r3, [r6] | *(r6) = r3;
0x0002337a mov.w r3, 0 | r3 = 0;
0x0002337e ldr r3, [r4, 4] | r3 = *((r4 + 4));
0x00023380 str r0, [r2] | *(r2) = r0;
0x00023382 subw r2, fp, 0x858 | __asm ("subw r2, fp, 0x858");
0x00023384 lsls r0, r3, 9 | r0 = r3 << 9;
0x00023386 add r5, pc | r5 += pc;
0x00023388 str r1, [sp, 0x38] | var_38h = r1;
0x0002338a cmp r3, 4 |
0x0002338c str r0, [r2] | *(r2) = r0;
| if (r3 > 4) {
0x0002338e bgt.w 0x2496c | goto label_6;
| }
0x00023392 cmp r3, 0 |
| if (r3 > 0) {
0x00023394 ble 0x23430 |
0x00023396 ldr r2, [r4, 8] | r2 = *((r4 + 8));
0x00023398 cmp r3, 1 |
0x0002339a ldr r1, [r2] | r1 = *(r2);
0x0002339c str r1, [sp, 0x30] | var_30h = r1;
| if (r3 == 1) {
0x0002339e beq.w 0x249e0 | goto label_7;
| }
0x000233a2 ldr r1, [r2, 4] | r1 = *((r2 + 4));
0x000233a4 str r1, [sp, 0x28] | var_28h = r1;
0x000233a6 cmp r1, 0 |
| if (r1 == 0) {
0x000233a8 beq.w 0x249fe | goto label_8;
| }
0x000233ac ldrb r1, [r1] | r1 = *(r1);
0x000233ae cmp r1, 0 |
| if (r1 != 0) {
0x000233b0 bne.w 0x24a3a | goto label_9;
| }
0x000233b4 cmp r3, 2 |
| if (r3 == 2) {
0x000233b6 beq.w 0x249e0 | goto label_7;
| }
0x000233ba ldr r1, [sp, 0x24] | r1 = var_24h;
0x000233bc str r1, [sp, 0x28] | var_28h = r1;
| label_0:
0x000233be ldr r1, [r2, 8] | r1 = *((r2 + 8));
0x000233c0 cmp r3, 3 |
0x000233c2 itt eq |
| if (r3 != 3) {
0x000233c4 moveq r3, 0 | r3 = 0;
| }
| if (r3 != 3) {
0x000233c6 streq r3, [sp, 0x20] | var_20h = r3;
| }
0x000233c8 str r1, [sp, 0x3c] | var_3ch = r1;
| if (r3 == 3) {
0x000233ca beq 0x2343a | goto label_1;
| }
0x000233cc ldr r6, [r2, 0xc] | r6 = *((r2 + 0xc));
0x000233ce movs r4, 0 | r4 = 0;
0x000233d0 cmp r6, 0 |
| if (r6 == 0) {
0x000233d2 beq.w 0x24aa4 | goto label_10;
| }
0x000233d4 strh r7, [r4, 0x1a] | *((r4 + 0x1a)) = r7;
| label_4:
0x000233d6 ldrb r3, [r6] | r3 = *(r6);
| if (r3 != 0) {
0x000233d8 cbz r3, 0x2341c |
0x000233da ldr.w r1, [pc, 0xc28] |
0x000233de mov r0, r6 | r0 = r6;
0x000233e0 add r1, pc | r1 = 0x473ea;
0x000233e2 blx 0xe3b0 | fcn_0000e3b0 ();
0x000233e6 str r0, [sp, 0x20] | var_20h = r0;
| if (r0 == 0) {
0x000233e8 cbz r0, 0x2341e | goto label_2;
| }
0x000233ea ldr.w r1, [pc, 0xc1c] |
0x000233ee mov r0, r6 | r0 = r6;
0x000233f0 add r1, pc | r1 = 0x473fe;
0x000233f2 blx 0xe3b0 | r0 = fcn_0000e3b0 ();
0x000233f6 cmp r0, 0 |
| if (r0 == 0) {
0x000233f8 beq.w 0x24a88 | goto label_11;
| }
0x000233fc ldr.w r1, [pc, 0xc0c] | r1 = *(0x0002400c);
0x00023400 mov r0, r6 | r0 = r6;
0x00023402 add r1, pc | r1 += pc;
0x00023404 blx 0xe3b0 | r0 = fcn_0000e3b0 ();
0x00023408 cmp r0, 0 |
| if (r0 != 0) {
0x0002340a bne.w 0x24ad8 | goto label_12;
| }
0x0002340c strh r5, [r4, 0x1a] | *((r4 + 0x1a)) = r5;
0x0002340e ldr r3, [sp, 0x3c] | r3 = var_3ch;
| if (r3 != 0) {
0x00023410 cbz r3, 0x2341a |
0x00023412 ldrb r3, [r3] | r3 = *(r3);
0x00023414 cmp r3, 0 |
| if (r3 != 0) {
0x00023416 bne.w 0x24ad8 | goto label_12;
| }
| }
0x0002341a movs r3, 2 | r3 = 2;
| }
0x0002341c str r3, [sp, 0x20] | var_20h = r3;
| if (r4 == 0) {
| label_2:
0x0002341e cbz r4, 0x2343a | goto label_1;
| }
| label_3:
0x00023420 add r5, sp, 0x8c | r5 += arg_8ch;
0x00023422 mov.w r1, 0x1000 | r1 = 0x1000;
0x00023426 mov r0, r5 | r0 = r5;
0x00023428 bl 0x3ab5c | zbx_json_initarray ();
0x0002342c b.w 0x23d88 | void (*0x23d88)() ();
| }
0x00023430 ldr r3, [sp, 0x24] | r3 = var_24h;
0x00023432 str r3, [sp, 0x3c] | var_3ch = r3;
0x00023434 str r3, [sp, 0x28] | var_28h = r3;
0x00023436 str r3, [sp, 0x20] | var_20h = r3;
0x00023438 str r3, [sp, 0x30] | var_30h = r3;
| do {
| label_1:
0x0002343a ldr.w r0, [pc, 0xbd4] | r0 = *(0x00024010);
0x0002343e add r0, pc | r0 += pc;
0x00023440 blx 0xdbdc | fcn_0000dbdc ();
0x00023444 str r0, [sp, 0x14] | var_14h = r0;
0x00023446 cmp r0, 0 |
| if (r0 == 0) {
0x00023448 beq.w 0x24b2c | goto label_13;
| }
0x0002344c vmov.i32 d16, 0 | __asm ("vmov.i32 d16, 0");
0x00023450 subw r3, fp, 0x834 | __asm ("subw r3, fp, 0x834");
0x00023454 ldr.w r2, [pc, 0xbbc] | r2 = *(0x24014);
0x00023458 movs r1, 0 | r1 = 0;
0x0002345a add.w sb, sp, 0x68 | sb += arg_68h;
0x0002345e mov r4, r1 | r4 = r1;
0x00023460 vst1.32 {d16}, [r3] | __asm ("vst1.32 {d16}, [r3]");
0x00023464 subw r3, fp, 0x838 | __asm ("subw r3, fp, 0x838");
0x00023468 str r1, [r3] | *(r3) = r1;
0x0002346a mov sl, r1 | sl = r1;
0x0002346c ldr r2, [r5, r2] | r2 = *((r5 + r2));
0x0002346e str r1, [sp, 0x2c] | var_2ch = r1;
0x00023470 str r2, [r3, 0xc] | *((r3 + 0xc)) = r2;
0x00023472 ldr.w r2, [pc, 0xba4] | r2 = *(0x2401a);
0x00023474 cmp r3, 0xa4 |
0x00023476 ldr r2, [r5, r2] | r2 = *((r5 + r2));
0x00023478 str r2, [r3, 0x10] | *((r3 + 0x10)) = r2;
0x0002347a ldr.w r2, [pc, 0xba0] | r2 = *(0x2401e);
0x0002347e ldr r2, [r5, r2] | r2 = *((r5 + r2));
0x00023480 mov r5, r1 | r5 = r1;
0x00023482 str r1, [sp, 0x10] | var_10h = r1;
0x00023484 str r2, [r3, 0x14] | *((r3 + 0x14)) = r2;
0x00023486 add r3, sp, 0xa8 | r3 += arg_a8h;
0x00023488 str r3, [sp, 0x34] | var_34h = r3;
0x0002348a sub.w r3, sb, 0xc | r3 = sb - 0xc;
0x0002348e str r3, [sp, 0x40] | var_40h = r3;
| label_6:
0x0002496c ldr r0, [r1, 0x28] | r0 = *((r1 + 0x28));
0x0002496e mov r4, r1 | r4 = r1;
0x00024970 ldr r3, [pc, 0x1ec] |
0x00024972 movs r2, 0 | r2 = 0;
0x00024974 movw r1, 0x6fc | r1 = 0x6fc;
0x00024978 orr r0, r0, 0x20 | r0 |= 0x20;
0x0002497c str r0, [r4, 0x28] | *((r4 + 0x28)) = r0;
0x0002497e add r3, pc | r3 = 0x494e2;
0x00024980 ldr r0, [pc, 0x1e0] |
0x00024982 add r0, pc | r0 = 0x494ea;
0x00024984 bl 0x40ed8 | r0 = zbx_strdup2 ();
0x00024988 mov r3, r0 | r3 = r0;
| label_5:
0x0002498a ldr r2, [sp, 0x38] | r2 = var_38h;
0x0002498c movs r0, 1 | r0 = 1;
0x0002498e str r3, [r2, 0x20] | *((r2 + 0x20)) = r3;
0x00024990 b.w 0x23db6 | void (*0x23db6)() ();
| label_7:
0x000249e0 ldr r3, [sp, 0x24] | r3 = var_24h;
0x000249e2 str r3, [sp, 0x3c] | var_3ch = r3;
0x000249e4 str r3, [sp, 0x28] | var_28h = r3;
0x000249e6 str r3, [sp, 0x20] | var_20h = r3;
0x000249e8 b.w 0x2343a |
| } while (1);
| label_8:
0x000249fe cmp r3, 2 |
| if (r3 != 2) {
0x00024a00 bne.w 0x233be | goto label_0;
| }
0x00024a04 ldr r3, [sp, 0x28] | r3 = var_28h;
0x00024a06 str r3, [sp, 0x3c] | var_3ch = r3;
0x00024a08 str r3, [sp, 0x20] | var_20h = r3;
0x00024a0a b.w 0x2343a | goto label_1;
| label_9:
0x00024a3a blx 0xe3d4 | r0 = fcn_0000e3d4 ();
0x00024a3e mov r6, r0 | r6 = r0;
0x00024a40 ldrd r3, r0, [sp, 0x24] | __asm ("ldrd r3, r0, [var_24h]");
0x00024a44 str r3, [r6] | *(r6) = r3;
0x00024a46 blx 0xe3f8 | fcn_0000e3f8 ();
0x00024a4a str r0, [sp, 0x28] | var_28h = r0;
| if (r0 != 0) {
0x00024a4c cbz r0, 0x24aaa |
0x00024a4e ldr r3, [r4, 4] | r3 = *((r4 + 4));
0x00024a50 cmp r3, 2 |
| if (r3 > 2) {
0x00024a52 ble 0x24a7e |
0x00024a54 ldr r2, [r4, 8] | r2 = *((r4 + 8));
0x00024a56 b.w 0x233be | goto label_0;
| }
0x00024a7e ldr r3, [sp, 0x24] | r3 = var_24h;
0x00024a80 str r3, [sp, 0x3c] | var_3ch = r3;
0x00024a82 str r3, [sp, 0x20] | var_20h = r3;
0x00024a84 b.w 0x2343a | goto label_1;
| label_11:
0x00024a88 movs r3, 1 | r3 = 1;
0x00024a8a str r3, [sp, 0x20] | var_20h = r3;
0x00024a8c b.w 0x2341e | goto label_2;
| label_10:
0x00024aa4 str r6, [sp, 0x20] | var_20h = r6;
0x00024aa6 b.w 0x2343a | goto label_1;
| }
0x00024aaa ldr r3, [r6] | r3 = *(r6);
| if (r3 != 0) {
0x00024aac cbnz r3, 0x24af8 | goto label_14;
| }
0x00024aae ldr r2, [r4, 4] | r2 = *((r4 + 4));
0x00024ab0 cmp r2, 2 |
| if (r2 <= 2) {
0x00024ab2 ble.w 0x23420 | goto label_3;
| }
0x00024ab6 ldr r3, [r4, 8] | r3 = *((r4 + 8));
0x00024ab8 cmp r2, 3 |
0x00024aba ldr r1, [r3, 8] | r1 = *((r3 + 8));
0x00024abc str r1, [sp, 0x3c] | var_3ch = r1;
| if (r2 == 3) {
0x00024abe beq.w 0x23420 | goto label_3;
| }
0x00024ac2 ldr r6, [r3, 0xc] | r6 = *((r3 + 0xc));
0x00024ac4 movs r4, 1 | r4 = 1;
0x00024ac6 cmp r6, 0 |
| if (r6 != 0) {
0x00024ac8 bne.w 0x233d6 | goto label_4;
| }
0x00024acc b.w 0x23420 | goto label_3;
| label_12:
0x00024ad8 ldr r4, [sp, 0x38] | r4 = var_38h;
0x00024ada movs r2, 0 | r2 = 0;
0x00024adc ldr r3, [pc, 0x98] |
0x00024ade movw r1, 0x727 | r1 = 0x727;
0x00024ae2 ldr r0, [r4, 0x28] | r0 = *((r4 + 0x28));
0x00024ae4 add r3, pc | r3 = 0x49660;
0x00024ae6 orr r0, r0, 0x20 | r0 |= 0x20;
0x00024aea str r0, [r4, 0x28] | *((r4 + 0x28)) = r0;
0x00024aec ldr r0, [pc, 0x8c] |
0x00024aee add r0, pc | r0 = 0x4966e;
0x00024af0 bl 0x40ed8 | r0 = zbx_strdup2 ();
0x00024af4 mov r3, r0 | r3 = r0;
0x00024af6 b 0x2498a | goto label_5;
| label_14:
0x00024af8 ldr r2, [sp, 0x38] | r2 = var_38h;
0x00024afa ldr r3, [r2, 0x28] | r3 = *((r2 + 0x28));
0x00024afc orr r3, r3, 0x20 | r3 |= 0x20;
0x00024b00 str r3, [r2, 0x28] | *((r2 + 0x28)) = r3;
0x00024b02 ldr r0, [r6] | r0 = *(r6);
0x00024b04 bl 0x30b74 | zbx_strerror ();
0x00024b08 ldr r1, [pc, 0x74] |
0x00024b0a mov r2, r0 | r2 = r0;
0x00024b0c ldr r0, [sp, 0x28] | r0 = var_28h;
0x00024b0e add r1, pc | r1 = 0x49692;
0x00024b10 bl 0x44820 | r0 = zbx_dsprintf ()
0x00024b14 mov r3, r0 | r3 = r0;
0x00024b16 b 0x2498a | goto label_5;
| label_13:
0x00024b2c ldr r2, [sp, 0x38] | r2 = var_38h;
0x00024b2e ldr r3, [r2, 0x28] | r3 = *((r2 + 0x28));
0x00024b30 orr r3, r3, 0x20 | r3 |= 0x20;
0x00024b34 str r3, [r2, 0x28] | *((r2 + 0x28)) = r3;
0x00024b36 blx 0xe3d4 | r0 = fcn_0000e3d4 ();
0x00024b3a ldr r0, [r0] | r0 = *(r0);
0x00024b3c bl 0x30b74 | zbx_strerror ();
0x00024b40 ldr r1, [pc, 0x40] |
0x00024b42 mov r2, r0 | r2 = r0;
0x00024b44 ldr r0, [sp, 0x14] | r0 = var_14h;
0x00024b46 add r1, pc | r1 = 0x496ce;
0x00024b48 bl 0x44820 | r0 = zbx_dsprintf ()
0x00024b4c mov r3, r0 | r3 = r0;
0x00024b4e b 0x2498a | goto label_5;
| }
; assembly | /* r2dec pseudo code output */
| /* /logs/firmware/patool_extraction/rootfs.img_unblob_extracted/rootfs.img_extract/0-80367616.squashfs_v4_le_extract/usr/sbin/zabbix_agentd @ 0x22850 */
| #include <stdint.h>
|
; (fcn) sym.PROC_NUM () | void PROC_NUM (int16_t arg1, int16_t arg2) {
| int16_t var_bp_10h;
| int16_t var_bp_ch;
| int16_t var_4h;
| int16_t var_0h;
| int16_t var_sp_4h;
| int16_t var_8h;
| int16_t var_ch;
| int16_t var_10h;
| int16_t var_14h;
| int16_t var_28h;
| int16_t var_824h;
| int16_t var_828h;
| int16_t var_82ah;
| int8_t var_7h;
| int16_t var_1020h;
| int32_t var_0h_2;
| r0 = arg1;
| r1 = arg2;
0x00022850 ldr r2, [pc, 0x3d8] |
0x00022852 push.w {r4, r5, r6, r7, r8, sb, sl, fp, lr} |
0x00022856 mov r4, r0 | r4 = r0;
0x00022858 ldr r3, [pc, 0x3d4] | r3 = *(0x22c30);
0x0002285a sub.w sp, sp, 0x1020 |
0x0002285e add r2, pc | r2 = 0x4548e;
0x00022860 sub sp, 0xc |
0x00022862 ldr r5, [r4, 4] | r5 = *((r4 + 4));
0x00022864 add.w r0, sp, 0x1020 | r0 += var_1020h;
0x00022868 ldr r3, [r2, r3] |
0x0002286a adds r0, 4 | r0 += 4;
0x0002286c mov sb, r1 | sb = r1;
0x0002286e cmp r5, 4 |
0x00022870 ldr r3, [r3] | r3 = *(0x4548e);
0x00022872 str r3, [r0] | *(r0) = r3;
0x00022874 mov.w r3, 0 | r3 = 0;
| if (r5 > 4) {
0x00022878 bgt.w 0x22b02 | goto label_15;
| }
0x0002287c cmp r5, 0 |
| if (r5 > 0) {
0x0002287e ble 0x22942 |
0x00022880 ldr r6, [r4, 8] | r6 = *((r4 + 8));
0x00022882 cmp r5, 1 |
0x00022884 ldr r3, [r6] | r3 = *(r6);
0x00022886 str r3, [sp] | *(sp) = r3;
| if (r5 == 1) {
0x00022888 beq.w 0x22b28 | goto label_16;
| }
0x0002288c ldr.w sl, [r6, 4] | sl = *((r6 + 4));
0x00022890 cmp.w sl, 0 |
| if (sl == 0) {
0x00022894 beq.w 0x22b80 | goto label_17;
| }
0x00022898 ldrb.w r7, [sl] | r7 = *(sl);
0x0002289c cmp r7, 0 |
| if (r7 != 0) {
0x0002289e bne.w 0x22b62 | goto label_18;
| }
0x000228a2 cmp r5, 2 |
| if (r5 == 2) {
0x000228a4 beq.w 0x22b28 | goto label_16;
| }
0x000228a8 mov sl, r7 | sl = r7;
| label_10:
0x000228aa ldr r4, [r6, 8] | r4 = *((r6 + 8));
0x000228ac cmp r4, 0 |
| if (r4 == 0) {
0x000228ae beq.w 0x22b5e | goto label_19;
| }
0x000228b2 ldrb r3, [r4] | r3 = *(r4);
0x000228b4 cmp r3, 0 |
| if (r3 == 0) {
0x000228b6 beq.w 0x22b32 | goto label_20;
| }
0x000228ba ldr r1, [pc, 0x378] |
0x000228bc mov r0, r4 | r0 = r4;
0x000228be add r1, pc | r1 = 0x454f8;
0x000228c0 blx 0xe3b0 | r0 = fcn_0000e3b0 ();
0x000228c4 mov r3, r0 | r3 = r0;
0x000228c6 str r0, [sp, 0x10] | var_10h = r0;
0x000228c8 cmp r0, 0 |
| if (r0 == 0) {
0x000228ca beq.w 0x22b34 | goto label_9;
| }
0x000228ce ldr r1, [pc, 0x368] |
0x000228d0 mov r0, r4 | r0 = r4;
0x000228d2 add r1, pc | r1 = 0x45510;
0x000228d4 blx 0xe3b0 | r0 = fcn_0000e3b0 ();
0x000228d8 cmp r0, 0 |
| if (r0 == 0) {
0x000228da beq.w 0x22b9a | goto label_21;
| }
0x000228de ldr r1, [pc, 0x35c] |
0x000228e0 mov r0, r4 | r0 = r4;
0x000228e2 add r1, pc | r1 = 0x45524;
0x000228e4 blx 0xe3b0 | r0 = fcn_0000e3b0 ();
0x000228e8 cmp r0, 0 |
| if (r0 == 0) {
0x000228ea beq.w 0x22bc2 | goto label_22;
| }
0x000228ee ldr r1, [pc, 0x350] |
0x000228f0 mov r0, r4 | r0 = r4;
0x000228f2 add r1, pc | r1 = 0x45538;
0x000228f4 blx 0xe3b0 | r0 = fcn_0000e3b0 ();
0x000228f8 cmp r0, 0 |
| if (r0 == 0) {
0x000228fa beq.w 0x22bc8 | goto label_23;
| }
0x000228fe ldr r1, [pc, 0x344] |
0x00022900 mov r0, r4 | r0 = r4;
0x00022902 add r1, pc | r1 = 0x4554c;
0x00022904 blx 0xe3b0 | r0 = fcn_0000e3b0 ();
0x00022908 cmp r0, 0 |
| if (r0 == 0) {
0x0002290a beq.w 0x22bf0 | goto label_24;
| }
0x0002290e ldr r1, [pc, 0x338] |
0x00022910 mov r0, r4 | r0 = r4;
0x00022912 add r1, pc | r1 = 0x45560;
0x00022914 blx 0xe3b0 | fcn_0000e3b0 ();
0x00022918 movs r3, 5 | r3 = 5;
0x0002291a cmp r0, 0 |
| if (r0 == 0) {
0x0002291c beq.w 0x22b32 | goto label_20;
| }
0x00022920 ldr.w r0, [sb, 0x28] | r0 = *((sb + 0x28));
0x00022924 movs r2, 0 | r2 = 0;
0x00022926 ldr r3, [pc, 0x324] |
0x00022928 movw r1, 0x3a5 | r1 = 0x3a5;
0x0002292c orr r0, r0, 0x20 | r0 |= 0x20;
0x00022930 str.w r0, [sb, 0x28] | __asm ("str.w r0, [sb, 0x28]");
0x00022934 add r3, pc | r3 = 0x45586;
0x00022936 ldr r0, [pc, 0x318] |
0x00022938 add r0, pc | r0 = 0x4558e;
0x0002293a bl 0x40ed8 | r0 = zbx_strdup2 ();
0x0002293e mov r3, r0 | r3 = r0;
0x00022940 b 0x22b20 | goto label_14;
| }
0x00022942 movs r3, 0 | r3 = 0;
0x00022944 mov sl, r3 | sl = r3;
0x00022946 str r3, [sp] | *(sp) = r3;
0x00022948 str r3, [sp, 0x10] | var_10h = r3;
0x0002294a str r3, [sp, 8] | var_8h = r3;
| label_5:
0x0002294c ldr r0, [pc, 0x304] |
0x0002294e add r0, pc | r0 = 0x455a6;
0x00022950 blx 0xdbdc | r0 = fcn_0000dbdc ();
0x00022954 mov r8, r0 | r8 = r0;
0x00022956 cmp r0, 0 |
| if (r0 == 0) {
0x00022958 beq.w 0x22bfe | goto label_25;
| }
0x0002295c ldr r3, [pc, 0x2f8] |
0x0002295e add.w fp, sp, 0x28 |
0x00022962 sub.w r7, fp, 4 | r7 -= var_4h;
0x00022966 add r3, pc | r3 = 0x455c2;
0x00022968 str r3, [sp, 4] | var_sp_4h = r3;
0x0002296a movs r3, 0 | r3 = 0;
0x0002296c mov r6, r3 | r6 = r3;
0x0002296e mov r5, r3 | r5 = r3;
0x00022970 str r3, [sp, 0xc] | var_ch = r3;
| label_0:
0x00022972 mov r0, r8 | r0 = r8;
0x00022974 blx 0xe28c | r0 = fcn_0000e28c ();
0x00022978 mov r4, r0 | r4 = r0;
0x0002297a cmp r0, 0 |
| if (r0 == 0) {
0x0002297c beq.w 0x22aec | goto label_8;
| }
| if (r6 != 0) {
| label_2:
0x00022980 cbz r6, 0x22988 |
| label_7:
0x00022982 mov r0, r6 | r0 = r6;
0x00022984 blx 0xdc8c | fcn_0000dc8c ();
| }
| if (r5 == 0) {
0x00022988 cbz r5, 0x22990 | goto label_26;
| }
0x0002298a mov r0, r5 | r0 = r5;
0x0002298c blx 0xdc8c | fcn_0000dc8c ();
| do {
| label_26:
0x00022990 adds r4, 0x13 | r4 += 0x13;
0x00022992 movs r2, 0xa | r2 = 0xa;
0x00022994 movs r1, 0 | r1 = 0;
0x00022996 mov r0, r4 | r0 = r4;
0x00022998 blx 0xdfe8 | r0 = waitpid ();
| if (r0 != 0) {
0x0002299c cbnz r0, 0x229ec | goto label_27;
| }
0x0002299e mov r0, r8 | r0 = r8;
0x000229a0 blx 0xe28c | r0 = fcn_0000e28c ();
0x000229a4 mov r4, r0 | r4 = r0;
0x000229a6 cmp r0, 0 |
0x000229a8 bne 0x22990 |
| } while (r0 != 0);
| label_3:
0x000229aa mov r0, r8 | r0 = r8;
0x000229ac blx 0xe0d0 | fcn_0000e0d0 ();
0x000229b0 ldr r3, [sp, 0xc] | r3 = var_ch;
0x000229b2 asrs r1, r3, 0x1f | r1 = r3 >> 0x1f;
| label_6:
0x000229b4 ldr.w r2, [sb, 0x28] | r2 = *((sb + 0x28));
0x000229b8 movs r0, 0 | r0 = 0;
0x000229ba strd r3, r1, [sb, 8] | __asm ("strd r3, r1, [sb, 8]");
0x000229be orr r2, r2, 1 | r2 |= 1;
0x000229c2 str.w r2, [sb, 0x28] | __asm ("str.w r2, [sb, 0x28]");
| label_4:
0x000229c6 ldr r2, [pc, 0x294] |
0x000229c8 add.w r1, sp, 0x1020 | r1 += var_1020h;
0x000229cc ldr r3, [pc, 0x260] | r3 = *(0x22c30);
0x000229ce adds r1, 4 | r1 += 4;
0x000229d0 add r2, pc | r2 = 0x45632;
0x000229d2 ldr r3, [r2, r3] | r3 = *(0x45632);
0x000229d4 ldr r2, [r3] | r2 = *(0x45632);
0x000229d6 ldr r3, [r1] | r3 = *(r1);
0x000229d8 eors r2, r3 | r2 ^= r3;
0x000229da mov.w r3, 0 | r3 = 0;
| if (r2 != r3) {
0x000229de bne.w 0x22bfa | goto label_28;
| }
0x000229e2 add.w sp, sp, 0x1020 |
0x000229e6 add sp, 0xc |
0x000229e8 pop.w {r4, r5, r6, r7, r8, sb, sl, fp, pc} |
| label_27:
0x000229ec ldr r5, [pc, 0x270] |
0x000229ee mov r3, r4 | r3 = r4;
0x000229f0 ldr r2, [sp, 4] | r2 = var_sp_4h;
0x000229f2 mov.w r1, 0x800 | r1 = 0x800;
0x000229f6 mov r0, r7 | r0 = r7;
0x000229f8 add r5, pc | r5 = 0x4565c;
0x000229fa bl 0x43f38 | zbx_snprintf ();
0x000229fe mov r1, r5 | r1 = r5;
0x00022a00 mov r0, r7 | r0 = r7;
0x00022a02 blx 0xdf90 | r0 = fcn_0000df90 ();
0x00022a06 mov r6, r0 | r6 = r0;
0x00022a08 cmp r0, 0 |
| if (r0 == 0) {
0x00022a0a beq.w 0x22bf6 | goto label_29;
| }
0x00022a0e ldr r2, [pc, 0x254] |
0x00022a10 mov r3, r4 | r3 = r4;
0x00022a12 mov.w r1, 0x800 | r1 = 0x800;
0x00022a16 mov r0, r7 | r0 = r7;
0x00022a18 add r2, pc | r2 = 0x45682;
0x00022a1a bl 0x43f38 | zbx_snprintf ();
0x00022a1e mov r1, r5 | r1 = r5;
0x00022a20 mov r0, r7 | r0 = r7;
0x00022a22 blx 0xdf90 | r0 = fcn_0000df90 ();
0x00022a26 mov r5, r0 | r5 = r0;
0x00022a28 cmp r0, 0 |
| if (r0 == 0) {
0x00022a2a beq 0x22972 | goto label_0;
| }
0x00022a2c mov r1, r0 | r1 = r0;
0x00022a2e ldr r2, [sp] | r2 = *(sp);
0x00022a30 mov r0, r6 | r0 = r6;
0x00022a32 bl 0x20980 | fcn_00020980 (r0, r1, r2);
0x00022a36 adds r0, 1 | r0++;
| if (r0 == 1) {
0x00022a38 beq.w 0x22b4e | goto label_12;
| }
0x00022a3c cmp.w sl, 0 |
| if (sl != 0) {
0x00022a40 beq 0x22a68 |
0x00022a42 sub.w r4, fp, 0x10 | r4 -= var_bp_10h;
0x00022a46 movs r1, 0 | r1 = 0;
0x00022a48 mov r2, r4 | r2 = r4;
0x00022a4a mov r0, r5 | r0 = r5;
0x00022a4c bl 0x21040 | r0 = fcn_00021040 (r0, r1, r2, r3);
0x00022a50 cmp r0, 0 |
| if (r0 != 0) {
0x00022a52 bne 0x22b4e | goto label_12;
| }
0x00022a54 ldr r3, [fp, -0xc] | r3 = var_bp_ch;
0x00022a58 ldr.w r1, [sl, 8] | r1 = *((sl + 8));
0x00022a5c ldr r2, [fp, -0x10] | r2 = var_bp_10h;
0x00022a60 cmp r0, r3 |
0x00022a62 it eq |
| if (r0 == r3) {
0x00022a64 cmpeq r1, r2 | __asm ("cmpeq r1, r2");
| }
| if (r0 != r3) {
0x00022a66 bne 0x22b4e | goto label_12;
| }
| }
0x00022a68 ldr r1, [sp, 8] | r1 = var_8h;
0x00022a6a mov r0, r6 | r0 = r6;
0x00022a6c bl 0x20a18 | fcn_00020a18 (r0, r1);
0x00022a70 adds r0, 1 | r0++;
| if (r0 == 1) {
0x00022a72 beq.w 0x22972 | goto label_0;
| }
0x00022a76 ldr r3, [sp, 0x10] | r3 = var_10h;
| if (r3 == 0) {
0x00022a78 cbz r3, 0x22ad8 | goto label_11;
| }
0x00022a7a mov r0, r5 | r0 = r5;
0x00022a7c addw r4, sp, 0x824 | __asm ("addw r4, var_824h");
0x00022a80 blx 0xdc5c | fcn_0000dc5c ();
0x00022a84 movw r3, 0x7453 |
0x00022a88 str r6, [sp, 0x14] | var_14h = r6;
0x00022a8a movt r3, 0x7461 | r3 = 0x74617453;
0x00022a8e mov r6, r5 | r6 = r5;
0x00022a90 mov r5, r3 | r5 = r3;
| do {
| label_1:
0x00022a92 mov r2, r6 | r2 = r6;
0x00022a94 mov.w r1, 0x800 | r1 = 0x800;
0x00022a98 mov r0, r4 | r0 = r4;
0x00022a9a blx 0xdc98 | r0 = fcn_0000dc98 ();
0x00022a9e cmp r0, 0 |
| if (r0 == 0) {
0x00022aa0 beq 0x22b4a | goto label_30;
| }
0x00022aa2 ldr r3, [r4] | r3 = *(r4);
0x00022aa4 cmp r3, r5 |
0x00022aa6 bne 0x22a92 |
| } while (r3 != r5);
0x00022aa8 ldrh.w r1, [sp, 0x828] | r1 = var_828h;
0x00022aac movw r3, 0x3a65 | r3 = 0x3a65;
0x00022ab0 cmp r1, r3 |
| if (r1 != r3) {
0x00022ab2 bne 0x22a92 | goto label_1;
| }
0x00022ab4 ldrb.w r3, [sp, 0x82a] | r3 = var_82ah;
0x00022ab8 cmp r3, 9 |
| if (r3 != 9) {
0x00022aba bne 0x22a92 | goto label_1;
| }
0x00022abc ldr r2, [sp, 0x10] | r2 = var_10h;
0x00022abe mov r5, r6 | r5 = r6;
0x00022ac0 ldrb r3, [r4, 7] | r3 = var_7h;
0x00022ac2 ldr r6, [sp, 0x14] | r6 = var_14h;
0x00022ac4 subs r2, 2 | r2 -= 2;
0x00022ac6 cmp r2, 3 |
| if (r2 > 3) {
0x00022ac8 bhi.w 0x22c24 | goto label_31;
| }
| /* switch table (4 cases) at 0x22ad0 */
0x00022acc tbb [pc, r2] | __asm ("tbb [0x00022ad4]");
0x00022ad4 cmp r3, 0x54 |
| if (r3 != 0x54) {
0x00022ad6 bne 0x22b4e | goto label_12;
| }
| label_11:
0x00022ad8 ldr r3, [sp, 0xc] | r3 = var_ch;
0x00022ada mov r0, r8 | r0 = r8;
0x00022adc adds r3, 1 | r3++;
0x00022ade str r3, [sp, 0xc] | var_ch = r3;
0x00022ae0 blx 0xe28c | r0 = fcn_0000e28c ();
0x00022ae4 mov r4, r0 | r4 = r0;
0x00022ae6 cmp r0, 0 |
| if (r0 != 0) {
0x00022ae8 bne.w 0x22980 | goto label_2;
| }
| if (r6 != 0) {
| label_8:
0x00022aec cbz r6, 0x22af4 |
0x00022aee mov r0, r6 | r0 = r6;
0x00022af0 blx 0xdc8c | fcn_0000dc8c ();
| }
0x00022af4 cmp r5, 0 |
| if (r5 == 0) {
0x00022af6 beq.w 0x229aa | goto label_3;
| }
0x00022afa mov r0, r5 | r0 = r5;
0x00022afc blx 0xdc8c | fcn_0000dc8c ();
0x00022b00 b 0x229aa | goto label_3;
| label_15:
0x00022b02 ldr r0, [r1, 0x28] | r0 = *((r1 + 0x28));
0x00022b04 movs r2, 0 | r2 = 0;
0x00022b06 ldr r3, [pc, 0x160] |
0x00022b08 movw r1, 0x37b | r1 = 0x37b;
0x00022b0c orr r0, r0, 0x20 | r0 |= 0x20;
0x00022b10 str.w r0, [sb, 0x28] | __asm ("str.w r0, [sb, 0x28]");
0x00022b14 add r3, pc | r3 = 0x45782;
0x00022b16 ldr r0, [pc, 0x154] |
0x00022b18 add r0, pc | r0 = 0x4578a;
0x00022b1a bl 0x40ed8 | r0 = zbx_strdup2 ();
0x00022b1e mov r3, r0 | r3 = r0;
| label_14:
0x00022b20 movs r0, 1 | r0 = 1;
0x00022b22 str.w r3, [sb, 0x20] | __asm ("str.w r3, [sb, 0x20]");
0x00022b24 adds r0, 0x20 | r0 += 0x20;
0x00022b26 b 0x229c6 | goto label_4;
| label_16:
0x00022b28 movs r3, 0 | r3 = 0;
0x00022b2a mov sl, r3 | sl = r3;
0x00022b2c str r3, [sp, 0x10] | var_10h = r3;
0x00022b2e str r3, [sp, 8] | var_8h = r3;
0x00022b30 b 0x2294c | goto label_5;
| label_20:
0x00022b32 str r3, [sp, 0x10] | var_10h = r3;
| label_9:
0x00022b34 cmp r5, 3 |
0x00022b36 ite ne |
| if (r5 == 3) {
0x00022b38 ldrne r3, [r6, 0xc] | r3 = *((r6 + 0xc));
| }
| if (r5 != 3) {
0x00022b3a moveq r3, 0 | r3 = 0;
| }
0x00022b3c str r3, [sp, 8] | var_8h = r3;
0x00022b3e cmp r7, 0 |
| if (r7 == 0) {
0x00022b40 beq.w 0x2294c | goto label_5;
| }
| label_13:
0x00022b44 movs r3, 0 | r3 = 0;
0x00022b46 mov r1, r3 | r1 = r3;
0x00022b48 b 0x229b4 | goto label_6;
| label_30:
0x00022b4a mov r5, r6 | r5 = r6;
0x00022b4c ldr r6, [sp, 0x14] | r6 = var_14h;
| label_12:
0x00022b4e mov r0, r8 | r0 = r8;
0x00022b50 blx 0xe28c | r0 = fcn_0000e28c ();
0x00022b54 mov r4, r0 | r4 = r0;
0x00022b56 cmp r0, 0 |
| if (r0 != 0) {
0x00022b58 bne.w 0x22982 | goto label_7;
| }
0x00022b5c b 0x22aec | goto label_8;
| label_19:
0x00022b5e str r4, [sp, 0x10] | var_10h = r4;
0x00022b60 b 0x22b34 | goto label_9;
| label_18:
0x00022b62 blx 0xe3d4 | fcn_0000e3d4 ();
0x00022b66 movs r7, 0 | r7 = 0;
0x00022b68 mov r5, r0 | r5 = r0;
0x00022b6a str r7, [r5] | *(r5) = r7;
0x00022b6c mov r0, sl | r0 = sl;
0x00022b6e blx 0xe3f8 | r0 = fcn_0000e3f8 ();
0x00022b72 mov sl, r0 | sl = r0;
| if (r0 == 0) {
0x00022b74 cbz r0, 0x22bb2 | goto label_32;
| }
0x00022b76 ldr r5, [r4, 4] | r5 = *((r4 + 4));
0x00022b78 cmp r5, 2 |
| if (r5 <= 2) {
0x00022b7a ble 0x22b94 | goto label_33;
| }
0x00022b7c ldr r6, [r4, 8] | r6 = *((r4 + 8));
0x00022b7e b 0x228aa | goto label_10;
| label_17:
0x00022b80 cmp r5, 2 |
0x00022b82 it ne |
| if (r5 != 2) {
0x00022b84 movne r7, sl | r7 = sl;
| goto label_34;
| }
| if (r5 != 2) {
| label_34:
0x00022b86 bne.w 0x228aa | goto label_10;
| }
0x00022b8a str.w sl, [sp, 8] | __asm ("str.w sl, [var_8h]");
0x00022b8e str.w sl, [sp, 0x10] | __asm ("str.w sl, [var_10h]");
0x00022b92 b 0x2294c | goto label_5;
| label_33:
0x00022b94 str r7, [sp, 0x10] | var_10h = r7;
0x00022b96 str r7, [sp, 8] | var_8h = r7;
0x00022b98 b 0x2294c | goto label_5;
| label_21:
0x00022b9a movs r3, 1 | r3 = 1;
0x00022b9c str r3, [sp, 0x10] | var_10h = r3;
0x00022b9e b 0x22b34 | goto label_9;
0x00022ba0 cmp r3, 0x44 |
| if (r3 == 0x44) {
0x00022ba2 beq 0x22ad8 | goto label_11;
| }
0x00022ba4 b 0x22b4e | goto label_12;
0x00022ba6 cmp r3, 0x5a |
| if (r3 == 0x5a) {
0x00022ba8 beq 0x22ad8 | goto label_11;
| }
0x00022baa b 0x22b4e | goto label_12;
0x00022bac cmp r3, 0x53 |
| if (r3 == 0x53) {
0x00022bae beq 0x22ad8 | goto label_11;
| }
0x00022bb0 b 0x22b4e | goto label_12;
| label_32:
0x00022bb2 ldr r3, [r5] | r3 = *(r5);
| if (r3 != 0) {
0x00022bb4 cbnz r3, 0x22bce | goto label_35;
| }
0x00022bb6 ldr r5, [r4, 4] | r5 = *((r4 + 4));
0x00022bb8 cmp r5, 2 |
| if (r5 <= 2) {
0x00022bba ble 0x22b44 | goto label_13;
| }
0x00022bbc ldr r6, [r4, 8] | r6 = *((r4 + 8));
0x00022bbe movs r7, 1 | r7 = 1;
0x00022bc0 b 0x228aa | goto label_10;
| label_22:
0x00022bc2 movs r3, 2 | r3 = 2;
0x00022bc4 str r3, [sp, 0x10] | var_10h = r3;
0x00022bc6 b 0x22b34 | goto label_9;
| label_23:
0x00022bc8 movs r3, 3 | r3 = 3;
0x00022bca str r3, [sp, 0x10] | var_10h = r3;
0x00022bcc b 0x22b34 | goto label_9;
| label_35:
0x00022bce ldr.w r3, [sb, 0x28] | r3 = *((sb + 0x28));
0x00022bd2 orr r3, r3, 0x20 | r3 |= 0x20;
0x00022bd6 str.w r3, [sb, 0x28] | __asm ("str.w r3, [sb, 0x28]");
0x00022bda ldr r0, [r5] | r0 = *(r5);
0x00022bdc bl 0x30b74 | zbx_strerror ();
0x00022be0 ldr r1, [pc, 0x8c] |
0x00022be2 mov r2, r0 | r2 = r0;
0x00022be4 mov r0, sl | r0 = sl;
0x00022be6 add r1, pc | r1 = 0x4585a;
0x00022be8 bl 0x44820 | r0 = zbx_dsprintf ()
0x00022bec mov r3, r0 | r3 = r0;
0x00022bee b 0x22b20 | goto label_14;
| label_24:
0x00022bf0 movs r3, 4 | r3 = 4;
0x00022bf2 str r3, [sp, 0x10] | var_10h = r3;
0x00022bf4 b 0x22b34 | goto label_9;
| label_29:
0x00022bf6 mov r5, r0 | r5 = r0;
0x00022bf8 b 0x22972 | goto label_0;
| label_28:
0x00022bfa blx 0xe158 | fcn_0000e158 ();
| label_25:
0x00022bfe ldr.w r3, [sb, 0x28] | r3 = *((sb + 0x28));
0x00022c02 orr r3, r3, 0x20 | r3 |= 0x20;
0x00022c06 str.w r3, [sb, 0x28] | __asm ("str.w r3, [sb, 0x28]");
0x00022c0a blx 0xe3d4 | r0 = fcn_0000e3d4 ();
0x00022c0e ldr r0, [r0] | r0 = *(r0);
0x00022c10 bl 0x30b74 | zbx_strerror ();
0x00022c14 ldr r1, [pc, 0x5c] |
0x00022c16 mov r2, r0 | r2 = r0;
0x00022c18 mov r0, r8 | r0 = r8;
0x00022c1a add r1, pc | r1 = 0x45892;
0x00022c1c bl 0x44820 | r0 = zbx_dsprintf ()
0x00022c20 mov r3, r0 | r3 = r0;
0x00022c22 b 0x22b20 | goto label_14;
| label_31:
0x00022c24 cmp r3, 0x52 |
| if (r3 == 0x52) {
0x00022c26 beq.w 0x22ad8 | goto label_11;
| }
0x00022c2a b 0x22b4e | goto label_12;
| }
; assembly | /* r2dec pseudo code output */
| /* /logs/firmware/patool_extraction/rootfs.img_unblob_extracted/rootfs.img_extract/0-80367616.squashfs_v4_le_extract/usr/sbin/zabbix_agentd @ 0x268d0 */
| #include <stdint.h>
|
; (fcn) sym.SYSTEM_BOOTTIME () | void SYSTEM_BOOTTIME (int16_t arg_a0h, int16_t arg_804h, int16_t arg2) {
| int32_t var_804h;
| int16_t var_80ch;
| int16_t var_4h;
| r1 = arg2;
0x000268d0 ldr r2, [pc, 0xec] |
0x000268d2 ldr r3, [pc, 0xf0] | r3 = *(0x269c6);
0x000268d4 push.w {r4, r5, r6, r7, r8, sb, lr} |
0x000268d8 mov sb, r1 | sb = r1;
0x000268da add r2, pc | r2 = 0x4d29e;
0x000268dc ldr r0, [pc, 0xe8] |
0x000268de subw sp, sp, 0x80c | __asm ("subw sp, sp, 0x80c");
0x000268e0 lsrs r4, r1, 0x14 | r4 = r1 >> 0x14;
0x000268e2 ldr r1, [pc, 0xe8] |
0x000268e4 ldr r3, [r2, r3] |
0x000268e6 add r0, pc | r0 = 0x4d2b2;
0x000268e8 add r1, pc | r1 = 0x4d2ba;
0x000268ea ldr r3, [r3] | r3 = *(0x4d29e);
0x000268ec str.w r3, [sp, 0x804] | __asm ("str.w r3, [arg_804h]");
0x000268f0 mov.w r3, 0 | r3 = 0;
0x000268f4 blx 0xdf90 | r0 = fcn_0000df90 ();
0x000268f8 mov r6, r0 | r6 = r0;
0x000268fa cmp r0, 0 |
| if (r0 == 0) {
0x000268fc beq 0x26994 | goto label_1;
| }
0x000268fe ldr.w r8, [pc, 0xd0] | r8 = *(0x000269d0);
0x00026902 add r5, sp, 4 | r5 += var_4h;
0x00026904 mov r7, sp | r7 = sp;
0x00026906 add r8, pc | r8 += pc;
0x00026908 b 0x26918 |
| while (r0 != 0) {
0x0002690a mov r2, r7 | r2 = r7;
0x0002690c mov r1, r8 | r1 = r8;
0x0002690e mov r0, r5 | r0 = r5;
0x00026910 blx 0xdc68 | r0 = fcn_0000dc68 ();
0x00026914 cmp r0, 1 |
| if (r0 == 1) {
0x00026916 beq 0x26972 | goto label_2;
| }
0x00026918 mov r2, r6 | r2 = r6;
0x0002691a mov.w r1, 0x800 | r1 = 0x800;
0x0002691e mov r0, r5 | r0 = r5;
0x00026920 blx 0xdc98 | r0 = fcn_0000dc98 ();
0x00026924 mov r4, r0 | r4 = r0;
0x00026926 cmp r0, 0 |
0x00026928 bne 0x2690a |
| }
0x0002692a mov r0, r6 | r0 = r6;
0x0002692c blx 0xdc8c | fcn_0000dc8c ();
0x00026930 ldr.w r0, [sb, 0x28] | r0 = *((sb + 0x28));
0x00026934 mov r2, r4 | r2 = r4;
0x00026936 ldr r3, [pc, 0x9c] |
0x00026938 movs r1, 0x36 | r1 = 0x36;
0x0002693a orr r0, r0, 0x20 | r0 |= 0x20;
0x0002693e str.w r0, [sb, 0x28] | __asm ("str.w r0, [sb, 0x28]");
0x00026942 add r3, pc | r3 = 0x4d31c;
0x00026944 ldr r0, [pc, 0x90] |
0x00026946 add r0, pc | r0 = 0x4d322;
0x00026948 bl 0x40ed8 | r0 = zbx_strdup2 ();
0x0002694c mov r3, r0 | r3 = r0;
| label_0:
0x0002694e movs r0, 1 | r0 = 1;
0x00026950 str.w r3, [sb, 0x20] | __asm ("str.w r3, [sb, 0x20]");
| do {
0x00026954 ldr r2, [pc, 0x84] |
0x00026956 ldr r3, [pc, 0x6c] | r3 = *(0x269c6);
0x00026958 add r2, pc | r2 = 0x4d338;
0x0002695a ldr r3, [r2, r3] | r3 = *(0x4d338);
0x0002695c ldr r2, [r3] | r2 = *(0x4d338);
0x0002695e ldr.w r3, [sp, 0x804] | r3 = *(arg_804h);
0x00026962 eors r2, r3 | r2 ^= r3;
0x00026964 mov.w r3, 0 | r3 = 0;
| if (r2 != r3) {
0x00026968 bne 0x269ba | goto label_3;
| }
0x0002696a addw sp, sp, 0x80c | __asm ("addw sp, var_80ch");
0x0002696e pop.w {r4, r5, r6, r7, r8, sb, pc} |
| label_2:
0x00026972 ldr.w r3, [sb, 0x28] | r3 = *((sb + 0x28));
0x00026976 movs r4, 0 | r4 = 0;
0x00026978 ldr r2, [r7] | r2 = *(r7);
0x0002697a mov r0, r6 | r0 = r6;
0x0002697c str.w r4, [sb, 0xc] | __asm ("str.w r4, [sb, 0xc]");
0x00026980 orr r3, r3, 1 | r3 |= 1;
0x00026984 str.w r2, [sb, 8] | __asm ("str.w r2, [sb, 8]");
0x00026988 str.w r3, [sb, 0x28] | __asm ("str.w r3, [sb, 0x28]");
0x0002698c blx 0xdc8c | fcn_0000dc8c ();
0x00026990 mov r0, r4 | r0 = r4;
0x00026992 b 0x26954 |
| } while (1);
| label_1:
0x00026994 ldr.w r3, [sb, 0x28] | r3 = *((sb + 0x28));
0x00026998 orr r3, r3, 0x20 | r3 |= 0x20;
0x0002699c str.w r3, [sb, 0x28] | __asm ("str.w r3, [sb, 0x28]");
0x000269a0 blx 0xe3d4 | r0 = fcn_0000e3d4 ();
0x000269a4 ldr r0, [r0] | r0 = *(r0);
0x000269a6 bl 0x30b74 | zbx_strerror ();
0x000269aa ldr r1, [pc, 0x34] |
0x000269ac mov r2, r0 | r2 = r0;
0x000269ae mov r0, r6 | r0 = r6;
0x000269b0 add r1, pc | r1 = 0x4d396;
0x000269b2 bl 0x44820 | r0 = zbx_dsprintf ()
0x000269b6 mov r3, r0 | r3 = r0;
0x000269b8 b 0x2694e | goto label_0;
| label_3:
0x000269ba blx 0xe158 | fcn_0000e158 ();
0x000269be nop |
0x000269c0 strh r6, [r7, r3] | *((r7 + r3)) = r6;
0x000269c2 movs r3, r0 | r3 = r0;
0x000269c4 lsls r4, r2, 0xe | r4 = r2 << 0xe;
0x000269c6 movs r0, r0 |
0x000269c8 strh r6, [r1, 0x1e] | *((r1 + 0x1e)) = r6;
0x000269ca movs r2, r0 | r2 = r0;
0x000269cc add r2, sp, 0xa0 | r2 += arg_a0h;
0x000269ce movs r2, r0 | r2 = r0;
| if (r6 != 0) {
0x000269d0 cbnz r6, 0x26a36 | void (*0x26a36)() ();
| }
0x000269d2 movs r2, r0 | r2 = r0;
| if (r6 != 0) {
0x000269d4 cbnz r6, 0x26a2e | goto label_4;
| }
0x000269d6 movs r2, r0 | r2 = r0;
| if (r2 != 0) {
0x000269d8 cbnz r2, 0x26a3e | void (*0x26a3e)() ();
| }
0x000269da movs r2, r0 | r2 = r0;
0x000269dc strh r0, [r0, r2] | *((r0 + r2)) = r0;
0x000269de movs r3, r0 | r3 = r0;
0x000269e0 revsh r0, r1 | __asm ("revsh r0, r1");
0x000269e2 movs r2, r0 | r2 = r0;
| label_4:
0x00026a2e invalid |
| }
; assembly | /* r2dec pseudo code output */
| /* /logs/firmware/patool_extraction/rootfs.img_unblob_extracted/rootfs.img_extract/0-80367616.squashfs_v4_le_extract/usr/sbin/zabbix_agentd @ 0x27040 */
| #include <stdint.h>
|
; (fcn) sym.SYSTEM_CPU_INTR () | void SYSTEM_CPU_INTR (int16_t arg_8c8h, int16_t arg_10c0h, int16_t arg_18c0h, int16_t arg2) {
| int16_t var_bp_0h;
| int16_t var_bp_18h;
| int16_t var_bp_10h;
| int16_t var_8h;
| int16_t var_10h_2;
| int16_t var_1ch_3;
| int16_t var_0h_4;
| int16_t var_4h_4;
| int16_t var_14h_3;
| int16_t var_18h_2;
| int16_t var_20h_2;
| int32_t var_20h_5;
| int16_t var_28h_2;
| int16_t var_20h_3;
| int16_t var_30h_2;
| int16_t var_18c0h;
| int16_t var_38h_2;
| int32_t var_38h_3;
| int16_t var_44h;
| int16_t var_0h_3;
| int16_t var_4h_3;
| int16_t var_0h_2;
| int16_t var_4h_2;
| int16_t var_sp_8h;
| int16_t var_ch_2;
| int16_t var_10h;
| int16_t var_14h_2;
| int16_t var_18h;
| int16_t var_1ch_2;
| int16_t var_20h;
| int16_t var_24h;
| int16_t var_28h;
| int16_t var_2ch;
| int16_t var_30h;
| int16_t var_34h;
| int16_t var_38h;
| int16_t var_3ch;
| int16_t var_0h;
| int16_t var_4h;
| int16_t var_48h;
| int16_t var_ch;
| int16_t var_14h;
| int16_t var_1ch;
| int16_t var_0h_5;
| int16_t var_ch_3;
| int16_t var_88h;
| int16_t var_94h;
| int16_t var_6ch;
| int16_t var_f0h;
| int16_t var_18c0h_2;
| int32_t var_0h_10;
| int16_t var_150h;
| int32_t var_0h_6;
| int32_t var_4h_5;
| int32_t var_4h_6;
| int32_t var_ch_5;
| int32_t var_10h_3;
| int32_t var_14h_4;
| int32_t var_18h_3;
| int32_t var_1ch_4;
| int32_t var_20h_4;
| int32_t var_24h_2;
| int32_t var_28h_3;
| int32_t var_2ch_2;
| int32_t var_30h_3;
| int32_t var_34h_2;
| int16_t var_ch_4;
| int16_t var_48h_2;
| int32_t var_0h_7;
| int16_t var_18h_4;
| int16_t var_10h_5;
| int32_t var_10h_7;
| int16_t var_68h;
| int32_t var_0h_8;
| int16_t var_18h_5;
| int16_t var_10h_4;
| int32_t var_10h_6;
| int16_t var_88h_2;
| int32_t var_0h_9;
| int16_t var_94h_2;
| int16_t var_ach;
| int16_t var_2a8h;
| int16_t var_80ch;
| int16_t var_810h;
| r1 = arg2;
0x00027040 ldr r2, [pc, 0xe8] |
0x00027042 ldr r3, [pc, 0xec] | r3 = *(0x27132);
0x00027044 push.w {r4, r5, r6, r7, r8, sb, sl, lr} |
0x00027048 mov r7, r1 | r7 = r1;
0x0002704a add r2, pc | r2 = 0x4e17a;
0x0002704c ldr r0, [pc, 0xe4] |
0x0002704e sub.w sp, sp, 0x810 |
0x00027052 ldr r1, [pc, 0xe4] |
0x00027054 mov sb, sp | sb = sp;
0x00027056 ldr r3, [r2, r3] |
0x00027058 add r0, pc | r0 = 0x4e190;
0x0002705a vmov.i32 d16, 0 | __asm ("vmov.i32 d16, 0");
0x0002705e add r1, pc | r1 = 0x4e19c;
0x00027060 ldr r3, [r3] | r3 = *(0x4e17a);
0x00027062 str.w r3, [sp, 0x80c] | __asm ("str.w r3, [var_80ch]");
0x00027066 mov.w r3, 0 | r3 = 0;
0x0002706a vstr d16, [sb] | __asm ("vstr d16, [sb]");
0x0002706e blx 0xdf90 | r0 = fcn_0000df90 ();
0x00027072 mov r6, r0 | r6 = r0;
0x00027074 cmp r0, 0 |
| if (r0 == 0) {
0x00027076 beq 0x27108 | goto label_12;
| }
0x00027078 ldr.w sl, [pc, 0xc0] | sl = case.0x2af36.11;
0x0002707c movw r8, 0x6e69 |
0x00027080 add r5, sp, 0xc | r5 += var_ch_3;
0x00027082 movt r8, 0x7274 | r8 = 0x72746e69;
0x00027086 add sl, pc | sl += pc;
| do {
| label_0:
0x00027088 mov r2, r6 | r2 = r6;
0x0002708a mov.w r1, 0x800 | r1 = 0x800;
0x0002708e mov r0, r5 | r0 = r5;
0x00027090 blx 0xdc98 | r0 = fcn_0000dc98 ();
0x00027094 mov r4, r0 | r4 = r0;
| if (r0 == 0) {
0x00027096 cbz r0, 0x270e4 | goto label_13;
| }
0x00027098 ldr r3, [r5] | r3 = *(r5);
0x0002709a cmp r3, r8 |
0x0002709c bne 0x27088 |
| } while (r3 != r8);
0x0002709e mov r2, sb | r2 = sb;
0x000270a0 mov r1, sl | r1 = sl;
0x000270a2 mov r0, r5 | r0 = r5;
0x000270a4 movs r4, 0 | r4 = 0;
0x000270a6 blx 0xdc68 | r0 = fcn_0000dc68 ();
0x000270aa cmp r0, 1 |
| if (r0 != 1) {
0x000270ac bne 0x27088 | goto label_0;
| }
0x000270ae ldr r3, [r7, 0x28] | r3 = *((r7 + 0x28));
0x000270b0 mov r0, r6 | r0 = r6;
0x000270b2 orr r3, r3, 1 | r3 |= 1;
0x000270b6 str r3, [r7, 0x28] | *((r7 + 0x28)) = r3;
0x000270b8 ldrd r2, r3, [sb] | __asm ("ldrd r2, r3, [sb]");
0x000270bc strd r2, r3, [r7, 8] | __asm ("strd r2, r3, [r7, 8]");
0x000270c0 blx 0xdc8c | fcn_0000dc8c ();
| do {
0x000270c4 ldr r2, [pc, 0x78] |
0x000270c6 ldr r3, [pc, 0x68] | r3 = *(0x27132);
0x000270c8 add r2, pc | r2 = ".count[";
0x000270ca ldr r3, [r2, r3] | r3 = ".count[";
0x000270cc ldr r2, [r3] | r2 = ".count[";
0x000270ce ldr.w r3, [sp, 0x80c] | r3 = var_80ch;
0x000270d2 eors r2, r3 | r2 ^= r3;
0x000270d4 mov.w r3, 0 | r3 = 0;
| if (r2 != r3) {
0x000270d8 bne 0x27128 | goto label_14;
| }
0x000270da mov r0, r4 | r0 = r4;
0x000270dc add.w sp, sp, 0x810 |
0x000270e0 pop.w {r4, r5, r6, r7, r8, sb, sl, pc} |
| label_13:
0x000270e4 mov r0, r6 | r0 = r6;
0x000270e6 blx 0xdc8c | fcn_0000dc8c ();
0x000270ea ldr r0, [r7, 0x28] | r0 = *((r7 + 0x28));
0x000270ec mov r2, r4 | r2 = r4;
0x000270ee ldr r3, [pc, 0x54] |
0x000270f0 movs r1, 0xff | r1 = 0xff;
0x000270f2 orr r0, r0, 0x20 | r0 |= 0x20;
0x000270f6 str r0, [r7, 0x28] | *((r7 + 0x28)) = r0;
0x000270f8 add r3, pc | r3 = 0x4e242;
0x000270fa ldr r0, [pc, 0x4c] |
0x000270fc add r0, pc | r0 = 0x4e24a;
0x000270fe bl 0x40ed8 | zbx_strdup2 ();
| label_1:
0x00027102 movs r4, 1 | r4 = 1;
0x00027104 str r0, [r7, 0x20] | *((r7 + 0x20)) = r0;
0x00027106 b 0x270c4 |
| } while (1);
| label_12:
0x00027108 ldr r3, [r7, 0x28] | r3 = *((r7 + 0x28));
0x0002710a orr r3, r3, 0x20 | r3 |= 0x20;
0x0002710e str r3, [r7, 0x28] | *((r7 + 0x28)) = r3;
0x00027110 blx 0xe3d4 | r0 = fcn_0000e3d4 ();
0x00027114 ldr r0, [r0] | r0 = *(r0);
0x00027116 bl 0x30b74 | zbx_strerror ();
0x0002711a ldr r1, [pc, 0x30] |
0x0002711c mov r2, r0 | r2 = r0;
0x0002711e mov r0, r6 | r0 = r6;
0x00027120 add r1, pc | r1 = 0x4e272;
0x00027122 bl 0x44820 | zbx_dsprintf ()
0x00027126 b 0x27102 | goto label_1;
| label_14:
0x00027128 blx 0xe158 | fcn_0000e158 ();
0x0002712c ldr r3, [pc, 0x238] | r3 = *(0x27368);
0x0002712e movs r3, r0 | r3 = r0;
0x00027130 lsls r4, r2, 0xe | r4 = r2 << 0xe;
0x00027132 movs r0, r0 |
0x00027134 ldrb r4, [r3, 0x11] | r4 = *((r3 + 0x11));
0x00027136 movs r2, r0 | r2 = r0;
0x00027138 adr r2, 0x2c8 | r2 = 0x2c8;
0x0002713a movs r2, r0 | r2 = r0;
0x0002713c push {r1, r2, r4, r5, r6, r7} |
0x0002713e movs r2, r0 | r2 = r0;
0x00027140 ldr r3, [pc, 0x40] | r3 = *(0x27184);
0x00027142 movs r3, r0 | r3 = r0;
0x00027144 push {r3, r6, r7} |
0x00027146 movs r2, r0 | r2 = r0;
| if (r0 != 0) {
0x00027148 cbz r0, 0x271c4 |
0x0002714a movs r2, r0 | r2 = r0;
| if (r0 != 0) {
0x0002714c cbz r0, 0x271a6 |
0x0002714e movs r2, r0 | r2 = r0;
0x00027150 push.w {r4, r5, r6, r7, r8, sb, sl, fp, lr} |
0x00027154 mov r4, r2 | r4 = r2;
0x00027156 ldr r2, [pc, 0x160] |
0x00027158 mov sl, r3 | sl = r3;
0x0002715a ldr r3, [pc, 0x160] | r3 = *(0x272be);
0x0002715c add r2, pc | r2 = 0x4e41a;
0x0002715e vpush {d8, d9} | __asm ("vpush {d8, d9}");
0x00027162 ldr r6, [pc, 0x15c] |
0x00027164 sub sp, 0x74 |
0x00027166 ldr r3, [r2, r3] |
0x00027168 ldrd sb, r8, [sp, 0xa8] | __asm ("ldrd sb, r8, [var_bp_18h]");
0x0002716c add r6, pc | r6 = 0x4e432;
0x0002716e ldr r7, [sp, 0xb0] | r7 = var_bp_10h;
0x00027170 ldr r3, [r3] | r3 = *(0x4e41a);
0x00027172 str r3, [sp, 0x6c] | var_14h_2 = r3;
0x00027174 mov.w r3, 0 | r3 = 0;
| if (r0 != 0) {
0x00027178 cbz r0, 0x2717e |
0x0002717a ldrb r3, [r0] | r3 = *(r0);
| if (r3 != 0) {
0x0002717c cbnz r3, 0x271b0 | goto label_15;
| }
| }
0x0002717e ldr r3, [pc, 0x144] |
0x00027180 movs r2, 0 | r2 = 0;
0x00027182 ldr r0, [pc, 0x144] |
0x00027184 movs r1, 0x29 | r1 = 0x29;
0x00027186 add r3, pc | r3 = 0x4e450;
0x00027188 add r0, pc | r0 = 0x4e456;
0x0002718a bl 0x40ed8 | zbx_strdup2 ();
0x0002718e ldr r2, [pc, 0x13c] |
0x00027190 str r0, [r7] | *(r7) = r0;
0x00027192 ldr r2, [r6, r2] | r2 = *((r6 + r2));
0x00027194 ldr r2, [r2] | r2 = *(0x272ce);
0x00027196 cmp r2, 3 |
| if (r2 <= 3) {
0x00027198 ble 0x271aa | goto label_2;
| }
0x0002719a ldr r2, [pc, 0x134] |
0x0002719c mov r3, r0 | r3 = r0;
0x0002719e ldr r1, [pc, 0x134] |
0x000271a0 movs r0, 4 | r0 = 4;
0x000271a2 add r2, pc | r2 = 0x4e478;
0x000271a4 add r1, pc | r1 = 0x4e47e;
| }
0x000271a6 bl 0x30d1c | zbx_zabbix_log ();
| label_2:
0x000271aa mov.w fp, 1 |
0x000271ae b 0x2722a | goto label_16;
| label_15:
0x000271b0 mov r5, r1 | r5 = r1;
0x000271b2 add r1, sp, 8 | r1 += var_14h_3;
0x000271b4 blx 0xddc0 | r0 = wait ();
0x000271b8 mov fp, r0 |
0x000271ba cmp r0, 0 |
| if (r0 != 0) {
0x000271bc bne 0x27274 | goto label_17;
| }
0x000271be ldrd r0, r1, [sp, 0x20] | __asm ("ldrd r0, r1, [var_30h_2]");
0x000271c2 cmp r1, 0 |
| }
| if (r1 < 0) {
0x000271c4 bge 0x271d2 |
0x000271c6 vmov.i32 d16, 0 | __asm ("vmov.i32 d16, 0");
0x000271ca mov r0, fp | r0 = fp;
0x000271cc mov r1, fp | r1 = fp;
0x000271ce vstr d16, [sp, 0x20] | __asm ("vstr d16, [sp, 0x20]");
| }
0x000271d2 ldrd r7, r3, [sp, 0xc] | __asm ("ldrd r7, r3, [var_bp_18h]");
0x000271d6 ldrd r2, r6, [sp, 0x14] | __asm ("ldrd r2, r6, [var_bp_10h]");
0x000271da subs r6, r3, r6 | r6 = r3 - r6;
0x000271dc umull r3, ip, r3, r7 | r3:ip = r3 * r7;
0x000271e0 str r3, [r5] | *(r5) = r3;
0x000271e2 mla r3, r7, r2, ip | __asm ("mla r3, r7, r2, ip");
0x000271e6 umull lr, ip, r7, r0 | lr:ip = r7 * r0;
0x000271ea str r3, [r5, 4] | *((r5 + 4)) = r3;
0x000271ec ldr r3, [sp, 0x1c] | r3 = var_1ch;
0x000271ee mla ip, r7, r1, ip | __asm ("mla ip, r7, r1, ip");
0x000271f2 str.w lr, [r4] | __asm ("str.w lr, [r4]");
0x000271f6 sbc.w r5, r2, r3 | __asm ("sbc.w r5, r2, r3");
0x000271fa adds r2, r6, r0 | r2 = r6 + r0;
0x000271fc adc.w r3, r1, r5 | __asm ("adc.w r3, r1, r5");
0x00027200 str.w ip, [r4, 4] | __asm ("str.w ip, [r4, 4]");
0x00027204 orrs.w r4, r2, r3 | r4 = r2 | r3;
0x00027208 strd r2, r3, [sp] | __asm ("strd r2, r3, [sp]");
| if (r4 != r2) {
0x0002720c bne 0x2724a | goto label_18;
| }
0x0002720e vmov.i64 d16, 0 | __asm ("vmov.i64 d16, 0");
0x00027212 vmov.f64 d8, d16 | __asm ("vmov.f64 d8, d16");
| do {
0x00027216 umull r6, r3, r7, r6 | r6:r3 = r7 * r6;
0x0002721a mla r3, r7, r5, r3 | __asm ("mla r3, r7, r5, r3");
0x0002721e strd r6, r3, [sl] | __asm ("strd r6, r3, [sl]");
0x00027222 vstr d16, [sb] | __asm ("vstr d16, [sb]");
0x00027226 vstr d8, [r8] | __asm ("vstr d8, [r8]");
| label_16:
0x0002722a ldr r2, [pc, 0xac] |
0x0002722c ldr r3, [pc, 0x8c] | r3 = *(0x272bc);
0x0002722e add r2, pc | r2 = 0x4e50c;
0x00027230 ldr r3, [r2, r3] | r3 = *(0x4e50c);
0x00027232 ldr r2, [r3] | r2 = *(0x4e50c);
0x00027234 ldr r3, [sp, 0x6c] | r3 = var_6ch;
0x00027236 eors r2, r3 | r2 ^= r3;
0x00027238 mov.w r3, 0 | r3 = 0;
| if (r2 != r3) {
0x0002723c bne 0x272a8 | goto label_19;
| }
0x0002723e mov r0, fp | r0 = fp;
0x00027240 add sp, 0x74 |
0x00027242 vpop {d8, d9} | __asm ("vpop {d8, d9}");
0x00027246 pop.w {r4, r5, r6, r7, r8, sb, sl, fp, pc} |
0x00027248 ldrh r0, [r6, 0x3e] | r0 = *((r6 + 0x3e));
| label_18:
0x0002724a vldr d8, [pc, 0x64] | __asm ("vldr d8, [0x000272b4]");
0x0002724e bl 0x4c6f4 | r0 = fcn_0004c6f4 (r0, r1, r2);
0x00027252 vmov d9, r0, r1 | __asm ("vmov d9, r0, r1");
0x00027256 ldr r2, [sp] | r2 = *(sp);
0x00027258 ldr r3, [sp, 4] | r3 = var_4h;
0x0002725a vmul.f64 d9, d9, d8 | __asm ("vmul.f64 d9, d9, d8");
0x0002725e mov r0, r2 | r0 = r2;
0x00027260 mov r1, r3 | r1 = r3;
0x00027262 bl 0x4c6f4 | r0 = fcn_0004c6f4 (r0, r1, r2);
0x00027266 vmov d17, r0, r1 | __asm ("vmov d17, r0, r1");
0x0002726a vdiv.f64 d16, d9, d17 | __asm ("vdiv.f64 d16, d9, d17");
0x0002726e vsub.f64 d8, d8, d16 | __asm ("vsub.f64 d8, d8, d16");
0x00027270 ldrh r0, [r4, 0x1a] | r0 = *((r4 + 0x1a));
0x00027272 b 0x27216 |
| } while (1);
| label_17:
0x00027274 blx 0xe3d4 | r0 = fcn_0000e3d4 ();
0x00027278 ldr r0, [r0] | r0 = *(r0);
0x0002727a bl 0x30b74 | zbx_strerror ();
0x0002727e ldr r1, [pc, 0x5c] |
0x00027280 mov r2, r0 | r2 = r0;
0x00027282 movs r0, 0 | r0 = 0;
0x00027284 add r1, pc | r1 = 0x4e566;
0x00027286 bl 0x44820 | zbx_dsprintf ()
0x00027288 invalid |
0x0002728c str r0, [r7] | *(r7) = r0;
0x0002728e ldr r2, [r6, r2] | r2 = *((r6 + r2));
0x00027290 ldr r2, [r2] | r2 = *(r2);
0x00027292 cmp r2, 3 |
| if (r2 <= 3) {
0x00027294 ble 0x271aa | goto label_2;
| }
0x00027296 ldr r2, [pc, 0x48] |
0x00027298 mov r3, r0 | r3 = r0;
0x0002729a ldr r1, [pc, 0x48] |
0x0002729c movs r0, 4 | r0 = 4;
0x0002729e add r2, pc | r2 = "init_active_metrics";
0x000272a0 add r1, pc | r1 = 0x4e58a;
0x000272a2 bl 0x30d1c | zbx_zabbix_log ();
0x000272a6 b 0x271aa | goto label_2;
| label_19:
0x000272a8 blx 0xe158 | fcn_0000e158 ();
0x000272ac nop.w |
0x000272b0 movs r0, r0 |
0x000272b2 movs r0, r0 |
0x000272b4 movs r0, r0 |
0x000272b6 eors r1, r3 | r1 ^= r3;
0x000272b8 ldr r2, [pc, 0x1f0] | r2 = *(0x274ac);
0x000272ba movs r3, r0 | r3 = r0;
0x000272bc lsls r4, r2, 0xe | r4 = r2 << 0xe;
0x000272be movs r0, r0 |
0x000272c0 ldr r2, [pc, 0x1b0] | r2 = *(0x27474);
0x000272c2 movs r3, r0 | r3 = r0;
0x000272c4 push {r1, r3, r5, r6} |
0x000272c6 movs r2, r0 | r2 = r0;
0x000272c8 push {r2, r3, r7} |
0x000272ca movs r2, r0 | r2 = r0;
0x000272cc lsls r4, r7, 0xe | r4 = r7 << 0xe;
0x000272ce movs r0, r0 |
0x000272d0 push {r1, r2, r5, lr} |
0x000272d2 movs r2, r0 | r2 = r0;
0x000272d4 push {r2, r3, r4, r5, r6} |
0x000272d6 movs r2, r0 | r2 = r0;
0x000272d8 ldr r1, [pc, 0x2a8] | r1 = *(0x27584);
0x000272da movs r3, r0 | r3 = r0;
| if (r0 != 0) {
0x000272dc cbz r0, 0x2734e |
0x000272de movs r2, r0 | r2 = r0;
0x000272e0 push {r1, r3, r5} |
0x000272e2 movs r2, r0 | r2 = r0;
| if (r0 != 0) {
0x000272e4 cbz r0, 0x27348 |
0x000272e6 movs r2, r0 | r2 = r0;
0x000272e8 ldr r2, [pc, 0x158] |
0x000272ea ldr r3, [pc, 0x15c] | r3 = *(0x2744a);
0x000272ec push {r4, r5, r6, lr} |
0x000272ee sub sp, 0x48 |
0x000272f0 add r2, pc | r2 = 0x4e738;
0x000272f2 mov r4, r1 | r4 = r1;
0x000272f4 ldr r3, [r2, r3] |
0x000272f6 ldr r3, [r3] | r3 = *(0x4e738);
0x000272f8 str r3, [sp, 0x44] | var_44h = r3;
0x000272fa mov.w r3, 0 | r3 = 0;
0x000272fe ldr r3, [r0, 4] | r3 = *((r0 + 4));
0x00027300 cmp r3, 2 |
| if (r3 > 2) {
0x00027302 bgt 0x27388 | goto label_20;
| }
0x00027304 cmp r3, 0 |
| if (r3 > 0) {
0x00027306 ble 0x27346 |
0x00027308 ldr r2, [r0, 8] | r2 = *((r0 + 8));
0x0002730a cmp r3, 2 |
0x0002730c ldr r0, [r2] | r0 = *(r2);
| if (r3 != 2) {
0x0002730e bne 0x27348 | goto label_21;
| }
0x00027310 add r3, sp, 0x14 | r3 += var_14h_3;
0x00027312 ldr r6, [r2, 4] | r6 = *((r2 + 4));
0x00027314 add r2, sp, 0x30 | r2 += var_30h_2;
0x00027316 str r3, [sp, 8] | *((sp + 8)) = r3;
0x00027318 add r3, sp, 0x38 | r3 += var_38h_2;
0x0002731a str r2, [sp] | *(sp) = r2;
0x0002731c str r3, [sp, 4] | var_4h_4 = r3;
0x0002731e add r2, sp, 0x20 | r2 += var_20h_2;
0x00027320 add r3, sp, 0x28 | r3 += var_28h_2;
0x00027322 add r1, sp, 0x18 | r1 += var_18h_2;
0x00027324 bl 0x27150 | r0 = void (*0x27150)() ();
| if (r0 != 0) {
0x00027328 cbnz r0, 0x27362 | goto label_22;
| }
0x0002732a ldr r5, [r4, 0x28] | r5 = *((r4 + 0x28));
| if (r6 != 0) {
0x0002732c cbz r6, 0x27334 |
0x0002732e ldrb r3, [r6] | r3 = *(r6);
0x00027330 cmp r3, 0 |
| if (r3 != 0) {
0x00027332 bne 0x273a4 | goto label_23;
| }
| }
| label_3:
0x00027334 ldrd r2, r3, [sp, 0x18] | __asm ("ldrd r2, r3, [var_18h]");
0x00027338 orr r5, r5, 1 | r5 |= 1;
0x0002733c str r5, [r4, 0x28] | *((r4 + 0x28)) = r5;
0x0002733e strd r2, r3, [r4, 8] | __asm ("strd r2, r3, [r4, 8]");
| label_4:
0x00027342 movs r0, 0 | r0 = 0;
0x00027344 b 0x27370 | goto label_24;
| }
0x00027346 movs r0, 0 | r0 = 0;
| }
| label_21:
0x00027348 add r3, sp, 0x14 | r3 += var_sp_8h;
0x0002734a add r1, sp, 0x30 | r1 += var_24h;
0x0002734c str r3, [sp, 8] | *((sp + 8)) = r3;
| }
0x0002734e add r3, sp, 0x38 | r3 += var_38h;
0x00027350 str r3, [sp, 4] | var_4h_2 = r3;
0x00027352 add r2, sp, 0x20 | r2 += var_20h;
0x00027354 str r1, [sp] | *(sp) = r1;
0x00027356 add r3, sp, 0x28 | r3 += var_28h;
0x00027358 add r1, sp, 0x18 | r1 += var_18h;
0x0002735a bl 0x27150 | r0 = void (*0x27150)() ();
0x0002735e cmp r0, 0 |
| if (r0 == 0) {
0x00027360 beq 0x273da | goto label_25;
| }
| label_22:
0x00027362 ldr r3, [r4, 0x28] | r3 = *((r4 + 0x28));
0x00027364 ldr r2, [sp, 0x14] | r2 = var_14h_2;
0x00027366 orr r3, r3, 0x20 | r3 |= 0x20;
0x0002736a str r3, [r4, 0x28] | *((r4 + 0x28)) = r3;
| do {
| label_5:
0x0002736c movs r0, 1 | r0 = 1;
0x0002736e str r2, [r4, 0x20] | *((r4 + 0x20)) = r2;
| label_24:
0x00027370 ldr r2, [pc, 0xd8] |
0x00027372 ldr r3, [pc, 0xd4] | r3 = *(0x2744a);
0x00027374 add r2, pc | r2 = 0x4e7c4;
0x00027376 ldr r3, [r2, r3] | r3 = *(0x4e7c4);
0x00027378 ldr r2, [r3] | r2 = *(0x4e7c4);
0x0002737a ldr r3, [sp, 0x44] | r3 = var_4h;
0x0002737c eors r2, r3 | r2 ^= r3;
0x0002737e mov.w r3, 0 | r3 = 0;
| if (r2 != r3) {
0x00027382 bne 0x27440 | goto label_26;
| }
0x00027384 add sp, 0x48 |
0x00027386 pop {r4, r5, r6, pc} |
| label_20:
0x00027388 ldr r0, [r1, 0x28] | r0 = *((r1 + 0x28));
0x0002738a movs r2, 0 | r2 = 0;
0x0002738c ldr r3, [pc, 0xc0] |
0x0002738e movs r1, 0x5d | r1 = 0x5d;
0x00027390 orr r0, r0, 0x20 | r0 |= 0x20;
0x00027394 str r0, [r4, 0x28] | *((r4 + 0x28)) = r0;
0x00027396 add r3, pc | r3 = 0x4e7ea;
0x00027398 ldr r0, [pc, 0xb8] |
0x0002739a add r0, pc | r0 = 0x4e7f2;
0x0002739c bl 0x40ed8 | r0 = zbx_strdup2 ();
0x000273a0 mov r2, r0 | r2 = r0;
0x000273a2 b 0x2736c |
| } while (1);
| label_23:
0x000273a4 ldr r1, [pc, 0xb0] |
0x000273a6 mov r0, r6 | r0 = r6;
0x000273a8 add r1, pc | r1 = 0x4e804;
0x000273aa blx 0xe3b0 | r0 = fcn_0000e3b0 ();
0x000273ae cmp r0, 0 |
| if (r0 == 0) {
0x000273b0 beq 0x27334 | goto label_3;
| }
0x000273b2 ldr r1, [pc, 0xa8] |
0x000273b4 mov r0, r6 | r0 = r6;
0x000273b6 add r1, pc | r1 = 0x4e818;
0x000273b8 blx 0xe3b0 | r0 = fcn_0000e3b0 ();
| if (r0 != 0) {
0x000273bc cbz r0, 0x273de |
0x000273be ldr r1, [pc, 0xa0] |
0x000273c0 mov r0, r6 | r0 = r6;
0x000273c2 add r1, pc | r1 = 0x4e828;
0x000273c4 blx 0xe3b0 | r0 = fcn_0000e3b0 ();
| if (r0 != 0) {
0x000273c8 cbnz r0, 0x273ee | goto label_27;
| }
0x000273ca ldrd r2, r3, [sp, 0x28] | __asm ("ldrd r2, r3, [var_28h_2]");
0x000273ce orr r5, r5, 1 | r5 |= 1;
0x000273d2 str r5, [r4, 0x28] | *((r4 + 0x28)) = r5;
0x000273d4 strd r2, r3, [r4, 8] | __asm ("strd r2, r3, [r4, 8]");
0x000273d8 b 0x27342 | goto label_4;
| label_25:
0x000273da ldr r5, [r4, 0x28] | r5 = *((r4 + 0x28));
0x000273dc b 0x27334 | goto label_3;
| }
0x000273de ldrd r2, r3, [sp, 0x20] | __asm ("ldrd r2, r3, [var_20h_2]");
0x000273e2 orr r5, r5, 1 | r5 |= 1;
0x000273e6 str r5, [r4, 0x28] | *((r4 + 0x28)) = r5;
0x000273e8 strd r2, r3, [r4, 8] | __asm ("strd r2, r3, [r4, 8]");
0x000273ec b 0x27342 | goto label_4;
| label_27:
0x000273ee ldr r1, [pc, 0x74] |
0x000273f0 mov r0, r6 | r0 = r6;
0x000273f2 add r1, pc | r1 = 0x4e85c;
0x000273f4 blx 0xe3b0 | r0 = fcn_0000e3b0 ();
| if (r0 == 0) {
0x000273f8 cbnz r0, 0x2740a |
0x000273fa ldrd r2, r3, [sp, 0x30] | __asm ("ldrd r2, r3, [var_18c0h]");
0x000273fe orr r5, r5, 2 | r5 |= 2;
0x00027402 str r5, [r4, 0x28] | *((r4 + 0x28)) = r5;
0x00027404 strd r2, r3, [r4, 0x10] | __asm ("strd r2, r3, [r4, 0x10]");
0x00027408 b 0x27342 | goto label_4;
| }
0x0002740a ldr r1, [pc, 0x5c] |
0x0002740c mov r0, r6 | r0 = r6;
0x0002740e add r1, pc | r1 = 0x4e87c;
0x00027410 blx 0xe3b0 | r0 = fcn_0000e3b0 ();
| if (r0 == 0) {
0x00027414 cbnz r0, 0x27426 |
0x00027416 ldrd r2, r3, [sp, 0x38] | __asm ("ldrd r2, r3, [var_38h_2]");
0x0002741a orr r5, r5, 2 | r5 |= 2;
0x0002741e str r5, [r4, 0x28] | *((r4 + 0x28)) = r5;
0x00027420 strd r2, r3, [r4, 0x10] | __asm ("strd r2, r3, [r4, 0x10]");
0x00027424 b 0x27342 | goto label_4;
| }
0x00027426 ldr r3, [pc, 0x44] |
0x00027428 orr r5, r5, 0x20 | r5 |= 0x20;
0x0002742c ldr r0, [pc, 0x40] |
0x0002742e movs r2, 0 | r2 = 0;
0x00027430 movs r1, 0x76 | r1 = 0x76;
0x00027432 str r5, [r4, 0x28] | *((r4 + 0x28)) = r5;
0x00027434 add r3, pc | r3 = 0x4e8a6;
0x00027436 add r0, pc | r0 = 0x4e8aa;
0x00027438 bl 0x40ed8 | r0 = zbx_strdup2 ();
0x0002743c mov r2, r0 | r2 = r0;
0x0002743e b 0x2736c | goto label_5;
| label_26:
0x00027440 blx 0xe158 | fcn_0000e158 ();
0x00027444 ldr r0, [pc, 0x3a0] | r0 = *(0x277e8);
0x00027446 movs r3, r0 | r3 = r0;
0x00027448 lsls r4, r2, 0xe | r4 = r2 << 0xe;
0x0002744a movs r0, r0 |
0x0002744c ldr r0, [pc, 0x190] | r0 = *(0x275e0);
0x0002744e movs r3, r0 | r3 = r0;
0x00027450 strh r2, [r0, 0x16] | *((r0 + 0x16)) = r2;
0x00027452 movs r2, r0 | r2 = r0;
0x00027454 sxtb r2, r7 | r2 = (int32_t) r7;
0x00027456 movs r2, r0 | r2 = r0;
0x00027458 ldr r6, [sp, 0xf0] | r6 = var_f0h;
0x0002745a movs r2, r0 | r2 = r0;
0x0002745c ldr r7, [sp, 0x2a8] | r7 = var_2a8h;
0x0002745e movs r2, r0 | r2 = r0;
0x00027460 ldrsb r2, [r0, r2] | r2 = *((r0 + r2));
0x00027462 movs r2, r0 | r2 = r0;
0x00027464 add sp, 0x158 |
0x00027466 movs r2, r0 | r2 = r0;
0x00027468 adr r0, 0x368 | r0 = 0x368;
0x0002746a movs r2, r0 | r2 = r0;
0x0002746c ldr r1, [sp, 0x150] | r1 = var_2a8h;
0x0002746e movs r2, r0 | r2 = r0;
| if (r6 != 0) {
0x00027470 cbz r6, 0x274aa |
0x00027472 movs r2, r0 | r2 = r0;
0x00027474 ldr.w r2, [pc, 0x420] | r2 = *(0x00027898);
0x00027478 ldr.w r3, [pc, 0x420] |
0x0002747c push.w {r4, r5, r6, r7, r8, sb, sl, fp, lr} |
0x00027480 mov r6, r1 | r6 = r1;
0x00027482 add r2, pc | r2 += pc;
0x00027484 ldr.w r0, [pc, 0x418] | r0 = case.0x2af36.0;
0x00027488 sub.w sp, sp, 0x18c0 |
0x0002748c ldr.w r1, [pc, 0x414] |
0x00027490 sub sp, 0xc |
0x00027492 ldr r3, [r2, r3] | r3 = *((r2 + r3));
0x00027494 add.w r4, sp, 0x18c0 | r4 += var_18c0h;
0x00027498 add r0, pc | r0 += pc;
0x0002749a adds r4, 4 | r4 += 4;
0x0002749c add r1, pc | r1 = 0x4ed44;
0x0002749e ldr r3, [r3] | r3 = *(0x2789c);
0x000274a0 str r3, [r4] | *(r4) = r3;
0x000274a2 mov.w r3, 0 | r3 = 0;
0x000274a6 blx 0xdf90 | fcn_0000df90 ();
| }
0x000274aa ldr r3, [pc, 0x3fc] |
0x000274ac str r0, [sp, 0x10] | var_10h = r0;
0x000274ae add r3, pc | r3 = 0x4ed5c;
0x000274b0 str r3, [sp, 0x1c] | var_1ch_2 = r3;
0x000274b2 cmp r0, 0 |
| if (r0 == 0) {
0x000274b4 beq.w 0x2784c | goto label_28;
| }
0x000274b8 add r3, sp, 0x94 | r3 += var_94h;
0x000274ba add.w sl, sp, 0x10c0 | sl += arg_10c0h;
0x000274be mov r0, r3 | r0 = r3;
0x000274c0 str r3, [sp, 0x18] | var_18h = r3;
0x000274c2 bl 0x32e10 | zbx_vector_ptr_create ();
0x000274c6 ldr r3, [pc, 0x3e4] |
0x000274c8 add.w fp, sp, 0x68 |
0x000274cc add.w sl, sl, 4 | sl += 4;
0x000274d0 str r6, [sp, 0x2c] | var_2ch = r6;
0x000274d2 add r3, pc | r3 = "update_cpustats";
0x000274d4 str r3, [sp, 0x28] | var_28h = r3;
0x000274d6 sub.w r3, fp, 0x18 | r3 -= var_18h_4;
0x000274da str r3, [sp, 0x14] | var_14h_2 = r3;
| do {
| label_6:
0x000274dc ldr r2, [sp, 0x10] | r2 = var_10h;
0x000274de mov.w r1, 0x800 | r1 = 0x800;
0x000274e2 mov r0, sl | r0 = sl;
0x000274e4 blx 0xdc98 | r0 = fcn_0000dc98 ();
0x000274e8 cmp r0, 0 |
| if (r0 == 0) {
0x000274ea beq 0x2756e | goto label_29;
| }
| label_7:
0x000274ec movs r1, 0x20 | r1 = 0x20;
0x000274ee mov r0, sl | r0 = sl;
0x000274f0 blx 0xdcd4 | r0 = fcn_0000dcd4 ();
0x000274f4 cmp r0, 0 |
0x000274f6 beq 0x274dc |
| } while (r0 == 0);
0x000274f8 adds r4, r0, 1 | r4 = r0 + 1;
0x000274fa movs r1, 0x20 | r1 = 0x20;
0x000274fc mov r0, r4 | r0 = r4;
0x000274fe blx 0xdcd4 | r0 = fcn_0000dcd4 ();
0x00027502 mov r5, r0 | r5 = r0;
0x00027504 cmp r0, 0 |
| if (r0 == 0) {
0x00027506 beq 0x274dc | goto label_6;
| }
0x00027508 mov.w r8, 0 | r8 = 0;
0x0002750c movs r1, 0x20 | r1 = 0x20;
0x0002750e strb r8, [r5], 1 | *(r5) = r8;
| r5++;
0x00027512 mov r0, r5 | r0 = r5;
0x00027514 blx 0xdcd4 | r0 = fcn_0000dcd4 ();
0x00027518 cmp r0, 0 |
| if (r0 == 0) {
0x0002751a beq 0x274dc | goto label_6;
| }
0x0002751c add.w sb, sp, 0x88 | sb += var_88h;
0x00027520 add r6, sp, 0x48 | r6 += var_48h;
0x00027522 sub.w r3, sb, 0x10 | r3 -= var_10h_4;
0x00027526 strb.w r8, [r0] | *(r0) = r8;
0x0002752a str r3, [sp, 0x20] | var_20h = r3;
0x0002752c sub.w r7, r6, 0xc | r7 -= var_ch_4;
0x00027530 str r3, [sp, 4] | var_4h_2 = r3;
0x00027532 sub.w r3, sb, 0x18 | r3 -= var_18h_5;
0x00027536 str r3, [sp] | *(sp) = r3;
0x00027538 mov r2, r6 | r2 = r6;
0x0002753a ldr r3, [sp, 0x14] | r3 = var_14h_2;
0x0002753c sub.w r1, r6, 8 | r1 = r6 - 8;
0x00027540 mov r0, r4 | r0 = r4;
0x00027542 str r7, [sp, 8] | var_sp_8h = r7;
0x00027544 bl 0x27150 | void (*0x27150)() ();
0x00027548 str r0, [sp, 0x24] | var_24h = r0;
0x0002754a cmp r0, 0 |
| if (r0 == 0) {
0x0002754c beq.w 0x2777c | goto label_30;
| }
0x00027550 ldr r0, [r7] | r0 = *(r7);
0x00027552 cmp r0, 0 |
| if (r0 == 0) {
0x00027554 beq 0x274dc | goto label_6;
| }
0x00027556 blx 0xde30 | fcn_0000de30 ();
0x0002755a ldr r2, [sp, 0x10] | r2 = var_10h;
0x0002755c mov.w r1, 0x800 | r1 = 0x800;
0x00027560 mov r0, sl | r0 = sl;
0x00027562 str.w r8, [r7] | __asm ("str.w r8, [r7]");
0x00027566 blx 0xdc98 | r0 = fcn_0000dc98 ();
0x0002756a cmp r0, 0 |
| if (r0 != 0) {
0x0002756c bne 0x274ec | goto label_7;
| }
| label_29:
0x0002756e ldr r0, [sp, 0x10] | r0 = var_10h;
0x00027570 ldr r6, [sp, 0x2c] | r6 = var_2ch;
0x00027572 blx 0xdc8c | fcn_0000dc8c ();
0x00027576 ldr r1, [pc, 0x338] |
0x00027578 ldr r0, [pc, 0x338] |
0x0002757a add r1, pc | r1 = 0x4ee30;
0x0002757c add r0, pc | r0 = 0x4ee34;
0x0002757e blx 0xdf90 | fcn_0000df90 ();
0x00027582 str r0, [sp, 0x10] | var_10h = r0;
0x00027584 cmp r0, 0 |
| if (r0 == 0) {
0x00027586 beq.w 0x27874 | goto label_31;
| }
0x0002758a add r5, sp, 0xac | r5 += var_6ch;
0x0002758c mov.w r1, 0x1000 | r1 = 0x1000;
0x00027590 mov r0, r5 | r0 = r5;
0x00027592 bl 0x3ab5c | zbx_json_initarray ();
0x00027596 ldr r3, [pc, 0x320] |
0x00027598 add r3, pc | r3 = 0x4ee56;
0x0002759a str r3, [sp, 0x2c] | var_2ch = r3;
0x0002759c ldr r3, [pc, 0x31c] |
0x0002759e add r3, pc | r3 = 0x4ee5e;
0x000275a0 str r3, [sp, 0x30] | var_30h = r3;
0x000275a2 ldr r3, [pc, 0x31c] |
0x000275a4 add r3, pc | r3 = 0x4ee6a;
0x000275a6 str r3, [sp, 0x34] | var_34h = r3;
0x000275a8 addw r3, sp, 0x8c8 | __asm ("addw r3, arg_8c8h");
0x000275ac str r3, [sp, 0x28] | var_28h = r3;
| do {
| label_8:
0x000275ae ldr r2, [sp, 0x10] | r2 = var_10h;
0x000275b0 mov.w r1, 0x800 | r1 = 0x800;
0x000275b4 mov r0, sl | r0 = sl;
0x000275b6 blx 0xdc98 | r0 = fcn_0000dc98 ();
0x000275ba cmp r0, 0 |
| if (r0 == 0) {
0x000275bc beq.w 0x2770a | goto label_32;
| }
| label_9:
0x000275c0 movs r1, 0x20 | r1 = 0x20;
0x000275c2 mov r0, sl | r0 = sl;
0x000275c4 blx 0xdcd4 | r0 = fcn_0000dcd4 ();
0x000275c8 cmp r0, 0 |
0x000275ca beq 0x275ae |
| } while (r0 == 0);
0x000275cc adds r4, r0, 1 | r4 = r0 + 1;
0x000275ce movs r1, 0x20 | r1 = 0x20;
0x000275d0 mov r0, r4 | r0 = r4;
0x000275d2 blx 0xdcd4 | r0 = fcn_0000dcd4 ();
0x000275d6 cmp r0, 0 |
| if (r0 == 0) {
0x000275d8 beq 0x275ae | goto label_8;
| }
0x000275da ldr r2, [sp, 0x1c] | r2 = var_1ch_2;
0x000275dc mov r1, r4 | r1 = r4;
0x000275de ldr r3, [pc, 0x2e4] | r3 = *(0x278c6);
0x000275e0 movs r4, 0 | r4 = 0;
0x000275e2 strb r4, [r0] | *(r0) = r4;
0x000275e4 ldr r0, [sp, 0x18] | r0 = var_18h;
0x000275e6 ldr r3, [r2, r3] | r3 = *((r2 + r3));
0x000275e8 mov r2, r3 | r2 = r3;
0x000275ea str r3, [sp, 0x14] | var_14h_2 = r3;
0x000275ec bl 0x33174 | r0 = zbx_vector_ptr_search ();
0x000275f0 adds r3, r0, 1 | r3 = r0 + 1;
| if (r3 == r0) {
0x000275f2 beq 0x275ae | goto label_8;
| }
0x000275f4 ldr r3, [sp, 0x28] | r3 = var_28h;
0x000275f6 mov r1, r4 | r1 = r4;
0x000275f8 ldr.w r8, [pc, 0x2cc] |
0x000275fc ldr r7, [pc, 0x2cc] |
0x000275fe subw r3, r3, 0x834 | __asm ("subw r3, r3, 0x834");
0x00027602 ldr r3, [r3] | r3 = *(r3);
0x00027604 add r8, pc |
0x00027606 add r7, pc | r7 = 0x4eed6;
0x00027608 ldr.w r4, [r3, r0, lsl 2] | offset_0 = r0 << 2;
| r4 = *((r3 + offset_0));
0x0002760c mov r0, r5 | r0 = r5;
0x0002760e bl 0x3ac94 | zbx_json_addobject ();
0x00027612 ldr r1, [sp, 0x2c] | r1 = var_2ch;
0x00027614 movs r3, 1 | r3 = 1;
0x00027616 mov r2, r4 | r2 = r4;
0x00027618 mov r0, r5 | r0 = r5;
0x0002761a bl 0x3ac9c | zbx_json_addstring ();
0x0002761e add.w r2, r4, 0x800 | r2 = r4 + 0x800;
0x00027622 movs r3, 1 | r3 = 1;
0x00027624 ldr r1, [sp, 0x30] | r1 = var_30h;
0x00027626 mov r0, r5 | r0 = r5;
0x00027628 add.w sb, r4, 0x1000 | sb = r4 + 0x1000;
0x0002762c bl 0x3ac9c | zbx_json_addstring ();
0x00027630 ldr r1, [sp, 0x34] | r1 = var_34h;
0x00027632 mov r0, r5 | r0 = r5;
0x00027634 bl 0x3ac94 | zbx_json_addobject ();
0x00027638 ldrd r2, r3, [sb] | __asm ("ldrd r2, r3, [sb]");
0x0002763c mov r1, r8 | r1 = r8;
0x0002763e mov r0, r5 | r0 = r5;
0x00027640 str.w r8, [sp, 0x20] | __asm ("str.w r8, [var_20h]");
0x00027644 bl 0x3ae40 | zbx_json_adduint64 ();
0x00027648 add.w r3, r4, 0x1040 | r3 = r4 + 0x1040;
0x0002764c mov r1, r7 | r1 = r7;
0x0002764e mov r0, r5 | r0 = r5;
0x00027650 str r3, [sp, 0x14] | var_14h_2 = r3;
0x00027652 ldrd r2, r3, [sb, 8] | __asm ("ldrd r2, r3, [sb, 8]");
0x00027656 str r7, [sp, 0x24] | var_24h = r7;
0x00027658 add.w r7, r4, 0x1020 | r7 = r4 + 0x1020;
0x0002765c bl 0x3ae40 | zbx_json_adduint64 ();
0x00027660 ldrd r2, r3, [sb, 0x10] | __asm ("ldrd r2, r3, [sb, 0x10]");
0x00027664 mov r0, r5 | r0 = r5;
0x00027666 ldr.w sb, [pc, 0x268] | sb = *(0x000278d0);
0x0002766a add.w fp, r7, 0x10 |
0x0002766e ldr.w r8, [pc, 0x264] | r8 = *(0x000278d4);
0x00027672 add.w r4, r4, 0x1040 | r4 += 0x1040;
0x00027676 add sb, pc | sb += pc;
0x00027678 mov r1, sb | r1 = sb;
0x0002767a add r8, pc | r8 = 0x7654e;
0x0002767c bl 0x3ae40 | zbx_json_adduint64 ();
0x00027680 vldr d0, [r7, -8] | __asm ("vldr d0, [r7, -8]");
0x00027684 mov r1, r8 | r1 = r8;
0x00027686 mov r0, r5 | r0 = r5;
0x00027688 bl 0x3af08 | zbx_json_addfloat ();
0x0002768c mov r0, r5 | r0 = r5;
0x0002768e vldr d0, [r7] | __asm ("vldr d0, [r7]");
0x00027692 ldr r7, [pc, 0x244] |
0x00027694 add r7, pc | r7 = 0x4ef72;
0x00027696 mov r1, r7 | r1 = r7;
0x00027698 bl 0x3af08 | zbx_json_addfloat ();
0x0002769c mov r0, r5 | r0 = r5;
0x0002769e bl 0x3af6c | zbx_json_close ();
0x000276a2 ldr r1, [pc, 0x238] |
0x000276a4 mov r0, r5 | r0 = r5;
0x000276a6 add r1, pc | r1 = 0x4ef88;
0x000276a8 bl 0x3ac94 | zbx_json_addobject ();
0x000276ac ldr r1, [sp, 0x20] | r1 = var_20h;
0x000276ae mov r0, r5 | r0 = r5;
0x000276b0 ldrd r2, r3, [fp, -0x8] | __asm ("ldrd r2, r3, [fp, -0x8]");
0x000276b4 bl 0x3ae40 | zbx_json_adduint64 ();
0x000276b8 ldrd r2, r3, [fp] | __asm ("ldrd r2, r3, [fp]");
0x000276bc mov r0, r5 | r0 = r5;
0x000276be ldr r1, [sp, 0x24] | r1 = var_24h;
0x000276c0 bl 0x3ae40 | zbx_json_adduint64 ();
0x000276c4 ldr r3, [sp, 0x14] | r3 = var_14h_2;
0x000276c6 mov r1, sb | r1 = sb;
0x000276c8 mov r0, r5 | r0 = r5;
0x000276ca ldrd r2, r3, [r3, -0x8] | __asm ("ldrd r2, r3, [r3, -0x8]");
0x000276ce bl 0x3ae40 | zbx_json_adduint64 ();
0x000276d2 ldr r3, [sp, 0x14] | r3 = var_14h_2;
0x000276d4 mov r1, r8 | r1 = r8;
0x000276d6 mov r0, r5 | r0 = r5;
0x000276d8 vldr d0, [r3] | __asm ("vldr d0, [r3]");
0x000276dc bl 0x3af08 | zbx_json_addfloat ();
0x000276e0 mov r1, r7 | r1 = r7;
0x000276e2 mov r0, r5 | r0 = r5;
0x000276e4 vldr d0, [r4, 8] | __asm ("vldr d0, [r4, 8]");
0x000276e8 bl 0x3af08 | zbx_json_addfloat ();
0x000276ec mov r0, r5 | r0 = r5;
0x000276ee bl 0x3af6c | zbx_json_close ();
0x000276f2 mov r0, r5 | r0 = r5;
0x000276f4 bl 0x3af6c | zbx_json_close ();
0x000276f8 ldr r2, [sp, 0x10] | r2 = var_10h;
0x000276fa mov.w r1, 0x800 | r1 = 0x800;
0x000276fc str r0, [r0, 0x10] | *((r0 + 0x10)) = r0;
0x000276fe mov r0, sl | r0 = sl;
0x00027700 blx 0xdc98 | r0 = fcn_0000dc98 ();
0x00027704 cmp r0, 0 |
| if (r0 != 0) {
0x00027706 bne.w 0x275c0 | goto label_9;
| }
| label_32:
0x0002770a mov r4, r0 | r4 = r0;
0x0002770c ldr r0, [sp, 0x10] | r0 = var_10h;
0x0002770e blx 0xdc8c | fcn_0000dc8c ();
0x00027712 mov r0, r5 | r0 = r5;
0x00027714 bl 0x3af6c | zbx_json_close ();
0x00027718 ldr r2, [r6, 0x28] | r2 = *((r6 + 0x28));
0x0002771a mov.w r1, 0x12e | r1 = 0x12e;
0x0002771e ldr r3, [sp, 0x28] | r3 = var_28h;
0x00027720 ldr r0, [pc, 0x1bc] |
0x00027722 orr r2, r2, 4 | r2 |= 4;
0x00027726 subw r3, r3, 0x81c | __asm ("subw r3, r3, 0x81c");
0x0002772a str r2, [r6, 0x28] | *((r6 + 0x28)) = r2;
0x0002772c ldr r3, [r3] | r3 = *(r3);
0x0002772e mov r2, r4 | r2 = r4;
0x00027730 add r0, pc | r0 = 0x4f014;
0x00027732 bl 0x40ed8 | zbx_strdup2 ();
0x00027736 str r0, [r6, 0x18] | *((r6 + 0x18)) = r0;
0x00027738 mov r0, r5 | r0 = r5;
0x0002773a bl 0x3ac14 | zbx_json_free ();
| label_11:
0x0002773e ldr r2, [sp, 0x1c] | r2 = var_1ch_2;
0x00027740 ldr r3, [pc, 0x1a0] | r3 = *(0x278e4);
0x00027742 ldr r5, [sp, 0x18] | r5 = var_18h;
0x00027744 ldr r3, [r2, r3] | r3 = *((r2 + r3));
0x00027746 mov r0, r5 | r0 = r5;
0x00027748 mov r1, r3 | r1 = r3;
0x0002774a str r3, [sp, 0x10] | var_10h = r3;
0x0002774c bl 0x33280 | zbx_vector_ptr_clear_ext ();
0x00027750 mov r0, r5 | r0 = r5;
0x00027752 bl 0x32e70 | zbx_vector_ptr_destroy ();
| label_10:
0x00027756 ldr r2, [pc, 0x190] |
0x00027758 add.w r1, sp, 0x18c0 | r1 += arg_18c0h;
0x0002775c ldr r3, [pc, 0x13c] | r3 = *(0x2789c);
0x0002775e adds r1, 4 | r1 += 4;
0x00027760 add r2, pc | r2 = 0x4f04e;
0x00027762 ldr r3, [r2, r3] | r3 = *(0x4f04e);
0x00027764 ldr r2, [r3] | r2 = *(0x4f04e);
0x00027766 ldr r3, [r1] | r3 = *(r1);
0x00027768 eors r2, r3 | r2 ^= r3;
0x0002776a mov.w r3, 0 | r3 = 0;
| if (r2 != r3) {
0x0002776e bne 0x27870 | goto label_33;
| }
0x00027770 mov r0, r4 | r0 = r4;
0x00027772 add.w sp, sp, 0x18c0 |
0x00027776 add sp, 0xc |
0x00027778 pop.w {r4, r5, r6, r7, r8, sb, sl, fp, pc} |
| label_30:
0x0002777c ldr r3, [sp, 0x28] | r3 = var_28h;
0x0002777e sub.w r8, fp, 0x10 | r8 -= var_10h_5;
0x00027782 sub.w r2, fp, 8 | r2 = fp - 8;
0x00027784 lsls r0, r1, 8 | r0 = r1 << 8;
0x00027786 mov r1, r8 | r1 = r8;
0x00027788 mov r0, r4 | r0 = r4;
0x0002778a str r7, [sp, 0xc] | var_ch_2 = r7;
0x0002778c strd sb, r3, [sp, 4] | __asm ("strd sb, r3, [var_4h_5]");
0x00027790 sub.w r3, sb, 8 | r3 = sb - 8;
0x00027794 str r3, [sp] | *(sp) = r3;
0x00027796 mov r3, fp | r3 = fp;
0x00027798 bl 0x28c50 | r0 = get_fs_inode_stat ();
0x0002779c mov r2, r0 | r2 = r0;
| if (r0 == 0) {
0x0002779e cbz r0, 0x277b2 | goto label_34;
| }
0x000277a0 ldr r0, [sp, 0x3c] | r0 = var_3ch;
0x000277a2 cmp r0, 0 |
| if (r0 == 0) {
0x000277a4 beq.w 0x274dc | goto label_6;
| }
0x000277a8 blx 0xde30 | fcn_0000de30 ();
0x000277ac ldr r3, [sp, 0x24] | r3 = var_24h;
0x000277ae str r3, [sp, 0x3c] | var_3ch = r3;
0x000277b0 b 0x274dc | goto label_6;
| label_34:
0x000277b2 ldr r0, [pc, 0x138] |
0x000277b4 movw r3, 0x1050 | r3 = 0x1050;
0x000277b8 movs r1, 0xec | r1 = 0xec;
0x000277ba add r0, pc | r0 = "%s() file '%s' already added";
0x000277bc bl 0x40dd8 | zbx_malloc2 ();
0x000277c0 mov r1, r4 | r1 = r4;
0x000277c2 mov.w r2, 0x800 | r2 = 0x800;
0x000277c4 str r0, [r0, 0x20] | *((r0 + 0x20)) = r0;
0x000277c6 mov r7, r0 | r7 = r0;
0x000277c8 bl 0x4465c | zbx_strlcpy ();
0x000277cc mov.w r2, 0x800 | r2 = 0x800;
0x000277d0 mov r1, r5 | r1 = r5;
0x000277d2 adds r0, r7, r2 | r0 = r7 + r2;
0x000277d4 add.w r4, r7, 0x1040 | r4 = r7 + 0x1040;
0x000277d8 bl 0x4465c | zbx_strlcpy ();
0x000277dc ldr r3, [sp, 0x20] | r3 = var_20h;
0x000277de add.w r2, r7, 0x1000 | r2 = r7 + 0x1000;
0x000277e2 add.w ip, r7, 0x1020 |
0x000277e4 ldrb r1, [r0, r2] | r1 = *((r0 + r2));
0x000277e6 vldr d18, [r6, -8] | __asm ("vldr d18, [r6, -8]");
0x000277e8 cmp r3, 2 |
0x000277ea add.w lr, r7, 0x1000 | lr = r7 + 0x1000;
0x000277ee mov r1, r7 | r1 = r7;
0x000277f0 vldr d17, [r3, -8] | __asm ("vldr d17, [r3, -8]");
0x000277f4 add.w r3, r7, 0x1020 | r3 = r7 + 0x1020;
0x000277f8 ldrd r6, r7, [r6] | __asm ("ldrd r6, r7, [r6]");
0x000277fc adds r2, 0x10 | r2 += 0x10;
0x000277fe vstr d18, [lr] | __asm ("vstr d18, [lr]");
0x00027802 adds r3, 0x10 | r3 += 0x10;
0x00027804 vldr d16, [r8, -8] | __asm ("vldr d16, [r8, -8]");
0x00027808 strd r6, r7, [r2, -0x8] | __asm ("strd r6, r7, [r2, -0x8]");
0x0002780c ldr r0, [sp, 0x18] | r0 = var_18h;
0x0002780e ldrd r6, r7, [sb, -0x10] | __asm ("ldrd r6, r7, [var_10h_4]");
0x00027812 vstr d16, [r2] | __asm ("vstr d16, [r2]");
0x00027816 vstr d17, [ip, -8] | __asm ("vstr d17, [ip, -8]");
0x00027818 subs r2, r0, r4 | r2 = r0 - r4;
0x0002781a strd r6, r7, [ip] | __asm ("strd r6, r7, [ip]");
0x0002781c str r0, [r0, 0x70] | *((r0 + 0x70)) = r0;
0x0002781e ldrd r6, r7, [fp, -0x10] | __asm ("ldrd r6, r7, [var_bp_10h]");
0x00027822 strd r6, r7, [r3, -0x8] | __asm ("strd r6, r7, [r3, -0x8]");
0x00027824 str r2, [r0, 0x70] | *((r0 + 0x70)) = r2;
0x00027826 ldrd r6, r7, [fp] | __asm ("ldrd r6, r7, [fp]");
0x0002782a strd r6, r7, [r4, -0x8] | __asm ("strd r6, r7, [r4, -0x8]");
0x0002782e ldrd r6, r7, [fp, -0x8] | __asm ("ldrd r6, r7, [fp, -0x8]");
0x00027832 strd r6, r7, [r3] | __asm ("strd r6, r7, [r3]");
0x00027836 ldrd r2, r3, [sb, -0x8] | __asm ("ldrd r2, r3, [sb, -0x8]");
0x0002783a strd r2, r3, [r4] | __asm ("strd r2, r3, [r4]");
0x0002783e ldrd r2, r3, [sb] | __asm ("ldrd r2, r3, [sb]");
0x00027842 strd r2, r3, [r4, 8] | __asm ("strd r2, r3, [r4, 8]");
0x00027844 movs r3, 2 | r3 = 2;
0x00027846 bl 0x32ea0 | zbx_vector_ptr_append ();
0x0002784a b 0x274dc | goto label_6;
| label_28:
0x0002784c ldr r3, [r6, 0x28] | r3 = *((r6 + 0x28));
0x0002784e movs r4, 1 | r4 = 1;
0x00027850 orr r3, r3, 0x20 | r3 |= 0x20;
0x00027854 str r3, [r6, 0x28] | *((r6 + 0x28)) = r3;
0x00027856 blx 0xe3d4 | r0 = fcn_0000e3d4 ();
0x0002785a ldr r0, [r0] | r0 = *(r0);
0x0002785c bl 0x30b74 | zbx_strerror ();
0x00027860 ldr r1, [pc, 0x8c] |
0x00027862 mov r2, r0 | r2 = r0;
0x00027864 ldr r0, [sp, 0x10] | r0 = var_10h;
0x00027866 add r1, pc | r1 = 0x4f15a;
0x00027868 bl 0x44820 | zbx_dsprintf ()
0x0002786c str r0, [r6, 0x20] | *((r6 + 0x20)) = r0;
0x0002786e b 0x27756 | goto label_10;
| label_33:
0x00027870 blx 0xe158 | fcn_0000e158 ();
| label_31:
0x00027874 ldr r3, [r6, 0x28] | r3 = *((r6 + 0x28));
0x00027876 movs r4, 1 | r4 = 1;
0x00027878 orr r3, r3, 0x20 | r3 |= 0x20;
0x0002787c str r3, [r6, 0x28] | *((r6 + 0x28)) = r3;
0x0002787e blx 0xe3d4 | r0 = fcn_0000e3d4 ();
0x00027882 ldr r0, [r0] | r0 = *(r0);
0x00027884 bl 0x30b74 | zbx_strerror ();
0x00027888 ldr r1, [pc, 0x68] |
0x0002788a mov r2, r0 | r2 = r0;
0x0002788c ldr r0, [sp, 0x10] | r0 = var_10h;
0x0002788e add r1, pc | r1 = 0x4f186;
0x00027890 bl 0x44820 | zbx_dsprintf ()
0x00027894 str r0, [r6, 0x20] | *((r6 + 0x20)) = r0;
0x00027896 b 0x2773e | goto label_11;
| }
; assembly | /* r2dec pseudo code output */
| /* /logs/firmware/patool_extraction/rootfs.img_unblob_extracted/rootfs.img_extract/0-80367616.squashfs_v4_le_extract/usr/sbin/zabbix_agentd @ 0x26d38 */
| #include <stdint.h>
|
; (fcn) sym.SYSTEM_CPU_LOAD () | void SYSTEM_CPU_LOAD (int16_t arg1, int16_t arg2) {
| int16_t var_0h;
| int16_t var_1ch;
| int16_t var_20h;
| r0 = arg1;
| r1 = arg2;
0x00026d38 ldr r2, [pc, 0x1b0] |
0x00026d3a ldr r3, [pc, 0x1b4] | r3 = *(0x26ef2);
0x00026d3c push.w {r4, r5, r6, r7, r8, lr} |
0x00026d40 mov r4, r1 | r4 = r1;
0x00026d42 ldr r5, [r0, 4] | r5 = *((r0 + 4));
0x00026d44 add r2, pc | r2 = "pecified_by___s__configuration_parameter:_returned_value_is_not_a_UTF_8_string";
0x00026d46 vpush {d8} | __asm ("vpush {d8}");
0x00026d4a sub sp, 0x20 |
0x00026d4c ldr r3, [r2, r3] |
0x00026d4e cmp r5, 2 |
0x00026d50 ldr r3, [r3] | r3 = "pecified_by___s__configuration_parameter:_returned_value_is_not_a_UTF_8_string";
0x00026d52 str r3, [sp, 0x1c] | var_1ch = r3;
0x00026d54 mov.w r3, 0 | r3 = 0;
| if (r5 > 2) {
0x00026d58 bgt 0x26dfe | goto label_4;
| }
0x00026d5a cmp r5, 0 |
| if (r5 <= 0) {
0x00026d5c ble 0x26dbe | goto label_5;
| }
0x00026d5e ldr.w r8, [r0, 8] | r8 = *((r0 + 8));
0x00026d62 ldr.w r6, [r8] | r6 = *(r8);
0x00026d66 cmp r6, 0 |
| if (r6 == 0) {
0x00026d68 beq.w 0x26ebe | goto label_6;
| }
0x00026d6c ldrb r7, [r6] | r7 = *(r6);
0x00026d6e cmp r7, 0 |
| if (r7 != 0) {
0x00026d70 bne 0x26e1e | goto label_7;
| }
| label_1:
0x00026d72 cmp r5, 2 |
| if (r5 != 2) {
0x00026d74 bne 0x26dfa | goto label_8;
| }
0x00026d76 ldr.w r8, [r8, 4] | r8 = *((r8 + 4));
0x00026d7a cmp.w r8, 0 |
| if (r8 == 0) {
0x00026d7e beq 0x26dfa | goto label_8;
| }
0x00026d80 ldrb.w r6, [r8] | r6 = *(r8);
0x00026d84 cmp r6, 0 |
| if (r6 != 0) {
0x00026d86 bne 0x26e5a | goto label_9;
| }
| do {
| label_3:
0x00026d88 movs r1, 3 | r1 = 3;
0x00026d8a mov r0, sp | r0 = sp;
0x00026d8c blx 0xe340 | r0 = fcn_0000e340 ();
0x00026d90 cmp r0, r6 |
| if (r0 <= r6) {
0x00026d92 ble.w 0x26ea2 | goto label_10;
| }
0x00026d96 add r3, sp, 0x20 | r3 += var_20h;
0x00026d98 cmp r7, 1 |
0x00026d9a add.w r6, r3, r6, lsl 3 | r6 = r3 + (r6 << 3);
0x00026d9e vldr d8, [r6, -0x20] | __asm ("vldr d8, [r6, -0x20]");
0x00026da0 ldrh r0, [r1, 0x18] | r0 = *((r1 + 0x18));
| if (r7 == 1) {
0x00026da2 bne 0x26dce |
0x00026da4 movs r0, 0x54 | r0 = 0x54;
0x00026da6 blx 0xdbf8 | r0 = longjmp_chk ();
0x00026daa cmp r0, 0 |
| if (r0 <= 0) {
0x00026dac ble.w 0x26ec6 | goto label_11;
| }
0x00026db0 vmov s15, r0 | __asm ("vmov s15, r0");
0x00026db4 vcvt.f64.s32 d16, s15 | __asm ("vcvt.f64.s32 d16, s15");
0x00026db8 vdiv.f64 d8, d8, d16 | __asm ("vdiv.f64 d8, d8, d16");
0x00026dbc b 0x26dce | goto label_12;
| label_5:
0x00026dbe movs r1, 3 | r1 = 3;
0x00026dc0 mov r0, sp | r0 = sp;
0x00026dc2 blx 0xe340 | r0 = fcn_0000e340 ();
0x00026dc6 cmp r0, 0 |
| if (r0 <= 0) {
0x00026dc8 ble 0x26ea2 | goto label_10;
| }
0x00026dca vldr d8, [sp] | __asm ("vldr d8, [sp]");
| }
| label_12:
0x00026dce ldr r3, [r4, 0x28] | r3 = *((r4 + 0x28));
0x00026dd0 movs r0, 0 | r0 = 0;
0x00026dd2 vstr d8, [r4, 0x10] | __asm ("vstr d8, [r4, 0x10]");
0x00026dd6 orr r3, r3, 2 | r3 |= 2;
0x00026dda str r3, [r4, 0x28] | *((r4 + 0x28)) = r3;
| label_0:
0x00026ddc ldr r2, [pc, 0x114] |
0x00026dde ldr r3, [pc, 0x110] | r3 = *(0x26ef2);
0x00026de0 add r2, pc | r2 = 0x4dcd8;
0x00026de2 ldr r3, [r2, r3] | r3 = *(0x4dcd8);
0x00026de4 ldr r2, [r3] | r2 = *(0x4dcd8);
0x00026de6 ldr r3, [sp, 0x1c] | r3 = var_1ch;
0x00026de8 eors r2, r3 | r2 ^= r3;
0x00026dea mov.w r3, 0 | r3 = 0;
| if (r2 != r3) {
0x00026dee bne 0x26ee8 | goto label_13;
| }
0x00026df0 add sp, 0x20 |
0x00026df2 vpop {d8} | __asm ("vpop {d8}");
0x00026df6 pop.w {r4, r5, r6, r7, r8, pc} |
| label_8:
0x00026dfa movs r6, 0 | r6 = 0;
0x00026dfc b 0x26d88 |
| } while (1);
| label_4:
0x00026dfe ldr r0, [r1, 0x28] | r0 = *((r1 + 0x28));
0x00026e00 movs r2, 0 | r2 = 0;
0x00026e02 ldr r3, [pc, 0xf4] |
0x00026e04 movs r1, 0x88 | r1 = 0x88;
0x00026e06 orr r0, r0, 0x20 | r0 |= 0x20;
0x00026e0a str r0, [r4, 0x28] | *((r4 + 0x28)) = r0;
0x00026e0c add r3, pc | r3 = 0x4dd0a;
0x00026e0e ldr r0, [pc, 0xec] |
0x00026e10 add r0, pc | r0 = 0x4dd12;
0x00026e12 bl 0x40ed8 | r0 = zbx_strdup2 ();
0x00026e16 mov r3, r0 | r3 = r0;
| label_2:
0x00026e18 movs r0, 1 | r0 = 1;
0x00026e1a str r3, [r4, 0x20] | *((r4 + 0x20)) = r3;
0x00026e1c b 0x26ddc | goto label_0;
| label_7:
0x00026e1e ldr r1, [pc, 0xe0] |
0x00026e20 mov r0, r6 | r0 = r6;
0x00026e22 add r1, pc | r1 = 0x4dd28;
0x00026e24 blx 0xe3b0 | r0 = fcn_0000e3b0 ();
0x00026e28 mov r7, r0 | r7 = r0;
0x00026e2a cmp r0, 0 |
| if (r0 == 0) {
0x00026e2c beq 0x26d72 | goto label_1;
| }
0x00026e2e ldr r1, [pc, 0xd4] |
0x00026e30 mov r0, r6 | r0 = r6;
0x00026e32 movs r7, 1 | r7 = 1;
0x00026e34 add r1, pc | r1 = 0x4dd3e;
0x00026e36 blx 0xe3b0 | r0 = fcn_0000e3b0 ();
0x00026e3a cmp r0, 0 |
| if (r0 == 0) {
0x00026e3c beq 0x26d72 | goto label_1;
| }
0x00026e3e ldr r0, [r4, 0x28] | r0 = *((r4 + 0x28));
0x00026e40 movs r2, 0 | r2 = 0;
0x00026e42 ldr r3, [pc, 0xc4] |
0x00026e44 movs r1, 0x94 | r1 = 0x94;
0x00026e46 orr r0, r0, 0x20 | r0 |= 0x20;
0x00026e4a str r0, [r4, 0x28] | *((r4 + 0x28)) = r0;
0x00026e4c add r3, pc | r3 = 0x4dd5a;
0x00026e4e ldr r0, [pc, 0xbc] |
0x00026e50 add r0, pc | r0 = 0x4dd62;
0x00026e52 bl 0x40ed8 | r0 = zbx_strdup2 ();
0x00026e56 mov r3, r0 | r3 = r0;
0x00026e58 b 0x26e18 | goto label_2;
| label_9:
0x00026e5a ldr r1, [pc, 0xb4] |
0x00026e5c mov r0, r8 | r0 = r8;
0x00026e5e add r1, pc | r1 = 0x4dd74;
0x00026e60 blx 0xe3b0 | r0 = fcn_0000e3b0 ();
0x00026e64 mov r6, r0 | r6 = r0;
0x00026e66 cmp r0, 0 |
| if (r0 == 0) {
0x00026e68 beq 0x26d88 | goto label_3;
| }
0x00026e6a ldr r1, [pc, 0xa8] |
0x00026e6c mov r0, r8 | r0 = r8;
0x00026e6e add r1, pc | r1 = 0x4dd88;
0x00026e70 blx 0xe3b0 | r0 = fcn_0000e3b0 ();
| if (r0 == 0) {
0x00026e74 cbz r0, 0x26ec2 | goto label_14;
| }
0x00026e76 ldr r1, [pc, 0xa0] |
0x00026e78 mov r0, r8 | r0 = r8;
0x00026e7a mov r6, r5 | r6 = r5;
0x00026e7c add r1, pc | r1 = 0x4dd9a;
0x00026e7e blx 0xe3b0 | r0 = fcn_0000e3b0 ();
0x00026e82 cmp r0, 0 |
| if (r0 == 0) {
0x00026e84 beq 0x26d88 | goto label_3;
| }
0x00026e86 ldr r0, [r4, 0x28] | r0 = *((r4 + 0x28));
0x00026e88 movs r2, 0 | r2 = 0;
0x00026e8a ldr r3, [pc, 0x90] |
0x00026e8c movs r1, 0xa2 | r1 = 0xa2;
0x00026e8e orr r0, r0, 0x20 | r0 |= 0x20;
0x00026e92 str r0, [r4, 0x28] | *((r4 + 0x28)) = r0;
0x00026e94 add r3, pc | r3 = 0x4ddb6;
0x00026e96 ldr r0, [pc, 0x88] |
0x00026e98 add r0, pc | r0 = 0x4ddbe;
0x00026e9a bl 0x40ed8 | r0 = zbx_strdup2 ();
0x00026e9e mov r3, r0 | r3 = r0;
0x00026ea0 b 0x26e18 | goto label_2;
| label_10:
0x00026ea2 ldr r0, [r4, 0x28] | r0 = *((r4 + 0x28));
0x00026ea4 movs r2, 0 | r2 = 0;
0x00026ea6 ldr r3, [pc, 0x7c] |
0x00026ea8 movs r1, 0xa8 | r1 = 0xa8;
0x00026eaa orr r0, r0, 0x20 | r0 |= 0x20;
0x00026eae str r0, [r4, 0x28] | *((r4 + 0x28)) = r0;
0x00026eb0 add r3, pc | r3 = 0x4ddda;
0x00026eb2 ldr r0, [pc, 0x74] |
0x00026eb4 add r0, pc | r0 = 0x4dde2;
0x00026eb6 bl 0x40ed8 | r0 = zbx_strdup2 ();
0x00026eba mov r3, r0 | r3 = r0;
0x00026ebc b 0x26e18 | goto label_2;
| label_6:
0x00026ebe mov r7, r6 | r7 = r6;
0x00026ec0 b 0x26d72 | goto label_1;
| label_14:
0x00026ec2 movs r6, 1 | r6 = 1;
0x00026ec4 b 0x26d88 | goto label_3;
| label_11:
0x00026ec6 ldr r3, [r4, 0x28] | r3 = *((r4 + 0x28));
0x00026ec8 orr r3, r3, 0x20 | r3 |= 0x20;
0x00026ecc str r3, [r4, 0x28] | *((r4 + 0x28)) = r3;
0x00026ece blx 0xe3d4 | r0 = fcn_0000e3d4 ();
0x00026ed2 ldr r0, [r0] | r0 = *(r0);
0x00026ed4 bl 0x30b74 | zbx_strerror ();
0x00026ed8 ldr r1, [pc, 0x50] |
0x00026eda mov r2, r0 | r2 = r0;
0x00026edc movs r0, 0 | r0 = 0;
0x00026ede add r1, pc | r1 = 0x4de0e;
0x00026ee0 bl 0x44820 | r0 = zbx_dsprintf ()
0x00026ee4 mov r3, r0 | r3 = r0;
0x00026ee6 b 0x26e18 | goto label_2;
| label_13:
0x00026ee8 blx 0xe158 | fcn_0000e158 ();
0x00026eec ldr r6, [pc, 0x250] | r6 = *(0x27140);
0x00026eee movs r3, r0 | r3 = r0;
0x00026ef0 lsls r4, r2, 0xe | r4 = r2 << 0xe;
0x00026ef2 movs r0, r0 |
0x00026ef4 ldr r5, [pc, 0x3e0] | r5 = *(0x272d8);
0x00026ef6 movs r3, r0 | r3 = r0;
0x00026ef8 ldrh r4, [r1, 2] | r4 = *((r1 + 2));
0x00026efa movs r2, r0 | r2 = r0;
0x00026efc invalid |
| }
; assembly | /* r2dec pseudo code output */
| /* /logs/firmware/patool_extraction/rootfs.img_unblob_extracted/rootfs.img_extract/0-80367616.squashfs_v4_le_extract/usr/sbin/zabbix_agentd @ 0x269e4 */
| #include <stdint.h>
|
; (fcn) sym.SYSTEM_CPU_NUM () | void SYSTEM_CPU_NUM (int16_t arg1, int16_t arg2) {
| r0 = arg1;
| r1 = arg2;
0x000269e4 invalid |
0x000269e8 ldr r3, [r0, 4] | r3 = *((r0 + 4));
0x000269ea cmp r3, 1 |
| if (r3 > 1) {
0x000269ec bgt 0x26a18 | goto label_2;
| }
| if (r3 != 1) {
0x000269ee bne 0x269fa | goto label_3;
| }
0x000269f0 ldr r3, [r0, 8] | r3 = *((r0 + 8));
0x000269f2 ldr r5, [r3] | r5 = *(r3);
| if (r5 == 0) {
0x000269f4 cbz r5, 0x269fa | goto label_3;
| }
0x000269f6 ldrb r3, [r5] | r3 = *(r5);
0x000269f8 cbnz r3, 0x26a38 |
| while (r0 == 0) {
| label_3:
0x000269fa movs r0, 0x54 | r0 = 0x54;
| label_0:
0x000269fc blx 0xdbf8 | r0 = longjmp_chk ();
0x00026a00 adds r2, r0, 1 | r2 = r0 + 1;
0x00026a02 mov r3, r0 | r3 = r0;
| if (r2 == r0) {
0x00026a04 beq 0x26a56 | goto label_4;
| }
0x00026a06 ldr r2, [r4, 0x28] | r2 = *((r4 + 0x28));
0x00026a08 asrs r1, r0, 0x1f | r1 = r0 >> 0x1f;
0x00026a0a movs r0, 0 | r0 = 0;
0x00026a0c strd r3, r1, [r4, 8] | __asm ("strd r3, r1, [r4, 8]");
0x00026a10 orr r2, r2, 1 | r2 |= 1;
0x00026a14 str r2, [r4, 0x28] | *((r4 + 0x28)) = r2;
0x00026a16 pop {r3, r4, r5, pc} |
| label_2:
0x00026a18 ldr r0, [r1, 0x28] | r0 = *((r1 + 0x28));
0x00026a1a movs r2, 0 | r2 = 0;
0x00026a1c ldr r3, [pc, 0x74] |
0x00026a1e movs r1, 0x21 | r1 = 0x21;
0x00026a20 orr r0, r0, 0x20 | r0 |= 0x20;
0x00026a24 str r0, [r4, 0x28] | *((r4 + 0x28)) = r0;
0x00026a26 add r3, pc | r3 = 0x4d4be;
0x00026a28 ldr r0, [pc, 0x6c] |
0x00026a2a add r0, pc | r0 = 0x4d4c6;
0x00026a2c bl 0x40ed8 | zbx_strdup2 ();
0x00026a2e invalid |
| label_1:
0x00026a32 movs r0, 1 | r0 = 1;
0x00026a34 str r3, [r4, 0x20] | *((r4 + 0x20)) = r3;
0x00026a36 pop {r3, r4, r5, pc} |
0x00026a38 ldr r1, [pc, 0x60] |
0x00026a3a mov r0, r5 | r0 = r5;
0x00026a3c add r1, pc | r1 = "runtime-control";
0x00026a3e blx 0xe3b0 | r0 = fcn_0000e3b0 ();
0x00026a42 cmp r0, 0 |
0x00026a44 beq 0x269fa |
| }
0x00026a46 ldr r1, [pc, 0x58] |
0x00026a48 mov r0, r5 | r0 = r5;
0x00026a4a add r1, pc | r1 = 0x4d4f0;
0x00026a4c blx 0xe3b0 | r0 = fcn_0000e3b0 ();
| if (r0 == 0) {
0x00026a50 cbnz r0, 0x26a78 |
0x00026a52 movs r0, 0x53 | r0 = 0x53;
0x00026a54 b 0x269fc | goto label_0;
| label_4:
0x00026a56 ldr r3, [r4, 0x28] | r3 = *((r4 + 0x28));
0x00026a58 orr r3, r3, 0x20 | r3 |= 0x20;
0x00026a5c str r3, [r4, 0x28] | *((r4 + 0x28)) = r3;
0x00026a5e blx 0xe3d4 | r0 = fcn_0000e3d4 ();
0x00026a62 ldr r0, [r0] | r0 = *(r0);
0x00026a64 bl 0x30b74 | zbx_strerror ();
0x00026a68 ldr r1, [pc, 0x38] |
0x00026a6a mov r2, r0 | r2 = r0;
0x00026a6c movs r0, 0 | r0 = 0;
0x00026a6e add r1, pc | r1 = 0x4d516;
0x00026a70 bl 0x44820 | r0 = zbx_dsprintf ()
0x00026a74 mov r3, r0 | r3 = r0;
0x00026a76 b 0x26a32 | goto label_1;
| }
0x00026a78 ldr r0, [r4, 0x28] | r0 = *((r4 + 0x28));
0x00026a7a movs r2, 0 | r2 = 0;
0x00026a7c ldr r3, [pc, 0x28] |
0x00026a7e movs r1, 0x2d | r1 = 0x2d;
0x00026a80 orr r0, r0, 0x20 | r0 |= 0x20;
0x00026a84 str r0, [r4, 0x28] | *((r4 + 0x28)) = r0;
0x00026a86 add r3, pc | r3 = 0x4d532;
0x00026a88 ldr r0, [pc, 0x20] |
0x00026a8a add r0, pc | r0 = 0x4d53a;
0x00026a8c bl 0x40ed8 | r0 = zbx_strdup2 ();
0x00026a90 mov r3, r0 | r3 = r0;
0x00026a92 b 0x26a32 | goto label_1;
| }
; assembly | /* r2dec pseudo code output */
| /* /logs/firmware/patool_extraction/rootfs.img_unblob_extracted/rootfs.img_extract/0-80367616.squashfs_v4_le_extract/usr/sbin/zabbix_agentd @ 0x26f30 */
| #include <stdint.h>
|
; (fcn) sym.SYSTEM_CPU_SWITCHES () | void SYSTEM_CPU_SWITCHES (int16_t arg2) {
| int16_t var_0h;
| int32_t var_0h_2;
| int16_t var_ch;
| int16_t var_80ch;
| int16_t var_810h;
| r1 = arg2;
0x00026f30 ldr r2, [pc, 0xe8] |
0x00026f32 ldr r3, [pc, 0xec] | r3 = *(0x27022);
0x00026f34 push.w {r4, r5, r6, r7, r8, sb, sl, lr} |
0x00026f38 mov r7, r1 | r7 = r1;
0x00026f3a add r2, pc | r2 = 0x4df5a;
0x00026f3c ldr r0, [pc, 0xe4] |
0x00026f3e sub.w sp, sp, 0x810 |
0x00026f42 ldr r1, [pc, 0xe4] |
0x00026f44 mov sb, sp | sb = sp;
0x00026f46 ldr r3, [r2, r3] |
0x00026f48 add r0, pc | r0 = 0x4df70;
0x00026f4a vmov.i32 d16, 0 | __asm ("vmov.i32 d16, 0");
0x00026f4e add r1, pc | r1 = 0x4df7c;
0x00026f50 ldr r3, [r3] | r3 = *(0x4df5a);
0x00026f52 str.w r3, [sp, 0x80c] | __asm ("str.w r3, [var_80ch]");
0x00026f56 mov.w r3, 0 | r3 = 0;
0x00026f5a vstr d16, [sb] | __asm ("vstr d16, [sb]");
0x00026f5e blx 0xdf90 | r0 = fcn_0000df90 ();
0x00026f62 mov r6, r0 | r6 = r0;
0x00026f64 cmp r0, 0 |
| if (r0 == 0) {
0x00026f66 beq 0x26ff8 | goto label_2;
| }
0x00026f68 ldr.w sl, [pc, 0xc0] | sl = *(0x0002702c);
0x00026f6c movw r8, 0x7463 |
0x00026f70 add r5, sp, 0xc | r5 += var_ch;
0x00026f72 movt r8, 0x7478 | r8 = 0x74787463;
0x00026f76 add sl, pc | sl += pc;
| do {
| label_0:
0x00026f78 mov r2, r6 | r2 = r6;
0x00026f7a mov.w r1, 0x800 | r1 = 0x800;
0x00026f7e mov r0, r5 | r0 = r5;
0x00026f80 blx 0xdc98 | r0 = fcn_0000dc98 ();
0x00026f84 mov r4, r0 | r4 = r0;
| if (r0 == 0) {
0x00026f86 cbz r0, 0x26fd4 | goto label_3;
| }
0x00026f88 ldr r3, [r5] | r3 = *(r5);
0x00026f8a cmp r3, r8 |
0x00026f8c bne 0x26f78 |
| } while (r3 != r8);
0x00026f8e mov r2, sb | r2 = sb;
0x00026f90 mov r1, sl | r1 = sl;
0x00026f92 mov r0, r5 | r0 = r5;
0x00026f94 movs r4, 0 | r4 = 0;
0x00026f96 blx 0xdc68 | fcn_0000dc68 ();
0x00026f98 cdp p8, 6, c2, c8, c1, 0 | __asm ("cdp p8, 6, c2, c8, c1, 0");
| if (r4 != 0) {
0x00026f9c bne 0x26f78 | goto label_0;
| }
0x00026f9e ldr r3, [r7, 0x28] | r3 = *((r7 + 0x28));
0x00026fa0 mov r0, r6 | r0 = r6;
0x00026fa2 orr r3, r3, 1 | r3 |= 1;
0x00026fa6 str r3, [r7, 0x28] | *((r7 + 0x28)) = r3;
0x00026fa8 ldrd r2, r3, [sb] | __asm ("ldrd r2, r3, [sb]");
0x00026fac strd r2, r3, [r7, 8] | __asm ("strd r2, r3, [r7, 8]");
0x00026fb0 blx 0xdc8c | fcn_0000dc8c ();
| do {
0x00026fb4 ldr r2, [pc, 0x78] |
0x00026fb6 ldr r3, [pc, 0x68] | r3 = *(0x27022);
0x00026fb8 add r2, pc | r2 = "buffer: new element %d";
0x00026fba ldr r3, [r2, r3] | r3 = "buffer: new element %d";
0x00026fbc ldr r2, [r3] | r2 = "buffer: new element %d";
0x00026fbe ldr.w r3, [sp, 0x80c] | r3 = var_80ch;
0x00026fc2 eors r2, r3 | r2 ^= r3;
0x00026fc4 mov.w r3, 0 | r3 = 0;
| if (r2 != r3) {
0x00026fc8 bne 0x27018 | goto label_4;
| }
0x00026fca mov r0, r4 | r0 = r4;
0x00026fcc add.w sp, sp, 0x810 |
0x00026fd0 pop.w {r4, r5, r6, r7, r8, sb, sl, pc} |
| label_3:
0x00026fd4 mov r0, r6 | r0 = r6;
0x00026fd6 blx 0xdc8c | fcn_0000dc8c ();
0x00026fda ldr r0, [r7, 0x28] | r0 = *((r7 + 0x28));
0x00026fdc mov r2, r4 | r2 = r4;
0x00026fde ldr r3, [pc, 0x54] |
0x00026fe0 movs r1, 0xdc | r1 = 0xdc;
0x00026fe2 orr r0, r0, 0x20 | r0 |= 0x20;
0x00026fe6 str r0, [r7, 0x28] | *((r7 + 0x28)) = r0;
0x00026fe8 add r3, pc | r3 = 0x4e022;
0x00026fea ldr r0, [pc, 0x4c] |
0x00026fec add r0, pc | r0 = 0x4e02a;
0x00026fee bl 0x40ed8 | zbx_strdup2 ();
| label_1:
0x00026ff2 movs r4, 1 | r4 = 1;
0x00026ff4 str r0, [r7, 0x20] | *((r7 + 0x20)) = r0;
0x00026ff6 b 0x26fb4 |
| } while (1);
| label_2:
0x00026ff8 ldr r3, [r7, 0x28] | r3 = *((r7 + 0x28));
0x00026ffa orr r3, r3, 0x20 | r3 |= 0x20;
0x00026ffe str r3, [r7, 0x28] | *((r7 + 0x28)) = r3;
0x00027000 blx 0xe3d4 | r0 = fcn_0000e3d4 ();
0x00027004 ldr r0, [r0] | r0 = *(r0);
0x00027006 bl 0x30b74 | zbx_strerror ();
0x0002700a ldr r1, [pc, 0x30] |
0x0002700c mov r2, r0 | r2 = r0;
0x0002700e mov r0, r6 | r0 = r6;
0x00027010 add r1, pc | r1 = 0x4e052;
0x00027012 bl 0x44820 | zbx_dsprintf ()
0x00027016 b 0x26ff2 | goto label_1;
| label_4:
0x00027018 blx 0xe158 | fcn_0000e158 ();
0x0002701c ldr r4, [pc, 0x278] | r4 = *(0x27298);
0x0002701e movs r3, r0 | r3 = r0;
0x00027020 lsls r4, r2, 0xe | r4 = r2 << 0xe;
0x00027022 movs r0, r0 |
0x00027024 ldrb r4, [r5, 0x15] | r4 = *((r5 + 0x15));
0x00027026 movs r2, r0 | r2 = r0;
0x00027028 adr r3, 0x308 | r3 = 0x308;
0x0002702a movs r2, r0 | r2 = r0;
0x0002702c invalid |
| }
; assembly | /* r2dec pseudo code output */
| /* /logs/firmware/patool_extraction/rootfs.img_unblob_extracted/rootfs.img_extract/0-80367616.squashfs_v4_le_extract/usr/sbin/zabbix_agentd @ 0x29210 */
| #include <stdint.h>
|
; (fcn) sym.SYSTEM_HOSTNAME () | void SYSTEM_HOSTNAME (int16_t arg_388h, int16_t arg1, int16_t arg2) {
| int16_t var_4h;
| int32_t var_0h;
| int16_t var_45h;
| int16_t var_98h;
| int16_t var_18ch;
| r0 = arg1;
| r1 = arg2;
0x00029210 blmi 0xb7bac8 | __asm ("blmi aav.0x000329c0");
0x00029214 push {r4, r5, r6, lr} |
0x00029216 sub sp, 0x190 |
0x00029218 add r2, pc | r2 += pc;
0x0002921a mov r4, r1 | r4 = r1;
0x0002921c ldr r3, [r2, r3] | r3 = *((r2 + r3));
0x0002921e ldr r3, [r3] | r3 = *(r3);
0x00029220 str r3, [sp, 0x18c] | var_18ch = r3;
0x00029222 mov.w r3, 0 | r3 = 0;
0x00029226 ldr r3, [r0, 4] | r3 = *((r0 + 4));
0x00029228 cmp r3, 2 |
| if (r3 > 2) {
0x0002922a bgt 0x29274 | goto label_2;
| }
0x0002922c mov r5, r0 | r5 = r0;
0x0002922e add r0, sp, 4 | r0 += var_4h;
0x00029230 blx 0xdd84 | dn_expand ();
0x00029234 adds r0, 1 | r0++;
| if (r0 == 1) {
0x00029236 beq 0x2929e | goto label_3;
| }
0x00029238 ldr r0, [pc, 0x90] |
0x0002923a add.w r3, sp, 0x45 | r3 += var_45h;
0x0002923c lsls r5, r0, 0xd | r5 = r0 << 0xd;
0x0002923e movs r2, 0 | r2 = 0;
0x00029240 movs r1, 0x31 | r1 = 0x31;
0x00029242 add r0, pc | r0 = 0x52512;
0x00029244 bl 0x40ed8 | zbx_strdup2 ();
0x00029248 mov r1, r4 | r1 = r4;
0x0002924a mov r2, r0 | r2 = r0;
0x0002924c mov r6, r0 | r6 = r0;
0x0002924e mov r0, r5 | r0 = r5;
0x00029250 bl 0x1d930 | r0 = hostname_handle_params ();
0x00029254 adds r3, r0, 1 | r3 = r0 + 1;
0x00029256 mov r5, r0 | r5 = r0;
| if (r3 == r0) {
0x00029258 beq 0x29292 | goto label_4;
| }
| do {
| label_0:
0x0002925a ldr r2, [pc, 0x74] |
0x0002925c ldr r3, [pc, 0x68] | r3 = *(0x292c8);
0x0002925e add r2, pc | r2 = 0x52534;
0x00029260 ldr r3, [r2, r3] | r3 = *(0x52534);
0x00029262 ldr r2, [r3] | r2 = *(0x52534);
0x00029264 ldr r3, [sp, 0x18c] | r3 = var_18ch;
0x00029266 eors r2, r3 | r2 ^= r3;
0x00029268 mov.w r3, 0 | r3 = 0;
| if (r2 != r3) {
0x0002926c bne 0x292be | goto label_5;
| }
0x0002926e mov r0, r5 | r0 = r5;
0x00029270 add sp, 0x190 |
0x00029272 pop {r4, r5, r6, pc} |
| label_2:
0x00029274 ldr r0, [r1, 0x28] | r0 = *((r1 + 0x28));
0x00029276 movs r2, 0 | r2 = 0;
0x00029278 ldr r3, [pc, 0x58] |
0x0002927a movs r1, 0x27 | r1 = 0x27;
0x0002927c orr r0, r0, 0x20 | r0 |= 0x20;
0x00029280 str r0, [r4, 0x28] | *((r4 + 0x28)) = r0;
0x00029282 add r3, pc | r3 = 0x5255a;
0x00029284 ldr r0, [pc, 0x50] |
0x00029286 add r0, pc | r0 = 0x52562;
0x00029288 bl 0x40ed8 | zbx_strdup2 ();
| label_1:
0x0002928c movs r5, 1 | r5 = 1;
0x0002928e str r0, [r4, 0x20] | *((r4 + 0x20)) = r0;
0x00029290 b 0x2925a |
| } while (1);
| label_4:
0x00029292 cmp r6, 0 |
| if (r6 == 0) {
0x00029294 beq 0x2925a | goto label_0;
| }
0x00029296 mov r0, r6 | r0 = r6;
0x00029298 blx 0xde30 | fcn_0000de30 ();
0x0002929c b 0x2925a | goto label_0;
| label_3:
0x0002929e ldr r3, [r4, 0x28] | r3 = *((r4 + 0x28));
0x000292a0 orr r3, r3, 0x20 | r3 |= 0x20;
0x000292a4 str r3, [r4, 0x28] | *((r4 + 0x28)) = r3;
0x000292a6 blx 0xe3d4 | r0 = fcn_0000e3d4 ();
0x000292aa ldr r0, [r0] | r0 = *(r0);
0x000292ac bl 0x30b74 | zbx_strerror ();
0x000292b0 ldr r1, [pc, 0x28] |
0x000292b2 mov r2, r0 | r2 = r0;
0x000292b4 movs r0, 0 | r0 = 0;
0x000292b6 add r1, pc | r1 = 0x52596;
0x000292b8 bl 0x44820 | zbx_dsprintf ()
0x000292bc b 0x2928c | goto label_1;
| label_5:
0x000292be blx 0xe158 | fcn_0000e158 ();
0x000292c2 nop |
0x000292c4 cmp r1, 0xc0 |
0x000292c6 movs r3, r0 | r3 = r0;
0x000292c8 lsls r4, r2, 0xe | r4 = r2 << 0xe;
0x000292ca movs r0, r0 |
0x000292cc ldr r2, [sp, 0x98] | r2 = var_98h;
0x000292ce movs r2, r0 | r2 = r0;
0x000292d0 cmp r1, 0x7a |
0x000292d2 movs r3, r0 | r3 = r0;
0x000292d4 str r6, [r2, 0x3c] | *((r2 + 0x3c)) = r6;
0x000292d6 movs r2, r0 | r2 = r0;
0x000292d8 ldr r1, [sp, 0x388] | r1 = *(arg_388h);
0x000292da movs r2, r0 | r2 = r0;
0x000292dc strh r2, [r3, 0xe] | *((r3 + 0xe)) = r2;
0x000292de movs r2, r0 | r2 = r0;
0x000292e0 ldr r3, [r1, 0x28] | r3 = *((r1 + 0x28));
0x000292e2 movs r0, 0 | r0 = 0;
0x000292e4 vldr d16, [pc, 0x10] | __asm ("vldr d16, [0x000292fc]");
0x000292e8 orr r3, r3, 1 | r3 |= 1;
0x000292ec vstr d16, [r1, 8] | __asm ("vstr d16, [r1, 8]");
0x000292f0 str r3, [r1, 0x28] | *((r1 + 0x28)) = r3;
0x000292f2 bx lr | return;
| }
; assembly | /* r2dec pseudo code output */
| /* /logs/firmware/patool_extraction/rootfs.img_unblob_extracted/rootfs.img_extract/0-80367616.squashfs_v4_le_extract/usr/sbin/zabbix_agentd @ 0x282c4 */
| #include <stdint.h>
|
| #define BIT_MASK(t,v) ((t)(-((v)!= 0)))&(((t)-1)>>((sizeof(t)*CHAR_BIT)-(v)))
|
; (fcn) sym.SYSTEM_HW_CPU () | void SYSTEM_HW_CPU (int16_t arg_860h, int16_t arg_1040h, int16_t arg_1840h, int16_t arg_2040h, int16_t arg_12000h, int16_t arg1, int16_t arg2) {
| int16_t var_14h;
| int16_t var_18h;
| int16_t var_1ch;
| int16_t var_20h;
| int16_t var_24h;
| int16_t var_28h;
| int16_t var_2ch;
| int16_t var_30h;
| int16_t var_34h;
| int16_t var_38h;
| int16_t var_3ch;
| int16_t var_5ch;
| int16_t var_60h;
| r0 = arg1;
| r1 = arg2;
0x000282c4 svcmi 0xf0e92d | __asm ("svcmi 0xf0e92d");
0x000282c8 mov r5, r0 | r5 = r0;
0x000282ca vpush {d8} | __asm ("vpush {d8}");
0x000282ce sub.w sp, sp, 0x12000 |
0x000282d2 sub sp, 0x64 |
0x000282d4 ldr.w r2, [pc, 0x4c4] | r2 = *(0x0002879c);
0x000282d8 add.w sl, sp, 0x60 | sl += var_60h;
0x000282dc ldr.w r3, [pc, 0x4c0] |
0x000282e0 add.w r4, sp, 0x12000 | r4 += arg_12000h;
0x000282e4 ldr r6, [r0, 4] | r6 = *((r0 + 4));
0x000282e6 sub.w r0, sl, 0x10 | r0 = sl - 0x10;
0x000282e8 movs r0, r2 | r0 = r2;
0x000282ea add r2, pc | r2 += pc;
0x000282ec str r0, [sp, 0x18] | var_18h = r0;
0x000282ee vmov.i8 d16, 0xff | __asm ("vmov.i8 d16, 0xff");
0x000282f2 adds r4, 0x5c | r4 += 0x5c;
0x000282f4 ldr r3, [r2, r3] | r3 = *((r2 + r3));
0x000282f6 cmp r6, 2 |
0x000282f8 ldr r3, [r3] | r3 = *(0x287a0);
0x000282fa str r3, [r4] | *(r4) = r3;
0x000282fc mov.w r3, 0 | r3 = 0;
0x00028300 mov r4, r1 | r4 = r1;
0x00028302 vstr d16, [sl, -0x18] | __asm ("vstr d16, [sl, -0x18]");
| if (r6 > 2) {
0x00028306 bgt.w 0x2866a | goto label_12;
| }
0x0002830a cmp r6, 0 |
0x0002830c itt le |
| if (r6 > 0) {
0x0002830e movle r3, -1 | r3 = -1;
| }
| if (r6 <= 0) {
0x00028312 str r3, [sl, -0x1c] | *((sl - 0x1c)) = r3;
| }
| if (r6 > 0) {
0x00028316 ble 0x28340 |
0x00028318 ldr r3, [r5, 8] | r3 = *((r5 + 8));
0x0002831a ldr r7, [r3] | r7 = *(r3);
| if (r7 != 0) {
0x0002831c cbz r7, 0x28326 |
0x0002831e ldrb r3, [r7] | r3 = *(r7);
0x00028320 cmp r3, 0 |
| if (r3 != 0) {
0x00028322 bne.w 0x2868c | goto label_13;
| }
| }
| label_8:
0x00028326 mov.w r3, -1 | r3 = -1;
0x0002832a str r3, [sl, -0x1c] | *((sl - 0x1c)) = r3;
0x0002832c subs r4, 0x1c | r4 -= 0x1c;
| label_9:
0x0002832e cmp r6, 1 |
| if (r6 <= 1) {
0x00028330 ble 0x28340 | goto label_5;
| }
0x00028332 ldr r3, [r5, 8] | r3 = *((r5 + 8));
0x00028334 ldr r5, [r3, 4] | r5 = *((r3 + 4));
| if (r5 == 0) {
0x00028336 cbz r5, 0x28340 | goto label_5;
| }
0x00028338 ldrb r3, [r5] | r3 = *(r5);
0x0002833a cmp r3, 0 |
| if (r3 != 0) {
0x0002833c bne.w 0x28618 | goto label_14;
| }
| }
| label_5:
0x00028340 movs r3, 1 | r3 = 1;
0x00028342 str r3, [sp, 0x28] | var_28h = r3;
| label_6:
0x00028344 ldr.w r1, [pc, 0x45c] |
0x00028348 ldr.w r0, [pc, 0x45c] | r0 = *(0x000287a8);
0x0002834c add r1, pc | r1 = 0x50af4;
0x0002834e add r0, pc | r0 += pc;
0x00028350 blx 0xdf90 | r0 = fcn_0000df90 ();
0x00028354 mov r8, r0 | r8 = r0;
0x00028356 cmp r0, 0 |
| if (r0 == 0) {
0x00028358 beq.w 0x2877c | goto label_15;
| }
0x0002835c add.w r3, sp, 0x2040 | r3 += arg_2040h;
0x00028360 mov.w sb, 0 | sb = 0;
0x00028364 adds r3, 0x20 | r3 += 0x20;
0x00028366 strb sb, [r3, -0x4] | *((r3 - 0x4)) = sb;
0x0002836a str r3, [sp, 0x24] | var_24h = r3;
0x0002836c movw r3, 0x7270 |
0x00028370 movt r3, 0x636f | r3 = 0x636f7270;
0x00028374 vmov.i8 d8, 0xff | __asm ("vmov.i8 d8, 0xff");
0x00028378 str r3, [sp, 0x1c] | var_1ch = r3;
0x0002837a movw r3, 0x6576 |
0x0002837e movt r3, 0x646e | r3 = 0x646e6576;
0x00028382 mov.w r7, -1 | r7 = -1;
0x00028386 str r3, [sp, 0x2c] | var_2ch = r3;
0x00028388 movw r3, 0x6f6d |
0x0002838c movt r3, 0x6564 | r3 = 0x65646f6d;
0x00028390 add r5, sp, 0x5c | r5 += var_5ch;
0x00028392 str r3, [sp, 0x30] | var_30h = r3;
0x00028394 movw r3, 0x7063 |
0x00028398 movt r3, 0x2075 | r3 = 0x20757063;
0x0002839c mov fp, r4 |
0x0002839e str r3, [sp, 0x34] | var_34h = r3;
0x000283a0 movw r3, 0x7365 |
0x000283a4 movt r3, 0x6f73 |
0x000283a8 str r3, [sp, 0x38] | var_38h = r3;
0x000283aa ldr.w r3, [pc, 0x400] | r3 = *(0x000287ac);
0x000283ae add r3, pc | r3 = 0x6f75f717;
0x000283b0 str r3, [sp, 0x14] | var_14h = r3;
0x000283b2 movs r3, 1 | r3 = 1;
0x000283b4 str r3, [sp, 0x20] | var_20h = r3;
| label_0:
0x000283b6 add.w r6, sp, 0x1040 | r6 += arg_1040h;
0x000283ba adds r6, 0x1c | r6 += 0x1c;
| do {
0x000283bc mov r2, r8 | r2 = r8;
0x000283be mov.w r1, 0x800 | r1 = 0x800;
0x000283c2 mov r0, r5 | r0 = r5;
0x000283c4 blx 0xdc98 | r0 = fcn_0000dc98 ();
0x000283c8 cmp r0, 0 |
| if (r0 == 0) {
0x000283ca beq.w 0x2850a | goto label_16;
| }
0x000283ce add.w r4, sp, 0x860 | r4 += arg_860h;
0x000283d2 ldr r1, [sp, 0x14] | r1 = var_14h;
0x000283d4 mov r3, r6 | r3 = r6;
0x000283d6 subs r2, r4, 4 | r2 = r4 - 4;
0x000283d8 mov r0, r5 | r0 = r5;
0x000283da blx 0xdc68 | r0 = fcn_0000dc68 ();
0x000283de cmp r0, 2 |
0x000283e0 bne 0x283bc |
| } while (r0 != 2);
0x000283e2 ldr r3, [r4, -0x4] | r3 = *((r4 - 0x4));
0x000283e6 ldr r2, [sp, 0x1c] | r2 = var_1ch;
0x000283e8 cmp r3, r2 |
| if (r3 == r2) {
0x000283ea beq 0x2844a | goto label_17;
| }
| label_1:
0x000283ec ldr r3, [sl, -0x1c] | r3 = *((sl - 0x1c));
0x000283f0 cmp r3, r7 |
0x000283f2 it ne |
| if (r3 == r7) {
0x000283f4 cmpne r3, -1 | __asm ("cmpne r3, -1");
| goto label_18;
| }
| if (r3 != r7) {
| label_18:
0x000283f8 bne 0x283b6 | goto label_0;
| }
| label_2:
0x000283fa ldr r3, [r4, -0x4] | r3 = *((r4 - 0x4));
0x000283fe ldr r2, [sp, 0x2c] | r2 = var_2ch;
0x00028400 cmp r3, r2 |
| if (r3 == r2) {
0x00028402 beq.w 0x28594 | goto label_19;
| }
| label_3:
0x00028406 ldr r3, [r4, -0x4] | r3 = *((r4 - 0x4));
0x0002840a ldr r2, [sp, 0x30] | r2 = var_30h;
0x0002840c cmp r3, r2 |
| if (r3 == r2) {
0x0002840e beq.w 0x285d4 | goto label_20;
| }
| label_4:
0x00028412 ldr r3, [r4, -0x4] | r3 = *((r4 - 0x4));
0x00028416 ldr r2, [sp, 0x34] | r2 = var_34h;
0x00028418 cmp r3, r2 |
| if (r3 != r2) {
0x0002841a bne 0x283b6 | goto label_0;
| }
0x0002841c ldrh r2, [r4] | r2 = *(r4);
0x0002841e movw r3, 0x484d | r3 = 0x484d;
0x00028422 cmp r2, r3 |
| if (r2 != r3) {
0x00028424 bne 0x283b6 | goto label_0;
| }
0x00028426 ldrb r3, [r4, 2] | r3 = *((r4 + 2));
0x00028428 cmp r3, 0x7a |
| if (r3 != 0x7a) {
0x0002842a bne 0x283b6 | goto label_0;
| }
0x0002842c ldr r3, [sp, 0x28] | r3 = var_28h;
0x0002842e bic r3, r3, 4 | r3 = BIT_MASK (r3, 4);
0x00028432 cmp r3, 1 |
| if (r3 != 1) {
0x00028434 bne 0x283b6 | goto label_0;
| }
0x00028436 ldr r1, [pc, 0x378] |
0x00028438 movs r3, 0 | r3 = 0;
0x0002843a mov r0, r6 | r0 = r6;
0x0002843c sub.w r2, sl, 0x18 | r2 = sl - 0x18;
0x00028440 str r3, [sp, 0x20] | var_20h = r3;
0x00028442 add r1, pc | r1 = 0x50bf8;
0x00028444 blx 0xdc68 | fcn_0000dc68 ();
0x00028448 b 0x283b6 | goto label_0;
| label_17:
0x0002844a ldr r3, [r4] | r3 = *(r4);
0x0002844c ldr r2, [sp, 0x38] | r2 = var_38h;
0x0002844e cmp r3, r2 |
| if (r3 != r2) {
0x00028450 bne 0x283ec | goto label_1;
| }
0x00028452 ldrb r3, [r4, 4] | r3 = *((r4 + 4));
0x00028454 cmp r3, 0x72 |
| if (r3 != 0x72) {
0x00028456 bne 0x283ec | goto label_1;
| }
0x00028458 adds r1, r7, 1 | r1 = r7 + 1;
| if (r1 != r7) {
0x0002845a beq 0x2848a |
0x0002845c ldr r3, [sl, -0x1c] | r3 = *((sl - 0x1c));
0x00028460 cmp r3, r7 |
0x00028462 it ne |
| if (r3 != r7) {
0x00028464 cmpne r3, -1 | __asm ("cmpne r3, -1");
| }
| if (r3 != r7) {
0x00028468 bne 0x2848a | goto label_21;
| }
0x0002846a ldr r7, [sp, 0x18] | r7 = var_18h;
0x0002846c rsb.w r1, sb, 0x10000 | r1 = 0x10000 - sb;
0x00028470 ldr r2, [sp, 0x24] | r2 = var_24h;
0x00028472 vstr d8, [sp] | __asm ("vstr d8, [sp]");
0x00028476 vldr d16, [r7, -8] | __asm ("vldr d16, [r7, -8]");
0x0002847a subs r0, r2, 4 | r0 = r2 - 4;
0x0002847c ldr r2, [sp, 0x28] | r2 = var_28h;
0x0002847e add r0, sb | r0 += sb;
0x00028480 vstr d16, [sp, 8] | __asm ("vstr d16, [sp, 8]");
0x00028484 bl 0x27aac | r0 = fcn_00027aac (r0, r1, r2, r3, r4, r5, r6);
0x00028488 add sb, r0 | sb += r0;
| }
| label_21:
0x0002848a ldr r3, [sp, 0x18] | r3 = var_18h;
0x0002848c movs r2, 0xa | r2 = 0xa;
0x0002848e vmov.i8 d16, 0xff | __asm ("vmov.i8 d16, 0xff");
0x00028492 movs r1, 0 | r1 = 0;
0x00028494 mov r0, r6 | r0 = r6;
0x00028496 vstr d16, [r3, -8] | __asm ("vstr d16, [r3, -8]");
0x0002849a blx 0xdfe8 | waitpid ();
0x0002849e ldr r3, [sl, -0x1c] | r3 = *((sl - 0x1c));
0x000284a2 mov r7, r0 | r7 = r0;
0x000284a4 adds r2, r3, 1 | r2 = r3 + 1;
| if (r2 == r3) {
0x000284a6 beq.w 0x286e4 | goto label_22;
| }
0x000284aa cmp r3, r0 |
| if (r3 != r0) {
0x000284ac bne 0x283b6 | goto label_0;
| }
0x000284ae ldr r3, [sp, 0x28] | r3 = var_28h;
0x000284b0 cmp r3, 1 |
| if (r3 == 1) {
0x000284b2 beq.w 0x28706 | goto label_23;
| }
0x000284b6 ldr r3, [sp, 0x28] | r3 = var_28h;
0x000284b8 cmp r3, 2 |
| if (r3 != 2) {
0x000284ba bne 0x283fa | goto label_2;
| }
| label_11:
0x000284bc ldr r3, [sp, 0x18] | r3 = var_18h;
0x000284be add.w r0, sp, 0x1840 | r0 += arg_1840h;
0x000284c2 vmov.i8 d16, 0xff | __asm ("vmov.i8 d16, 0xff");
0x000284c6 mov.w r1, 0x800 | r1 = 0x800;
0x000284ca ldr r2, [pc, 0x2e8] |
0x000284cc adds r0, 0x1c | r0 += 0x1c;
0x000284ce str r0, [sp, 0x3c] | var_3ch = r0;
0x000284d0 vstr d16, [r3] | __asm ("vstr d16, [r3]");
0x000284d4 mov r3, r7 | r3 = r7;
0x000284d6 add r2, pc | r2 = 0x50c90;
0x000284d8 bl 0x43f38 | zbx_snprintf ();
0x000284dc ldr r1, [pc, 0x2d8] |
0x000284de ldr r0, [sp, 0x3c] | r0 = var_3ch;
0x000284e0 add r1, pc | r1 = 0x50c9c;
0x000284e2 blx 0xdf90 | r0 = fcn_0000df90 ();
| if (r0 != 0) {
0x000284e6 cbz r0, 0x28502 |
0x000284e8 ldr r1, [pc, 0x2d0] |
0x000284ea ldr r2, [sp, 0x18] | r2 = var_18h;
0x000284ec str r0, [sp, 0x3c] | var_3ch = r0;
0x000284ee add r1, pc | r1 = 0x50cae;
0x000284f0 blx 0xdc10 | inet_ntoa (r0);
0x000284f4 ldr r3, [sp, 0x3c] | r3 = var_3ch;
0x000284f6 cmp r0, 1 |
0x000284f8 mov r0, r3 | r0 = r3;
| if (r0 == 1) {
0x000284fa beq.w 0x2871e | goto label_24;
| }
0x000284fe blx 0xdc8c | fcn_0000dc8c ();
| }
0x00028502 ldr r3, [sp, 0x18] | r3 = var_18h;
0x00028504 vldr d8, [r3] | __asm ("vldr d8, [r3]");
0x00028508 b 0x283ec | goto label_1;
| label_16:
0x0002850a mov r4, fp | r4 = fp;
0x0002850c mov fp, r0 |
0x0002850e mov r0, r8 | r0 = r8;
0x00028510 blx 0xdc8c | fcn_0000dc8c ();
0x00028514 ldr r3, [sp, 0x20] | r3 = var_20h;
0x00028516 cmp r3, 0 |
| if (r3 != 0) {
0x00028518 bne.w 0x2872e | goto label_25;
| }
0x0002851c adds r3, r7, 1 | r3 = r7 + 1;
| if (r3 != r7) {
0x0002851e beq 0x2854c |
0x00028520 ldr r3, [sl, -0x1c] | r3 = *((sl - 0x1c));
0x00028524 cmp r3, r7 |
0x00028526 it ne |
| if (r3 != r7) {
0x00028528 cmpne r3, -1 | __asm ("cmpne r3, -1");
| }
| if (r3 != r7) {
0x0002852c bne 0x2854c | goto label_26;
| }
0x0002852e ldr r1, [sp, 0x18] | r1 = var_18h;
0x00028530 vstr d8, [sp] | __asm ("vstr d8, [sp]");
0x00028534 ldr r2, [sp, 0x28] | r2 = var_28h;
0x00028536 ldrd r0, r1, [r1, -0x8] | __asm ("ldrd r0, r1, [r1, -0x8]");
0x0002853a strd r0, r1, [sp, 8] | __asm ("strd r0, r1, [sp, 8]");
0x0002853e ldr r1, [sp, 0x24] | r1 = var_24h;
0x00028540 subs r0, r1, 4 | r0 = r1 - 4;
0x00028542 rsb.w r1, sb, 0x10000 | r1 = 0x10000 - sb;
0x00028546 add r0, sb | r0 += sb;
0x00028548 bl 0x27aac | fcn_00027aac (r0, r1, r2, r3, r4, r5, r6);
| }
| label_26:
0x0002854c ldr r1, [r4, 0x28] | r1 = *((r4 + 0x28));
0x0002854e movs r2, 0 | r2 = 0;
0x00028550 ldr r3, [sp, 0x24] | r3 = var_24h;
0x00028552 ldr r0, [pc, 0x26c] |
0x00028554 orr r1, r1, 8 | r1 |= 8;
0x00028558 str r1, [r4, 0x28] | *((r4 + 0x28)) = r1;
0x0002855a subs r3, 3 | r3 -= 3;
0x0002855c add r0, pc | r0 = 0x50d22;
0x0002855e mov.w r1, 0x1f0 | r1 = 0x1f0;
0x00028562 bl 0x40ed8 | zbx_strdup2 ();
0x00028566 str r0, [r4, 0x1c] | *((r4 + 0x1c)) = r0;
| label_7:
0x00028568 ldr r2, [pc, 0x258] |
0x0002856a add.w r1, sp, 0x12000 | r1 += arg_12000h;
0x0002856e ldr r3, [pc, 0x230] | r3 = *(0x287a2);
0x00028570 adds r1, 0x5c | r1 += 0x5c;
0x00028572 add r2, pc | r2 = 0x50d3a;
0x00028574 ldr r3, [r2, r3] | r3 = *(0x50d3a);
0x00028576 ldr r2, [r3] | r2 = *(0x50d3a);
0x00028578 ldr r3, [r1] | r3 = *(r1);
0x0002857a eors r2, r3 | r2 ^= r3;
0x0002857c mov.w r3, 0 | r3 = 0;
| if (r2 != r3) {
0x00028580 bne.w 0x28778 | goto label_27;
| }
0x00028584 ldr r0, [sp, 0x20] | r0 = var_20h;
0x00028586 add.w sp, sp, 0x12000 |
0x0002858a add sp, 0x64 |
0x0002858c vpop {d8} | __asm ("vpop {d8}");
0x00028590 pop.w {r4, r5, r6, r7, r8, sb, sl, fp, pc} |
| label_19:
0x00028594 ldr r2, [r4] | r2 = *(r4);
0x00028596 movw r3, 0x726f |
0x0002859a movt r3, 0x695f | r3 = 0x695f726f;
0x0002859e cmp r2, r3 |
| if (r2 != r3) {
0x000285a0 bne.w 0x28406 | goto label_3;
| }
0x000285a4 ldrb r3, [r4, 4] | r3 = *((r4 + 4));
0x000285a6 cmp r3, 0x64 |
| if (r3 != 0x64) {
0x000285a8 bne.w 0x28406 | goto label_3;
| }
0x000285ac ldr r3, [sp, 0x28] | r3 = var_28h;
0x000285ae bic r3, r3, 2 | r3 = BIT_MASK (r3, 2);
0x000285b0 lsls r2, r0, 0xc | r2 = r0 << 0xc;
0x000285b2 cmp r3, 1 |
| if (r3 != 1) {
0x000285b4 bne.w 0x28406 | goto label_3;
| }
0x000285b8 ldr r2, [sp, 0x24] | r2 = var_24h;
0x000285ba mov r3, r6 | r3 = r6;
0x000285bc rsb.w r1, sb, 0x10000 | r1 = 0x10000 - sb;
0x000285c0 subs r0, r2, 4 | r0 = r2 - 4;
0x000285c2 ldr r2, [pc, 0x204] |
0x000285c4 add r0, sb | r0 += sb;
0x000285c6 add r2, pc | r2 = 0x50d94;
0x000285c8 bl 0x43f38 | zbx_snprintf ();
0x000285cc movs r3, 0 | r3 = 0;
0x000285ce add sb, r0 | sb += r0;
0x000285d0 str r3, [sp, 0x20] | var_20h = r3;
0x000285d2 b 0x283b6 | goto label_0;
| label_20:
0x000285d4 ldr r2, [r4] | r2 = *(r4);
0x000285d6 movw r3, 0x206c |
0x000285da movt r3, 0x616e | r3 = 0x616e206c;
0x000285de cmp r2, r3 |
| if (r2 != r3) {
0x000285e0 bne.w 0x28412 | goto label_4;
| }
0x000285e4 ldrh r2, [r4, 4] | r2 = *((r4 + 4));
0x000285e6 movw r3, 0x656d | r3 = 0x656d;
0x000285ea cmp r2, r3 |
| if (r2 != r3) {
0x000285ec bne.w 0x28412 | goto label_4;
| }
0x000285f0 ldr r3, [sp, 0x28] | r3 = var_28h;
0x000285f2 cmp r3, 4 |
0x000285f4 it ne |
| if (r3 == 4) {
0x000285f6 cmpne r3, 1 | __asm ("cmpne r3, 1");
| goto label_28;
| }
| if (r3 != 4) {
| label_28:
0x000285f8 bne.w 0x28412 | goto label_4;
| }
0x000285fc ldr r2, [sp, 0x24] | r2 = var_24h;
0x000285fe mov r3, r6 | r3 = r6;
0x00028600 rsb.w r1, sb, 0x10000 | r1 = 0x10000 - sb;
0x00028604 subs r0, r2, 4 | r0 = r2 - 4;
0x00028606 ldr r2, [pc, 0x1c4] |
0x00028608 add r0, sb | r0 += sb;
0x0002860a add r2, pc | r2 = 0x50ddc;
0x0002860c bl 0x43f38 | zbx_snprintf ();
0x00028610 movs r3, 0 | r3 = 0;
0x00028612 add sb, r0 | sb += r0;
0x00028614 str r3, [sp, 0x20] | var_20h = r3;
0x00028616 b 0x283b6 | goto label_0;
| label_14:
0x00028618 ldr r1, [pc, 0x1b4] |
0x0002861a mov r0, r5 | r0 = r5;
0x0002861c add r1, pc | r1 = 0x50df0;
0x0002861e blx 0xe3b0 | r0 = fcn_0000e3b0 ();
0x00028622 cmp r0, 0 |
| if (r0 == 0) {
0x00028624 beq.w 0x28340 | goto label_5;
| }
0x00028628 ldr r1, [pc, 0x1a8] |
0x0002862a mov r0, r5 | r0 = r5;
0x0002862c add r1, pc | r1 = 0x50e04;
0x0002862e blx 0xe3b0 | r0 = fcn_0000e3b0 ();
0x00028632 cmp r0, 0 |
| if (r0 == 0) {
0x00028634 beq.w 0x2874a | goto label_29;
| }
0x00028638 ldr r1, [pc, 0x19c] |
0x0002863a mov r0, r5 | r0 = r5;
0x0002863c add r1, pc | r1 = "/dev/";
0x0002863e blx 0xe3b0 | r0 = fcn_0000e3b0 ();
0x00028642 cmp r0, 0 |
| if (r0 == 0) {
0x00028644 beq.w 0x28750 | goto label_30;
| }
0x00028648 ldr r1, [pc, 0x190] |
0x0002864a mov r0, r5 | r0 = r5;
0x0002864c add r1, pc | r1 = 0x50e2c;
0x0002864e blx 0xe3b0 | r0 = fcn_0000e3b0 ();
0x00028652 cmp r0, 0 |
| if (r0 == 0) {
0x00028654 beq 0x28756 | goto label_31;
| }
0x00028656 ldr r1, [pc, 0x188] |
0x00028658 mov r0, r5 | r0 = r5;
0x0002865a add r1, pc | r1 = 0x50e40;
0x0002865c blx 0xe3b0 | r0 = fcn_0000e3b0 ();
0x00028660 cmp r0, 0 |
| if (r0 != 0) {
0x00028662 bne 0x2875c | goto label_32;
| }
0x00028664 movs r3, 5 | r3 = 5;
0x00028666 str r3, [sp, 0x28] | var_28h = r3;
0x00028668 b 0x28344 | goto label_6;
| label_12:
0x0002866a ldr r0, [r1, 0x28] | r0 = *((r1 + 0x28));
0x0002866c movs r2, 0 | r2 = 0;
0x0002866e ldr r3, [pc, 0x174] |
0x00028670 movw r1, 0x18b | r1 = 0x18b;
0x00028674 orr r0, r0, 0x20 | r0 |= 0x20;
0x00028678 str r0, [r4, 0x28] | *((r4 + 0x28)) = r0;
0x0002867a add r3, pc | r3 = 0x50e64;
0x0002867c ldr r0, [pc, 0x168] |
0x0002867e add r0, pc | r0 = 0x50e6a;
0x00028680 bl 0x40ed8 | zbx_strdup2 ();
| label_10:
0x00028684 movs r3, 1 | r3 = 1;
0x00028686 str r0, [r4, 0x20] | *((r4 + 0x20)) = r0;
0x00028688 str r3, [sp, 0x20] | var_20h = r3;
0x0002868a b 0x28568 | goto label_7;
| label_13:
0x0002868c ldr r1, [pc, 0x15c] |
0x0002868e mov r0, r7 | r0 = r7;
0x00028690 add r1, pc | r1 = 0x50e80;
0x00028692 blx 0xe3b0 | r0 = fcn_0000e3b0 ();
0x00028696 cmp r0, 0 |
| if (r0 == 0) {
0x00028698 beq.w 0x28326 | goto label_8;
| }
0x0002869c vmov.i32 d16, 0 | __asm ("vmov.i32 d16, 0");
0x000286a0 mov r0, r7 | r0 = r7;
0x000286a2 mvn r6, 0x80000000 | r6 = ~0x80000000;
0x000286a6 movs r7, 0 | r7 = 0;
0x000286a8 strd r6, r7, [sp, 8] | __asm ("strd r6, r7, [sp, 8]");
0x000286ac movs r3, 4 | r3 = 4;
0x000286ae sub.w r2, sl, 0x1c | r2 = sl - 0x1c;
0x000286b0 lsls r4, r3, 8 | r4 = r3 << 8;
0x000286b2 mov.w r1, -1 | r1 = -1;
0x000286b6 vstr d16, [sp] | __asm ("vstr d16, [sp]");
0x000286ba bl 0x419a8 | is_uint_n_range ();
0x000286be adds r0, 1 | r0++;
0x000286c0 it ne |
| if (r0 != 1) {
0x000286c2 ldrne r6, [r5, 4] | r6 = *((r5 + 4));
| goto label_33;
| }
| if (r0 != 1) {
| label_33:
0x000286c4 bne.w 0x2832e | goto label_9;
| }
0x000286c8 ldr r0, [r4, 0x28] | r0 = *((r4 + 0x28));
0x000286ca movs r2, 0 | r2 = 0;
0x000286cc ldr r3, [pc, 0x120] |
0x000286ce movw r1, 0x195 | r1 = 0x195;
0x000286d2 orr r0, r0, 0x20 | r0 |= 0x20;
0x000286d6 str r0, [r4, 0x28] | *((r4 + 0x28)) = r0;
0x000286d8 add r3, pc | r3 = 0x50ecc;
0x000286da ldr r0, [pc, 0x118] |
0x000286dc add r0, pc | r0 = 0x50ed6;
0x000286de bl 0x40ed8 | zbx_strdup2 ();
0x000286e2 b 0x28684 | goto label_10;
| label_22:
0x000286e4 ldr r3, [sp, 0x24] | r3 = var_24h;
0x000286e6 rsb.w r1, sb, 0x10000 | r1 = 0x10000 - sb;
0x000286ea ldr r2, [pc, 0x10c] |
0x000286ec subs r0, r3, 4 | r0 = r3 - 4;
0x000286ee mov r3, r7 | r3 = r7;
0x000286f0 add r0, sb | r0 += sb;
0x000286f2 add r2, pc | r2 = 0x50ef0;
0x000286f4 bl 0x43f38 | zbx_snprintf ();
0x000286f8 ldr r3, [sp, 0x28] | r3 = var_28h;
0x000286fa add sb, r0 | sb += r0;
0x000286fc subs r3, 1 | r3--;
0x000286fe cmp r3, 1 |
| if (r3 > 1) {
0x00028700 bhi.w 0x283ec | goto label_1;
| }
0x00028704 b 0x284bc | goto label_11;
| label_23:
0x00028706 ldr r3, [sp, 0x24] | r3 = var_24h;
0x00028708 rsb.w r1, sb, 0x10000 | r1 = 0x10000 - sb;
0x0002870c ldr r2, [pc, 0xec] |
0x0002870e subs r0, r3, 4 | r0 = r3 - 4;
0x00028710 mov r3, r7 | r3 = r7;
0x00028712 add r0, sb | r0 += sb;
0x00028714 add r2, pc | r2 = 0x50f14;
0x00028716 bl 0x43f38 | r0 = zbx_snprintf ();
0x0002871a add sb, r0 | sb += r0;
0x0002871c b 0x284bc | goto label_11;
| label_24:
0x0002871e blx 0xdc8c | fcn_0000dc8c ();
0x00028722 ldr r3, [sp, 0x18] | r3 = var_18h;
0x00028724 vldr d8, [r3] | __asm ("vldr d8, [r3]");
0x00028728 movs r3, 0 | r3 = 0;
0x0002872a str r3, [sp, 0x20] | var_20h = r3;
0x0002872c b 0x283ec | goto label_1;
| label_25:
0x0002872e ldr r0, [r4, 0x28] | r0 = *((r4 + 0x28));
0x00028730 mov r2, fp | r2 = fp;
0x00028732 ldr r3, [pc, 0xcc] |
0x00028734 movw r1, 0x1e9 | r1 = 0x1e9;
0x00028738 orr r0, r0, 0x20 | r0 |= 0x20;
0x0002873c str r0, [r4, 0x28] | *((r4 + 0x28)) = r0;
0x0002873e add r3, pc | r3 = 0x50f44;
0x00028740 ldr r0, [pc, 0xc0] |
0x00028742 add r0, pc | r0 = 0x50f4a;
0x00028744 bl 0x40ed8 | zbx_strdup2 ();
0x00028748 b 0x28684 | goto label_10;
| label_29:
0x0002874a movs r3, 2 | r3 = 2;
0x0002874c str r3, [sp, 0x28] | var_28h = r3;
0x0002874e b 0x28344 | goto label_6;
| label_30:
0x00028750 movs r3, 3 | r3 = 3;
0x00028752 str r3, [sp, 0x28] | var_28h = r3;
0x00028754 b 0x28344 | goto label_6;
| label_31:
0x00028756 movs r3, 4 | r3 = 4;
0x00028758 str r3, [sp, 0x28] | var_28h = r3;
0x0002875a b 0x28344 | goto label_6;
| label_32:
0x0002875c ldr r0, [r4, 0x28] | r0 = *((r4 + 0x28));
0x0002875e movs r2, 0 | r2 = 0;
0x00028760 ldr r3, [pc, 0xa4] |
0x00028762 movw r1, 0x1a7 | r1 = 0x1a7;
0x00028766 orr r0, r0, 0x20 | r0 |= 0x20;
0x0002876a str r0, [r4, 0x28] | *((r4 + 0x28)) = r0;
0x0002876c add r3, pc | r3 = "Cannot add disk device to agent collector.";
0x0002876e ldr r0, [pc, 0x9c] |
0x00028770 add r0, pc | r0 = 0x50f82;
0x00028772 bl 0x40ed8 | zbx_strdup2 ();
0x00028776 b 0x28684 | goto label_10;
| label_27:
0x00028778 blx 0xe158 | fcn_0000e158 ();
| label_15:
0x0002877c ldr r3, [r4, 0x28] | r3 = *((r4 + 0x28));
0x0002877e orr r3, r3, 0x20 | r3 |= 0x20;
0x00028782 str r3, [r4, 0x28] | *((r4 + 0x28)) = r3;
0x00028784 blx 0xe3d4 | r0 = fcn_0000e3d4 ();
0x00028788 ldr r0, [r0] | r0 = *(r0);
0x0002878a bl 0x30b74 | zbx_strerror ();
0x0002878c invalid |
0x00028790 mov r2, r0 | r2 = r0;
0x00028792 mov r0, r8 | r0 = r8;
0x00028794 add r1, pc | r1 += pc;
0x00028796 bl 0x44820 | zbx_dsprintf ()
0x0002879a b 0x28684 | goto label_10;
| }
; assembly | /* r2dec pseudo code output */
| /* /logs/firmware/patool_extraction/rootfs.img_unblob_extracted/rootfs.img_extract/0-80367616.squashfs_v4_le_extract/usr/sbin/zabbix_agentd @ 0x288bc */
| #include <stdint.h>
|
; (fcn) sym.SYSTEM_HW_MACADDR () | void SYSTEM_HW_MACADDR (int16_t arg1, int16_t arg2) {
| int16_t var_0h_4;
| int16_t var_4h_3;
| int16_t var_8h_2;
| int16_t var_ch_2;
| int16_t var_a8h;
| int16_t var_18h;
| int16_t var_b4h;
| int16_t var_20h;
| int16_t var_24h;
| int16_t var_2ch;
| int32_t var_20h_2;
| int16_t var_1ch;
| int32_t var_18h_2;
| int16_t var_4h;
| int16_t var_50h;
| int16_t var_90h;
| int16_t var_118h;
| int16_t var_170h;
| int16_t var_198h;
| int16_t var_1d8h;
| int16_t var_208h;
| int16_t var_278h;
| int16_t var_2e8h;
| int16_t var_328h;
| int16_t var_358h;
| int16_t var_3c8h;
| int8_t var_0h_2;
| int16_t var_84ch;
| int16_t var_1040h;
| int32_t var_0h;
| r0 = arg1;
| r1 = arg2;
0x000288bc push.w {r4, r5, r6, r7, r8, sb, sl, fp, lr} |
0x000288c0 sub.w sp, sp, 0x1040 |
0x000288c4 ldr r5, [pc, 0x33c] |
0x000288c6 sub sp, 0x14 |
0x000288c8 add.w r6, sp, 0x1040 | r6 += var_1040h;
0x000288cc ldr r4, [pc, 0x338] |
0x000288ce adds r6, 0xc | r6 += 0xc;
0x000288d0 ldr r2, [pc, 0x338] | r2 = *(0x28c0c);
0x000288d2 add r5, pc | r5 = 0x514da;
0x000288d4 ldr r3, [r0, 4] | r3 = *((r0 + 4));
0x000288d6 add r4, pc | r4 = 0x514e2;
0x000288d8 str r5, [sp, 0x20] | var_20h = r5;
0x000288da ldr r2, [r4, r2] |
0x000288dc cmp r3, 2 |
0x000288de ldr r2, [r2] | r2 = *(0x514e2);
0x000288e0 str r2, [r6] | *(r6) = r2;
0x000288e2 mov.w r2, 0 | r2 = 0;
0x000288e6 str r1, [sp, 0x18] | var_18h = r1;
| if (r3 > 2) {
0x000288e8 bgt.w 0x28abe | goto label_10;
| }
0x000288ec cmp r3, 0 |
| if (r3 > 0) {
0x000288ee ble 0x28948 |
0x000288f0 ldr r2, [r0, 8] | r2 = *((r0 + 8));
0x000288f2 cmp r3, 2 |
0x000288f4 ldr r7, [r2] | r7 = *(r2);
| if (r3 != 2) {
0x000288f6 bne.w 0x28a2e | goto label_11;
| }
0x000288fa ldr r4, [r2, 4] | r4 = *((r2 + 4));
0x000288fc cmp r4, 0 |
| if (r4 == 0) {
0x000288fe beq.w 0x28a2e | goto label_11;
| }
0x00028902 ldrb r3, [r4] | r3 = *(r4);
0x00028904 cmp r3, 0 |
| if (r3 == 0) {
0x00028906 beq.w 0x28a2e | goto label_11;
| }
0x0002890a ldr r1, [pc, 0x304] |
0x0002890c mov r0, r4 | r0 = r4;
0x0002890e add r1, pc | r1 = 0x51524;
0x00028910 blx 0xe3b0 | r0 = fcn_0000e3b0 ();
0x00028914 cmp r0, 0 |
| if (r0 == 0) {
0x00028916 beq.w 0x28a2e | goto label_11;
| }
0x0002891a ldr r1, [pc, 0x2f8] |
0x0002891c mov r0, r4 | r0 = r4;
0x0002891e add r1, pc | r1 = 0x51538;
0x00028920 blx 0xe3b0 | r0 = fcn_0000e3b0 ();
0x00028924 mov fp, r0 |
| if (r0 == 0) {
0x00028926 cbz r0, 0x2894e | goto label_0;
| }
0x00028928 ldr r4, [sp, 0x18] | r4 = var_18h;
0x0002892a movs r2, 0 | r2 = 0;
0x0002892c ldr r3, [pc, 0x2e8] |
0x0002892e mov.w r1, 0x224 | r1 = 0x224;
0x00028932 ldr r0, [r4, 0x28] | r0 = *((r4 + 0x28));
0x00028934 add r3, pc | r3 = 0x51550;
0x00028936 orr r0, r0, 0x20 | r0 |= 0x20;
0x0002893a str r0, [r4, 0x28] | *((r4 + 0x28)) = r0;
0x0002893c ldr r0, [pc, 0x2dc] |
0x0002893e add r0, pc | r0 = 0x5155e;
0x00028940 bl 0x40ed8 | r0 = zbx_strdup2 ();
0x00028944 mov r3, r0 | r3 = r0;
0x00028946 b 0x28adc | goto label_8;
| }
0x00028948 movs r7, 0 | r7 = 0;
0x0002894a mov.w fp, 1 |
| label_0:
0x0002894e movs r1, 2 | r1 = 2;
0x00028950 movs r2, 0 | r2 = 0;
0x00028952 mov r0, r1 | r0 = r1;
0x00028954 blx 0xdef0 | r0 = fcn_0000def0 ();
0x00028958 adds r2, r0, 1 | r2 = r0 + 1;
0x0002895a mov r5, r0 | r5 = r0;
| if (r2 == r0) {
0x0002895c beq.w 0x28ae4 | goto label_12;
| }
0x00028960 add r4, sp, 0x50 | r4 += var_50h;
0x00028962 mov.w r3, 0x800 | r3 = 0x800;
0x00028966 addw sl, sp, 0x84c | __asm ("addw sl, var_84ch");
0x0002896a add r2, sp, 0x2c | r2 += var_2ch;
0x0002896c movw r1, 0x8912 | r1 = 0x8912;
0x00028970 str r3, [r4, -0x24] | var_2ch = r3;
0x00028974 str sl, [r4, -0x20] | var_20h_2 = sl;
0x00028978 blx 0xdf44 | fcn_0000df44 ();
0x0002897c adds r0, 1 | r0++;
| if (r0 == 1) {
0x0002897e beq.w 0x28b96 | goto label_13;
| }
0x00028982 sub.w r3, r4, 0x1c | r3 -= var_1ch;
0x00028986 ldr r6, [r4, -0x20] | r6 = var_20h_2;
0x0002898a mov r8, r3 | r8 = r3;
0x0002898c mov r0, r3 | r0 = r3;
0x0002898e str r3, [sp, 0x1c] | var_b4h = r3;
0x00028990 bl 0x32978 | zbx_vector_str_create ();
0x00028994 movs r1, 8 | r1 = 8;
0x00028996 mov r0, r8 | r0 = r8;
0x00028998 bl 0x32dc4 | zbx_vector_str_reserve ();
0x0002899c ldr r2, [r4, -0x24] | r2 = var_2ch;
0x000289a0 lsrs.w sb, r2, 5 | sb = r2 >> 5;
| if (sb == r2) {
0x000289a4 beq 0x289ce | goto label_3;
| }
| if (r7 != 0) {
| do {
0x000289a6 cbz r7, 0x289ae |
| label_2:
0x000289a8 ldrb r3, [r7] | r3 = *(r7);
0x000289aa cmp r3, 0 |
| if (r3 != 0) {
0x000289ac bne 0x28a34 | goto label_14;
| }
| }
| label_1:
0x000289ae mov r2, r6 | r2 = r6;
0x000289b0 movw r1, 0x8913 | r1 = 0x8913;
0x000289b4 mov r0, r5 | r0 = r5;
0x000289b6 blx 0xdf44 | fcn_0000df44 ();
0x000289ba adds r0, 1 | r0++;
| if (r0 != 1) {
0x000289bc beq 0x289c4 |
0x000289be ldrh r3, [r6, 0x10] | r3 = *((r6 + 0x10));
0x000289c0 lsls r3, r3, 0x1c | r3 <<= 0x1c;
| if (r3 >= r3) {
0x000289c2 bpl 0x28a4e | goto label_15;
| }
| }
| label_4:
0x000289c4 subs.w sb, sb, 1 | sb--;
0x000289c8 add.w r6, r6, 0x20 | r6 += 0x20;
0x000289cc bne 0x289a6 |
| } while (sb != sb);
| label_3:
0x000289ce ldr r6, [r4, -0x18] | r6 = var_18h_2;
0x000289d2 cmp r6, 0 |
| if (r6 != 0) {
0x000289d4 bne.w 0x28b08 | goto label_16;
| }
| label_7:
0x000289d8 ldr r7, [sp, 0x18] | r7 = var_18h;
0x000289da movs r4, 0 | r4 = 0;
0x000289dc ldr r0, [pc, 0x240] |
0x000289de mov r2, r4 | r2 = r4;
0x000289e0 movw r1, 0x26e | r1 = 0x26e;
0x000289e4 strb.w r4, [sl, r6] | *((sl + r6)) = r4;
0x000289e8 ldr r3, [r7, 0x28] | r3 = *((r7 + 0x28));
0x000289ea add r0, pc | r0 = 0x5160e;
0x000289ec orr r3, r3, 4 | r3 |= 4;
0x000289f0 str r3, [r7, 0x28] | *((r7 + 0x28)) = r3;
0x000289f2 mov r3, sl | r3 = sl;
0x000289f4 bl 0x40ed8 | zbx_strdup2 ();
0x000289f8 str r0, [r7, 0x18] | *((r7 + 0x18)) = r0;
0x000289fa ldr r0, [sp, 0x1c] | r0 = var_b4h;
0x000289fc bl 0x329d8 | zbx_vector_str_destroy ();
0x00028a00 mov r0, r5 | r0 = r5;
0x00028a02 blx 0xe0ac | fcn_0000e0ac ();
0x00028a06 mov r0, r4 | r0 = r4;
| label_5:
0x00028a08 ldr r2, [pc, 0x218] |
0x00028a0a add.w r1, sp, 0x1040 | r1 += var_1040h;
0x00028a0e ldr r3, [pc, 0x1fc] | r3 = *(0x28c0e);
0x00028a10 adds r1, 0xc | r1 += 0xc;
0x00028a12 add r2, pc | r2 = 0x5163a;
0x00028a14 ldr r3, [r2, r3] | r3 = *(0x5163a);
0x00028a16 ldr r2, [r3] | r2 = *(0x5163a);
0x00028a18 ldr r3, [r1] | r3 = *(r1);
0x00028a1a eors r2, r3 | r2 ^= r3;
0x00028a1c mov.w r3, 0 | r3 = 0;
| if (r2 != r3) {
0x00028a20 bne.w 0x28c00 | goto label_17;
| }
0x00028a24 add.w sp, sp, 0x1040 |
0x00028a28 add sp, 0x14 |
0x00028a2a pop.w {r4, r5, r6, r7, r8, sb, sl, fp, pc} |
| label_11:
0x00028a2e mov.w fp, 1 |
0x00028a32 b 0x2894e | goto label_0;
| label_14:
0x00028a34 movs r2, 0 | r2 = 0;
0x00028a36 mov r1, r7 | r1 = r7;
0x00028a38 mov r0, r6 | r0 = r6;
0x00028a3a bl 0x31a84 | r0 = zbx_regexp_match ();
0x00028a3e cmp r0, 0 |
| if (r0 != 0) {
0x00028a40 bne 0x289ae | goto label_1;
| }
0x00028a42 subs.w sb, sb, 1 | sb--;
0x00028a46 add.w r6, r6, 0x20 | r6 += 0x20;
| if (sb != sb) {
0x00028a4a bne 0x289a8 | goto label_2;
| }
0x00028a4c b 0x289ce | goto label_3;
| label_15:
0x00028a4e mov r2, r6 | r2 = r6;
0x00028a50 movw r1, 0x8927 | r1 = 0x8927;
0x00028a54 mov r0, r5 | r0 = r5;
0x00028a56 blx 0xdf44 | fcn_0000df44 ();
0x00028a5a adds r0, 1 | r0++;
| if (r0 == 1) {
0x00028a5c beq 0x289c4 | goto label_4;
| }
0x00028a5e cmp.w fp, 1 |
| if (fp == 1) {
0x00028a62 beq.w 0x28bc0 | goto label_18;
| }
0x00028a66 ldrb r2, [r6, 0x17] | r2 = *((r6 + 0x17));
0x00028a68 sub.w r8, r4, 4 | r8 -= var_4h;
0x00028a6c ldrb r3, [r6, 0x12] | r3 = *((r6 + 0x12));
0x00028a6e mov.w r1, 0x800 | r1 = 0x800;
0x00028a72 mov r0, r8 | r0 = r8;
0x00028a74 str r2, [sp, 0x10] | var_a8h = r2;
0x00028a76 ldrb r2, [r6, 0x16] | r2 = *((r6 + 0x16));
0x00028a78 str r2, [sp, 0xc] | var_ch_2 = r2;
0x00028a7a ldrb r2, [r6, 0x15] | r2 = *((r6 + 0x15));
0x00028a7c str r2, [sp, 8] | var_8h_2 = r2;
0x00028a7e ldrb r2, [r6, 0x14] | r2 = *((r6 + 0x14));
0x00028a80 str r2, [sp, 4] | var_4h_3 = r2;
0x00028a82 ldrb r2, [r6, 0x13] | r2 = *((r6 + 0x13));
0x00028a84 str r2, [sp] | *(sp) = r2;
0x00028a86 ldr r2, [pc, 0x1a0] |
0x00028a88 add r2, pc | r2 = 0x516b6;
0x00028a8a bl 0x43f38 | zbx_snprintf ();
0x00028a8e ldr r2, [sp, 0x20] | r2 = var_20h;
0x00028a90 mov r1, r8 | r1 = r8;
0x00028a92 ldr r3, [pc, 0x198] | r3 = *(0x28c2e);
0x00028a94 ldr r0, [sp, 0x1c] | r0 = var_b4h;
0x00028a96 ldr r3, [r2, r3] | r3 = *(0x516b6);
0x00028a98 mov r2, r3 | r2 = r3;
0x00028a9a str r3, [sp, 0x24] | var_24h = r3;
0x00028a9c bl 0x32cdc | zbx_vector_str_search ();
0x00028aa0 adds r0, 1 | r0++;
| if (r0 != 1) {
0x00028aa2 bne 0x289c4 | goto label_4;
| }
| label_9:
0x00028aa4 ldr r0, [pc, 0x188] |
0x00028aa6 mov r3, r8 | r3 = r8;
0x00028aa8 movs r2, 0 | r2 = 0;
0x00028aaa movw r1, 0x256 | r1 = 0x256;
0x00028aae add r0, pc | r0 = 0x516e2;
0x00028ab0 bl 0x40ed8 | r0 = zbx_strdup2 ();
0x00028ab4 mov r1, r0 | r1 = r0;
0x00028ab6 ldr r0, [sp, 0x1c] | r0 = var_b4h;
0x00028ab8 bl 0x32a08 | zbx_vector_str_append ();
0x00028abc b 0x289c4 | goto label_4;
| label_10:
0x00028abe ldr r0, [r1, 0x28] | r0 = *((r1 + 0x28));
0x00028ac0 mov r4, r1 | r4 = r1;
0x00028ac2 ldr r3, [pc, 0x170] |
0x00028ac4 movs r2, 0 | r2 = 0;
0x00028ac6 movw r1, 0x217 | r1 = 0x217;
0x00028aca orr r0, r0, 0x20 | r0 |= 0x20;
0x00028ace str r0, [r4, 0x28] | *((r4 + 0x28)) = r0;
0x00028ad0 add r3, pc | r3 = 0x5170a;
0x00028ad2 ldr r0, [pc, 0x164] |
0x00028ad4 add r0, pc | r0 = 0x51712;
0x00028ad6 bl 0x40ed8 | zbx_strdup2 ();
0x00028ad8 invalid |
| do {
| label_8:
0x00028adc ldr r2, [sp, 0x18] | r2 = var_18h;
0x00028ade movs r0, 1 | r0 = 1;
0x00028ae0 str r3, [r2, 0x20] | *((r2 + 0x20)) = r3;
0x00028ae2 b 0x28a08 | goto label_5;
| label_12:
0x00028ae4 ldr r2, [sp, 0x18] | r2 = var_18h;
0x00028ae6 ldr r3, [r2, 0x28] | r3 = *((r2 + 0x28));
0x00028ae8 orr r3, r3, 0x20 | r3 |= 0x20;
0x00028aec str r3, [r2, 0x28] | *((r2 + 0x28)) = r3;
0x00028aee blx 0xe3d4 | r0 = fcn_0000e3d4 ();
0x00028af2 ldr r0, [r0] | r0 = *(r0);
0x00028af4 bl 0x30b74 | zbx_strerror ();
0x00028af8 ldr r1, [pc, 0x140] |
0x00028afa mov r2, r0 | r2 = r0;
0x00028afc movs r0, 0 | r0 = 0;
0x00028afe add r1, pc | r1 = 0x5173e;
0x00028b00 bl 0x44820 | r0 = zbx_dsprintf ()
0x00028b04 mov r3, r0 | r3 = r0;
0x00028b06 b 0x28adc |
| } while (1);
| label_16:
0x00028b08 ldr r2, [sp, 0x20] | r2 = var_20h;
0x00028b0a ldr r3, [pc, 0x120] | r3 = *(0x28c2e);
0x00028b0c ldr r0, [sp, 0x1c] | r0 = var_b4h;
0x00028b0e ldr r3, [r2, r3] | r3 = *((r2 + r3));
0x00028b10 mov r1, r3 | r1 = r3;
0x00028b12 str r3, [sp, 0x20] | var_20h = r3;
0x00028b14 bl 0x32ba8 | zbx_vector_str_sort ();
0x00028b18 ldr r3, [r4, -0x18] | r3 = var_18h_2;
0x00028b1c cmp r3, 0 |
| if (r3 <= 0) {
0x00028b1e ble 0x28bfa | goto label_19;
| }
0x00028b20 ldr.w r8, [pc, 0x11c] | r8 = *(0x00028c40);
0x00028b24 movs r7, 0 | r7 = 0;
0x00028b26 mov r6, r7 | r6 = r7;
0x00028b28 str r5, [sp, 0x20] | var_20h = r5;
0x00028b2a add r8, pc | r8 += pc;
0x00028b2c b 0x28b62 |
| while (fp != 1) {
| label_6:
0x00028b2e mov r3, r5 | r3 = r5;
0x00028b30 rsb.w r1, r6, 0x800 | r1 = 0x800 - r6;
0x00028b34 add.w r0, sl, r6 | r0 = sl + r6;
0x00028b38 mov r2, r8 | r2 = r8;
0x00028b3a bl 0x43f38 | zbx_snprintf ();
0x00028b3e ldr r3, [r4, -0x1c] | r3 = var_1ch;
0x00028b42 add r6, r0 | r6 += r0;
0x00028b44 ldr.w r0, [r3, sb] | r0 = *((r3 + sb));
| if (r0 != 0) {
0x00028b48 cbz r0, 0x28b58 |
0x00028b4a blx 0xde30 | fcn_0000de30 ();
0x00028b4e ldr r3, [r4, -0x1c] | r3 = var_1ch;
0x00028b52 movs r2, 0 | r2 = 0;
0x00028b54 str.w r2, [r3, sb] | __asm ("str.w r2, [r3, sb]");
| }
0x00028b58 ldr r3, [r4, -0x18] | r3 = var_18h_2;
0x00028b5c adds r7, 1 | r7++;
0x00028b5e cmp r3, r7 |
| if (r3 <= r7) {
0x00028b60 ble 0x28b90 | goto label_20;
| }
0x00028b62 ldr r3, [r4, -0x1c] | r3 = var_1ch;
0x00028b66 cmp.w fp, 1 |
0x00028b6a lsl.w sb, r7, 2 | sb = r7 << 2;
0x00028b6e ldr.w r5, [r3, r7, lsl 2] | offset_0 = r7 << 2;
| r5 = *((r3 + offset_0));
0x00028b72 bne 0x28b2e |
| }
0x00028b74 movs r1, 0x20 | r1 = 0x20;
0x00028b76 mov r0, r5 | r0 = r5;
0x00028b78 blx 0xdcd4 | r0 = fcn_0000dcd4 ();
0x00028b7c cmp r0, 0 |
| if (r0 == 0) {
0x00028b7e beq 0x28b2e | goto label_6;
| }
0x00028b80 mov.w r3, 0x5d | r3 = 0x5d;
0x00028b84 strb r3, [r0] | *(r0) = r3;
0x00028b86 ldr r3, [r4, -0x1c] | r3 = var_1ch;
0x00028b8a ldr.w r5, [r3, sb] | r5 = *((r3 + sb));
0x00028b8e b 0x28b2e | goto label_6;
| label_20:
0x00028b90 ldr r5, [sp, 0x20] | r5 = var_20h;
0x00028b92 subs r6, 2 | r6 -= 2;
0x00028b94 b 0x289d8 | goto label_7;
| label_13:
0x00028b96 mov r0, r5 | r0 = r5;
0x00028b98 blx 0xe0ac | fcn_0000e0ac ();
0x00028b9c ldr r2, [sp, 0x18] | r2 = var_18h;
0x00028b9e ldr r3, [r2, 0x28] | r3 = *((r2 + 0x28));
0x00028ba0 orr r3, r3, 0x20 | r3 |= 0x20;
0x00028ba4 str r3, [r2, 0x28] | *((r2 + 0x28)) = r3;
0x00028ba6 blx 0xe3d4 | r0 = fcn_0000e3d4 ();
0x00028baa ldr r0, [r0] | r0 = *(r0);
0x00028bac bl 0x30b74 | zbx_strerror ();
0x00028bb0 ldr r1, [pc, 0x90] |
0x00028bb2 mov r2, r0 | r2 = r0;
0x00028bb4 movs r0, 0 | r0 = 0;
0x00028bb6 add r1, pc | r1 = 0x517fe;
0x00028bb8 bl 0x44820 | r0 = zbx_dsprintf ()
0x00028bbc mov r3, r0 | r3 = r0;
0x00028bbe b 0x28adc | goto label_8;
| label_18:
0x00028bc0 ldr r2, [pc, 0x84] |
0x00028bc2 sub.w r8, r4, 4 | r8 -= var_4h;
0x00028bc6 mov r3, r6 | r3 = r6;
0x00028bc8 mov.w r1, 0x800 | r1 = 0x800;
0x00028bcc mov r0, r8 | r0 = r8;
0x00028bce add r2, pc | r2 = 0x5181a;
0x00028bd0 bl 0x43f38 | zbx_snprintf ();
0x00028bd4 ldrb r2, [r6, 0x17] | r2 = *((r6 + 0x17));
0x00028bd6 rsb.w r1, r0, 0x800 | r1 = 0x800 - r0;
0x00028bda ldrb r3, [r6, 0x12] | r3 = *((r6 + 0x12));
0x00028bdc add r0, r8 | r0 += r8;
0x00028bde str r2, [sp, 0x10] | var_a8h = r2;
0x00028be0 ldrb r2, [r6, 0x16] | r2 = *((r6 + 0x16));
0x00028be2 str r2, [sp, 0xc] | var_ch_2 = r2;
0x00028be4 ldrb r2, [r6, 0x15] | r2 = *((r6 + 0x15));
0x00028be6 str r2, [sp, 8] | var_8h_2 = r2;
0x00028be8 ldrb r2, [r6, 0x14] | r2 = *((r6 + 0x14));
0x00028bea str r2, [sp, 4] | var_4h_3 = r2;
0x00028bec ldrb r2, [r6, 0x13] | r2 = *((r6 + 0x13));
0x00028bee str r2, [sp] | *(sp) = r2;
0x00028bf0 ldr r2, [pc, 0x58] |
0x00028bf2 add r2, pc | r2 = 0x51842;
0x00028bf4 bl 0x43f38 | zbx_snprintf ();
0x00028bf8 b 0x28aa4 | goto label_9;
| label_19:
0x00028bfa mvn r6, 1 | r6 = ~1;
0x00028bfe b 0x289d8 | goto label_7;
| label_17:
0x00028c00 blx 0xe158 | fcn_0000e158 ();
0x00028c04 adds r3, 6 | r3 += 6;
0x00028c06 movs r3, r0 | r3 = r0;
0x00028c08 adds r3, 2 | r3 += 2;
0x00028c0a movs r3, r0 | r3 = r0;
0x00028c0c lsls r4, r2, 0xe | r4 = r2 << 0xe;
0x00028c0e movs r0, r0 |
0x00028c10 ldr r0, [sp, 0x1d8] | r0 = var_1d8h;
0x00028c12 movs r2, r0 | r2 = r0;
0x00028c14 ldr r0, [sp, 0x278] | r0 = var_278h;
0x00028c16 movs r2, r0 | r2 = r0;
0x00028c18 strh r4, [r2, 0x22] | *((r2 + 0x22)) = r4;
0x00028c1a movs r2, r0 | r2 = r0;
0x00028c1c ldr r5, [sp, 0x3c8] | r5 = var_3c8h;
0x00028c1e movs r2, r0 | r2 = r0;
0x00028c20 ldr r5, [sp, 0x118] | r5 = var_118h;
0x00028c22 movs r2, r0 | r2 = r0;
0x00028c24 adds r1, 0xc6 | r1 += 0xc6;
0x00028c26 movs r3, r0 | r3 = r0;
0x00028c28 ldr r6, [sp, 0x90] | r6 = var_90h;
0x00028c2a movs r2, r0 | r2 = r0;
0x00028c2c lsls r4, r0, 0xf | r4 = r0 << 0xf;
0x00028c2e movs r0, r0 |
0x00028c30 ldr r4, [sp, 0x208] | r4 = var_208h;
0x00028c32 movs r2, r0 | r2 = r0;
0x00028c34 ldr r0, [r1, 0x38] | r0 = *((r1 + 0x38));
0x00028c36 movs r2, r0 | r2 = r0;
0x00028c38 ldr r4, [sp, 0x170] | r4 = var_170h;
0x00028c3a movs r2, r0 | r2 = r0;
0x00028c3c ldr r5, [sp, 0x198] | r5 = var_198h;
0x00028c3e movs r2, r0 | r2 = r0;
0x00028c40 str r6, [sp, 0x118] | var_118h = r6;
0x00028c42 movs r2, r0 | r2 = r0;
0x00028c44 ldr r4, [sp, 0x328] | r4 = var_328h;
0x00028c46 movs r2, r0 | r2 = r0;
0x00028c48 ldr r4, [sp, 0x358] | r4 = var_358h;
0x00028c4a movs r2, r0 | r2 = r0;
0x00028c4c ldr r4, [sp, 0x2e8] | r4 = var_2e8h;
0x00028c4e movs r2, r0 | r2 = r0;
| }
; assembly | /* r2dec pseudo code output */
| /* /logs/firmware/patool_extraction/rootfs.img_unblob_extracted/rootfs.img_extract/0-80367616.squashfs_v4_le_extract/usr/sbin/zabbix_agentd @ 0x2631c */
| #include <stdint.h>
|
; (fcn) sym.SYSTEM_SWAP_SIZE () | void SYSTEM_SWAP_SIZE (int16_t arg1, int16_t arg2) {
| int16_t var_4h;
| int16_t var_24h_2;
| int16_t var_28h;
| int16_t var_38h;
| int16_t var_44h;
| r0 = arg1;
| r1 = arg2;
0x0002631c blmi 0x1df8cfc | __asm ("blmi aav.0x000358b4");
0x00026320 push {r4, r5, r6, lr} |
0x00026322 sub sp, 0x48 |
0x00026324 add r2, pc | r2 += pc;
0x00026326 mov r4, r1 | r4 = r1;
0x00026328 ldr r3, [r2, r3] | r3 = *((r2 + r3));
0x0002632a ldr r3, [r3] | r3 = *(r3);
0x0002632c str r3, [sp, 0x44] | var_44h = r3;
0x0002632e mov.w r3, 0 | r3 = 0;
0x00026332 ldr r3, [r0, 4] | r3 = *((r0 + 4));
0x00026334 cmp r3, 2 |
| if (r3 > 2) {
0x00026336 bgt 0x263d8 | goto label_6;
| }
0x00026338 cmp r3, 0 |
| if (r3 <= 0) {
0x0002633a ble 0x263ac | goto label_7;
| }
0x0002633c ldr r2, [r0, 8] | r2 = *((r0 + 8));
0x0002633e cmp r3, 2 |
0x00026340 ldr r0, [r2] | r0 = *(r2);
| if (r3 != 2) {
0x00026342 bne 0x263a6 | goto label_8;
| }
0x00026344 ldr r5, [r2, 4] | r5 = *((r2 + 4));
0x00026346 cbz r0, 0x26358 |
| while (r0 != 0) {
0x00026348 ldrb r3, [r0] | r3 = *(r0);
| if (r3 != 0) {
0x0002634a cbz r3, 0x26358 |
0x0002634c ldr r1, [pc, 0x1b0] |
0x0002634e add r1, pc | r1 = 0x4c852;
0x00026350 blx 0xe3b0 | r0 = fcn_0000e3b0 ();
0x00026354 cmp r0, 0 |
| if (r0 != 0) {
0x00026356 bne 0x26408 | goto label_9;
| }
| }
0x00026358 add r0, sp, 4 | r0 += var_4h;
0x0002635a blx 0xe364 | r0 = fcn_0000e364 ();
0x0002635e mov r6, r0 | r6 = r0;
| if (r0 != 0) {
0x00026360 cbnz r0, 0x263b6 | goto label_10;
| }
| if (r5 != 0) {
0x00026362 cbz r5, 0x26376 |
0x00026364 ldrb r3, [r5] | r3 = *(r5);
| if (r3 == 0) {
0x00026366 cbz r3, 0x26376 | goto label_0;
| }
0x00026368 ldr r1, [pc, 0x198] |
0x0002636a mov r0, r5 | r0 = r5;
0x0002636c add r1, pc | r1 = 0x4c874;
0x0002636e blx 0xe3b0 | r0 = fcn_0000e3b0 ();
0x00026372 cmp r0, 0 |
| if (r0 != 0) {
0x00026374 bne 0x263f8 | goto label_11;
| }
| }
| label_0:
0x00026376 ldr r2, [sp, 0x28] | r2 = var_28h;
| label_2:
0x00026378 ldr r3, [sp, 0x38] | r3 = var_38h;
0x0002637a ldr r1, [r4, 0x28] | r1 = *((r4 + 0x28));
0x0002637c umull r2, r3, r2, r3 | r2:r3 = r2 * r3;
0x00026380 orr r1, r1, 1 | r1 |= 1;
0x00026384 str r1, [r4, 0x28] | *((r4 + 0x28)) = r1;
0x00026386 strd r2, r3, [r4, 8] | __asm ("strd r2, r3, [r4, 8]");
| label_3:
0x0002638a movs r0, 0 | r0 = 0;
| label_1:
0x0002638c ldr r2, [pc, 0x178] |
0x0002638e ldr r3, [pc, 0x16c] | r3 = *(0x264fe);
0x00026390 add r2, pc | r2 = 0x4c89c;
0x00026392 ldr r3, [r2, r3] | r3 = *(0x4c89c);
0x00026394 ldr r2, [r3] | r2 = *(0x4c89c);
0x00026396 ldr r3, [sp, 0x44] | r3 = var_44h;
0x00026398 eors r2, r3 | r2 ^= r3;
0x0002639a mov.w r3, 0 | r3 = 0;
| if (r2 != r3) {
0x0002639e bne.w 0x264e8 | goto label_12;
| }
0x000263a2 add sp, 0x48 |
0x000263a4 pop {r4, r5, r6, pc} |
| label_8:
0x000263a6 movs r5, 0 | r5 = 0;
0x000263a8 cmp r0, 0 |
0x000263aa bne 0x26348 |
| }
| label_7:
0x000263ac add r0, sp, 4 | r0 += var_4h;
0x000263ae blx 0xe364 | r0 = fcn_0000e364 ();
0x000263b2 cmp r0, 0 |
| if (r0 == 0) {
0x000263b4 beq 0x26376 | goto label_0;
| }
| label_10:
0x000263b6 ldr r3, [r4, 0x28] | r3 = *((r4 + 0x28));
0x000263b8 orr r3, r3, 0x20 | r3 |= 0x20;
0x000263bc str r3, [r4, 0x28] | *((r4 + 0x28)) = r3;
0x000263be blx 0xe3d4 | fcn_0000e3d4 ();
0x000263c0 invalid |
0x000263c4 bl 0x30b74 | zbx_strerror ();
0x000263c8 ldr r1, [pc, 0x140] |
0x000263ca mov r2, r0 | r2 = r0;
0x000263cc movs r0, 0 | r0 = 0;
0x000263ce add r1, pc | r1 = 0x4c8de;
0x000263d0 bl 0x44820 | r0 = zbx_dsprintf ()
0x000263d4 mov r3, r0 | r3 = r0;
0x000263d6 b 0x263f2 | goto label_5;
| label_6:
0x000263d8 ldr r0, [r1, 0x28] | r0 = *((r1 + 0x28));
0x000263da movs r2, 0 | r2 = 0;
0x000263dc ldr r3, [pc, 0x130] |
0x000263de movs r1, 0x1f | r1 = 0x1f;
0x000263e0 orr r0, r0, 0x20 | r0 |= 0x20;
0x000263e4 str r0, [r4, 0x28] | *((r4 + 0x28)) = r0;
0x000263e6 add r3, pc | r3 = 0x4c8fa;
0x000263e8 ldr r0, [pc, 0x128] |
0x000263ea add r0, pc | r0 = 0x4c902;
0x000263ec bl 0x40ed8 | r0 = zbx_strdup2 ();
0x000263f0 mov r3, r0 | r3 = r0;
| do {
| label_5:
0x000263f2 movs r0, 1 | r0 = 1;
0x000263f4 str r3, [r4, 0x20] | *((r4 + 0x20)) = r3;
0x000263f6 b 0x2638c | goto label_1;
| label_11:
0x000263f8 ldr r1, [pc, 0x11c] |
0x000263fa mov r0, r5 | r0 = r5;
0x000263fc add r1, pc | r1 = "@&@5@";
0x000263fe blx 0xe3b0 | r0 = fcn_0000e3b0 ();
| if (r0 != 0) {
0x00026402 cbnz r0, 0x26424 | goto label_13;
| }
0x00026404 ldr r2, [sp, 0x24] | r2 = var_24h_2;
0x00026406 b 0x26378 | goto label_2;
| label_9:
0x00026408 ldr r0, [r4, 0x28] | r0 = *((r4 + 0x28));
0x0002640a movs r2, 0 | r2 = 0;
0x0002640c ldr r3, [pc, 0x10c] |
0x0002640e movs r1, 0x28 | r1 = 0x28;
0x00026410 orr r0, r0, 0x20 | r0 |= 0x20;
0x00026414 str r0, [r4, 0x28] | *((r4 + 0x28)) = r0;
0x00026416 add r3, pc | r3 = 0x4c936;
0x00026418 ldr r0, [pc, 0x104] |
0x0002641a add r0, pc | r0 = 0x4c93e;
0x0002641c bl 0x40ed8 | r0 = zbx_strdup2 ();
0x00026420 mov r3, r0 | r3 = r0;
0x00026422 b 0x263f2 |
| } while (1);
| label_13:
0x00026424 ldr r1, [pc, 0xfc] |
0x00026426 mov r0, r5 | r0 = r5;
0x00026428 add r1, pc | r1 = 0x4c950;
0x0002642a blx 0xe3b0 | r0 = fcn_0000e3b0 ();
| if (r0 == 0) {
0x0002642e cbz r0, 0x2646c | goto label_14;
| }
0x00026430 ldr r1, [pc, 0xf4] |
0x00026432 mov r0, r5 | r0 = r5;
0x00026434 add r1, pc | r1 = 0x4c960;
0x00026436 blx 0xe3b0 | r0 = fcn_0000e3b0 ();
| if (r0 != 0) {
0x0002643a cbnz r0, 0x26486 | goto label_15;
| }
0x0002643c ldr r3, [r4, 0x28] | r3 = *((r4 + 0x28));
0x0002643e ldr r2, [sp, 0x24] | r2 = var_24h_2;
0x00026440 orr r3, r3, 2 | r3 |= 2;
0x00026444 str r3, [r4, 0x28] | *((r4 + 0x28)) = r3;
0x00026446 cmp r2, 0 |
| if (r2 == 0) {
0x00026448 beq 0x264c0 | goto label_16;
| }
0x0002644a vmov s15, r2 | __asm ("vmov s15, r2");
0x0002644e vcvt.f64.u32 d16, s15 | __asm ("vcvt.f64.u32 d16, s15");
0x00026452 vldr s15, [sp, 0x28] | __asm ("vldr s15, [sp, 0x28]");
0x00026456 vldr d19, [pc, 0x98] | __asm ("vldr d19, [0x000264f4]");
0x0002645a vcvt.f64.u32 d18, s15 | __asm ("vcvt.f64.u32 d18, s15");
0x0002645e vdiv.f64 d17, d18, d16 | __asm ("vdiv.f64 d17, d18, d16");
0x00026462 vmul.f64 d17, d17, d19 | __asm ("vmul.f64 d17, d17, d19");
| do {
0x00026466 vstr d17, [r4, 0x10] | __asm ("vstr d17, [r4, 0x10]");
0x0002646a b 0x2638a | goto label_3;
| label_14:
0x0002646c ldrd r3, r0, [sp, 0x24] | __asm ("ldrd r3, r0, [var_24h_2]");
0x00026470 ldr r2, [sp, 0x38] | r2 = var_38h;
0x00026472 ldr r1, [r4, 0x28] | r1 = *((r4 + 0x28));
0x00026474 subs r3, r3, r0 | r3 -= r0;
0x00026476 umull r3, r2, r3, r2 | r3:r2 = r3 * r2;
0x0002647a orr r1, r1, 1 | r1 |= 1;
0x0002647e str r1, [r4, 0x28] | *((r4 + 0x28)) = r1;
0x00026480 strd r3, r2, [r4, 8] | __asm ("strd r3, r2, [r4, 8]");
0x00026484 b 0x2638a | goto label_3;
| label_15:
0x00026486 ldr r1, [pc, 0xa4] |
0x00026488 mov r0, r5 | r0 = r5;
0x0002648a add r1, pc | r1 = "option \"-%c\" or \"--%s\" specified multiple times";
0x0002648c blx 0xe3b0 | r0 = fcn_0000e3b0 ();
| if (r0 != 0) {
0x00026490 cbnz r0, 0x264cc | goto label_17;
| }
0x00026492 ldr r3, [r4, 0x28] | r3 = *((r4 + 0x28));
0x00026494 ldr r2, [sp, 0x24] | r2 = var_24h_2;
0x00026496 orr r3, r3, 2 | r3 |= 2;
0x0002649a str r3, [r4, 0x28] | *((r4 + 0x28)) = r3;
| if (r2 == 0) {
0x0002649c cbz r2, 0x264c6 | goto label_18;
| }
0x0002649e vmov s15, r2 | __asm ("vmov s15, r2");
0x000264a2 vcvt.f64.u32 d17, s15 | __asm ("vcvt.f64.u32 d17, s15");
0x000264a6 vldr s15, [sp, 0x28] | __asm ("vldr s15, [sp, 0x28]");
0x000264aa vldr d16, [pc, 0x44] | __asm ("vldr d16, [0x000264f4]");
0x000264ae vcvt.f64.u32 d18, s15 | __asm ("vcvt.f64.u32 d18, s15");
0x000264b2 vdiv.f64 d19, d18, d17 | __asm ("vdiv.f64 d19, d18, d17");
0x000264b4 subs r3, 0xa1 | r3 -= 0xa1;
0x000264b6 vmls.f64 d16, d19, d16 | __asm ("vmls.f64 d16, d19, d16");
| label_4:
0x000264ba vstr d16, [r4, 0x10] | __asm ("vstr d16, [r4, 0x10]");
0x000264be b 0x2638a | goto label_3;
| label_16:
0x000264c0 vldr d17, [pc, 0x2c] | __asm ("vldr d17, [0x000264f4]");
0x000264c4 b 0x26466 |
| } while (1);
| label_18:
0x000264c6 vmov.i64 d16, 0 | __asm ("vmov.i64 d16, 0");
0x000264ca b 0x264ba | goto label_4;
| label_17:
0x000264cc ldr r0, [r4, 0x28] | r0 = *((r4 + 0x28));
0x000264ce mov r2, r6 | r2 = r6;
0x000264d0 ldr r3, [pc, 0x5c] |
0x000264d2 movs r1, 0x48 | r1 = 0x48;
0x000264d4 orr r0, r0, 0x20 | r0 |= 0x20;
0x000264d8 str r0, [r4, 0x28] | *((r4 + 0x28)) = r0;
0x000264da add r3, pc | r3 = 0x4ca0e;
0x000264dc ldr r0, [pc, 0x54] |
0x000264de add r0, pc | r0 = 0x4ca16;
0x000264e0 bl 0x40ed8 | r0 = zbx_strdup2 ();
0x000264e4 mov r3, r0 | r3 = r0;
0x000264e6 b 0x263f2 | goto label_5;
| label_12:
0x000264e8 blx 0xe158 | fcn_0000e158 ();
0x000264ec nop.w |
0x000264f0 movs r0, r0 |
0x000264f2 movs r0, r0 |
0x000264f4 movs r0, r0 |
0x000264f6 eors r1, r3 | r1 ^= r3;
0x000264f8 ldr r4, [r6, r2] | r4 = *((r6 + r2));
0x000264fa movs r3, r0 | r3 = r0;
0x000264fc lsls r4, r2, 0xe | r4 = r2 << 0xe;
0x000264fe movs r0, r0 |
0x00026500 bkpt 0x1e | __asm ("bkpt 0x1e");
| }
; assembly | /* r2dec pseudo code output */
| /* /logs/firmware/patool_extraction/rootfs.img_unblob_extracted/rootfs.img_extract/0-80367616.squashfs_v4_le_extract/usr/sbin/zabbix_agentd @ 0x257f4 */
| #include <stdint.h>
|
; (fcn) sym.SYSTEM_SW_ARCH () | void SYSTEM_SW_ARCH (int16_t arg2) {
| int16_t var_4h;
| int32_t var_0h;
| int16_t var_108h;
| int16_t var_18ch;
| r1 = arg2;
0x000257f4 blmi 0x7f8074 | __asm ("blmi aav.0x000363dc");
0x000257f8 push {r4, lr} |
0x000257fa sub sp, 0x190 |
0x000257fc add r2, pc | r2 += pc;
0x000257fe add r0, sp, 4 | r0 += var_4h;
0x00025800 mov r4, r1 | r4 = r1;
0x00025802 ldr r3, [r2, r3] | r3 = *((r2 + r3));
0x00025804 ldr r3, [r3] | r3 = *(r3);
0x00025806 str r3, [sp, 0x18c] | var_18ch = r3;
0x00025808 mov.w r3, 0 | r3 = 0;
0x0002580c blx 0xdd84 | dn_expand ();
0x00025810 adds r0, 1 | r0++;
| if (r0 == 1) {
0x00025812 beq 0x25848 | goto label_0;
| }
0x00025814 ldr r1, [r4, 0x28] | r1 = *((r4 + 0x28));
0x00025816 add r3, sp, 0x108 | r3 += var_108h;
0x00025818 ldr r0, [pc, 0x5c] |
0x0002581a movs r2, 0 | r2 = 0;
0x0002581c orr r1, r1, 4 | r1 |= 4;
0x00025820 str r1, [r4, 0x28] | *((r4 + 0x28)) = r1;
0x00025822 add r0, pc | r0 = 0x4b09e;
0x00025824 movs r1, 0x2d | r1 = 0x2d;
0x00025826 bl 0x40ed8 | zbx_strdup2 ();
0x0002582a movs r3, 0 | r3 = 0;
0x0002582c str r0, [r4, 0x18] | *((r4 + 0x18)) = r0;
| do {
0x0002582e ldr r1, [pc, 0x4c] |
0x00025830 ldr r2, [pc, 0x40] | r2 = *(0x25874);
0x00025832 add r1, pc | r1 = zbx_compress;
0x00025834 ldr r2, [r1, r2] | r2 = zbx_compress;
0x00025836 ldr r1, [r2] | r1 = zbx_compress;
0x00025838 ldr r2, [sp, 0x18c] | r2 = var_18ch;
0x0002583a eors r1, r2 | r1 ^= r2;
0x0002583c mov.w r2, 0 | r2 = 0;
| if (r1 != r2) {
0x00025840 bne 0x2586c | goto label_1;
| }
0x00025842 mov r0, r3 | r0 = r3;
0x00025844 add sp, 0x190 |
0x00025846 pop {r4, pc} |
| label_0:
0x00025848 ldr r3, [r4, 0x28] | r3 = *((r4 + 0x28));
0x0002584a orr r3, r3, 0x20 | r3 |= 0x20;
0x0002584e str r3, [r4, 0x28] | *((r4 + 0x28)) = r3;
0x00025850 blx 0xe3d4 | r0 = fcn_0000e3d4 ();
0x00025854 ldr r0, [r0] | r0 = *(r0);
0x00025856 bl 0x30b74 | zbx_strerror ();
0x0002585a ldr r1, [pc, 0x24] |
0x0002585c mov r2, r0 | r2 = r0;
0x0002585e movs r0, 0 | r0 = 0;
0x00025860 add r1, pc | r1 = 0x4b0e6;
0x00025862 bl 0x44820 | zbx_dsprintf ()
0x00025866 movs r3, 1 | r3 = 1;
0x00025868 str r0, [r4, 0x20] | *((r4 + 0x20)) = r0;
0x0002586a b 0x2582e |
| } while (1);
| label_1:
0x0002586c blx 0xe158 | fcn_0000e158 ();
0x00025870 str r4, [r3, 0x3c] | *((r3 + 0x3c)) = r4;
0x00025872 movs r3, r0 | r3 = r0;
0x00025874 lsls r4, r2, 0xe | r4 = r2 << 0xe;
0x00025876 movs r0, r0 |
0x00025878 ldm r1, {r1, r2, r4, r6} | r1 = *(r1);
| r2 = *((r1 + 4));
| r4 = *((r1 + 8));
| r6 = *((r1 + 12));
0x0002587a movs r2, r0 | r2 = r0;
0x0002587c str r6, [r4, 0x38] | *((r4 + 0x38)) = r6;
0x0002587e movs r3, r0 | r3 = r0;
0x00025880 pop {r4, r5} |
0x00025882 movs r2, r0 | r2 = r0;
| }
; assembly | /* r2dec pseudo code output */
| /* /logs/firmware/patool_extraction/rootfs.img_unblob_extracted/rootfs.img_extract/0-80367616.squashfs_v4_le_extract/usr/sbin/zabbix_agentd @ 0x25884 */
| #include <stdint.h>
|
; (fcn) sym.SYSTEM_SW_OS () | void SYSTEM_SW_OS (int16_t arg1, int16_t arg2) {
| int16_t var_0h;
| int16_t var_4h_2;
| int16_t var_804h;
| int16_t var_80ch;
| int16_t var_80eh;
| int16_t var_1000h;
| int16_t var_1800h;
| r0 = arg1;
| r1 = arg2;
0x00025884 blmi 0xfe5f82e4 | __asm ("blmi aav.0x00036348");
0x00025888 push.w {r4, r5, r6, r7, r8, sb, sl, fp, lr} |
0x0002588c sub.w sp, sp, 0x1800 |
0x00025890 add r2, pc | r2 += pc;
0x00025892 sub sp, 0xc |
0x00025894 add.w r4, sp, 0x1800 | r4 += var_1800h;
0x00025898 ldr r3, [r2, r3] | r3 = *((r2 + r3));
0x0002589a adds r4, 4 | r4 += 4;
0x0002589c ldr r3, [r3] | r3 = *(r3);
0x0002589e str r3, [r4] | *(r4) = r3;
0x000258a0 mov.w r3, 0 | r3 = 0;
0x000258a4 ldr r3, [r0, 4] | r3 = *((r0 + 4));
0x000258a6 mov r4, r1 | r4 = r1;
0x000258a8 cmp r3, 1 |
| if (r3 > 1) {
0x000258aa bgt 0x2593a | goto label_6;
| }
| if (r3 == 1) {
0x000258ac bne 0x258ba |
0x000258ae ldr r3, [r0, 8] | r3 = *((r0 + 8));
0x000258b0 ldr r5, [r3] | r5 = *(r3);
| if (r5 == 0) {
0x000258b2 cbz r5, 0x258ba | goto label_1;
| }
0x000258b4 ldrb r3, [r5] | r3 = *(r5);
0x000258b6 cmp r3, 0 |
| if (r3 != 0) {
0x000258b8 bne 0x25958 | goto label_7;
| }
| }
| label_1:
0x000258ba ldr r1, [pc, 0x22c] |
0x000258bc ldr r0, [pc, 0x22c] |
0x000258be add r1, pc | r1 = 0x4b3ac;
0x000258c0 add r0, pc | r0 = 0x4b3b0;
0x000258c2 blx 0xdf90 | r0 = fcn_0000df90 ();
0x000258c6 mov r5, r0 | r5 = r0;
0x000258c8 cmp r0, 0 |
| if (r0 == 0) {
0x000258ca beq.w 0x25abe | goto label_8;
| }
| label_4:
0x000258ce add r6, sp, 4 | r6 += var_4h_2;
0x000258d0 mov r2, r5 | r2 = r5;
0x000258d2 mov.w r1, 0x800 | r1 = 0x800;
0x000258d6 mov r0, r6 | r0 = r6;
0x000258d8 blx 0xdc98 | r0 = fcn_0000dc98 ();
0x000258dc cmp r0, 0 |
| if (r0 == 0) {
0x000258de beq.w 0x25a14 | goto label_9;
| }
0x000258e2 ldr r1, [pc, 0x20c] |
0x000258e4 mov r0, r6 | r0 = r6;
0x000258e6 add r1, pc | r1 = 0x4b3dc;
0x000258e8 bl 0x444f4 | zbx_rtrim ();
0x000258ec ldr r1, [r4, 0x28] | r1 = *((r4 + 0x28));
0x000258ee mov r3, r6 | r3 = r6;
0x000258f0 ldr r0, [pc, 0x200] |
0x000258f2 movs r2, 0 | r2 = 0;
0x000258f4 mov r6, r5 | r6 = r5;
0x000258f6 orr r1, r1, 4 | r1 |= 4;
0x000258fa str r1, [r4, 0x28] | *((r4 + 0x28)) = r1;
0x000258fc add r0, pc | r0 = 0x4b3f4;
0x000258fe movs r1, 0x7c | r1 = 0x7c;
0x00025900 bl 0x40ed8 | zbx_strdup2 ();
0x00025904 str r0, [r4, 0x18] | *((r4 + 0x18)) = r0;
0x00025906 cbnz r5, 0x25930 |
| while (1) {
| label_0:
0x00025908 ldr r2, [pc, 0x1ec] |
0x0002590a add.w r1, sp, 0x1800 | r1 += var_1800h;
0x0002590e ldr r3, [pc, 0x1d4] | r3 = *(0x25ae6);
0x00025910 adds r1, 4 | r1 += 4;
0x00025912 add r2, pc | r2 = 0x4b40e;
0x00025914 ldr r3, [r2, r3] | r3 = *(0x4b40e);
0x00025916 ldr r2, [r3] | r2 = *(0x4b40e);
0x00025918 ldr r3, [r1] | r3 = *(r1);
0x0002591a eors r2, r3 | r2 ^= r3;
0x0002591c mov.w r3, 0 | r3 = 0;
| if (r2 != r3) {
0x00025920 bne.w 0x25aba | goto label_10;
| }
0x00025924 mov r0, r6 | r0 = r6;
0x00025926 add.w sp, sp, 0x1800 |
0x0002592a add sp, 0xc |
0x0002592c pop.w {r4, r5, r6, r7, r8, sb, sl, fp, pc} |
0x00025930 movs r6, 0 | r6 = 0;
| label_3:
0x00025932 mov r0, r5 | r0 = r5;
0x00025934 blx 0xdc8c | fcn_0000dc8c ();
0x00025938 b 0x25908 |
| }
| label_6:
0x0002593a ldr r0, [r1, 0x28] | r0 = *((r1 + 0x28));
0x0002593c movs r2, 0 | r2 = 0;
0x0002593e ldr r3, [pc, 0x1bc] |
0x00025940 movs r1, 0x3a | r1 = 0x3a;
0x00025942 orr r0, r0, 0x20 | r0 |= 0x20;
0x00025946 str r0, [r4, 0x28] | *((r4 + 0x28)) = r0;
0x00025948 add r3, pc | r3 = 0x4b44a;
0x0002594a ldr r0, [pc, 0x1b4] |
0x0002594c add r0, pc | r0 = 0x4b452;
0x0002594e bl 0x40ed8 | zbx_strdup2 ();
| label_5:
0x00025952 movs r6, 1 | r6 = 1;
0x00025954 str r0, [r4, 0x20] | *((r4 + 0x20)) = r0;
0x00025956 b 0x25908 | goto label_0;
| label_7:
0x00025958 ldr r1, [pc, 0x1a8] |
0x0002595a mov r0, r5 | r0 = r5;
0x0002595c add r1, pc | r1 = 0x4b464;
0x0002595e blx 0xe3b0 | r0 = fcn_0000e3b0 ();
0x00025962 cmp r0, 0 |
| if (r0 == 0) {
0x00025964 beq 0x258ba | goto label_1;
| }
0x00025966 ldr r1, [pc, 0x1a0] |
0x00025968 mov r0, r5 | r0 = r5;
0x0002596a add r1, pc | r1 = 0x4b478;
0x0002596c blx 0xe3b0 | r0 = fcn_0000e3b0 ();
0x00025970 cmp r0, 0 |
| if (r0 == 0) {
0x00025972 beq 0x25a32 | goto label_11;
| }
0x00025974 ldr r1, [pc, 0x194] |
0x00025976 mov r0, r5 | r0 = r5;
0x00025978 add r1, pc | r1 = 0x4b488;
0x0002597a blx 0xe3b0 | r0 = fcn_0000e3b0 ();
0x0002597e cmp r0, 0 |
| if (r0 != 0) {
0x00025980 bne 0x25a66 | goto label_12;
| }
0x00025982 ldr r1, [pc, 0x18c] |
0x00025984 ldr r0, [pc, 0x18c] |
0x00025986 add r1, pc | r1 = 0x4b49c;
0x00025988 add r0, pc | r0 = 0x4b4a0;
0x0002598a blx 0xdf90 | r0 = fcn_0000df90 ();
0x0002598e mov r7, r0 | r7 = r0;
0x00025990 cmp r0, 0 |
| if (r0 == 0) {
0x00025992 beq 0x25a86 | goto label_13;
| }
0x00025994 ldr.w sb, [pc, 0x180] |
0x00025998 movw r8, 0x5250 |
0x0002599c movw sl, 0x5954 |
0x000259a0 addw fp, sp, 0x808 | __asm ("addw fp, sp, 0x808");
0x000259a4 movt r8, 0x5445 | r8 = 0x54455250;
0x000259a8 movt sl, 0x4e5f | sl = 0x4e5f5954;
0x000259ac add sb, pc | sb = 0x4b4c8;
0x000259ae addw r5, sp, 0x804 | __asm ("addw r5, var_804h");
| do {
| label_2:
0x000259b2 mov r2, r7 | r2 = r7;
0x000259b4 mov.w r1, 0x800 | r1 = 0x800;
0x000259b8 mov r0, r5 | r0 = r5;
0x000259ba blx 0xdc98 | r0 = fcn_0000dc98 ();
0x000259be cmp r0, 0 |
| if (r0 == 0) {
0x000259c0 beq 0x25a80 | goto label_14;
| }
0x000259c2 ldr r3, [r5] | r3 = *(r5);
0x000259c4 cmp r3, r8 |
0x000259c6 bne 0x259b2 |
| } while (r3 != r8);
0x000259c8 ldr.w r3, [fp] | r3 = *(fp);
0x000259cc cmp r3, sl |
| if (r3 != sl) {
0x000259ce bne 0x259b2 | goto label_2;
| }
0x000259d0 ldrh.w r2, [sp, 0x80c] | r2 = var_80ch;
0x000259d4 movw r3, 0x4d41 | r3 = 0x4d41;
0x000259d8 cmp r2, r3 |
| if (r2 != r3) {
0x000259da bne 0x259b2 | goto label_2;
| }
0x000259dc ldrb.w r3, [sp, 0x80e] | r3 = var_80eh;
0x000259e0 cmp r3, 0x45 |
| if (r3 != 0x45) {
0x000259e2 bne 0x259b2 | goto label_2;
| }
0x000259e4 ldr r1, [pc, 0x134] |
0x000259e6 add r6, sp, 4 | r6 += var_4h_2;
0x000259e8 mov r2, r6 | r2 = r6;
0x000259ea mov r0, r5 | r0 = r5;
0x000259ec add r1, pc | r1 = 0x4b50c;
0x000259ee blx 0xdc68 | r0 = fcn_0000dc68 ();
0x000259f2 cmp r0, 1 |
| if (r0 == 1) {
0x000259f4 beq 0x25a0a | goto label_15;
| }
0x000259f6 add.w r3, sp, 0x1000 | r3 += var_1000h;
0x000259fa mov r2, r6 | r2 = r6;
0x000259fc adds r3, 4 | r3 += 4;
0x000259fe mov r1, sb | r1 = sb;
0x00025a00 mov r0, r5 | r0 = r5;
0x00025a02 blx 0xdc68 | r0 = fcn_0000dc68 ();
0x00025a06 cmp r0, 1 |
| if (r0 != 1) {
0x00025a08 bne 0x259b2 | goto label_2;
| }
| label_15:
0x00025a0a mov r0, r7 | r0 = r7;
0x00025a0c movs r5, 0 | r5 = 0;
0x00025a0e blx 0xdc8c | fcn_0000dc8c ();
0x00025a10 ldmdb lr!, {r1, r2, r5, r6, r8, sb, sl, sp, lr, pc} | __asm ("ldmdb lr!, {r1, r2, r5, r6, r8, sb, sl, sp, lr, pc}");
| label_9:
0x00025a14 ldr r1, [r4, 0x28] | r1 = *((r4 + 0x28));
0x00025a16 mov r2, r0 | r2 = r0;
0x00025a18 ldr r3, [pc, 0x104] |
0x00025a1a movs r6, 1 | r6 = 1;
0x00025a1c ldr r0, [pc, 0x104] |
0x00025a1e orr r1, r1, 0x20 | r1 |= 0x20;
0x00025a22 str r1, [r4, 0x28] | *((r4 + 0x28)) = r1;
0x00025a24 add r3, pc | r3 = 0x4b548;
0x00025a26 add r0, pc | r0 = 0x4b54e;
0x00025a28 movs r1, 0x7f | r1 = 0x7f;
0x00025a2a bl 0x40ed8 | zbx_strdup2 ();
0x00025a2e str r0, [r4, 0x20] | *((r4 + 0x20)) = r0;
0x00025a30 b 0x25932 | goto label_3;
| label_11:
0x00025a32 ldr r1, [pc, 0xf4] |
0x00025a34 ldr r0, [pc, 0xf4] |
0x00025a36 add r1, pc | r1 = 0x4b564;
0x00025a38 add r0, pc | r0 = 0x4b568;
0x00025a3a blx 0xdf90 | r0 = fcn_0000df90 ();
0x00025a3e mov r5, r0 | r5 = r0;
0x00025a40 cmp r0, 0 |
| if (r0 != 0) {
0x00025a42 bne.w 0x258ce | goto label_4;
| }
0x00025a46 ldr r3, [r4, 0x28] | r3 = *((r4 + 0x28));
0x00025a48 orr r3, r3, 0x20 | r3 |= 0x20;
0x00025a4c str r3, [r4, 0x28] | *((r4 + 0x28)) = r3;
0x00025a4e blx 0xe3d4 | r0 = fcn_0000e3d4 ();
0x00025a52 ldr r0, [r0] | r0 = *(r0);
0x00025a54 bl 0x30b74 | zbx_strerror ();
0x00025a58 ldr r1, [pc, 0xd4] |
0x00025a5a mov r2, r0 | r2 = r0;
0x00025a5c mov r0, r5 | r0 = r5;
0x00025a5e add r1, pc | r1 = 0x4b592;
0x00025a60 bl 0x44820 | zbx_dsprintf ()
0x00025a64 b 0x25952 | goto label_5;
| label_12:
0x00025a66 ldr r0, [r4, 0x28] | r0 = *((r4 + 0x28));
0x00025a68 movs r2, 0 | r2 = 0;
0x00025a6a ldr r3, [pc, 0xc8] |
0x00025a6c movs r1, 0x74 | r1 = 0x74;
0x00025a6e orr r0, r0, 0x20 | r0 |= 0x20;
0x00025a72 str r0, [r4, 0x28] | *((r4 + 0x28)) = r0;
0x00025a74 add r3, pc | r3 = 0x4b5ae;
0x00025a76 ldr r0, [pc, 0xc0] |
0x00025a78 add r0, pc | r0 = 0x4b5b6;
0x00025a7a bl 0x40ed8 | zbx_strdup2 ();
0x00025a7e b 0x25952 | goto label_5;
| label_14:
0x00025a80 mov r0, r7 | r0 = r7;
0x00025a82 blx 0xdc8c | fcn_0000dc8c ();
| label_13:
0x00025a86 ldr r1, [pc, 0xb4] |
0x00025a88 ldr r0, [pc, 0xb4] |
0x00025a8a add r1, pc | r1 = 0x4b5cc;
0x00025a8c add r0, pc | r0 = 0x4b5d0;
0x00025a8e blx 0xdf90 | r0 = fcn_0000df90 ();
0x00025a92 mov r5, r0 | r5 = r0;
0x00025a94 cmp r0, 0 |
| if (r0 != 0) {
0x00025a96 bne.w 0x258ce | goto label_4;
| }
0x00025a9a ldr r3, [r4, 0x28] | r3 = *((r4 + 0x28));
0x00025a9c orr r3, r3, 0x20 | r3 |= 0x20;
0x00025aa0 str r3, [r4, 0x28] | *((r4 + 0x28)) = r3;
0x00025aa2 blx 0xe3d4 | r0 = fcn_0000e3d4 ();
0x00025aa6 ldr r0, [r0] | r0 = *(r0);
0x00025aa8 bl 0x30b74 | zbx_strerror ();
0x00025aac ldr r1, [pc, 0x94] |
0x00025aae mov r2, r0 | r2 = r0;
0x00025ab0 mov r0, r5 | r0 = r5;
0x00025ab2 add r1, pc | r1 = 0x4b5fa;
0x00025ab4 bl 0x44820 | zbx_dsprintf ()
0x00025ab8 b 0x25952 | goto label_5;
| label_10:
0x00025aba blx 0xe158 | fcn_0000e158 ();
| label_8:
0x00025abe ldr r3, [r4, 0x28] | r3 = *((r4 + 0x28));
0x00025ac0 orr r3, r3, 0x20 | r3 |= 0x20;
0x00025ac4 str r3, [r4, 0x28] | *((r4 + 0x28)) = r3;
0x00025ac6 blx 0xe3d4 | r0 = fcn_0000e3d4 ();
0x00025aca ldr r0, [r0] | r0 = *(r0);
0x00025acc bl 0x30b74 | zbx_strerror ();
0x00025ad0 ldr r1, [pc, 0x74] |
0x00025ad2 mov r2, r0 | r2 = r0;
0x00025ad4 mov r0, r5 | r0 = r5;
0x00025ad6 add r1, pc | r1 = 0x4b622;
0x00025ad8 bl 0x44820 | zbx_dsprintf ()
0x00025adc b 0x25952 | goto label_5;
| }
; assembly | /* r2dec pseudo code output */
| /* /logs/firmware/patool_extraction/rootfs.img_unblob_extracted/rootfs.img_extract/0-80367616.squashfs_v4_le_extract/usr/sbin/zabbix_agentd @ 0x25f54 */
| #include <stdint.h>
|
; (fcn) sym.SYSTEM_UNAME () | void SYSTEM_UNAME (int16_t arg2) {
| int16_t var_0h_2;
| int16_t var_4h_3;
| int16_t var_8h_2;
| int16_t var_14h;
| int32_t var_0h;
| int16_t var_55h;
| int16_t var_96h;
| int16_t var_d7h;
| int16_t var_118h;
| int16_t var_19ch;
| r1 = arg2;
0x00025f54 ldr r2, [pc, 0x8c] |
0x00025f56 ldr r3, [pc, 0x90] | r3 = *(0x25fea);
0x00025f58 push {r4, r5, lr} |
0x00025f5a sub sp, 0x1a4 |
0x00025f5c add r2, pc | r2 = 0x4bf44;
0x00025f5e add r5, sp, 0x14 | r5 += var_14h;
0x00025f60 mov r0, r5 | r0 = r5;
0x00025f62 mov r4, r1 | r4 = r1;
0x00025f64 ldr r3, [r2, r3] |
0x00025f66 ldr r3, [r3] | r3 = *(0x4bf44);
0x00025f68 str r3, [sp, 0x19c] | var_19ch = r3;
0x00025f6a mov.w r3, 0 | r3 = 0;
0x00025f6e blx 0xdd84 | dn_expand ();
0x00025f72 adds r0, 1 | r0++;
| if (r0 == 1) {
0x00025f74 beq 0x25fbc | goto label_0;
| }
0x00025f76 ldr r0, [r4, 0x28] | r0 = *((r4 + 0x28));
0x00025f78 add r3, sp, 0x118 | r3 += var_118h;
0x00025f7a ldr r1, [pc, 0x70] |
0x00025f7c mov r2, r5 | r2 = r5;
0x00025f7e str r3, [sp, 8] | var_8h_2 = r3;
0x00025f80 add.w r3, sp, 0xd7 | r3 += var_d7h;
0x00025f84 orr r0, r0, 4 | r0 |= 4;
0x00025f88 str r3, [sp, 4] | var_4h_3 = r3;
0x00025f8a str r0, [r4, 0x28] | *((r4 + 0x28)) = r0;
0x00025f8c add.w r0, sp, 0x96 | r0 += var_96h;
0x00025f90 add.w r3, sp, 0x55 | r3 += var_55h;
0x00025f94 str r0, [sp] | *(sp) = r0;
0x00025f96 add r1, pc | r1 = 0x4bf88;
0x00025f98 movs r0, 0 | r0 = 0;
0x00025f9a bl 0x44820 | zbx_dsprintf ()
0x00025f9e movs r3, 0 | r3 = 0;
0x00025fa0 str r0, [r4, 0x18] | *((r4 + 0x18)) = r0;
| do {
0x00025fa2 ldr r1, [pc, 0x4c] |
0x00025fa4 ldr r2, [pc, 0x40] | r2 = *(0x25fe8);
0x00025fa6 add r1, pc | r1 = 0x4bf9c;
0x00025fa8 ldr r2, [r1, r2] | r2 = *(0x4bf9c);
0x00025faa ldr r1, [r2] | r1 = *(0x4bf9c);
0x00025fac ldr r2, [sp, 0x19c] | r2 = var_19ch;
0x00025fae eors r1, r2 | r1 ^= r2;
0x00025fb0 mov.w r2, 0 | r2 = 0;
| if (r1 != r2) {
0x00025fb4 bne 0x25fe0 | goto label_1;
| }
0x00025fb6 mov r0, r3 | r0 = r3;
0x00025fb8 add sp, 0x1a4 |
0x00025fba pop {r4, r5, pc} |
| label_0:
0x00025fbc ldr r3, [r4, 0x28] | r3 = *((r4 + 0x28));
0x00025fbe orr r3, r3, 0x20 | r3 |= 0x20;
0x00025fc2 str r3, [r4, 0x28] | *((r4 + 0x28)) = r3;
0x00025fc4 blx 0xe3d4 | r0 = fcn_0000e3d4 ();
0x00025fc8 ldr r0, [r0] | r0 = *(r0);
0x00025fca bl 0x30b74 | zbx_strerror ();
0x00025fce ldr r1, [pc, 0x24] |
0x00025fd0 mov r2, r0 | r2 = r0;
0x00025fd2 movs r0, 0 | r0 = 0;
0x00025fd4 add r1, pc | r1 = 0x4bfce;
0x00025fd6 bl 0x44820 | zbx_dsprintf ()
0x00025fda movs r3, 1 | r3 = 1;
0x00025fdc str r0, [r4, 0x20] | *((r4 + 0x20)) = r0;
0x00025fde b 0x25fa2 |
| } while (1);
| label_1:
0x00025fe0 blx 0xe158 | fcn_0000e158 ();
0x00025fe4 ldrb r4, [r7, r1] | r4 = *((r7 + r1));
0x00025fe6 movs r3, r0 | r3 = r0;
0x00025fe8 lsls r4, r2, 0xe | r4 = r2 << 0xe;
0x00025fea movs r0, r0 |
0x00025fec stm r4!, {r1, r2, r3} | *(r4!) = r1;
| *((r4! + 4)) = r2;
| *((r4! + 8)) = r3;
0x00025fee movs r2, r0 | r2 = r0;
0x00025ff0 ldrb r2, [r6, r0] | r2 = *((r6 + r0));
0x00025ff2 movs r3, r0 | r3 = r0;
0x00025ff4 push {r2, r3, r4, r5, r7} |
0x00025ff6 movs r2, r0 | r2 = r0;
| }
; assembly | /* r2dec pseudo code output */
| /* /logs/firmware/patool_extraction/rootfs.img_unblob_extracted/rootfs.img_extract/0-80367616.squashfs_v4_le_extract/usr/sbin/zabbix_agentd @ 0x26850 */
| #include <stdint.h>
|
; (fcn) sym.SYSTEM_UPTIME () | void SYSTEM_UPTIME (int16_t arg_388h, int16_t arg_804h, int16_t arg2) {
| int16_t var_4h;
| int16_t var_44h;
| r1 = arg2;
0x00026850 blmi 0x7390c4 | __asm ("blmi aav.0x00035380");
0x00026854 push {r4, lr} |
0x00026856 sub sp, 0x48 |
0x00026858 add r2, pc | r2 += pc;
0x0002685a add r0, sp, 4 | r0 += var_4h;
0x0002685c mov r4, r1 | r4 = r1;
0x0002685e ldr r3, [r2, r3] | r3 = *((r2 + r3));
0x00026860 ldr r3, [r3] | r3 = *(r3);
0x00026862 str r3, [sp, 0x44] | var_44h = r3;
0x00026864 mov.w r3, 0 | r3 = 0;
0x00026868 blx 0xe364 | r0 = fcn_0000e364 ();
| if (r0 != 0) {
0x0002686c cbnz r0, 0x26896 | goto label_0;
| }
0x0002686e ldr r3, [sp, 4] | r3 = var_4h;
0x00026870 ldr r2, [r4, 0x28] | r2 = *((r4 + 0x28));
0x00026872 str r3, [r4, 8] | *((r4 + 8)) = r3;
0x00026874 asrs r3, r3, 0x1f | r3 >>= 0x1f;
0x00026876 orr r2, r2, 1 | r2 |= 1;
0x0002687a str r2, [r4, 0x28] | *((r4 + 0x28)) = r2;
0x0002687c str r3, [r4, 0xc] | *((r4 + 0xc)) = r3;
| do {
0x0002687e ldr r2, [pc, 0x48] |
0x00026880 ldr r3, [pc, 0x40] | r3 = *(0x268c4);
0x00026882 add r2, pc | r2 = 0x4d150;
0x00026884 ldr r3, [r2, r3] | r3 = *(0x4d150);
0x00026886 ldr r2, [r3] | r2 = *(0x4d150);
0x00026888 ldr r3, [sp, 0x44] | r3 = var_44h;
0x0002688a eors r2, r3 | r2 ^= r3;
0x0002688c mov.w r3, 0 | r3 = 0;
| if (r2 != r3) {
0x00026890 bne 0x268bc | goto label_1;
| }
0x00026892 add sp, 0x48 |
0x00026894 pop {r4, pc} |
| label_0:
0x00026896 ldr r3, [r4, 0x28] | r3 = *((r4 + 0x28));
0x00026898 orr r3, r3, 0x20 | r3 |= 0x20;
0x0002689c str r3, [r4, 0x28] | *((r4 + 0x28)) = r3;
0x0002689e blx 0xe3d4 | r0 = fcn_0000e3d4 ();
0x000268a2 ldr r0, [r0] | r0 = *(r0);
0x000268a4 bl 0x30b74 | zbx_strerror ();
0x000268a8 ldr r1, [pc, 0x20] |
0x000268aa mov r2, r0 | r2 = r0;
0x000268ac movs r0, 0 | r0 = 0;
0x000268ae add r1, pc | r1 = 0x4d17e;
0x000268b0 bl 0x44820 | r0 = zbx_dsprintf ()
0x000268b4 mov r3, r0 | r3 = r0;
0x000268b6 movs r0, 1 | r0 = 1;
0x000268b8 str r3, [r4, 0x20] | *((r4 + 0x20)) = r3;
0x000268ba b 0x2687e |
| } while (1);
| label_1:
0x000268bc blx 0xe158 | fcn_0000e158 ();
0x000268c0 strh r0, [r0, r6] | *((r0 + r6)) = r0;
0x000268c2 movs r3, r0 | r3 = r0;
0x000268c4 lsls r4, r2, 0xe | r4 = r2 << 0xe;
0x000268c6 movs r0, r0 |
0x000268c8 strh r6, [r2, r5] | *((r2 + r5)) = r6;
0x000268ca movs r3, r0 | r3 = r0;
0x000268cc add r3, sp, 0x388 | r3 += arg_388h;
0x000268ce movs r2, r0 | r2 = r0;
| }
; assembly | /* r2dec pseudo code output */
| /* /logs/firmware/patool_extraction/rootfs.img_unblob_extracted/rootfs.img_extract/0-80367616.squashfs_v4_le_extract/usr/sbin/zabbix_agentd @ 0x2d830 */
| #include <stdint.h>
|
; (fcn) sym.VFS_FILE_CKSUM () | void VFS_FILE_CKSUM (int16_t arg_b4h, int16_t arg_11ch, int16_t arg_120h, int16_t arg_4000h_2, int16_t arg_4000h, int16_t arg_4100h, int16_t arg1, int16_t arg2) {
| int16_t var_4h_2;
| int16_t var_8h;
| int16_t var_4h;
| r0 = arg1;
| r1 = arg2;
| label_5:
0x0002bd28 blmi 0x1afe6d8 | __asm ("blmi 0x1afe6d8");
0x0002bd2c push.w {r4, r5, r6, r7, r8, sb, sl, fp, lr} |
0x0002bd30 mov r8, r1 | r8 = r1;
0x0002bd32 add r2, pc | r2 += pc;
0x0002bd34 vpush {d8, d9} | __asm ("vpush {d8, d9}");
0x0002bd38 sub.w sp, sp, 0x4000 |
0x0002bd3c mov r4, r0 | r4 = r0;
0x0002bd3e ldr r3, [r2, r3] | r3 = *((r2 + r3));
0x0002bd40 sub sp, 0xc |
0x0002bd42 add.w r1, sp, 0x4000 | r1 += arg_4000h;
0x0002bd46 adds r1, 4 | r1 += 4;
0x0002bd48 ldr r3, [r3] | r3 = *(r3);
0x0002bd4a str r3, [r1] | *(r1) = r3;
0x0002bd4c mov.w r3, 0 | r3 = 0;
0x0002bd50 bl 0x3ffc0 | zbx_time ();
0x0002bd54 movs r1, 0 | r1 = 0;
0x0002bd56 mov r0, r4 | r0 = r4;
0x0002bd58 vmov.f64 d9, d0 | __asm ("vmov.f64 d9, d0");
0x0002bd5c blx 0xe030 | fcntl64 ();
0x0002bd60 ldr r3, [pc, 0x178] |
0x0002bd62 adds r2, r0, 1 | r2 = r0 + 1;
0x0002bd64 add r3, pc | r3 = 0x57c44;
| if (r2 == r0) {
0x0002bd66 beq 0x2be66 | goto label_6;
| }
0x0002bd68 ldr r2, [pc, 0x174] | r2 = *(0x2bee0);
0x0002bd6a mov r7, r0 | r7 = r0;
0x0002bd6c ldr.w sb, [r3, r2] | sb = *((r3 + r2));
0x0002bd70 vldr s15, [sb] | __asm ("vldr s15, [sb]");
0x0002bd74 vcvt.f64.s32 d8, s15 | __asm ("vcvt.f64.s32 d8, s15");
0x0002bd78 bl 0x3ffc0 | zbx_time ();
0x0002bd7c vsub.f64 d0, d0, d9 | __asm ("vsub.f64 d0, d0, d9");
0x0002bd80 vcmpe.f64 d8, d0 | __asm ("vcmpe.f64 d8, d0");
0x0002bd84 vmrs apsr_nzcv, fpscr | __asm ("vmrs apsr_nzcv, fpscr");
| if (r2 < r0) {
0x0002bd88 bmi.w 0x2be92 | goto label_7;
| }
0x0002bd8c ldr.w sl, [pc, 0x154] | sl = *(0x0002bee4);
0x0002bd90 movs r5, 0 | r5 = 0;
0x0002bd92 mov r4, r5 | r4 = r5;
0x0002bd94 add r6, sp, 4 | r6 += var_4h;
0x0002bd96 add sl, pc | sl += pc;
| label_0:
0x0002bd98 mov.w r2, 0x4000 | r2 = 0x4000;
0x0002bd9c mov r1, r6 | r1 = r6;
0x0002bd9e mov r0, r7 | r0 = r7;
0x0002bda0 blx 0xde54 | r0 = fcn_0000de54 ();
0x0002bda4 subs.w fp, r0, 0 |
| if (fp <= r0) {
0x0002bda8 ble 0x2bde0 | goto label_8;
| }
0x0002bdaa vldr s15, [sb] | __asm ("vldr s15, [sb]");
0x0002bdae vcvt.f64.s32 d8, s15 | __asm ("vcvt.f64.s32 d8, s15");
0x0002bdb2 bl 0x3ffc0 | zbx_time ();
0x0002bdb6 vsub.f64 d0, d0, d9 | __asm ("vsub.f64 d0, d0, d9");
0x0002bdba vcmpe.f64 d8, d0 | __asm ("vcmpe.f64 d8, d0");
0x0002bdbe vmrs apsr_nzcv, fpscr | __asm ("vmrs apsr_nzcv, fpscr");
| if (fp < r0) {
0x0002bdc2 bmi 0x2be3e | goto label_9;
| }
0x0002bdc4 add r5, fp | r5 += fp;
0x0002bdc6 mov r2, r6 | r2 = r6;
0x0002bdc8 add fp, r6 |
| do {
0x0002bdca ldrb r3, [r2], 1 | r3 = *(r2);
| r2++;
0x0002bdce cmp fp, r2 |
0x0002bdd0 eor.w r3, r3, r4, lsr 24 | r3 ^= (r4 >> 24);
0x0002bdd4 ldr.w r3, [sl, r3, lsl 2] | offset_0 = r3 << 2;
| r3 = *((sl + offset_0));
0x0002bdd8 eor.w r4, r3, r4, lsl 8 | r4 = r3 ^ (r4 << 8);
0x0002bddc bne 0x2bdca |
| } while (fp != r2);
0x0002bdde b 0x2bd98 | goto label_0;
| label_8:
0x0002bde0 ldr.w r1, [r8, 0x28] | r1 = *((r8 + 0x28));
| if (fp != r2) {
0x0002bde4 bne 0x2beb2 | goto label_10;
| }
| if (r5 == 0) {
0x0002bde6 cbz r5, 0x2bdfe | goto label_11;
| }
0x0002bde8 ldr r2, [pc, 0xfc] |
0x0002bdea add r2, pc | r2 = 0x57cd6;
| do {
0x0002bdec eor.w r3, r5, r4, lsr 24 | r3 = r5 ^ (r4 >> 24);
0x0002bdf0 lsrs r5, r5, 8 | r5 >>= 8;
0x0002bdf2 uxtb r3, r3 | r3 = (int8_t) r3;
0x0002bdf4 ldr.w r3, [r2, r3, lsl 2] | offset_1 = r3 << 2;
| r3 = *((r2 + offset_1));
0x0002bdf8 eor.w r4, r3, r4, lsl 8 | r4 = r3 ^ (r4 << 8);
0x0002bdfc bne 0x2bdec |
| } while (r5 != r5);
| label_11:
0x0002bdfe orr r1, r1, 1 | r1 |= 1;
0x0002be02 mvns r4, r4 | r4 = ~r4;
0x0002be04 movs r3, 0 | r3 = 0;
0x0002be06 str.w r1, [r8, 0x28] | __asm ("str.w r1, [r8, 0x28]");
0x0002be0a strd r4, r3, [r8, 8] | __asm ("strd r4, r3, [r8, 8]");
| do {
0x0002be0e mov r0, r7 | r0 = r7;
0x0002be10 blx 0xe0ac | fcn_0000e0ac ();
| label_1:
0x0002be14 ldr r2, [pc, 0xd4] |
0x0002be16 add.w r1, sp, 0x4000 | r1 += arg_4000h;
0x0002be1a ldr r3, [pc, 0xbc] | r3 = *(0x2beda);
0x0002be1c adds r1, 4 | r1 += 4;
0x0002be1e add r2, pc | r2 = 0x57d0e;
0x0002be20 ldr r3, [r2, r3] | r3 = *(0x57d0e);
0x0002be22 ldr r2, [r3] | r2 = *(0x57d0e);
0x0002be24 ldr r3, [r1] | r3 = *(r1);
0x0002be26 eors r2, r3 | r2 ^= r3;
0x0002be28 mov.w r3, 0 | r3 = 0;
| if (r2 != r3) {
0x0002be2c bne 0x2bece | goto label_12;
| }
0x0002be2e mov r0, fp | r0 = fp;
0x0002be30 add.w sp, sp, 0x4000 |
0x0002be34 add sp, 0xc |
0x0002be36 vpop {d8, d9} | __asm ("vpop {d8, d9}");
0x0002be3a pop.w {r4, r5, r6, r7, r8, sb, sl, fp, pc} |
| label_9:
0x0002be3e ldr.w r1, [r8, 0x28] | r1 = *((r8 + 0x28));
0x0002be42 movs r2, 0 | r2 = 0;
0x0002be44 ldr r3, [pc, 0xa8] |
0x0002be46 ldr r0, [pc, 0xac] |
0x0002be48 orr r1, r1, 0x20 | r1 |= 0x20;
0x0002be4c str.w r1, [r8, 0x28] | __asm ("str.w r1, [r8, 0x28]");
0x0002be50 add r3, pc | r3 = 0x57d44;
0x0002be52 add r0, pc | r0 = 0x57d4c;
0x0002be54 movw r1, 0x361 | r1 = 0x361;
0x0002be58 bl 0x40ed8 | zbx_strdup2 ();
| label_2:
0x0002be5c mov.w fp, 1 |
0x0002be60 str.w r0, [r8, 0x20] | __asm ("str.w r0, [r8, 0x20]");
0x0002be64 b 0x2be0e |
| } while (1);
| label_6:
0x0002be66 ldr.w r3, [r8, 0x28] | r3 = *((r8 + 0x28));
0x0002be6a mov.w fp, 1 |
0x0002be6e orr r3, r3, 0x20 | r3 |= 0x20;
0x0002be72 str.w r3, [r8, 0x28] | __asm ("str.w r3, [r8, 0x28]");
0x0002be76 blx 0xe3d4 | r0 = fcn_0000e3d4 ();
0x0002be7a ldr r0, [r0] | r0 = *(r0);
0x0002be7c bl 0x30b74 | zbx_strerror ();
0x0002be80 ldr r1, [pc, 0x74] |
0x0002be82 mov r2, r0 | r2 = r0;
0x0002be84 movs r0, 0 | r0 = 0;
0x0002be86 add r1, pc | r1 = 0x57d82;
0x0002be88 bl 0x44820 | zbx_dsprintf ()
0x0002be8c str.w r0, [r8, 0x20] | __asm ("str.w r0, [r8, 0x20]");
0x0002be90 b 0x2be14 | goto label_1;
| label_7:
0x0002be92 ldr.w r1, [r8, 0x28] | r1 = *((r8 + 0x28));
0x0002be96 movs r2, 0 | r2 = 0;
0x0002be98 ldr r3, [pc, 0x60] |
0x0002be9a ldr r0, [pc, 0x64] |
0x0002be9c orr r1, r1, 0x20 | r1 |= 0x20;
0x0002bea0 str.w r1, [r8, 0x28] | __asm ("str.w r1, [r8, 0x28]");
0x0002bea4 add r3, pc | r3 = 0x57da4;
0x0002bea6 movw r1, 0x357 | r1 = 0x357;
0x0002beaa add r0, pc | r0 = 0x57db0;
0x0002beac bl 0x40ed8 | zbx_strdup2 ();
0x0002beb0 b 0x2be5c | goto label_2;
| label_10:
0x0002beb2 ldr r3, [pc, 0x50] |
0x0002beb4 orr r1, r1, 0x20 | r1 |= 0x20;
0x0002beb8 ldr r0, [pc, 0x4c] |
0x0002beba movs r2, 0 | r2 = 0;
0x0002bebc str.w r1, [r8, 0x28] | __asm ("str.w r1, [r8, 0x28]");
0x0002bec0 movw r1, 0x36d | r1 = 0x36d;
0x0002bec4 add r3, pc | r3 = 0x57dce;
0x0002bec6 add r0, pc | r0 = 0x57dd2;
0x0002bec8 bl 0x40ed8 | zbx_strdup2 ();
0x0002becc b 0x2be5c | goto label_2;
| label_12:
0x0002bece blx 0xe158 | fcn_0000e158 ();
0x0002bed2 nop |
0x0002bed4 cdp2 p0, 0xa, c0, c6, c2, 0 | __asm ("cdp2 p0, 0xa, c0, c6, c2, 0");
0x0002bed8 lsls r4, r2, 0xe | r4 = r2 << 0xe;
0x0002beda movs r0, r0 |
0x0002bedc cdp2 p0, 7, c0, c4, c2, 0 | __asm ("cdp2 p0, 7, c0, c4, c2, 0");
0x0002bee0 lsls r4, r4, 0xc | r4 <<= 0xc;
0x0002bee2 movs r0, r0 |
0x0002bee4 ldrb r6, [r5, 2] | r6 = *((r5 + 2));
0x0002bee6 movs r2, r0 | r2 = r0;
0x0002bee8 ldrb r2, [r3, 1] | r2 = *((r3 + 1));
0x0002beea movs r2, r0 | r2 = r0;
0x0002beec ldc2 p0, c0, [sl, 8]! | __asm ("ldc2 p0, c0, [sl, 8]!");
0x0002bef0 strb r0, [r2, 0x19] | *((r2 + 0x19)) = r0;
0x0002bef2 movs r2, r0 | r2 = r0;
0x0002bef4 strb r6, [r5, 0x19] | *((r5 + 0x19)) = r6;
0x0002bef6 movs r2, r0 | r2 = r0;
0x0002bef8 strb r2, [r0, 0x18] | *((r0 + 0x18)) = r2;
0x0002befa movs r2, r0 | r2 = r0;
0x0002befc strb r4, [r7, 0x17] | *((r7 + 0x17)) = r4;
0x0002befe movs r2, r0 | r2 = r0;
0x0002bf00 strb r6, [r2, 0x18] | *((r2 + 0x18)) = r6;
0x0002bf02 movs r2, r0 | r2 = r0;
0x0002bf04 str r0, [r0, 0x3c] | *((r0 + 0x3c)) = r0;
0x0002bf06 movs r2, r0 | r2 = r0;
0x0002bf08 strb r2, [r7, 0x17] | *((r7 + 0x17)) = r2;
0x0002bf0a movs r2, r0 | r2 = r0;
| label_4:
0x0002c108 ldr r2, [pc, 0x1bc] |
0x0002c10a ldr r3, [pc, 0x1c0] | r3 = *(0x2c2ce);
0x0002c10c push.w {r4, r5, r6, r7, r8, sb, sl, fp, lr} |
0x0002c110 mov r4, r0 | r4 = r0;
0x0002c112 vpush {d8, d9} | __asm ("vpush {d8, d9}");
0x0002c116 sub.w sp, sp, 0x4100 |
0x0002c11a add r2, pc | r2 = 0x583e6;
0x0002c11c sub sp, 0x24 |
0x0002c11e str r1, [sp, 4] | var_4h_2 = r1;
0x0002c120 add.w r1, sp, 0x4100 | r1 += arg_4100h;
0x0002c124 ldr r3, [r2, r3] |
0x0002c126 adds r1, 0x1c | r1 += 0x1c;
0x0002c128 ldr r3, [r3] | r3 = *(0x583e6);
0x0002c12a str r3, [r1] | *(r1) = r3;
0x0002c12c mov.w r3, 0 | r3 = 0;
0x0002c130 bl 0x3ffc0 | zbx_time ();
0x0002c134 movs r1, 0 | r1 = 0;
0x0002c136 mov r0, r4 | r0 = r4;
0x0002c138 vmov.f64 d9, d0 | __asm ("vmov.f64 d9, d0");
0x0002c13c blx 0xe030 | fcntl64 ();
0x0002c140 ldr r3, [pc, 0x18c] |
0x0002c142 adds r2, r0, 1 | r2 = r0 + 1;
0x0002c144 add r3, pc | r3 = 0x58418;
| if (r2 == r0) {
0x0002c146 beq.w 0x2c280 | goto label_13;
| }
0x0002c14a ldr r2, [pc, 0x188] | r2 = *(0x2c2d6);
0x0002c14c mov r7, r0 | r7 = r0;
0x0002c14e ldr r6, [r3, r2] | r6 = *((r3 + r2));
0x0002c150 vldr s15, [r6] | __asm ("vldr s15, [r6]");
0x0002c154 vcvt.f64.s32 d8, s15 | __asm ("vcvt.f64.s32 d8, s15");
0x0002c158 bl 0x3ffc0 | zbx_time ();
0x0002c15c vsub.f64 d0, d0, d9 | __asm ("vsub.f64 d0, d0, d9");
0x0002c160 vcmpe.f64 d8, d0 | __asm ("vcmpe.f64 d8, d0");
0x0002c164 vmrs apsr_nzcv, fpscr | __asm ("vmrs apsr_nzcv, fpscr");
| if (r2 < r0) {
0x0002c168 bmi 0x2c210 | goto label_14;
| }
0x0002c16a add.w sb, sp, 8 | sb += var_8h;
0x0002c16e add.w r8, sp, 0x120 | r8 += arg_120h;
0x0002c172 mov r0, sb | r0 = sb;
0x0002c174 add r5, sp, 0x11c | r5 += arg_11ch;
0x0002c176 bl 0x498ac | zbx_sha256_init ();
0x0002c17a b 0x2c1a0 |
| while (r4 > r0) {
0x0002c17c vldr s15, [r6] | __asm ("vldr s15, [r6]");
0x0002c180 vcvt.f64.s32 d8, s15 | __asm ("vcvt.f64.s32 d8, s15");
0x0002c184 bl 0x3ffc0 | zbx_time ();
0x0002c188 vsub.f64 d0, d0, d9 | __asm ("vsub.f64 d0, d0, d9");
0x0002c18c vcmpe.f64 d8, d0 | __asm ("vcmpe.f64 d8, d0");
0x0002c190 vmrs apsr_nzcv, fpscr | __asm ("vmrs apsr_nzcv, fpscr");
| if (r2 < r0) {
0x0002c194 bmi 0x2c262 | goto label_15;
| }
0x0002c196 mov r2, sb | r2 = sb;
0x0002c198 mov r1, r4 | r1 = r4;
0x0002c19a mov r0, r5 | r0 = r5;
0x0002c19c bl 0x498fc | zbx_sha256_process_bytes ();
0x0002c1a0 mov.w r2, 0x4000 | r2 = 0x4000;
0x0002c1a4 mov r1, r5 | r1 = r5;
0x0002c1a6 mov r0, r7 | r0 = r7;
0x0002c1a8 blx 0xde54 | r0 = fcn_0000de54 ();
0x0002c1ac subs r4, r0, 0 | r4 = r0 - 0;
0x0002c1ae bgt 0x2c17c |
| }
| if (r4 != r0) {
0x0002c1b0 bne 0x2c2a6 | goto label_16;
| }
0x0002c1b2 ldr.w fp, [pc, 0x124] |
0x0002c1b6 mov r0, sb | r0 = sb;
0x0002c1b8 sub.w r1, r8, 0x68 | r1 = r8 - 0x68;
0x0002c1bc sub.w r5, r8, 0x69 | r5 = r8 - 0x69;
0x0002c1c0 sub.w r6, r8, 0x4a | r6 = r8 - 0x4a;
0x0002c1c4 sub.w sl, r8, 0x49 | sl = r8 - 0x49;
0x0002c1c8 add fp, pc | fp = 0x584a6;
0x0002c1ca add.w sb, sp, 0xb4 | sb += arg_b4h;
0x0002c1ce bl 0x498f8 | zbx_sha256_finish ();
| do {
0x0002c1d2 ldrb r3, [r5, 1]! | r3 = *((r5 += 1));
0x0002c1d6 mov r2, fp | r2 = fp;
0x0002c1d8 movs r1, 3 | r1 = 3;
0x0002c1da mov r0, sb | r0 = sb;
0x0002c1dc bl 0x43f38 | zbx_snprintf ();
0x0002c1e0 ldrh r3, [r8, -0x6c] | r3 = *((r8 - 0x6c));
0x0002c1e4 cmp r5, sl |
0x0002c1e6 strh r3, [r6, 2]! | *((r6 += 2)) = r3;
0x0002c1ea bne 0x2c1d2 |
| } while (r5 != sl);
0x0002c1ec ldr r5, [sp, 4] | r5 = var_4h_2;
0x0002c1ee movs r2, 0 | r2 = 0;
0x0002c1f0 ldr r0, [pc, 0xe8] |
0x0002c1f2 sub.w r3, r8, 0x48 | r3 = r8 - 0x48;
0x0002c1f6 strb r2, [r8, -0x8] | *((r8 - 0x8)) = r2;
0x0002c1fa ldr r1, [r5, 0x28] | r1 = *((r5 + 0x28));
0x0002c1fc add r0, pc | r0 = 0x584dc;
0x0002c1fe orr r1, r1, 4 | r1 |= 4;
0x0002c202 str r1, [r5, 0x28] | *((r5 + 0x28)) = r1;
0x0002c204 mov.w r1, 0x3b8 | r1 = 0x3b8;
0x0002c208 bl 0x40ed8 | zbx_strdup2 ();
0x0002c20c str r0, [r5, 0x18] | *((r5 + 0x18)) = r0;
0x0002c20e b 0x2c232 | goto label_17;
| label_14:
0x0002c210 ldr r0, [sp, 4] | r0 = var_4h_2;
0x0002c212 movs r2, 0 | r2 = 0;
0x0002c214 ldr r3, [pc, 0xc8] |
0x0002c216 ldr r1, [r0, 0x28] | r1 = *((r0 + 0x28));
0x0002c218 add r3, pc | r3 = 0x584fc;
0x0002c21a orr r1, r1, 0x20 | r1 |= 0x20;
0x0002c21e str r1, [r0, 0x28] | *((r0 + 0x28)) = r1;
0x0002c220 mov.w r1, 0x394 | r1 = 0x394;
0x0002c224 ldr r0, [pc, 0xbc] |
0x0002c226 add r0, pc | r0 = 0x5850e;
0x0002c228 bl 0x40ed8 | zbx_strdup2 ();
| do {
0x0002c22c ldr r3, [sp, 4] | r3 = var_4h_2;
0x0002c22e movs r4, 1 | r4 = 1;
0x0002c230 str r0, [r3, 0x20] | *((r3 + 0x20)) = r0;
| label_17:
0x0002c232 mov r0, r7 | r0 = r7;
0x0002c234 blx 0xe0ac | fcn_0000e0ac ();
| label_3:
0x0002c238 ldr r2, [pc, 0xac] |
0x0002c23a add.w r1, sp, 0x4100 | r1 += arg_4100h;
0x0002c23e ldr r3, [pc, 0x8c] | r3 = *(0x2c2ce);
0x0002c240 adds r1, 0x1c | r1 += 0x1c;
0x0002c242 add r2, pc | r2 = 0x5852e;
0x0002c244 ldr r3, [r2, r3] | r3 = *(0x5852e);
0x0002c246 ldr r2, [r3] | r2 = *(0x5852e);
0x0002c248 ldr r3, [r1] | r3 = *(r1);
0x0002c24a eors r2, r3 | r2 ^= r3;
0x0002c24c mov.w r3, 0 | r3 = 0;
| if (r2 != r3) {
0x0002c250 bne 0x2c2c4 | goto label_18;
| }
0x0002c252 mov r0, r4 | r0 = r4;
0x0002c254 add.w sp, sp, 0x4100 |
0x0002c258 add sp, 0x24 |
0x0002c25a vpop {d8, d9} | __asm ("vpop {d8, d9}");
0x0002c25e pop.w {r4, r5, r6, r7, r8, sb, sl, fp, pc} |
| label_15:
0x0002c262 ldr r0, [sp, 4] | r0 = var_4h_2;
0x0002c264 movs r2, 0 | r2 = 0;
0x0002c266 ldr r3, [pc, 0x84] |
0x0002c268 ldr r1, [r0, 0x28] | r1 = *((r0 + 0x28));
0x0002c26a add r3, pc | r3 = 0x5855c;
0x0002c26c orr r1, r1, 0x20 | r1 |= 0x20;
0x0002c270 str r1, [r0, 0x28] | *((r0 + 0x28)) = r1;
0x0002c272 movw r1, 0x39e | r1 = 0x39e;
0x0002c276 ldr r0, [pc, 0x78] |
0x0002c278 add r0, pc | r0 = 0x5856e;
0x0002c27a bl 0x40ed8 | zbx_strdup2 ();
0x0002c27e b 0x2c22c |
| } while (1);
| label_13:
0x0002c280 ldr r5, [sp, 4] | r5 = var_4h_2;
0x0002c282 movs r4, 1 | r4 = 1;
0x0002c284 ldr r3, [r5, 0x28] | r3 = *((r5 + 0x28));
0x0002c286 orr r3, r3, 0x20 | r3 |= 0x20;
0x0002c28a str r3, [r5, 0x28] | *((r5 + 0x28)) = r3;
0x0002c28c blx 0xe3d4 | r0 = fcn_0000e3d4 ();
0x0002c290 ldr r0, [r0] | r0 = *(r0);
0x0002c292 bl 0x30b74 | zbx_strerror ();
0x0002c296 ldr r1, [pc, 0x5c] |
0x0002c298 mov r2, r0 | r2 = r0;
0x0002c29a movs r0, 0 | r0 = 0;
0x0002c29c add r1, pc | r1 = 0x58596;
0x0002c29e bl 0x44820 | zbx_dsprintf ()
0x0002c2a2 str r0, [r5, 0x20] | *((r5 + 0x20)) = r0;
0x0002c2a4 b 0x2c238 | goto label_3;
| label_16:
0x0002c2a6 ldr r0, [sp, 4] | r0 = var_4h_2;
0x0002c2a8 movs r2, 0 | r2 = 0;
0x0002c2aa ldr r3, [pc, 0x4c] |
0x0002c2ac ldr r1, [r0, 0x28] | r1 = *((r0 + 0x28));
0x0002c2ae add r3, pc | r3 = "Timeout while executing a shell script.";
0x0002c2b0 orr r1, r1, 0x20 | r1 |= 0x20;
0x0002c2b4 str r1, [r0, 0x28] | *((r0 + 0x28)) = r1;
0x0002c2b6 movw r1, 0x3a7 | r1 = 0x3a7;
0x0002c2ba ldr r0, [pc, 0x40] |
0x0002c2bc add r0, pc | r0 = 0x585be;
0x0002c2be bl 0x40ed8 | zbx_strdup2 ();
0x0002c2c0 mcr2 p7, 0, lr, c11, c3, 5 | __asm ("mcr2 p7, 0, lr, c11, c3, 5");
| label_18:
0x0002c2c4 blx 0xe158 | fcn_0000e158 ();
0x0002c2c8 invalid |
0x0002d830 ldr r3, [r0, 4] | r3 = *((r0 + 4));
0x0002d832 push {r4, r5, r6, lr} |
0x0002d834 mov r4, r1 | r4 = r1;
0x0002d836 cmp r3, 2 |
| if (r3 > 2) {
0x0002d838 bgt 0x2d8b8 | goto label_19;
| }
0x0002d83a cmp r3, 0 |
| if (r3 > 0) {
0x0002d83c ble 0x2d88c |
0x0002d83e ldr r2, [r0, 8] | r2 = *((r0 + 8));
0x0002d840 cmp r3, 2 |
0x0002d842 ldr r5, [r2] | r5 = *(r2);
| if (r3 == 2) {
0x0002d844 bne 0x2d886 |
0x0002d846 ldr r6, [r2, 4] | r6 = *((r2 + 4));
| if (r5 == 0) {
0x0002d848 cbz r5, 0x2d88c | goto label_20;
| }
0x0002d84a ldrb r3, [r5] | r3 = *(r5);
| if (r3 == 0) {
0x0002d84c cbz r3, 0x2d88c | goto label_20;
| }
| if (r6 == 0) {
0x0002d84e cbz r6, 0x2d8ac | goto label_21;
| }
0x0002d850 ldrb r3, [r6] | r3 = *(r6);
| if (r3 == 0) {
0x0002d852 cbz r3, 0x2d8ac | goto label_21;
| }
0x0002d854 ldr r1, [pc, 0xa8] |
0x0002d856 mov r0, r6 | r0 = r6;
0x0002d858 add r1, pc | r1 = 0x5b15c;
0x0002d85a blx 0xe3b0 | r0 = fcn_0000e3b0 ();
| if (r0 == 0) {
0x0002d85e cbz r0, 0x2d8ac | goto label_21;
| }
0x0002d860 ldr r1, [pc, 0xa0] |
0x0002d862 mov r0, r6 | r0 = r6;
0x0002d864 add r1, pc | r1 = 0x5b16c;
0x0002d866 blx 0xe3b0 | r0 = fcn_0000e3b0 ();
0x0002d86a cmp r0, 0 |
| if (r0 == 0) {
0x0002d86c beq 0x2d8f4 | goto label_22;
| }
0x0002d86e ldr r1, [pc, 0x98] |
0x0002d870 mov r0, r6 | r0 = r6;
0x0002d872 add r1, pc | r1 = 0x5b180;
0x0002d874 blx 0xe3b0 | r0 = fcn_0000e3b0 ();
| if (r0 != 0) {
0x0002d878 cbnz r0, 0x2d8d8 | goto label_23;
| }
0x0002d87a mov r1, r4 | r1 = r4;
0x0002d87c mov r0, r5 | r0 = r5;
0x0002d87e pop.w {r4, r5, r6, lr} |
0x0002d882 b.w 0x2c108 | goto label_4;
| }
| if (r5 == 0) {
0x0002d886 cbz r5, 0x2d88c | goto label_20;
| }
0x0002d888 ldrb r3, [r5] | r3 = *(r5);
| if (r3 != 0) {
0x0002d88a cbnz r3, 0x2d8ac | goto label_21;
| }
| }
| label_20:
0x0002d88c ldr r0, [r4, 0x28] | r0 = *((r4 + 0x28));
0x0002d88e movs r2, 0 | r2 = 0;
0x0002d890 ldr r3, [pc, 0x78] |
0x0002d892 movw r1, 0x3d7 | r1 = 0x3d7;
0x0002d896 orr r0, r0, 0x20 | r0 |= 0x20;
0x0002d898 movs r0, r4 | r0 = r4;
0x0002d89a str r0, [r4, 0x28] | *((r4 + 0x28)) = r0;
0x0002d89c add r3, pc | r3 = 0x5b1ac;
0x0002d89e ldr r0, [pc, 0x70] |
0x0002d8a0 add r0, pc | r0 = 0x5b1b6;
0x0002d8a2 bl 0x40ed8 | zbx_strdup2 ();
| do {
0x0002d8a6 str r0, [r4, 0x20] | *((r4 + 0x20)) = r0;
0x0002d8a8 movs r0, 1 | r0 = 1;
0x0002d8aa pop {r4, r5, r6, pc} |
| label_21:
0x0002d8ac mov r1, r4 | r1 = r4;
0x0002d8ae mov r0, r5 | r0 = r5;
0x0002d8b0 pop.w {r4, r5, r6, lr} |
0x0002d8b4 b.w 0x2bd28 | goto label_5;
| label_19:
0x0002d8b8 ldr r0, [r1, 0x28] | r0 = *((r1 + 0x28));
0x0002d8ba movs r2, 0 | r2 = 0;
0x0002d8bc ldr r3, [pc, 0x54] |
0x0002d8be movw r1, 0x3ce | r1 = 0x3ce;
0x0002d8c2 orr r0, r0, 0x20 | r0 |= 0x20;
0x0002d8c6 str r0, [r4, 0x28] | *((r4 + 0x28)) = r0;
0x0002d8c8 add r3, pc | r3 = 0x5b1e0;
0x0002d8ca ldr r0, [pc, 0x4c] |
0x0002d8cc add r0, pc | r0 = 0x5b1ea;
0x0002d8ce bl 0x40ed8 | zbx_strdup2 ();
0x0002d8d2 str r0, [r4, 0x20] | *((r4 + 0x20)) = r0;
0x0002d8d4 movs r0, 1 | r0 = 1;
0x0002d8d6 pop {r4, r5, r6, pc} |
| label_23:
0x0002d8d8 ldr r0, [r4, 0x28] | r0 = *((r4 + 0x28));
0x0002d8da movs r2, 0 | r2 = 0;
0x0002d8dc ldr r3, [pc, 0x3c] |
0x0002d8de movw r1, 0x3e2 | r1 = 0x3e2;
0x0002d8e2 orr r0, r0, 0x20 | r0 |= 0x20;
0x0002d8e6 str r0, [r4, 0x28] | *((r4 + 0x28)) = r0;
0x0002d8e8 add r3, pc | r3 = 0x5b208;
0x0002d8ea ldr r0, [pc, 0x34] |
0x0002d8ec add r0, pc | r0 = 0x5b212;
0x0002d8ee bl 0x40ed8 | zbx_strdup2 ();
0x0002d8f2 b 0x2d8a6 |
| } while (1);
| label_22:
0x0002d8f4 mov r1, r4 | r1 = r4;
0x0002d8f6 mov r0, r5 | r0 = r5;
0x0002d8f8 pop.w {r4, r5, r6, lr} |
0x0002d8fc b.w 0x2bf0c | return void (*0x2bf0c)() ();
| }
; assembly | /* r2dec pseudo code output */
| /* /logs/firmware/patool_extraction/rootfs.img_unblob_extracted/rootfs.img_extract/0-80367616.squashfs_v4_le_extract/usr/sbin/zabbix_agentd @ 0x2cbfc */
| #include <stdint.h>
|
; (fcn) sym.VFS_FILE_CONTENTS () | void VFS_FILE_CONTENTS (int16_t arg_128h, int16_t arg_10000h, int16_t arg1, int16_t arg2) {
| int16_t var_10000h;
| int16_t var_4h;
| int16_t var_8h;
| int16_t var_ch;
| int16_t var_8ch;
| int16_t var_ach;
| int16_t var_b0h;
| r0 = arg1;
| r1 = arg2;
0x0002cbfc ldr r2, [pc, 0x358] |
0x0002cbfe ldr r3, [pc, 0x35c] | r3 = *(0x2cf5e);
0x0002cc00 push.w {r4, r5, r6, r7, r8, sb, sl, fp, lr} |
0x0002cc04 mov r7, r0 | r7 = r0;
0x0002cc06 vpush {d8, d9} | __asm ("vpush {d8, d9}");
0x0002cc0a add r2, pc | r2 = 0x59b66;
0x0002cc0c sub.w sp, sp, 0x10000 |
0x0002cc10 movs r6, 0 | r6 = 0;
0x0002cc12 ldr r3, [r2, r3] |
0x0002cc14 sub sp, 0xb4 |
0x0002cc16 add.w r0, sp, 0x10000 | r0 += arg_10000h;
0x0002cc1a add r4, sp, 0xb0 | r4 += var_b0h;
0x0002cc1c adds r0, 0xac | r0 += 0xac;
0x0002cc1e mov r5, r1 | r5 = r1;
0x0002cc20 ldr r3, [r3] | r3 = *(0x59b66);
0x0002cc22 str r3, [r0] | *(r0) = r3;
0x0002cc24 mov.w r3, 0 | r3 = 0;
0x0002cc28 strd r6, r6, [r4, -0x9c] | __asm ("strd r6, r6, [r4, -0x9c]");
0x0002cc2c str r6, [r4, -0x94] | *((r4 - 0x94)) = r6;
0x0002cc30 bl 0x3ffc0 | zbx_time ();
0x0002cc34 ldr r3, [r7, 4] | r3 = *((r7 + 4));
0x0002cc36 ldr.w r8, [pc, 0x328] |
0x0002cc3a cmp r3, 2 |
0x0002cc3c add r8, pc | r8 = 0x59ba2;
| if (r3 > 2) {
0x0002cc3e bgt.w 0x2cdb2 | goto label_9;
| }
0x0002cc42 cmp r3, 0 |
0x0002cc44 it le |
| if (r3 > 0) {
0x0002cc46 strble r6, [r4, -0x24] | *((r4 - 0x24)) = r6;
| }
| if (r3 <= 0) {
0x0002cc4a ble.w 0x2cd60 | goto label_10;
| }
0x0002cc4e ldr r2, [r7, 8] | r2 = *((r7 + 8));
0x0002cc50 cmp r3, 2 |
0x0002cc52 vmov.f64 d8, d0 | __asm ("vmov.f64 d8, d0");
0x0002cc56 ldr r6, [r2] | r6 = *(r2);
| if (r3 != 2) {
0x0002cc58 bne.w 0x2cdaa | goto label_11;
| }
0x0002cc5c ldr r1, [r2, 4] | r1 = *((r2 + 4));
0x0002cc5e cmp r1, 0 |
| if (r1 == 0) {
0x0002cc60 beq.w 0x2cdaa | goto label_11;
| }
0x0002cc64 movs r2, 0x20 | r2 = 0x20;
0x0002cc66 sub.w r0, r4, 0x24 | r0 = r4 - 0x24;
0x0002cc6a bl 0x4465c | zbx_strlcpy ();
| label_1:
0x0002cc6e cmp r6, 0 |
| if (r6 == 0) {
0x0002cc70 beq 0x2cd60 | goto label_10;
| }
0x0002cc72 ldrb r3, [r6] | r3 = *(r6);
0x0002cc74 cmp r3, 0 |
| if (r3 == 0) {
0x0002cc76 beq 0x2cd60 | goto label_10;
| }
0x0002cc78 mov r0, r6 | r0 = r6;
0x0002cc7a movs r1, 0 | r1 = 0;
0x0002cc7c blx 0xe030 | r0 = fcntl64 ();
0x0002cc80 adds r3, r0, 1 | r3 = r0 + 1;
0x0002cc82 mov r6, r0 | r6 = r0;
| if (r3 == r0) {
0x0002cc84 beq.w 0x2cdf4 | goto label_12;
| }
0x0002cc88 ldr r3, [pc, 0x2d8] | r3 = *(0x2cf64);
0x0002cc8a ldr.w fp, [r8, r3] | fp = *((r8 + r3));
0x0002cc8e vldr s15, [fp] | __asm ("vldr s15, [fp]");
0x0002cc90 ldrb r0, [r0, 8] | r0 = *((r0 + 8));
0x0002cc92 vcvt.f64.s32 d9, s15 | __asm ("vcvt.f64.s32 d9, s15");
0x0002cc96 bl 0x3ffc0 | zbx_time ();
0x0002cc9a vsub.f64 d0, d0, d8 | __asm ("vsub.f64 d0, d0, d8");
0x0002cc9e vcmpe.f64 d9, d0 | __asm ("vcmpe.f64 d9, d0");
0x0002cca2 vmrs apsr_nzcv, fpscr | __asm ("vmrs apsr_nzcv, fpscr");
| if (r3 < r0) {
0x0002cca6 bmi.w 0x2cdce | goto label_13;
| }
0x0002ccaa sub.w r1, r4, 0x90 | r1 = r4 - 0x90;
0x0002ccae mov r0, r6 | r0 = r6;
0x0002ccb0 blx 0xdfdc | r0 = dlopen ();
0x0002ccb4 mov r7, r0 | r7 = r0;
0x0002ccb6 cmp r0, 0 |
| if (r0 != 0) {
0x0002ccb8 bne.w 0x2ce32 | goto label_14;
| }
0x0002ccbc ldrd r2, r3, [r4, -0x60] | __asm ("ldrd r2, r3, [r4, -0x60]");
0x0002ccc0 cmp.w r2, 0x10001 |
0x0002ccc4 sbcs r3, r3, 0 | __asm ("sbcs r3, r3, 0");
| if (r2 >= 0x10001) {
0x0002ccc8 bge.w 0x2ce14 | goto label_15;
| }
0x0002cccc vldr s15, [fp] | __asm ("vldr s15, [fp]");
0x0002ccd0 vcvt.f64.s32 d9, s15 | __asm ("vcvt.f64.s32 d9, s15");
0x0002ccd4 bl 0x3ffc0 | zbx_time ();
0x0002ccd8 vsub.f64 d0, d0, d8 | __asm ("vsub.f64 d0, d0, d8");
0x0002ccdc vcmpe.f64 d9, d0 | __asm ("vcmpe.f64 d9, d0");
0x0002cce0 vmrs apsr_nzcv, fpscr | __asm ("vmrs apsr_nzcv, fpscr");
| if (r2 < 0x10001) {
0x0002cce4 bmi.w 0x2cef2 | goto label_16;
| }
0x0002cce8 sub.w r3, r4, 0x94 | r3 = r4 - 0x94;
0x0002ccec mov r8, r7 | r8 = r7;
0x0002ccee add.w sl, sp, 0x8c | sl += var_8ch;
0x0002ccf2 add.w sb, sp, 0xac | sb += var_ach;
0x0002ccf6 str r3, [sp, 4] | var_4h = r3;
0x0002ccf8 sub.w r3, r4, 0x98 | r3 = r4 - 0x98;
0x0002ccfc strd r3, r7, [sp, 8] | __asm ("strd r3, r7, [sp, 8]");
| do {
| label_0:
0x0002cd00 mov r3, sl | r3 = sl;
0x0002cd02 mov.w r2, 0x10000 | r2 = 0x10000;
0x0002cd04 adds r2, 0x80 | r2 += 0x80;
0x0002cd06 mov r1, sb | r1 = sb;
0x0002cd08 mov r0, r6 | r0 = r6;
0x0002cd0a bl 0x3fa5c | r0 = zbx_read ();
0x0002cd0e subs r7, r0, 0 | r7 = r0 - 0;
| if (r7 <= r0) {
0x0002cd10 ble.w 0x2ce54 | goto label_17;
| }
0x0002cd14 vldr s15, [fp] | __asm ("vldr s15, [fp]");
0x0002cd18 vcvt.f64.s32 d9, s15 | __asm ("vcvt.f64.s32 d9, s15");
0x0002cd1c bl 0x3ffc0 | zbx_time ();
0x0002cd20 vsub.f64 d0, d0, d8 | __asm ("vsub.f64 d0, d0, d8");
0x0002cd24 vcmpe.f64 d9, d0 | __asm ("vcmpe.f64 d9, d0");
0x0002cd28 vmrs apsr_nzcv, fpscr | __asm ("vmrs apsr_nzcv, fpscr");
| if (r7 < r0) {
0x0002cd2c bmi.w 0x2ce9a | goto label_18;
| }
0x0002cd30 add r8, r7 | r8 += r7;
0x0002cd32 cmp.w r8, 0x10000 |
| if (r8 > 0x10000) {
0x0002cd36 bgt.w 0x2cecc | goto label_19;
| }
0x0002cd3a mov r1, r7 | r1 = r7;
0x0002cd3c mov r2, sl | r2 = sl;
0x0002cd3e mov r0, sb | r0 = sb;
0x0002cd40 bl 0x4587c | r0 = convert_to_utf8 ();
0x0002cd44 mov r7, r0 | r7 = r0;
0x0002cd46 mov r3, r0 | r3 = r0;
0x0002cd48 ldr r2, [sp, 4] | r2 = var_4h;
0x0002cd4a sub.w r0, r4, 0x9c | r0 = r4 - 0x9c;
0x0002cd4e ldr r1, [sp, 8] | r1 = var_8h;
0x0002cd50 bl 0x44240 | zbx_strcpy_alloc ();
0x0002cd54 cmp r7, 0 |
0x0002cd56 beq 0x2cd00 |
| } while (r7 == 0);
0x0002cd58 mov r0, r7 | r0 = r7;
0x0002cd5a blx 0xde30 | fcn_0000de30 ();
0x0002cd5e b 0x2cd00 | goto label_0;
| label_10:
0x0002cd60 ldr r0, [r5, 0x28] | r0 = *((r5 + 0x28));
0x0002cd62 movs r2, 0 | r2 = 0;
0x0002cd64 ldr r3, [pc, 0x200] |
0x0002cd66 movw r1, 0x17d | r1 = 0x17d;
0x0002cd6a orr r0, r0, 0x20 | r0 |= 0x20;
0x0002cd6e str r0, [r5, 0x28] | *((r5 + 0x28)) = r0;
0x0002cd70 add r3, pc | r3 = 0x59cdc;
0x0002cd72 ldr r0, [pc, 0x1f8] |
0x0002cd74 add r0, pc | r0 = 0x59ce6;
0x0002cd76 bl 0x40ed8 | zbx_strdup2 ();
| do {
| label_3:
0x0002cd7a movs r7, 1 | r7 = 1;
0x0002cd7c str r0, [r5, 0x20] | *((r5 + 0x20)) = r0;
| label_2:
0x0002cd7e ldr r2, [pc, 0x1f0] |
0x0002cd80 add.w r1, sp, 0x10000 | r1 += arg_10000h;
0x0002cd84 ldr r3, [pc, 0x1d4] | r3 = *(0x2cf5c);
0x0002cd86 adds r1, 0xac | r1 += 0xac;
0x0002cd88 add r2, pc | r2 = 0x59cfe;
0x0002cd8a ldr r3, [r2, r3] | r3 = *(0x59cfe);
0x0002cd8c ldr r2, [r3] | r2 = *(0x59cfe);
0x0002cd8e ldr r3, [r1] | r3 = *(r1);
0x0002cd90 eors r2, r3 | r2 ^= r3;
0x0002cd92 mov.w r3, 0 | r3 = 0;
| if (r2 != r3) {
0x0002cd96 bne.w 0x2cf52 | goto label_20;
| }
0x0002cd9a mov r0, r7 | r0 = r7;
0x0002cd9c add.w sp, sp, 0x10000 |
0x0002cda0 add sp, 0xb4 |
0x0002cda2 vpop {d8, d9} | __asm ("vpop {d8, d9}");
0x0002cda6 pop.w {r4, r5, r6, r7, r8, sb, sl, fp, pc} |
| label_11:
0x0002cdaa movs r3, 0 | r3 = 0;
0x0002cdac strb r3, [r4, -0x24] | *((r4 - 0x24)) = r3;
0x0002cdb0 b 0x2cc6e | goto label_1;
| label_9:
0x0002cdb2 ldr r0, [r5, 0x28] | r0 = *((r5 + 0x28));
0x0002cdb4 mov r2, r6 | r2 = r6;
0x0002cdb6 ldr r3, [pc, 0x1bc] |
0x0002cdb8 movw r1, 0x16f | r1 = 0x16f;
0x0002cdbc orr r0, r0, 0x20 | r0 |= 0x20;
0x0002cdc0 str r0, [r5, 0x28] | *((r5 + 0x28)) = r0;
0x0002cdc2 add r3, pc | r3 = 0x59d3c;
0x0002cdc4 ldr r0, [pc, 0x1b0] |
0x0002cdc6 add r0, pc | r0 = 0x59d42;
0x0002cdc8 bl 0x40ed8 | zbx_strdup2 ();
0x0002cdcc b 0x2cd7a |
| } while (1);
| label_13:
0x0002cdce ldr r1, [r5, 0x28] | r1 = *((r5 + 0x28));
0x0002cdd0 movs r2, 0 | r2 = 0;
0x0002cdd2 ldr r3, [pc, 0x1a8] |
0x0002cdd4 ldr r0, [pc, 0x1a8] |
0x0002cdd6 orr r1, r1, 0x20 | r1 |= 0x20;
0x0002cdda str r1, [r5, 0x28] | *((r5 + 0x28)) = r1;
0x0002cddc add r3, pc | r3 = 0x59d5e;
0x0002cdde add r0, pc | r0 = 0x59d62;
0x0002cde0 movw r1, 0x189 | r1 = 0x189;
0x0002cde4 bl 0x40ed8 | zbx_strdup2 ();
0x0002cde8 str r0, [r5, 0x20] | *((r5 + 0x20)) = r0;
| do {
| label_4:
0x0002cdea movs r7, 1 | r7 = 1;
| label_5:
0x0002cdec mov r0, r6 | r0 = r6;
0x0002cdee blx 0xe0ac | fcn_0000e0ac ();
0x0002cdf2 b 0x2cd7e | goto label_2;
| label_12:
0x0002cdf4 ldr r3, [r5, 0x28] | r3 = *((r5 + 0x28));
0x0002cdf6 orr r3, r3, 0x20 | r3 |= 0x20;
0x0002cdfa str r3, [r5, 0x28] | *((r5 + 0x28)) = r3;
0x0002cdfc blx 0xe3d4 | r0 = fcn_0000e3d4 ();
0x0002ce00 ldr r0, [r0] | r0 = *(r0);
0x0002ce02 bl 0x30b74 | zbx_strerror ();
0x0002ce06 ldr r1, [pc, 0x17c] |
0x0002ce08 mov r2, r0 | r2 = r0;
0x0002ce0a movs r0, 0 | r0 = 0;
0x0002ce0c add r1, pc | r1 = 0x59d96;
0x0002ce0e bl 0x44820 | zbx_dsprintf ()
0x0002ce12 b 0x2cd7a | goto label_3;
| label_15:
0x0002ce14 ldr r1, [r5, 0x28] | r1 = *((r5 + 0x28));
0x0002ce16 mov r2, r0 | r2 = r0;
0x0002ce18 ldr r3, [pc, 0x16c] |
0x0002ce1a ldr r0, [pc, 0x170] |
0x0002ce1c orr r1, r1, 0x20 | r1 |= 0x20;
0x0002ce20 str r1, [r5, 0x28] | *((r5 + 0x28)) = r1;
0x0002ce22 add r3, pc | r3 = 0x59dae;
0x0002ce24 add r0, pc | r0 = 0x59db6;
0x0002ce26 movw r1, 0x195 | r1 = 0x195;
0x0002ce2a bl 0x40ed8 | zbx_strdup2 ();
0x0002ce2e str r0, [r5, 0x20] | *((r5 + 0x20)) = r0;
0x0002ce30 b 0x2cdea |
| } while (1);
| label_14:
0x0002ce32 ldr r3, [r5, 0x28] | r3 = *((r5 + 0x28));
0x0002ce34 orr r3, r3, 0x20 | r3 |= 0x20;
0x0002ce38 str r3, [r5, 0x28] | *((r5 + 0x28)) = r3;
0x0002ce3a blx 0xe3d4 | r0 = fcn_0000e3d4 ();
0x0002ce3e ldr r0, [r0] | r0 = *(r0);
0x0002ce40 bl 0x30b74 | zbx_strerror ();
0x0002ce44 ldr r1, [pc, 0x148] |
0x0002ce46 mov r2, r0 | r2 = r0;
0x0002ce48 movs r0, 0 | r0 = 0;
0x0002ce4a add r1, pc | r1 = 0x59dde;
0x0002ce4c bl 0x44820 | zbx_dsprintf ()
0x0002ce50 str r0, [r5, 0x20] | *((r5 + 0x20)) = r0;
0x0002ce52 b 0x2cdea | goto label_4;
| label_17:
0x0002ce54 mov r1, r7 | r1 = r7;
0x0002ce56 ldr r7, [sp, 0xc] | r7 = var_ch;
0x0002ce58 adds r1, 1 | r1++;
| if (r1 == 1) {
0x0002ce5a beq 0x2cf2c | goto label_21;
| }
0x0002ce5c ldr r3, [r4, -0x94] | r3 = *((r4 - 0x94));
0x0002ce60 ldr r0, [r4, -0x9c] | r0 = *((r4 - 0x9c));
0x0002ce64 cmp r3, 0 |
| if (r3 != 0) {
0x0002ce66 bne 0x2cf10 | goto label_22;
| }
| label_6:
0x0002ce68 ldr r0, [r4, -0x9c] | r0 = *((r4 - 0x9c));
| if (r0 != 0) {
0x0002ce6c cbz r0, 0x2ce78 |
0x0002ce6e blx 0xde30 | fcn_0000de30 ();
0x0002ce72 movs r3, 0 | r3 = 0;
0x0002ce74 str r3, [r4, -0x9c] | *((r4 - 0x9c)) = r3;
| }
0x0002ce78 ldr r3, [pc, 0x118] |
0x0002ce7a movs r2, 0 | r2 = 0;
0x0002ce7c ldr r0, [pc, 0x118] |
0x0002ce7e movw r1, 0x1c3 | r1 = 0x1c3;
0x0002ce82 add r3, pc | r3 = 0x59e1a;
0x0002ce84 add r0, pc | r0 = 0x59e20;
0x0002ce86 bl 0x40ed8 | zbx_strdup2 ();
0x0002ce8a str r0, [r4, -0x9c] | *((r4 - 0x9c)) = r0;
| label_7:
0x0002ce8e ldr r3, [r5, 0x28] | r3 = *((r5 + 0x28));
0x0002ce90 str r0, [r5, 0x1c] | *((r5 + 0x1c)) = r0;
0x0002ce92 orr r3, r3, 8 | r3 |= 8;
0x0002ce96 str r3, [r5, 0x28] | *((r5 + 0x28)) = r3;
0x0002ce98 b 0x2cdec | goto label_5;
| label_18:
0x0002ce9a ldr r2, [r5, 0x28] | r2 = *((r5 + 0x28));
0x0002ce9c movw r1, 0x1a5 | r1 = 0x1a5;
0x0002cea0 ldr r3, [pc, 0xf8] |
0x0002cea2 ldr r0, [pc, 0xfc] |
0x0002cea4 orr r2, r2, 0x20 | r2 |= 0x20;
0x0002cea8 add r3, pc | r3 = 0x59e48;
0x0002ceaa str r2, [r5, 0x28] | *((r5 + 0x28)) = r2;
0x0002ceac add r0, pc | r0 = 0x59e52;
0x0002ceae movs r2, 0 | r2 = 0;
0x0002ceb0 bl 0x40ed8 | zbx_strdup2 ();
0x0002ceb4 ldr r3, [r4, -0x9c] | r3 = *((r4 - 0x9c));
0x0002ceb8 str r0, [r5, 0x20] | *((r5 + 0x20)) = r0;
0x0002ceba cmp r3, 0 |
| if (r3 == 0) {
0x0002cebc beq 0x2cdea | goto label_4;
| }
| do {
| label_8:
0x0002cebe mov r0, r3 | r0 = r3;
0x0002cec0 blx 0xde30 | fcn_0000de30 ();
0x0002cec4 movs r3, 0 | r3 = 0;
0x0002cec6 str r3, [r4, -0x9c] | *((r4 - 0x9c)) = r3;
0x0002ceca b 0x2cdea | goto label_4;
| label_19:
0x0002cecc ldr r2, [r5, 0x28] | r2 = *((r5 + 0x28));
0x0002cece mov.w r1, 0x1ac | r1 = 0x1ac;
0x0002ced2 ldr r3, [pc, 0xd0] |
0x0002ced4 ldr r0, [pc, 0xd0] |
0x0002ced6 orr r2, r2, 0x20 | r2 |= 0x20;
0x0002ceda add r3, pc | r3 = 0x59e84;
0x0002cedc str r2, [r5, 0x28] | *((r5 + 0x28)) = r2;
0x0002cede add r0, pc | r0 = 0x59e8a;
0x0002cee0 movs r2, 0 | r2 = 0;
0x0002cee2 bl 0x40ed8 | zbx_strdup2 ();
0x0002cee6 ldr r3, [r4, -0x9c] | r3 = *((r4 - 0x9c));
0x0002ceea str r0, [r5, 0x20] | *((r5 + 0x20)) = r0;
0x0002ceec cmp r3, 0 |
0x0002ceee bne 0x2cebe |
| } while (r3 != 0);
0x0002cef0 b 0x2cdea | goto label_4;
| label_16:
0x0002cef2 ldr r1, [r5, 0x28] | r1 = *((r5 + 0x28));
0x0002cef4 mov r2, r7 | r2 = r7;
0x0002cef6 ldr r3, [pc, 0xb4] |
0x0002cef8 ldr r0, [pc, 0xb4] |
0x0002cefa orr r1, r1, 0x20 | r1 |= 0x20;
0x0002cefe str r1, [r5, 0x28] | *((r5 + 0x28)) = r1;
0x0002cf00 add r3, pc | r3 = 0x59eb2;
0x0002cf02 add r0, pc | r0 = 0x59eb6;
0x0002cf04 movw r1, 0x19b | r1 = 0x19b;
0x0002cf08 bl 0x40ed8 | zbx_strdup2 ();
0x0002cf0c str r0, [r5, 0x20] | *((r5 + 0x20)) = r0;
0x0002cf0e b 0x2cdea | goto label_4;
| label_22:
0x0002cf10 ldr r1, [pc, 0xa0] |
0x0002cf12 add r1, pc | r1 = 0x59eca;
0x0002cf14 bl 0x444f4 | zbx_rtrim ();
0x0002cf18 ldr r3, [r4, -0x94] | r3 = *((r4 - 0x94));
0x0002cf1c subs r3, r3, r0 | r3 -= r0;
0x0002cf1e str r3, [r4, -0x94] | *((r4 - 0x94)) = r3;
0x0002cf22 cmp r3, 0 |
| if (r3 == 0) {
0x0002cf24 beq 0x2ce68 | goto label_6;
| }
0x0002cf26 ldr r0, [r4, -0x9c] | r0 = *((r4 - 0x9c));
0x0002cf2a b 0x2ce8e | goto label_7;
| label_21:
0x0002cf2c ldr r2, [r5, 0x28] | r2 = *((r5 + 0x28));
0x0002cf2e mov.w r1, 0x1b8 | r1 = 0x1b8;
0x0002cf32 ldr r3, [pc, 0x84] |
0x0002cf34 ldr r0, [pc, 0x84] |
0x0002cf36 orr r2, r2, 0x20 | r2 |= 0x20;
0x0002cf3a add r3, pc | r3 = 0x59ef8;
0x0002cf3c str r2, [r5, 0x28] | *((r5 + 0x28)) = r2;
0x0002cf3e add r0, pc | r0 = 0x59efe;
0x0002cf40 movs r2, 0 | r2 = 0;
0x0002cf42 bl 0x40ed8 | zbx_strdup2 ();
0x0002cf46 ldr r3, [r4, -0x9c] | r3 = *((r4 - 0x9c));
0x0002cf4a str r0, [r5, 0x20] | *((r5 + 0x20)) = r0;
0x0002cf4c cmp r3, 0 |
| if (r3 != 0) {
0x0002cf4e bne 0x2cebe | goto label_8;
| }
0x0002cf50 b 0x2cdea | goto label_4;
| label_20:
0x0002cf52 blx 0xe158 | fcn_0000e158 ();
0x0002cf56 nop |
0x0002cf58 vaddl.s8 q8, d14, d2 | __asm ("vaddl.s8 q8, d14, d2");
0x0002cf5c lsls r4, r2, 0xe | r4 = r2 << 0xe;
0x0002cf5e movs r0, r0 |
0x0002cf60 vaddl.s16 q0, d12, d2 | __asm ("vaddl.s16 q0, d12, d2");
0x0002cf64 lsls r4, r4, 0xc | r4 <<= 0xc;
0x0002cf66 movs r0, r0 |
0x0002cf68 cmp r1, 0 |
0x0002cf6a movs r2, r0 | r2 = r0;
0x0002cf6c str r4, [r1, 0x74] | *((r1 + 0x74)) = r4;
0x0002cf6e movs r2, r0 | r2 = r0;
0x0002cf70 cdp p0, 5, c0, c0, c2, 0 | __asm ("cdp p0, 5, c0, c0, c2, 0");
0x0002cf74 cmp r0, 0x96 |
0x0002cf76 movs r2, r0 | r2 = r0;
0x0002cf78 str r2, [r7, 0x6c] | *((r7 + 0x6c)) = r2;
0x0002cf7a movs r2, r0 | r2 = r0;
0x0002cf7c str r4, [r0, 0x6c] | *((r0 + 0x6c)) = r4;
0x0002cf7e movs r2, r0 | r2 = r0;
0x0002cf80 str r2, [r4, 0x6c] | *((r4 + 0x6c)) = r2;
0x0002cf82 movs r2, r0 | r2 = r0;
0x0002cf84 str r4, [r7, 0x64] | *((r7 + 0x64)) = r4;
0x0002cf86 movs r2, r0 | r2 = r0;
0x0002cf88 str r2, [r7, 0x6c] | *((r7 + 0x6c)) = r2;
0x0002cf8a movs r2, r0 | r2 = r0;
0x0002cf8c str r4, [r3, 0x68] | *((r3 + 0x68)) = r4;
0x0002cf8e movs r2, r0 | r2 = r0;
0x0002cf90 str r6, [r3, 0x68] | *((r3 + 0x68)) = r6;
0x0002cf92 movs r2, r0 | r2 = r0;
0x0002cf94 ldr r5, [pc, 0x2b8] | r5 = *(0x2d250);
0x0002cf96 movs r2, r0 | r2 = r0;
0x0002cf98 str r4, [r7, 0x60] | *((r7 + 0x60)) = r4;
0x0002cf9a movs r2, r0 | r2 = r0;
0x0002cf9c str r0, [r7, 0x5c] | *((r7 + 0x5c)) = r0;
0x0002cf9e movs r2, r0 | r2 = r0;
0x0002cfa0 str r4, [r2, 0x60] | *((r2 + 0x60)) = r4;
0x0002cfa2 movs r2, r0 | r2 = r0;
0x0002cfa4 str r2, [r0, 0x64] | *((r0 + 0x64)) = r2;
0x0002cfa6 movs r2, r0 | r2 = r0;
0x0002cfa8 str r2, [r4, 0x5c] | *((r4 + 0x5c)) = r2;
0x0002cfaa movs r2, r0 | r2 = r0;
0x0002cfac str r0, [r4, 0x58] | *((r4 + 0x58)) = r0;
0x0002cfae movs r2, r0 | r2 = r0;
0x0002cfb0 str r6, [r7, 0x58] | *((r7 + 0x58)) = r6;
0x0002cfb2 movs r2, r0 | r2 = r0;
0x0002cfb4 add r4, sp, 0x128 | r4 += arg_128h;
0x0002cfb6 movs r2, r0 | r2 = r0;
0x0002cfb8 strh r2, [r1, r5] | *((r1 + r5)) = r2;
0x0002cfba movs r2, r0 | r2 = r0;
0x0002cfbc str r2, [r0, 0x58] | *((r0 + 0x58)) = r2;
0x0002cfbe movs r2, r0 | r2 = r0;
| }
; assembly | /* r2dec pseudo code output */
| /* /logs/firmware/patool_extraction/rootfs.img_unblob_extracted/rootfs.img_extract/0-80367616.squashfs_v4_le_extract/usr/sbin/zabbix_agentd @ 0x2ca04 */
| #include <stdint.h>
|
; (fcn) sym.VFS_FILE_EXISTS () | void VFS_FILE_EXISTS (int16_t arg1, int16_t arg2) {
| int16_t var_0h;
| int16_t var_10h;
| int16_t var_6ch;
| r0 = arg1;
| r1 = arg2;
0x0002ca04 blmi 0x1d7f3dc | __asm ("blmi 0x1d7f3dc");
0x0002ca08 push.w {r4, r5, r6, r7, r8, sb, lr} |
0x0002ca0c sub sp, 0x74 |
0x0002ca0e add r2, pc | r2 += pc;
0x0002ca10 mov r4, r1 | r4 = r1;
0x0002ca12 ldr r3, [r2, r3] | r3 = *((r2 + r3));
0x0002ca14 ldr r3, [r3] | r3 = *(r3);
0x0002ca16 str r3, [sp, 0x6c] | var_6ch = r3;
0x0002ca18 mov.w r3, 0 | r3 = 0;
0x0002ca1c ldr r3, [r0, 4] | r3 = *((r0 + 4));
0x0002ca1e cmp r3, 3 |
| if (r3 > 3) {
0x0002ca20 bgt.w 0x2cb4e | goto label_4;
| }
0x0002ca24 cmp r3, 0 |
| if (r3 > 0) {
0x0002ca26 ble 0x2cb16 |
0x0002ca28 ldr r2, [r0, 8] | r2 = *((r0 + 8));
0x0002ca2a mov r5, r0 | r5 = r0;
0x0002ca2c ldr r7, [r2] | r7 = *(r2);
0x0002ca2e cmp r7, 0 |
| if (r7 == 0) {
0x0002ca30 beq 0x2cb16 | goto label_5;
| }
0x0002ca32 ldrb r1, [r7] | r1 = *(r7);
0x0002ca34 cmp r1, 0 |
| if (r1 == 0) {
0x0002ca36 beq 0x2cb16 | goto label_5;
| }
0x0002ca38 cmp r3, 1 |
0x0002ca3a mov r1, r4 | r1 = r4;
0x0002ca3c ite ne |
| if (r3 == 1) {
0x0002ca3e ldrne r0, [r2, 4] | r0 = *((r2 + 4));
| }
| if (r3 != 1) {
0x0002ca40 moveq r0, 0 | r0 = 0;
| }
0x0002ca42 bl 0x2ab30 | r0 = zbx_etypes_to_mask ();
0x0002ca46 cmp.w r0, -1 |
0x0002ca4a mov r8, r0 | r8 = r0;
| if (r0 == -1) {
0x0002ca4c beq 0x2cb32 | goto label_2;
| }
0x0002ca4e ldr r3, [r5, 4] | r3 = *((r5 + 4));
0x0002ca50 mov r1, r4 | r1 = r4;
0x0002ca52 cmp r3, 2 |
0x0002ca54 itet gt |
| if (r3 <= 2) {
0x0002ca56 ldrgt r3, [r5, 8] | r3 = *((r5 + 8));
| }
| if (r3 > 2) {
0x0002ca58 movle r0, 0 | r0 = 0;
| }
| if (r3 <= 2) {
0x0002ca5a ldrgt r0, [r3, 8] | r0 = *((r3 + 8));
| }
0x0002ca5c bl 0x2ab30 | r0 = zbx_etypes_to_mask ();
0x0002ca60 adds r3, r0, 1 | r3 = r0 + 1;
0x0002ca62 mov r5, r0 | r5 = r0;
| if (r3 == r0) {
0x0002ca64 beq 0x2cb32 | goto label_2;
| }
0x0002ca66 cmp.w r8, 0 |
| if (r8 == 0) {
0x0002ca6a beq 0x2cb6c | goto label_6;
| }
0x0002ca6c orr.w r6, r8, r0 | r6 = r8 | r0;
0x0002ca70 ands r6, r6, 4 | r6 &= 4;
| if (r6 == r6) {
0x0002ca74 beq.w 0x2cba2 | goto label_7;
| }
| label_0:
0x0002ca78 mov sb, sp | sb = sp;
0x0002ca7a mov r0, r7 | r0 = r7;
0x0002ca7c mov r1, sb | r1 = sb;
0x0002ca7e blx 0xe1c4 | r0 = fcn_0000e1c4 ();
0x0002ca82 cmp r0, 0 |
| if (r0 != 0) {
0x0002ca84 bne.w 0x2cba6 | goto label_8;
| }
0x0002ca88 ldr r6, [sp, 0x10] | r6 = var_10h;
0x0002ca8a and r6, r6, 0xf000 | r6 &= 0xf000;
0x0002ca8e sub.w r6, r6, 0xa000 | r6 -= 0xa000;
0x0002ca92 clz r6, r6 | r6 &= r6;
0x0002ca96 lsrs r6, r6, 5 | r6 >>= 5;
0x0002ca98 lsls r6, r6, 2 | r6 <<= 2;
| label_3:
0x0002ca9a mov r1, sb | r1 = sb;
0x0002ca9c mov r0, r7 | r0 = r7;
0x0002ca9e blx 0xdec0 | r0 = fcn_0000dec0 ();
0x0002caa0 ands.w r8, r0, r0, lsl 8 | r8 = r0 & (r0 << 8);
| if (r8 != r0) {
0x0002caa4 bne 0x2cb74 | goto label_9;
| }
0x0002caa6 ldr r3, [sp, 0x10] | r3 = var_10h;
0x0002caa8 and r3, r3, 0xf000 | r3 &= 0xf000;
0x0002caac cmp.w r3, 0x8000 |
0x0002cab0 it eq |
| if (r3 != fcn.00000004) {
0x0002cab2 orreq r6, r6, 1 | r6 |= 1;
| }
0x0002cab4 lsls r1, r0, 0x18 | r1 = r0 << 0x18;
| if (r1 != r0) {
0x0002cab6 beq 0x2caf2 |
0x0002cab8 cmp.w r3, 0x4000 |
0x0002cabc it eq |
| if (r3 != 0x4000) {
0x0002cabe orreq r6, r6, 2 | r6 |= 2;
| }
| if (r3 == 0x4000) {
0x0002cac2 beq 0x2caf2 | goto label_1;
| }
0x0002cac4 cmp.w r3, 0xc000 |
0x0002cac8 it eq |
| if (r3 != 0xc000) {
0x0002caca orreq r6, r6, 8 | r6 |= 8;
| }
| if (r3 == 0xc000) {
0x0002cace beq 0x2caf2 | goto label_1;
| }
0x0002cad0 cmp.w r3, 0x6000 |
0x0002cad4 it eq |
| if (r3 != 0x6000) {
0x0002cad6 orreq r6, r6, 0x10 | r6 |= 0x10;
| }
| if (r3 == 0x6000) {
0x0002cada beq 0x2caf2 | goto label_1;
| }
0x0002cadc cmp.w r3, 0x2000 |
0x0002cae0 it eq |
| if (r3 != 0x2000) {
0x0002cae2 orreq r6, r6, 0x20 | r6 |= 0x20;
| }
| if (r3 == 0x2000) {
0x0002cae6 beq 0x2caf2 | goto label_1;
| }
0x0002cae8 cmp.w r3, 0x1000 |
0x0002caec it eq |
| if (r3 == 0x1000) {
0x0002caee orreq r6, r6, 0x40 | r6 |= 0x40;
| goto label_1;
| }
| }
| label_1:
0x0002caf2 ands r5, r6 | r5 &= r6;
0x0002caf4 ldr r3, [r4, 0x28] | r3 = *((r4 + 0x28));
0x0002caf6 itt ne |
| if (r5 == r6) {
0x0002caf8 movne r2, 0 | r2 = 0;
| }
| if (r5 == r6) {
0x0002cafa movne r5, r2 | r5 = r2;
| }
| if (r5 == r6) {
0x0002cafc bne 0x2cb08 |
0x0002cafe tst.w r8, r6 |
0x0002cb02 ite ne |
| if ((r8 & r6) == 0) {
0x0002cb04 movne r2, 1 | r2 = 1;
| }
| if ((r8 & r6) == 0) {
0x0002cb06 moveq r2, 0 | r2 = 0;
| goto label_10;
| }
| }
| label_10:
0x0002cb08 orr r3, r3, 1 | r3 |= 1;
0x0002cb0c movs r0, 0 | r0 = 0;
0x0002cb0e str r3, [r4, 0x28] | *((r4 + 0x28)) = r3;
0x0002cb10 strd r2, r5, [r4, 8] | __asm ("strd r2, r5, [r4, 8]");
0x0002cb14 b 0x2cb34 | goto label_11;
| }
| label_5:
0x0002cb16 ldr r0, [r4, 0x28] | r0 = *((r4 + 0x28));
0x0002cb18 movs r2, 0 | r2 = 0;
0x0002cb1a ldr r3, [pc, 0xc4] |
0x0002cb1c mov.w r1, 0x11e | r1 = 0x11e;
0x0002cb20 orr r0, r0, 0x20 | r0 |= 0x20;
0x0002cb24 str r0, [r4, 0x28] | *((r4 + 0x28)) = r0;
0x0002cb26 add r3, pc | r3 = 0x5970c;
0x0002cb28 ldr r0, [pc, 0xb8] |
0x0002cb2a add r0, pc | r0 = 0x59712;
0x0002cb2c bl 0x40ed8 | zbx_strdup2 ();
0x0002cb30 str r0, [r4, 0x20] | *((r4 + 0x20)) = r0;
| do {
| label_2:
0x0002cb32 movs r0, 1 | r0 = 1;
| label_11:
0x0002cb34 ldr r2, [pc, 0xb0] |
0x0002cb36 ldr r3, [pc, 0xa4] | r3 = *(0x2cbde);
0x0002cb38 add r2, pc | r2 = 0x59724;
0x0002cb3a ldr r3, [r2, r3] | r3 = *(0x59724);
0x0002cb3c ldr r2, [r3] | r2 = *(0x59724);
0x0002cb3e ldr r3, [sp, 0x6c] | r3 = var_6ch;
0x0002cb40 eors r2, r3 | r2 ^= r3;
0x0002cb42 mov.w r3, 0 | r3 = 0;
0x0002cb44 lsls r0, r0, 0xc | r0 <<= 0xc;
| if (r0 != r0) {
0x0002cb46 bne 0x2cbd4 | goto label_12;
| }
0x0002cb48 add sp, 0x74 |
0x0002cb4a pop.w {r4, r5, r6, r7, r8, sb, pc} |
| label_4:
0x0002cb4e ldr r0, [r1, 0x28] | r0 = *((r1 + 0x28));
0x0002cb50 movs r2, 0 | r2 = 0;
0x0002cb52 ldr r3, [pc, 0x98] |
0x0002cb54 mov.w r1, 0x116 | r1 = 0x116;
0x0002cb58 orr r0, r0, 0x20 | r0 |= 0x20;
0x0002cb5c str r0, [r4, 0x28] | *((r4 + 0x28)) = r0;
0x0002cb5e add r3, pc | r3 = 0x59750;
0x0002cb60 ldr r0, [pc, 0x8c] |
0x0002cb62 add r0, pc | r0 = 0x59756;
0x0002cb64 bl 0x40ed8 | zbx_strdup2 ();
0x0002cb68 str r0, [r4, 0x20] | *((r4 + 0x20)) = r0;
0x0002cb6a b 0x2cb32 |
| } while (1);
| if (r0 == 0) {
| label_6:
0x0002cb6c cbz r0, 0x2cb9c | goto label_13;
| }
0x0002cb6e mov.w r8, 0x7f | r8 = 0x7f;
0x0002cb72 b 0x2ca78 | goto label_0;
| label_9:
0x0002cb74 blx 0xe3d4 | r0 = fcn_0000e3d4 ();
0x0002cb78 ldr r3, [r0] | r3 = *(r0);
0x0002cb7a cmp r3, 2 |
| if (r3 == 2) {
0x0002cb7c beq 0x2caf2 | goto label_1;
| }
0x0002cb7e ldr r3, [r4, 0x28] | r3 = *((r4 + 0x28));
0x0002cb80 orr r3, r3, 0x20 | r3 |= 0x20;
0x0002cb84 str r3, [r4, 0x28] | *((r4 + 0x28)) = r3;
0x0002cb86 ldr r0, [r0] | r0 = *(r0);
0x0002cb88 bl 0x30b74 | zbx_strerror ();
0x0002cb8c ldr r1, [pc, 0x64] |
0x0002cb8e mov r2, r0 | r2 = r0;
0x0002cb90 movs r0, 0 | r0 = 0;
0x0002cb92 add r1, pc | r1 = 0x5978a;
0x0002cb94 bl 0x44820 | zbx_dsprintf ()
0x0002cb98 str r0, [r4, 0x20] | *((r4 + 0x20)) = r0;
0x0002cb9a b 0x2cb32 | goto label_2;
| label_13:
0x0002cb9c mov r6, r8 | r6 = r8;
0x0002cb9e mov.w r8, 1 | r8 = 1;
| label_7:
0x0002cba2 mov sb, sp | sb = sp;
0x0002cba4 b 0x2ca9a | goto label_3;
| label_8:
0x0002cba6 blx 0xe3d4 | r0 = fcn_0000e3d4 ();
0x0002cbaa ldr r3, [r0] | r3 = *(r0);
0x0002cbac cmp r3, 2 |
0x0002cbae it eq |
| if (r3 == 2) {
0x0002cbb0 moveq r6, 0 | r6 = 0;
| goto label_14;
| }
| if (r3 == 2) {
| label_14:
0x0002cbb2 beq.w 0x2ca9a | goto label_3;
| }
0x0002cbb6 ldr r3, [r4, 0x28] | r3 = *((r4 + 0x28));
0x0002cbb8 orr r3, r3, 0x20 | r3 |= 0x20;
0x0002cbbc str r3, [r4, 0x28] | *((r4 + 0x28)) = r3;
0x0002cbbe ldr r0, [r0] | r0 = *(r0);
0x0002cbc0 bl 0x30b74 | zbx_strerror ();
0x0002cbc4 ldr r1, [pc, 0x30] |
0x0002cbc6 mov r2, r0 | r2 = r0;
0x0002cbc8 movs r0, 0 | r0 = 0;
0x0002cbca add r1, pc | r1 = 0x597c6;
0x0002cbcc bl 0x44820 | zbx_dsprintf ()
0x0002cbd0 str r0, [r4, 0x20] | *((r4 + 0x20)) = r0;
0x0002cbd2 b 0x2cb32 | goto label_2;
| label_12:
0x0002cbd4 blx 0xe158 | fcn_0000e158 ();
0x0002cbd8 rsb.w r0, sl, 2 | r0 = 2 - sl;
0x0002cbdc lsls r4, r2, 0xe | r4 = r2 << 0xe;
0x0002cbde movs r0, r0 |
0x0002cbe0 cmp r3, 0x4a |
0x0002cbe2 movs r2, r0 | r2 = r0;
0x0002cbe4 ldr r6, [r2, 0x18] | r6 = *((r2 + 0x18));
0x0002cbe6 movs r2, r0 | r2 = r0;
0x0002cbe8 invalid |
| }
; assembly | /* r2dec pseudo code output */
| /* /logs/firmware/patool_extraction/rootfs.img_unblob_extracted/rootfs.img_extract/0-80367616.squashfs_v4_le_extract/usr/sbin/zabbix_agentd @ 0x2e318 */
| #include <stdint.h>
|
; (fcn) sym.VFS_FILE_GET () | void VFS_FILE_GET (int16_t arg_11ch, int16_t arg_84h, int16_t arg_dbch, int16_t arg_15c0h, int16_t arg_1000h, int16_t arg1, int16_t arg2) {
| int16_t var_20h_2;
| int16_t var_1000h;
| int16_t var_8h;
| int16_t var_18h;
| int16_t var_11ch;
| int16_t var_16h;
| int16_t var_84h;
| r0 = arg1;
| r1 = arg2;
| label_0:
0x0002e25c blmi 0xb00b0c | __asm ("blmi aav.0x0002d970");
0x0002e260 push.w {r4, r5, r6, r7, r8, lr} |
0x0002e264 sub.w sp, sp, 0x1020 |
0x0002e268 add r2, pc | r2 += pc;
0x0002e26a add r7, sp, 0x20 | r7 += var_20h_2;
0x0002e26c mov r4, r1 | r4 = r1;
0x0002e26e add.w r1, sp, 0x1000 | r1 += var_1000h;
0x0002e272 ldr r3, [r2, r3] | r3 = *((r2 + r3));
0x0002e274 sub.w r6, r7, 0x1c | r6 = r7 - 0x1c;
0x0002e278 mov r5, r0 | r5 = r0;
0x0002e27a mov.w r8, 0 | r8 = 0;
0x0002e27e adds r1, 0x1c | r1 += 0x1c;
0x0002e280 mov r0, r6 | r0 = r6;
0x0002e282 ldr r3, [r3] | r3 = *(r3);
0x0002e284 str r3, [r1] | *(r1) = r3;
0x0002e286 mov.w r3, 0 | r3 = 0;
0x0002e28a mov.w r1, 0x1000 | r1 = 0x1000;
0x0002e28e str r8, [r7, -0x20] | *((r7 - 0x20)) = r8;
0x0002e292 bl 0x3aae4 | zbx_json_init ();
0x0002e296 mov r2, r8 | r2 = r8;
0x0002e298 mov r0, r5 | r0 = r5;
0x0002e29a mov r3, sp | r3 = sp;
0x0002e29c mov r1, r6 | r1 = r6;
0x0002e29e bl 0x2dc94 | r0 = zbx_vfs_file_info ();
| if (r0 == 0) {
0x0002e2a2 cbz r0, 0x2e2e4 | goto label_9;
| }
0x0002e2a4 ldr r3, [r4, 0x28] | r3 = *((r4 + 0x28));
0x0002e2a6 movs r5, 1 | r5 = 1;
0x0002e2a8 ldr r2, [r7, -0x20] | r2 = *((r7 - 0x20));
0x0002e2ac orr r3, r3, 0x20 | r3 |= 0x20;
0x0002e2b0 str r2, [r4, 0x20] | *((r4 + 0x20)) = r2;
0x0002e2b2 str r3, [r4, 0x28] | *((r4 + 0x28)) = r3;
| do {
0x0002e2b4 mov r0, r6 | r0 = r6;
0x0002e2b6 bl 0x3af6c | zbx_json_close ();
0x0002e2ba mov r0, r6 | r0 = r6;
0x0002e2bc bl 0x3ac14 | zbx_json_free ();
0x0002e2c0 ldr r2, [pc, 0x4c] |
0x0002e2c2 add.w r1, sp, 0x1000 | r1 += var_1000h;
0x0002e2c6 ldr r3, [pc, 0x44] | r3 = *(0x2e30e);
0x0002e2c8 adds r1, 0x1c | r1 += 0x1c;
0x0002e2ca add r2, pc | r2 = 0x5c5de;
0x0002e2cc ldr r3, [r2, r3] | r3 = *(0x5c5de);
0x0002e2ce ldr r2, [r3] | r2 = *(0x5c5de);
0x0002e2d0 ldr r3, [r1] | r3 = *(r1);
0x0002e2d2 eors r2, r3 | r2 ^= r3;
0x0002e2d4 mov.w r3, 0 | r3 = 0;
| if (r2 != r3) {
0x0002e2d8 bne 0x2e304 | goto label_10;
| }
0x0002e2da mov r0, r5 | r0 = r5;
0x0002e2dc add.w sp, sp, 0x1020 |
0x0002e2e0 pop.w {r4, r5, r6, r7, r8, pc} |
| label_9:
0x0002e2e4 ldr r2, [r4, 0x28] | r2 = *((r4 + 0x28));
0x0002e2e6 mov r5, r0 | r5 = r0;
0x0002e2e8 ldr r3, [r7, -0x1c] | r3 = *((r7 - 0x1c));
0x0002e2ec movw r1, 0x6a7 | r1 = 0x6a7;
0x0002e2f0 orr r2, r2, 4 | r2 |= 4;
0x0002e2f4 str r2, [r4, 0x28] | *((r4 + 0x28)) = r2;
0x0002e2f6 mov r2, r0 | r2 = r0;
0x0002e2f8 ldr r0, [pc, 0x18] |
0x0002e2fa add r0, pc | r0 = 0x5c612;
0x0002e2fc bl 0x40ed8 | zbx_strdup2 ();
0x0002e300 str r0, [r4, 0x18] | *((r4 + 0x18)) = r0;
0x0002e302 b 0x2e2b4 |
| } while (1);
| label_10:
0x0002e304 blx 0xe158 | fcn_0000e158 ();
| if (r2 >= r3) {
0x0002e308 bls 0x2e3ec |
0x0002e30a movs r2, r0 | r2 = r0;
0x0002e30c lsls r4, r2, 0xe | r4 = r2 << 0xe;
0x0002e30e movs r0, r0 |
| if (r0 >= r0) {
0x0002e310 bls 0x2e330 |
0x0002e312 movs r2, r0 | r2 = r0;
0x0002e314 str r6, [r0, r7] | *((r0 + r7)) = r6;
0x0002e316 movs r2, r0 | r2 = r0;
0x0002e318 ldr r3, [r0, 4] | r3 = *((r0 + 4));
0x0002e31a push {r4, lr} |
0x0002e31c mov r4, r1 | r4 = r1;
0x0002e31e cmp r3, 1 |
| if (r3 > 1) {
0x0002e320 bgt 0x2e34e | goto label_11;
| }
| if (r3 == 1) {
0x0002e322 bne 0x2e32e |
0x0002e324 ldr r3, [r0, 8] | r3 = *((r0 + 8));
0x0002e326 ldr r0, [r3] | r0 = *(r3);
| if (r0 == 0) {
0x0002e328 cbz r0, 0x2e32e | goto label_12;
| }
0x0002e32a ldrb r3, [r0] | r3 = *(r0);
| if (r3 != 0) {
0x0002e32c cbnz r3, 0x2e36e | goto label_13;
| }
| }
| label_12:
0x0002e32e ldr r0, [r4, 0x28] | r0 = *((r4 + 0x28));
| }
0x0002e330 movs r2, 0 | r2 = 0;
0x0002e332 ldr r3, [pc, 0x40] |
0x0002e334 movw r1, 0x6c6 | r1 = 0x6c6;
0x0002e338 orr r0, r0, 0x20 | r0 |= 0x20;
0x0002e33c str r0, [r4, 0x28] | *((r4 + 0x28)) = r0;
0x0002e33e add r3, pc | r3 = 0x5c6b8;
0x0002e340 ldr r0, [pc, 0x34] |
0x0002e342 add r0, pc | r0 = 0x5c6be;
0x0002e344 bl 0x40ed8 | zbx_strdup2 ();
0x0002e348 str r0, [r4, 0x20] | *((r4 + 0x20)) = r0;
0x0002e34a movs r0, 1 | r0 = 1;
0x0002e34c pop {r4, pc} |
| label_11:
0x0002e34e ldr r0, [r1, 0x28] | r0 = *((r1 + 0x28));
0x0002e350 movs r2, 0 | r2 = 0;
0x0002e352 ldr r3, [pc, 0x28] |
0x0002e354 movw r1, 0x6be | r1 = 0x6be;
0x0002e358 orr r0, r0, 0x20 | r0 |= 0x20;
0x0002e35c str r0, [r4, 0x28] | *((r4 + 0x28)) = r0;
0x0002e35e add r3, pc | r3 = 0x5c6e0;
0x0002e360 ldr r0, [pc, 0x1c] |
0x0002e362 add r0, pc | r0 = 0x5c6e6;
0x0002e364 bl 0x40ed8 | zbx_strdup2 ();
0x0002e368 str r0, [r4, 0x20] | *((r4 + 0x20)) = r0;
0x0002e36a movs r0, 1 | r0 = 1;
0x0002e36c pop {r4, pc} |
| label_13:
0x0002e36e pop.w {r4, lr} |
0x0002e372 b 0x2e25c | goto label_0;
| }
0x0002e3ec mov r2, r0 | r2 = r0;
0x0002e3ee strd r4, r4, [sp] | __asm ("strd r4, r4, [sp]");
0x0002e3f2 mov r1, fp | r1 = fp;
0x0002e3f4 mov r0, r5 | r0 = r5;
0x0002e3f6 bl 0x36a4c | r0 = zbx_tcp_send_ext ();
0x0002e3fa clz r3, r0 | r3 &= r0;
0x0002e3fe mov r4, r0 | r4 = r0;
| label_3:
0x0002e400 lsrs r3, r3, 5 | r3 >>= 5;
0x0002e402 cmp r6, 0 |
0x0002e404 ite eq |
| if (r6 != 0) {
0x0002e406 moveq r2, 0 | r2 = 0;
| }
| if (r6 == 0) {
0x0002e408 andne r2, r3, 1 | r2 = r3 & 1;
| }
| if (r2 != 0) {
0x0002e40c cbnz r2, 0x2e46c | goto label_14;
| }
0x0002e40e cmp.w sb, 0 |
0x0002e412 ite eq |
| if (sb != 0) {
0x0002e414 moveq r3, 0 | r3 = 0;
| }
| if (sb == 0) {
0x0002e416 andne r3, r3, 1 | r3 &= 1;
| }
| if (r3 != 0) {
0x0002e41a cbz r3, 0x2e432 |
| label_2:
0x0002e41c mov r0, sb | r0 = sb;
0x0002e41e blx 0xdf68 | fcn_0000df68 ();
0x0002e422 movs r3, 0 | r3 = 0;
0x0002e424 mov r2, r0 | r2 = r0;
0x0002e426 mov r1, sb | r1 = sb;
0x0002e428 mov r0, r5 | r0 = r5;
0x0002e42a strd r3, r3, [sp] | __asm ("strd r3, r3, [sp]");
0x0002e42e bl 0x36a4c | zbx_tcp_send_ext ();
| }
| if (r4 == 0) {
0x0002e432 cbz r4, 0x2e494 | goto label_15;
| }
0x0002e434 mov r0, r5 | r0 = r5;
0x0002e436 bl 0x3681c | zbx_tcp_close ();
0x0002e438 invalid |
0x0002e43a ldr r3, [pc, 0x9c] |
0x0002e43c ldr r3, [r7, r3] | r3 = *((r7 + r3));
0x0002e43e ldr r3, [r3] | r3 = *(0x2e4da);
0x0002e440 cmp r3, 3 |
| if (r3 > 3) {
0x0002e442 bgt 0x2e47a | goto label_16;
| }
| label_1:
0x0002e444 ldr r2, [pc, 0x94] |
0x0002e446 ldr r3, [pc, 0x84] | r3 = *(0x2e4ce);
0x0002e448 add r2, pc | r2 = 0x5c928;
0x0002e44a ldr r3, [r2, r3] | r3 = *(0x5c928);
0x0002e44c ldr r2, [r3] | r2 = *(0x5c928);
0x0002e44e ldr.w r3, [sp, 0xdbc] | r3 = *(arg_dbch);
0x0002e452 eors r2, r3 | r2 ^= r3;
0x0002e454 mov.w r3, 0 | r3 = 0;
| if (r2 != r3) {
0x0002e458 bne 0x2e4c2 | goto label_17;
| }
0x0002e45a movs r0, 0 | r0 = 0;
0x0002e45c addw sp, sp, 0xdc4 | __asm ("addw sp, sp, 0xdc4");
0x0002e460 pop.w {r4, r5, r6, r7, r8, sb, sl, fp, pc} |
| do {
0x0002e464 blx r6 | r0 = uint32_t (*r6)() ();
| if (r0 == 0) {
0x0002e466 cbz r0, 0x2e48c | goto label_18;
| }
0x0002e468 adds r0, 1 | r0++;
| if (r0 == 1) {
0x0002e46a beq 0x2e4a2 | goto label_19;
| }
| label_14:
0x0002e46c mov r0, r5 | r0 = r5;
0x0002e46e bl 0x37410 | r0 = zbx_tcp_recv_line ();
0x0002e472 mov sl, r0 | sl = r0;
0x0002e474 cmp r0, 0 |
0x0002e476 bne 0x2e464 |
| } while (r0 != 0);
0x0002e478 b 0x2e4ac | goto label_20;
| label_16:
0x0002e47a bl 0x36860 | zbx_socket_strerror ();
0x0002e47e ldr r1, [pc, 0x60] |
0x0002e480 mov r2, r0 | r2 = r0;
0x0002e482 movs r0, 4 | r0 = 4;
0x0002e484 add r1, pc | r1 = 0x5c96a;
0x0002e486 bl 0x30d1c | zbx_zabbix_log ();
0x0002e48a b 0x2e444 | goto label_1;
| label_18:
0x0002e48c cmp.w sb, 0 |
| if (sb != 0) {
0x0002e490 bne 0x2e41c | goto label_2;
| }
| if (r4 != 0) {
0x0002e492 cbnz r4, 0x2e4ac | goto label_20;
| }
| label_15:
0x0002e494 movs r3, 1 | r3 = 1;
0x0002e496 mov r0, r5 | r0 = r5;
0x0002e498 str.w r3, [r8] | __asm ("str.w r3, [r8]");
0x0002e49c bl 0x3681c | zbx_tcp_close ();
0x0002e4a0 b 0x2e444 | goto label_1;
| label_19:
0x0002e4a2 ldr r3, [pc, 0x34] |
0x0002e4a4 ldr r3, [r7, r3] | r3 = *((r7 + r3));
0x0002e4a6 ldr r3, [r3] | r3 = *(0x2e4da);
0x0002e4a8 cmp r3, 3 |
0x0002e4aa bgt 0x2e4b4 |
| while (1) {
| label_20:
0x0002e4ac mov r0, r5 | r0 = r5;
0x0002e4ae bl 0x3681c | zbx_tcp_close ();
0x0002e4b2 b 0x2e444 | goto label_1;
0x0002e4b4 ldr r1, [pc, 0x2c] |
0x0002e4b6 mov r2, sl | r2 = sl;
0x0002e4b8 movs r0, 4 | r0 = 4;
0x0002e4ba add r1, pc | r1 = 0x5c9a2;
0x0002e4bc bl 0x30d1c | zbx_zabbix_log ();
0x0002e4c0 b 0x2e4ac |
| }
| label_17:
0x0002e4c2 blx 0xe158 | fcn_0000e158 ();
0x0002e4c6 nop |
| if (r0 > 4) {
0x0002e4c8 bhi 0x2e548 | goto label_21;
| }
0x0002e4ca movs r2, r0 | r2 = r0;
0x0002e4cc lsls r4, r2, 0xe | r4 = r2 << 0xe;
0x0002e4ce movs r0, r0 |
| if (r0 <= r0) {
0x0002e4d0 bhi 0x2e530 |
0x0002e4d2 movs r2, r0 | r2 = r0;
0x0002e4d4 lsls r0, r0, 0xf | r0 <<= 0xf;
0x0002e4d6 movs r0, r0 |
0x0002e4d8 lsls r4, r7, 0xe | r4 = r7 << 0xe;
0x0002e4da movs r0, r0 |
0x0002e4dc bvc 0x2e400 | __asm ("bvc 0x2e400");
| goto label_3;
0x0002e4de movs r2, r0 | r2 = r0;
0x0002e4e0 strb r0, [r5, r7] | *((r5 + r7)) = r0;
0x0002e4e2 movs r2, r0 | r2 = r0;
0x0002e4e4 strb r2, [r1, r6] | *((r1 + r6)) = r2;
0x0002e4e6 movs r2, r0 | r2 = r0;
| }
0x0002e530 ldrb.w fp, [r5, 0x377] | fp = *((r5 + 0x377));
| if (r7 != 0) {
| do {
0x0002e532 cbz r7, 0x2e592 |
0x0002e534 vmov.i64 d17, 0xffff | __asm ("vmov.i64 d17, 0xffff");
0x0002e538 add.w r6, sp, 0x16 | r6 += var_16h;
0x0002e53c vmov.i32 d16, 0 | __asm ("vmov.i32 d16, 0");
0x0002e540 movs r3, 2 | r3 = 2;
0x0002e542 mov r0, r7 | r0 = r7;
0x0002e544 mov r2, r6 | r2 = r6;
0x0002e546 mov.w r1, -1 | r1 = -1;
| label_21:
0x0002e548 adds r1, 0xff | r1 += 0xff;
0x0002e54a vstr d17, [sp, 8] | __asm ("vstr d17, [sp, 8]");
0x0002e54e vstr d16, [sp] | __asm ("vstr d16, [sp]");
0x0002e552 bl 0x419a8 | r0 = is_uint_n_range ();
0x0002e556 mov r3, r0 | r3 = r0;
| if (r0 == 0) {
0x0002e558 cbnz r0, 0x2e592 |
0x0002e55a ldr r2, [pc, 0xc4] |
0x0002e55c mov r0, r8 | r0 = r8;
0x0002e55e ldrh r1, [r6] | r1 = *(r6);
0x0002e560 ldr r2, [r5, r2] | r2 = *((r5 + r2));
0x0002e562 add r5, sp, 0x18 | r5 += var_18h;
0x0002e564 strd r3, r3, [sp] | __asm ("strd r3, r3, [sp]");
0x0002e568 ldr r2, [r2] | r2 = *(0x2e622);
0x0002e56a str r5, [sp, 8] | var_8h = r5;
0x0002e56c bl 0x2e384 | r0 = tcp_expect ();
| if (r0 != 0) {
0x0002e570 cbnz r0, 0x2e5b0 | goto label_22;
| }
0x0002e572 ldr r3, [r5] | r3 = *(r5);
0x0002e574 ldr r2, [r4, 0x28] | r2 = *((r4 + 0x28));
0x0002e576 str r3, [r4, 8] | *((r4 + 8)) = r3;
0x0002e578 asrs r3, r3, 0x1f | r3 >>= 0x1f;
0x0002e57a orr r2, r2, 1 | r2 |= 1;
0x0002e57e str r2, [r4, 0x28] | *((r4 + 0x28)) = r2;
0x0002e580 str r3, [r4, 0xc] | *((r4 + 0xc)) = r3;
0x0002e582 b 0x2e5b0 |
| }
| } else {
0x0002e592 ldr r0, [r4, 0x28] | r0 = *((r4 + 0x28));
0x0002e594 movs r2, 0 | r2 = 0;
0x0002e596 ldr r3, [pc, 0x90] |
0x0002e598 movs r1, 0x64 | r1 = 0x64;
0x0002e59a orr r0, r0, 0x20 | r0 |= 0x20;
0x0002e59e str r0, [r4, 0x28] | *((r4 + 0x28)) = r0;
0x0002e5a0 add r3, pc | r3 = 0x5cbce;
0x0002e5a2 ldr r0, [pc, 0x88] |
0x0002e5a4 add r0, pc | r0 = 0x5cbd6;
0x0002e5a6 bl 0x40ed8 | r0 = zbx_strdup2 ();
0x0002e5aa mov r3, r0 | r3 = r0;
| label_4:
0x0002e5ac movs r0, 1 | r0 = 1;
0x0002e5ae str r3, [r4, 0x20] | *((r4 + 0x20)) = r3;
| }
| label_22:
0x0002e5b0 ldr r2, [pc, 0x7c] |
0x0002e5b2 ldr r3, [pc, 0x60] | r3 = *(0x2e616);
0x0002e5b4 add r2, pc | r2 = 0x5cbe8;
0x0002e5b6 ldr r3, [r2, r3] | r3 = imp.__aeabi_unwind_cpp_pr0;
0x0002e5b8 ldr r2, [r3] | r2 = imp.__aeabi_unwind_cpp_pr0;
0x0002e5ba ldr r3, [sp, 0x11c] | r3 = *(arg_11ch);
0x0002e5bc eors r2, r3 | r2 ^= r3;
0x0002e5be mov.w r3, 0 | r3 = 0;
| if (r2 != r3) {
0x0002e5c2 bne 0x2e60c | goto label_23;
| }
0x0002e5c4 add sp, 0x120 |
0x0002e5c6 pop.w {r4, r5, r6, r7, r8, pc} |
| label_5:
0x0002e5d0 strb r0, [r0, 0xa] | *((r0 + 0xa)) = r0;
0x0002e5d2 mov r0, r8 | r0 = r8;
0x0002e5d4 bl 0x4465c | zbx_strlcpy ();
0x0002e5d8 b 0x2e532 |
| } while (1);
| do {
0x0002e5dc movs r2, 0 | r2 = 0;
0x0002e5de ldr r3, [pc, 0x54] |
0x0002e5e0 movs r1, 0x56 | r1 = 0x56;
0x0002e5e2 orr r0, r0, 0x20 | r0 |= 0x20;
0x0002e5e6 str r0, [r4, 0x28] | *((r4 + 0x28)) = r0;
0x0002e5e8 add r3, pc | r3 = 0x5cc22;
0x0002e5ea ldr r0, [pc, 0x4c] |
0x0002e5ec add r0, pc | r0 = 0x5cc2a;
0x0002e5ee bl 0x40ed8 | r0 = zbx_strdup2 ();
0x0002e5f2 mov r3, r0 | r3 = r0;
0x0002e5f4 b 0x2e5ac | goto label_4;
| label_23:
0x0002e60c blx 0xe158 | fcn_0000e158 ();
0x0002e610 bvs 0x2e5dc | __asm ("bvs 0x2e5dc");
| } while (1);
0x0002e612 movs r2, r0 | r2 = r0;
0x0002e614 lsls r4, r2, 0xe | r4 = r2 << 0xe;
0x0002e616 movs r0, r0 |
0x0002e618 bvs 0x2e5d0 | __asm ("bvs 0x2e5d0");
| goto label_5;
0x0002e61a movs r2, r0 | r2 = r0;
0x0002e61c strb r0, [r4, r5] | *((r4 + r5)) = r0;
0x0002e61e movs r2, r0 | r2 = r0;
0x0002e620 lsls r4, r4, 0xc | r4 <<= 0xc;
0x0002e622 movs r0, r0 |
0x0002e624 strb r0, [r0, r4] | *((r0 + r4)) = r0;
0x0002e626 movs r2, r0 | r2 = r0;
0x0002e628 movs r7, 0xe8 | r7 = 0xe8;
0x0002e62a movs r2, r0 | r2 = r0;
0x0002e62c adds r0, 0x44 | r0 += 0x44;
0x0002e62e movs r2, r0 | r2 = r0;
0x0002e630 bvs 0x2e67c | __asm ("bvs 0x2e67c");
0x0002e632 movs r2, r0 | r2 = r0;
0x0002e634 asrs r0, r6, 1 | r0 = r6 >> 1;
0x0002e636 movs r2, r0 | r2 = r0;
0x0002e638 cmp r7, 0xfc |
0x0002e63a movs r2, r0 | r2 = r0;
0x0002e63c strb r0, [r1, r2] | *((r1 + r2)) = r0;
0x0002e63e movs r2, r0 | r2 = r0;
| do {
0x0002e670 str r3, [r4, 0x28] | *((r4 + 0x28)) = r3;
0x0002e672 blx 0xe104 | r0 = fcn_0000e104 ();
0x0002e676 asrs r3, r0, 0x1f | r3 = r0 >> 0x1f;
0x0002e678 strd r0, r3, [r4, 8] | __asm ("strd r0, r3, [r4, 8]");
0x0002e67c movs r0, 0 | r0 = 0;
0x0002e67e ldr r2, [pc, 0xd4] |
0x0002e680 ldr r3, [pc, 0xcc] | r3 = *(0x2e750);
0x0002e682 add r2, pc | r2 = 0x5cddc;
0x0002e684 ldr r3, [r2, r3] | r3 = imp.__aeabi_unwind_cpp_pr0;
0x0002e686 ldr r2, [r3] | r2 = imp.__aeabi_unwind_cpp_pr0;
0x0002e688 ldr r3, [sp, 0x84] | r3 = *(arg_84h);
0x0002e68a eors r2, r3 | r2 ^= r3;
0x0002e68c mov.w r3, 0 | r3 = 0;
| if (r2 == r3) {
0x0002e690 bne 0x2e746 |
0x0002e692 add sp, 0x8c |
0x0002e694 pop {r4, r5, pc} |
| }
0x0002e746 blx 0xe158 | fcn_0000e158 ();
0x0002e74a nop |
0x0002e74c bpl 0x2e670 |
| } while (r2 >= r3);
0x0002e74e movs r2, r0 | r2 = r0;
0x0002e750 lsls r4, r2, 0xe | r4 = r2 << 0xe;
0x0002e752 movs r0, r0 |
| if (r0 < r0) {
0x0002e754 bpl 0x2e804 |
0x0002e756 movs r2, r0 | r2 = r0;
0x0002e758 lsrs r4, r6, 0x1e | r4 = r6 >> 0x1e;
0x0002e75a movs r2, r0 | r2 = r0;
0x0002e75c strh r0, [r6, r7] | *((r6 + r7)) = r0;
0x0002e75e movs r2, r0 | r2 = r0;
0x0002e760 invalid |
| }
0x0002e804 orr r3, r3, 0x20 | r3 |= 0x20;
0x0002e808 str r3, [r4, 0x28] | *((r4 + 0x28)) = r3;
0x0002e80a bl 0x36860 | zbx_socket_strerror ();
0x0002e80e ldr r1, [pc, 0x18c] |
0x0002e810 mov r2, r0 | r2 = r0;
0x0002e812 mov r0, r5 | r0 = r5;
0x0002e814 add r1, pc | r1 = 0x5d1b6;
0x0002e816 bl 0x44820 | zbx_dsprintf ()
0x0002e818 invalid |
| do {
| label_6:
0x0002e81c mov r0, sb | r0 = sb;
0x0002e81e bl 0x3681c | zbx_tcp_close ();
0x0002e822 ldr r2, [pc, 0x17c] |
0x0002e824 add.w r1, sp, 0x15c0 | r1 += arg_15c0h;
0x0002e828 ldr r3, [pc, 0x160] | r3 = *(0x2e98c);
0x0002e82a adds r1, 4 | r1 += 4;
0x0002e82c add r2, pc | r2 = 0x5d1d2;
0x0002e82e ldr r3, [r2, r3] | r3 = imp.__aeabi_unwind_cpp_pr0;
0x0002e830 ldr r2, [r3] | r2 = imp.__aeabi_unwind_cpp_pr0;
0x0002e832 ldr r3, [r1] | r3 = *(r1);
0x0002e834 eors r2, r3 | r2 ^= r3;
0x0002e836 mov.w r3, 0 | r3 = 0;
| if (r2 != r3) {
0x0002e83a bne.w 0x2e982 | goto label_24;
| }
0x0002e83e add.w sp, sp, 0x15c0 |
0x0002e842 add sp, 8 |
0x0002e844 pop.w {r4, r5, r6, r7, r8, sb, sl, pc} |
| label_7:
0x0002e8fc add r7, pc | r7 += pc;
0x0002e8fe mov r1, r7 | r1 = r7;
0x0002e900 bl 0x3b3dc | zbx_json_value_by_name ();
0x0002e904 ldr r3, [r4, 0x28] | r3 = *((r4 + 0x28));
| if (r0 == 0) {
0x0002e906 cbz r0, 0x2e91e | goto label_25;
| }
0x0002e908 ldr r1, [pc, 0xb0] |
0x0002e90a orr r3, r3, 0x20 | r3 |= 0x20;
0x0002e90e mov r2, r7 | r2 = r7;
0x0002e910 mov r0, r5 | r0 = r5;
0x0002e912 str r3, [r4, 0x28] | *((r4 + 0x28)) = r3;
0x0002e914 add r1, pc | r1 = 0x5d2d4;
0x0002e916 bl 0x44820 | zbx_dsprintf ()
0x0002e918 vsubl.u8 q3, d3, d16 | __asm ("vsubl.u8 q3, d3, d16");
0x0002e91c b 0x2e81c |
| } while (1);
| label_25:
0x0002e91e ldr r1, [pc, 0xa0] |
0x0002e920 orr r3, r3, 0x20 | r3 |= 0x20;
0x0002e924 mov r2, r6 | r2 = r6;
0x0002e926 str r3, [r4, 0x28] | *((r4 + 0x28)) = r3;
0x0002e928 add r1, pc | r1 = 0x5d2ee;
0x0002e92a bl 0x44820 | zbx_dsprintf ()
0x0002e92e str r0, [r4, 0x20] | *((r4 + 0x20)) = r0;
0x0002e930 b 0x2e81c | goto label_6;
| label_24:
0x0002e982 blx 0xe158 | fcn_0000e158 ();
0x0002e986 nop |
| if (r0 < 0) {
0x0002e988 bmi 0x2ea0c | goto label_26;
| }
0x0002e98a movs r2, r0 | r2 = r0;
0x0002e98c lsls r4, r2, 0xe | r4 = r2 << 0xe;
0x0002e98e movs r0, r0 |
| if (r0 < r0) {
0x0002e990 bmi 0x2e9ec | goto label_27;
| }
0x0002e992 movs r2, r0 | r2 = r0;
0x0002e994 lsls r0, r0, 0xf | r0 <<= 0xf;
0x0002e996 movs r0, r0 |
0x0002e998 lsls r4, r4, 0xc | r4 <<= 0xc;
0x0002e99a movs r0, r0 |
0x0002e99c strh r4, [r3, r5] | *((r3 + r5)) = r4;
0x0002e99e movs r2, r0 | r2 = r0;
| if (r2 <= r0) {
0x0002e9a0 blo 0x2e8fc | goto label_7;
| }
0x0002e9a2 movs r2, r0 | r2 = r0;
0x0002e9a4 strh r0, [r0, r2] | *((r0 + r2)) = r0;
0x0002e9a6 movs r2, r0 | r2 = r0;
0x0002e9a8 strh r2, [r7, r2] | *((r7 + r2)) = r2;
0x0002e9aa movs r2, r0 | r2 = r0;
0x0002e9ac strh r4, [r4, r3] | *((r4 + r3)) = r4;
0x0002e9ae movs r2, r0 | r2 = r0;
0x0002e9b0 strh r0, [r1, r3] | *((r1 + r3)) = r0;
0x0002e9b2 movs r2, r0 | r2 = r0;
0x0002e9b4 invalid |
| label_8:
0x0002e9b8 sbcs r0, r4, 0x810000 | __asm ("sbcs r0, r4, 0x810000");
0x0002e9bc strh r4, [r0, r1] | *((r0 + r1)) = r4;
0x0002e9be movs r2, r0 | r2 = r0;
0x0002e9c0 strh r0, [r1, r1] | *((r1 + r1)) = r0;
0x0002e9c2 movs r2, r0 | r2 = r0;
0x0002e9c4 str r4, [r3, r7] | *((r3 + r7)) = r4;
0x0002e9c6 movs r2, r0 | r2 = r0;
0x0002e9c8 str r2, [r1, r7] | *((r1 + r7)) = r2;
0x0002e9ca movs r2, r0 | r2 = r0;
0x0002e9cc str r2, [r4, r7] | *((r4 + r7)) = r2;
0x0002e9ce movs r2, r0 | r2 = r0;
| label_27:
0x0002e9ec ldr r3, [r2, r3] | r3 = *((r2 + r3));
0x0002e9ee mov.w r1, 0x1000 | r1 = 0x1000;
0x0002e9f2 ldr r3, [r3] | r3 = *(r3);
0x0002e9f4 str r3, [r0] | *(r0) = r3;
0x0002e9f6 mov.w r3, 0 | r3 = 0;
0x0002e9fa mov r0, r4 | r0 = r4;
0x0002e9fc bl 0x3aae4 | zbx_json_init ();
0x0002ea00 ldr r2, [pc, 0x54] | r2 = *(0x2ea58);
0x0002ea02 movs r3, 1 | r3 = 1;
0x0002ea04 ldr r1, [pc, 0x54] | r1 = *(0x2ea5c);
0x0002ea06 mov r0, r4 | r0 = r4;
0x0002ea08 movs r0, r0 |
0x0002ea0a asrs r0, r0, 0x20 | r0 >>= 0x20;
| label_26:
0x0002ea0c bl 0x3ac9c | zbx_json_addstring ();
0x0002ea10 mov r3, r5 | r3 = r5;
0x0002ea12 mov r2, r7 | r2 = r7;
0x0002ea14 mov r1, r6 | r1 = r6;
0x0002ea16 mov r0, r4 | r0 = r4;
0x0002ea18 bl 0x2e780 | fcn_0002e780 (r0, r1, r2, r3);
0x0002ea1c mov r0, r4 | r0 = r4;
0x0002ea1e bl 0x3ac14 | zbx_json_free ();
0x0002ea22 ldr r2, [pc, 0x3c] |
0x0002ea24 add.w r1, sp, 0x1000 | r1 += arg_1000h;
0x0002ea28 ldr r3, [pc, 0x28] | r3 = *(0x2ea54);
0x0002ea2a adds r1, 0x1c | r1 += 0x1c;
0x0002ea2c ldr r0, [r5, 0x28] | r0 = *((r5 + 0x28));
0x0002ea2e add r2, pc | r2 = 0x5d494;
0x0002ea30 ldr r3, [r2, r3] | r3 = imp.__aeabi_unwind_cpp_pr0;
0x0002ea32 sbfx r0, r0, 5, 1 | __asm ("sbfx r0, r0, 5, 1");
0x0002ea36 ldr r2, [r3] | r2 = imp.__aeabi_unwind_cpp_pr0;
0x0002ea38 ldr r3, [r1] | r3 = *(r1);
0x0002ea3a eors r2, r3 | r2 ^= r3;
| do {
0x0002ea3c mov.w r3, 0 | r3 = 0;
| if (r2 == r3) {
0x0002ea40 bne 0x2ea4a |
0x0002ea42 add.w sp, sp, 0x1020 |
0x0002ea46 add sp, 4 |
0x0002ea48 pop {r4, r5, r6, r7, pc} |
| }
0x0002ea4a blx 0xe158 | fcn_0000e158 ();
0x0002ea4e nop |
0x0002ea50 bne 0x2ea3c |
| } while (r2 != r3);
0x0002ea52 movs r2, r0 | r2 = r0;
0x0002ea54 lsls r4, r2, 0xe | r4 = r2 << 0xe;
0x0002ea56 movs r0, r0 |
0x0002ea58 mov r0, lr | r0 = lr;
0x0002ea5a movs r2, r0 | r2 = r0;
0x0002ea5c adcs r0, sl, 1 | __asm ("adcs r0, sl, 1");
| if (r2 != r0) {
0x0002ea60 bne 0x2e9b8 | goto label_8;
| }
0x0002ea62 movs r2, r0 | r2 = r0;
| }
; assembly | /* r2dec pseudo code output */
| /* /logs/firmware/patool_extraction/rootfs.img_unblob_extracted/rootfs.img_extract/0-80367616.squashfs_v4_le_extract/usr/sbin/zabbix_agentd @ 0x2d7c0 */
| #include <stdint.h>
|
; (fcn) sym.VFS_FILE_MD5SUM () | void VFS_FILE_MD5SUM (int16_t arg_4000h, int16_t arg1, int16_t arg2) {
| int16_t var_6ch;
| int16_t var_70h;
| r0 = arg1;
| r1 = arg2;
| label_2:
0x0002bf0c ldr r2, [pc, 0x1c0] |
0x0002bf0e ldr r3, [pc, 0x1c4] | r3 = *(0x2c0d6);
0x0002bf10 push.w {r4, r5, r6, r7, r8, sb, sl, fp, lr} |
0x0002bf14 mov r8, r1 | r8 = r1;
0x0002bf16 add r2, pc | r2 = 0x57fea;
0x0002bf18 vpush {d8, d9} | __asm ("vpush {d8, d9}");
0x0002bf1c sub.w sp, sp, 0x4000 |
0x0002bf20 mov r4, r0 | r4 = r0;
0x0002bf22 ldr r3, [r2, r3] |
0x0002bf24 sub sp, 0x74 |
0x0002bf26 add.w r1, sp, 0x4000 | r1 += arg_4000h;
0x0002bf2a adds r1, 0x6c | r1 += 0x6c;
0x0002bf2c ldr r3, [r3] | r3 = *(0x57fea);
0x0002bf2e str r3, [r1] | *(r1) = r3;
0x0002bf30 mov.w r3, 0 | r3 = 0;
0x0002bf34 bl 0x3ffc0 | zbx_time ();
0x0002bf38 movs r1, 0 | r1 = 0;
0x0002bf3a mov r0, r4 | r0 = r4;
0x0002bf3c vmov.f64 d9, d0 | __asm ("vmov.f64 d9, d0");
0x0002bf40 blx 0xe030 | fcntl64 ();
0x0002bf44 ldr r3, [pc, 0x190] |
0x0002bf46 adds r2, r0, 1 | r2 = r0 + 1;
0x0002bf48 add r3, pc | r3 = 0x58024;
| if (r2 == r0) {
0x0002bf4a beq.w 0x2c080 | goto label_3;
| }
0x0002bf4e ldr r2, [pc, 0x18c] | r2 = *(0x2c0de);
0x0002bf50 mov r6, r0 | r6 = r0;
0x0002bf52 ldr r7, [r3, r2] | r7 = *((r3 + r2));
0x0002bf54 vldr s15, [r7] | __asm ("vldr s15, [r7]");
0x0002bf58 vcvt.f64.s32 d8, s15 | __asm ("vcvt.f64.s32 d8, s15");
0x0002bf5c bl 0x3ffc0 | zbx_time ();
0x0002bf60 vsub.f64 d0, d0, d9 | __asm ("vsub.f64 d0, d0, d9");
0x0002bf64 vcmpe.f64 d8, d0 | __asm ("vcmpe.f64 d8, d0");
0x0002bf68 vmrs apsr_nzcv, fpscr | __asm ("vmrs apsr_nzcv, fpscr");
| if (r2 < r0) {
0x0002bf6c bmi 0x2c00c | goto label_4;
| }
0x0002bf6e add.w sl, sp, 0x70 | sl += var_70h;
0x0002bf72 add r5, sp, 0x6c | r5 += var_6ch;
0x0002bf74 sub.w sb, sl, 0x6c | sb = sl - 0x6c;
0x0002bf78 mov r0, sb | r0 = sb;
0x0002bf7a bl 0x4a220 | zbx_md5_init ();
0x0002bf7e b 0x2bfa4 |
| while (r4 > r0) {
0x0002bf80 vldr s15, [r7] | __asm ("vldr s15, [r7]");
0x0002bf84 vcvt.f64.s32 d8, s15 | __asm ("vcvt.f64.s32 d8, s15");
0x0002bf88 bl 0x3ffc0 | zbx_time ();
0x0002bf8c vsub.f64 d0, d0, d9 | __asm ("vsub.f64 d0, d0, d9");
0x0002bf90 vcmpe.f64 d8, d0 | __asm ("vcmpe.f64 d8, d0");
0x0002bf94 vmrs apsr_nzcv, fpscr | __asm ("vmrs apsr_nzcv, fpscr");
| if (r2 < r0) {
0x0002bf98 bmi 0x2c060 | goto label_5;
| }
0x0002bf9a mov r2, r4 | r2 = r4;
0x0002bf9c mov r1, r5 | r1 = r5;
0x0002bf9e mov r0, sb | r0 = sb;
0x0002bfa0 bl 0x4a250 | zbx_md5_append ();
0x0002bfa4 mov.w r2, 0x4000 | r2 = 0x4000;
0x0002bfa8 mov r1, r5 | r1 = r5;
0x0002bfaa mov r0, r6 | r0 = r6;
0x0002bfac blx 0xde54 | r0 = fcn_0000de54 ();
0x0002bfb0 subs r4, r0, 0 | r4 = r0 - 0;
0x0002bfb2 bgt 0x2bf80 |
| }
0x0002bfb4 mov r0, sb | r0 = sb;
0x0002bfb6 sub.w r1, sl, 0x14 | r1 = sl - 0x14;
0x0002bfba bl 0x4a318 | zbx_md5_finish ();
0x0002bfbe cmp r4, 0 |
| if (r4 != 0) {
0x0002bfc0 bne 0x2c0aa | goto label_6;
| }
0x0002bfc2 ldr r0, [pc, 0x11c] |
0x0002bfc4 sub.w r7, sl, 0x15 | r7 = sl - 0x15;
0x0002bfc8 ldr.w sl, [pc, 0x118] |
0x0002bfcc movs r3, 0x21 | r3 = 0x21;
0x0002bfce mov r2, r4 | r2 = r4;
0x0002bfd0 movw r1, 0x2e9 | r1 = 0x2e9;
0x0002bfd4 add r0, pc | r0 = 0x580ba;
0x0002bfd6 movs r5, 0x21 | r5 = 0x21;
0x0002bfd8 bl 0x40dd8 | zbx_malloc2 ();
0x0002bfdc add sl, pc | sl = 0x580c4;
0x0002bfde mov fp, r0 |
0x0002bfe0 add.w sb, r0, r5 | sb = r0 + r5;
| do {
0x0002bfe4 mov r1, r5 | r1 = r5;
0x0002bfe6 sub.w r0, sb, r5 | r0 = sb - r5;
0x0002bfea ldrb r3, [r7, 1]! | r3 = *((r7 += 1));
0x0002bfee subs r5, 2 | r5 -= 2;
0x0002bff0 mov r2, sl | r2 = sl;
0x0002bff2 bl 0x43f38 | zbx_snprintf ();
0x0002bff6 cmp r5, 1 |
0x0002bff8 bne 0x2bfe4 |
| } while (r5 != 1);
0x0002bffa ldr.w r3, [r8, 0x28] | r3 = *((r8 + 0x28));
0x0002bffe str.w fp, [r8, 0x18] | __asm ("str.w fp, [r8, 0x18]");
0x0002c002 orr r3, r3, 4 | r3 |= 4;
0x0002c006 str.w r3, [r8, 0x28] | __asm ("str.w r3, [r8, 0x28]");
0x0002c00a b 0x2c030 | goto label_7;
| label_4:
0x0002c00c ldr.w r1, [r8, 0x28] | r1 = *((r8 + 0x28));
0x0002c010 movs r2, 0 | r2 = 0;
0x0002c012 ldr r3, [pc, 0xd4] |
0x0002c014 ldr r0, [pc, 0xd4] |
0x0002c016 orr r1, r1, 0x20 | r1 |= 0x20;
0x0002c01a str.w r1, [r8, 0x28] | __asm ("str.w r1, [r8, 0x28]");
0x0002c01e add r3, pc | r3 = 0x5810c;
0x0002c020 add r0, pc | r0 = 0x58110;
0x0002c022 movw r1, 0x2cd | r1 = 0x2cd;
0x0002c026 bl 0x40ed8 | zbx_strdup2 ();
| do {
| label_1:
0x0002c02a movs r4, 1 | r4 = 1;
0x0002c02c str.w r0, [r8, 0x20] | __asm ("str.w r0, [r8, 0x20]");
| label_7:
0x0002c030 mov r0, r6 | r0 = r6;
0x0002c032 blx 0xe0ac | fcn_0000e0ac ();
| label_0:
0x0002c036 ldr r2, [pc, 0xb8] |
0x0002c038 add.w r1, sp, 0x4000 | r1 += arg_4000h;
0x0002c03c ldr r3, [pc, 0x94] | r3 = *(0x2c0d4);
0x0002c03e adds r1, 0x6c | r1 += 0x6c;
0x0002c040 add r2, pc | r2 = 0x58136;
0x0002c042 ldr r3, [r2, r3] | r3 = imp.__aeabi_unwind_cpp_pr0;
0x0002c044 ldr r2, [r3] | r2 = imp.__aeabi_unwind_cpp_pr0;
0x0002c046 ldr r3, [r1] | r3 = *(r1);
0x0002c048 eors r2, r3 | r2 ^= r3;
0x0002c04a mov.w r3, 0 | r3 = 0;
| if (r2 != r3) {
0x0002c04e bne 0x2c0ca | goto label_8;
| }
0x0002c050 mov r0, r4 | r0 = r4;
0x0002c052 add.w sp, sp, 0x4000 |
0x0002c056 add sp, 0x74 |
0x0002c058 vpop {d8, d9} | __asm ("vpop {d8, d9}");
0x0002c05c pop.w {r4, r5, r6, r7, r8, sb, sl, fp, pc} |
| label_5:
0x0002c060 ldr.w r1, [r8, 0x28] | r1 = *((r8 + 0x28));
0x0002c064 movs r2, 0 | r2 = 0;
0x0002c066 ldr r3, [pc, 0x8c] |
0x0002c068 ldr r0, [pc, 0x8c] |
0x0002c06a orr r1, r1, 0x20 | r1 |= 0x20;
0x0002c06e str.w r1, [r8, 0x28] | __asm ("str.w r1, [r8, 0x28]");
0x0002c072 add r3, pc | r3 = 0x5816c;
0x0002c074 movw r1, 0x2d7 | r1 = 0x2d7;
0x0002c078 add r0, pc | r0 = 0x58174;
0x0002c07a bl 0x40ed8 | zbx_strdup2 ();
0x0002c07e b 0x2c02a |
| } while (1);
| label_3:
0x0002c080 ldr.w r3, [r8, 0x28] | r3 = *((r8 + 0x28));
0x0002c084 movs r4, 1 | r4 = 1;
0x0002c086 orr r3, r3, 0x20 | r3 |= 0x20;
0x0002c08a str.w r3, [r8, 0x28] | __asm ("str.w r3, [r8, 0x28]");
0x0002c08e blx 0xe3d4 | r0 = fcn_0000e3d4 ();
0x0002c092 ldr r0, [r0] | r0 = *(r0);
0x0002c094 bl 0x30b74 | zbx_strerror ();
0x0002c098 ldr r1, [pc, 0x60] |
0x0002c09a mov r2, r0 | r2 = r0;
0x0002c09c movs r0, 0 | r0 = 0;
0x0002c09e add r1, pc | r1 = 0x5819e;
0x0002c0a0 bl 0x44820 | zbx_dsprintf ()
0x0002c0a4 str.w r0, [r8, 0x20] | __asm ("str.w r0, [r8, 0x20]");
0x0002c0a8 b 0x2c036 | goto label_0;
| label_6:
0x0002c0aa ldr.w r1, [r8, 0x28] | r1 = *((r8 + 0x28));
0x0002c0ae movs r2, 0 | r2 = 0;
0x0002c0b0 ldr r3, [pc, 0x4c] |
0x0002c0b2 ldr r0, [pc, 0x50] |
0x0002c0b4 orr r1, r1, 0x20 | r1 |= 0x20;
0x0002c0b8 str.w r1, [r8, 0x28] | __asm ("str.w r1, [r8, 0x28]");
0x0002c0bc add r3, pc | r3 = 0x581c0;
0x0002c0be movw r1, 0x2e2 | r1 = 0x2e2;
0x0002c0c2 add r0, pc | r0 = 0x581cc;
0x0002c0c4 bl 0x40ed8 | zbx_strdup2 ();
0x0002c0c8 b 0x2c02a | goto label_1;
| label_8:
0x0002c0ca blx 0xe158 | fcn_0000e158 ();
0x0002c0ce nop |
0x0002c0d0 stc2l p0, c0, [r2], {2} | __asm ("stc2l p0, c0, [r2], {2}");
0x0002c0d4 lsls r4, r2, 0xe | r4 = r2 << 0xe;
0x0002c0d6 movs r0, r0 |
0x0002c0d8 ldc2 p0, c0, [r0], {2} | __asm ("ldc2 p0, c0, [r0], {2}");
0x0002c0dc lsls r4, r4, 0xc | r4 <<= 0xc;
0x0002c0de movs r0, r0 |
0x0002c0e0 strb r4, [r5, 0x13] | *((r5 + 0x13)) = r4;
0x0002c0e2 movs r2, r0 | r2 = r0;
0x0002c0e4 strb r4, [r5, 0x13] | *((r5 + 0x13)) = r4;
0x0002c0e6 movs r2, r0 | r2 = r0;
0x0002c0e8 strb r2, [r0, 0x12] | *((r0 + 0x12)) = r2;
0x0002c0ea movs r2, r0 | r2 = r0;
0x0002c0ec strb r0, [r4, 0x12] | *((r4 + 0x12)) = r0;
0x0002c0ee movs r2, r0 | r2 = r0;
0x0002c0f0 invalid |
0x0002d7c0 ldr r3, [r0, 4] | r3 = *((r0 + 4));
0x0002d7c2 push {r4, lr} |
0x0002d7c4 mov r4, r1 | r4 = r1;
0x0002d7c6 cmp r3, 1 |
| if (r3 <= 1) {
0x0002d7c8 bgt 0x2d7f6 |
| if (r3 == 1) {
0x0002d7ca bne 0x2d7d6 |
0x0002d7cc ldr r3, [r0, 8] | r3 = *((r0 + 8));
0x0002d7ce ldr r0, [r3] | r0 = *(r3);
| if (r0 == 0) {
0x0002d7d0 cbz r0, 0x2d7d6 | goto label_9;
| }
0x0002d7d2 ldrb r3, [r0] | r3 = *(r0);
| if (r3 != 0) {
0x0002d7d4 cbnz r3, 0x2d816 | goto label_10;
| }
| }
| label_9:
0x0002d7d6 ldr r0, [r4, 0x28] | r0 = *((r4 + 0x28));
0x0002d7d8 movs r2, 0 | r2 = 0;
0x0002d7da ldr r3, [pc, 0x44] |
0x0002d7dc movw r1, 0x306 | r1 = 0x306;
0x0002d7e0 orr r0, r0, 0x20 | r0 |= 0x20;
0x0002d7e4 str r0, [r4, 0x28] | *((r4 + 0x28)) = r0;
0x0002d7e6 add r3, pc | r3 = 0x5b00c;
0x0002d7e8 ldr r0, [pc, 0x38] |
0x0002d7ea add r0, pc | r0 = 0x5b012;
0x0002d7ec bl 0x40ed8 | zbx_strdup2 ();
0x0002d7f0 str r0, [r4, 0x20] | *((r4 + 0x20)) = r0;
0x0002d7f2 movs r0, 1 | r0 = 1;
0x0002d7f4 pop {r4, pc} |
| }
0x0002d7f6 ldr r0, [r1, 0x28] | r0 = *((r1 + 0x28));
0x0002d7f8 movs r2, 0 | r2 = 0;
0x0002d7fa ldr r3, [pc, 0x2c] |
0x0002d7fc movw r1, 0x2fe | r1 = 0x2fe;
0x0002d800 orr r0, r0, 0x20 | r0 |= 0x20;
0x0002d804 str r0, [r4, 0x28] | *((r4 + 0x28)) = r0;
0x0002d806 add r3, pc | r3 = 0x5b034;
0x0002d808 ldr r0, [pc, 0x20] |
0x0002d80a add r0, pc | r0 = 0x5b03a;
0x0002d80c bl 0x40ed8 | zbx_strdup2 ();
0x0002d810 str r0, [r4, 0x20] | *((r4 + 0x20)) = r0;
0x0002d812 movs r0, 1 | r0 = 1;
0x0002d814 pop {r4, pc} |
| label_10:
0x0002d816 pop.w {r4, lr} |
0x0002d81a b.w 0x2bf0c | goto label_2;
| }
; assembly | /* r2dec pseudo code output */
| /* /logs/firmware/patool_extraction/rootfs.img_unblob_extracted/rootfs.img_extract/0-80367616.squashfs_v4_le_extract/usr/sbin/zabbix_agentd @ 0x2d924 */
| #include <stdint.h>
|
; (fcn) sym.VFS_FILE_OWNER () | void VFS_FILE_OWNER (int16_t arg_98h, int16_t arg_d4h, int16_t arg_ech, int16_t arg1, int16_t arg2) {
| int16_t var_0h;
| int16_t var_4h;
| int16_t var_18h;
| int16_t var_1ch;
| int16_t var_20h;
| int32_t var_20h_2;
| int16_t var_28h;
| int32_t var_28h_2;
| int16_t var_30h;
| int32_t var_30h_2;
| int16_t var_3ch;
| int16_t var_6ch;
| int16_t var_78h;
| int16_t var_80h;
| int16_t var_84h;
| r0 = arg1;
| r1 = arg2;
0x0002d924 ldr r2, [pc, 0x21c] |
0x0002d926 ldr r3, [pc, 0x220] | r3 = *(0x2db4a);
0x0002d928 push {r4, r5, r6, r7, lr} |
0x0002d92a sub sp, 0x74 |
0x0002d92c add r2, pc | r2 = 0x5b474;
0x0002d92e mov r4, r1 | r4 = r1;
0x0002d930 ldr r3, [r2, r3] |
0x0002d932 ldr r3, [r3] | r3 = *(0x5b474);
0x0002d934 str r3, [sp, 0x6c] | var_6ch = r3;
0x0002d936 mov.w r3, 0 | r3 = 0;
0x0002d93a ldr r3, [r0, 4] | r3 = *((r0 + 4));
0x0002d93c cmp r3, 3 |
| if (r3 > 3) {
0x0002d93e bgt 0x2d9ec | goto label_13;
| }
0x0002d940 cmp r3, 0 |
| if (r3 > 0) {
0x0002d942 ble 0x2d9b2 |
0x0002d944 ldr r2, [r0, 8] | r2 = *((r0 + 8));
0x0002d946 cmp r3, 1 |
0x0002d948 ldr r0, [r2] | r0 = *(r2);
| if (r3 == 1) {
0x0002d94a beq.w 0x2da8c | goto label_14;
| }
0x0002d94e cmp r3, 3 |
0x0002d950 ldr r6, [r2, 4] | r6 = *((r2 + 4));
0x0002d952 it ne |
| if (r3 == 3) {
0x0002d954 movne r7, 0 | r7 = 0;
| }
| if (r3 == 3) {
0x0002d956 bne 0x2d95a |
0x0002d958 ldr r7, [r2, 8] | r7 = *((r2 + 8));
| }
| if (r0 == 0) {
| label_2:
0x0002d95a cbz r0, 0x2d9b2 | goto label_15;
| }
0x0002d95c ldrb r3, [r0] | r3 = *(r0);
| if (r3 == 0) {
0x0002d95e cbz r3, 0x2d9b2 | goto label_15;
| }
0x0002d960 mov r1, sp | r1 = sp;
0x0002d962 blx 0xe1c4 | r0 = fcn_0000e1c4 ();
0x0002d966 mov r5, r0 | r5 = r0;
0x0002d968 cmp r0, 0 |
| if (r0 != 0) {
0x0002d96a bne 0x2da6c | goto label_16;
| }
| if (r6 != 0) {
0x0002d96c cbz r6, 0x2d984 |
0x0002d96e ldr r1, [pc, 0x1dc] |
0x0002d970 mov r0, r6 | r0 = r6;
0x0002d972 add r1, pc | r1 = 0x5b4c4;
0x0002d974 blx 0xe3b0 | r0 = fcn_0000e3b0 ();
0x0002d978 cmp r0, 0 |
| if (r0 == 0) {
0x0002d97a beq 0x2da38 | goto label_17;
| }
0x0002d97c ldrb r3, [r6] | r3 = *(r6);
0x0002d97e cmp r3, 0 |
| if (r3 != 0) {
0x0002d980 bne.w 0x2dab8 | goto label_18;
| }
| }
| label_3:
0x0002d984 cmp r7, 0 |
| if (r7 == 0) {
0x0002d986 beq 0x2da0e | goto label_6;
| }
0x0002d988 ldrb r3, [r7] | r3 = *(r7);
0x0002d98a cmp r3, 0x69 |
| if (r3 != 0x69) {
0x0002d98c bne 0x2da08 | goto label_19;
| }
0x0002d98e ldrb r3, [r7, 1] | r3 = *((r7 + 1));
0x0002d990 cmp r3, 0x64 |
| if (r3 != 0x64) {
0x0002d992 bne 0x2da08 | goto label_19;
| }
0x0002d994 ldrb r3, [r7, 2] | r3 = *((r7 + 2));
0x0002d996 cmp r3, 0 |
| if (r3 != 0) {
0x0002d998 bne 0x2da08 | goto label_19;
| }
0x0002d99a ldr r1, [r4, 0x28] | r1 = *((r4 + 0x28));
0x0002d99c movs r3, 0 | r3 = 0;
0x0002d99e ldr r2, [sp, 0x18] | r2 = var_18h;
0x0002d9a0 mov r0, r3 | r0 = r3;
0x0002d9a2 orr r1, r1, 4 | r1 |= 4;
0x0002d9a6 str r1, [r4, 0x28] | *((r4 + 0x28)) = r1;
0x0002d9a8 ldr r1, [pc, 0x1a4] |
0x0002d9aa add r1, pc | r1 = 0x5b4fe;
0x0002d9ac bl 0x44820 | zbx_dsprintf ()
0x0002d9b0 b 0x2da34 | goto label_5;
| }
| label_15:
0x0002d9b2 ldr r0, [r4, 0x28] | r0 = *((r4 + 0x28));
0x0002d9b4 movs r2, 0 | r2 = 0;
0x0002d9b6 ldr r3, [pc, 0x19c] |
0x0002d9b8 movw r1, 0x45e | r1 = 0x45e;
0x0002d9bc orr r0, r0, 0x20 | r0 |= 0x20;
0x0002d9c0 str r0, [r4, 0x28] | *((r4 + 0x28)) = r0;
0x0002d9c2 add r3, pc | r3 = 0x5b51c;
0x0002d9c4 ldr r0, [pc, 0x190] |
0x0002d9c6 add r0, pc | r0 = 0x5b522;
0x0002d9c8 bl 0x40ed8 | zbx_strdup2 ();
| do {
| label_1:
0x0002d9cc movs r5, 1 | r5 = 1;
0x0002d9ce str r0, [r4, 0x20] | *((r4 + 0x20)) = r0;
| label_0:
0x0002d9d0 ldr r2, [pc, 0x188] |
0x0002d9d2 ldr r3, [pc, 0x174] | r3 = *(0x2db4a);
0x0002d9d4 add r2, pc | r2 = 0x5b534;
0x0002d9d6 ldr r3, [r2, r3] | r3 = *(0x5b534);
0x0002d9d8 ldr r2, [r3] | r2 = *(0x5b534);
0x0002d9da ldr r3, [sp, 0x6c] | r3 = var_6ch;
0x0002d9dc eors r2, r3 | r2 ^= r3;
0x0002d9de mov.w r3, 0 | r3 = 0;
| if (r2 != r3) {
0x0002d9e2 bne.w 0x2db40 | goto label_20;
| }
0x0002d9e6 mov r0, r5 | r0 = r5;
0x0002d9e8 add sp, 0x74 |
0x0002d9ea pop {r4, r5, r6, r7, pc} |
| label_13:
0x0002d9ec ldr r0, [r1, 0x28] | r0 = *((r1 + 0x28));
0x0002d9ee movs r2, 0 | r2 = 0;
0x0002d9f0 ldr r3, [pc, 0x16c] |
0x0002d9f2 movw r1, 0x454 | r1 = 0x454;
0x0002d9f6 orr r0, r0, 0x20 | r0 |= 0x20;
0x0002d9fa str r0, [r4, 0x28] | *((r4 + 0x28)) = r0;
0x0002d9fc add r3, pc | r3 = 0x5b560;
0x0002d9fe ldr r0, [pc, 0x164] |
0x0002da00 add r0, pc | r0 = 0x5b56a;
0x0002da02 bl 0x40ed8 | zbx_strdup2 ();
0x0002da06 b 0x2d9cc |
| } while (1);
| label_19:
0x0002da08 ldrb r3, [r7] | r3 = *(r7);
0x0002da0a cmp r3, 0 |
| if (r3 != 0) {
0x0002da0c bne 0x2db06 | goto label_21;
| }
| label_6:
0x0002da0e ldr r0, [sp, 0x18] | r0 = var_18h;
0x0002da10 blx 0xdf9c | r0 = fcn_0000df9c ();
0x0002da14 mov r3, r0 | r3 = r0;
0x0002da16 cmp r0, 0 |
| if (r0 == 0) {
0x0002da18 beq.w 0x2db2c | goto label_22;
| }
0x0002da1c ldr r1, [r4, 0x28] | r1 = *((r4 + 0x28));
0x0002da1e movs r2, 0 | r2 = 0;
0x0002da20 ldr r3, [r0] | r3 = *(r0);
0x0002da22 ldr r0, [pc, 0x144] |
0x0002da24 orr r1, r1, 4 | r1 |= 4;
0x0002da28 str r1, [r4, 0x28] | *((r4 + 0x28)) = r1;
0x0002da2a movw r1, 0x48f | r1 = 0x48f;
0x0002da2e add r0, pc | r0 = 0x5b59c;
0x0002da30 bl 0x40ed8 | zbx_strdup2 ();
| do {
| label_5:
0x0002da34 str r0, [r4, 0x18] | *((r4 + 0x18)) = r0;
0x0002da36 b 0x2d9d0 | goto label_0;
| if (r7 != 0) {
| label_17:
0x0002da38 cbz r7, 0x2da92 |
0x0002da3a ldrb r3, [r7] | r3 = *(r7);
0x0002da3c cmp r3, 0x69 |
| if (r3 == 0x69) {
0x0002da3e beq 0x2dae4 | goto label_23;
| }
| label_4:
0x0002da40 ldrb r3, [r7] | r3 = *(r7);
| if (r3 == 0) {
0x0002da42 cbz r3, 0x2da92 | goto label_24;
| }
0x0002da44 ldr r1, [pc, 0x124] |
0x0002da46 mov r0, r7 | r0 = r7;
0x0002da48 add r1, pc | r1 = 0x5b5b8;
0x0002da4a blx 0xe3b0 | r0 = fcn_0000e3b0 ();
| if (r0 == 0) {
0x0002da4e cbz r0, 0x2da92 | goto label_24;
| }
| label_7:
0x0002da50 ldr r0, [r4, 0x28] | r0 = *((r4 + 0x28));
0x0002da52 movs r2, 0 | r2 = 0;
0x0002da54 ldr r3, [pc, 0x118] |
0x0002da56 movw r1, 0x494 | r1 = 0x494;
0x0002da5a orr r0, r0, 0x20 | r0 |= 0x20;
0x0002da5e str r0, [r4, 0x28] | *((r4 + 0x28)) = r0;
0x0002da60 add r3, pc | r3 = 0x5b5d4;
0x0002da62 ldr r0, [pc, 0x110] |
0x0002da64 add r0, pc | r0 = 0x5b5de;
0x0002da66 bl 0x40ed8 | zbx_strdup2 ();
0x0002da6a b 0x2d9cc | goto label_1;
| label_16:
0x0002da6c ldr r3, [r4, 0x28] | r3 = *((r4 + 0x28));
0x0002da6e orr r3, r3, 0x20 | r3 |= 0x20;
0x0002da72 str r3, [r4, 0x28] | *((r4 + 0x28)) = r3;
0x0002da74 blx 0xe3d4 | r0 = fcn_0000e3d4 ();
0x0002da78 ldr r0, [r0] | r0 = *(r0);
0x0002da7a bl 0x30b74 | zbx_strerror ();
0x0002da7e ldr r1, [pc, 0xf8] |
0x0002da80 mov r2, r0 | r2 = r0;
0x0002da82 movs r0, 0 | r0 = 0;
0x0002da84 add r1, pc | r1 = 0x5b602;
0x0002da86 bl 0x44820 | zbx_dsprintf ()
0x0002da8a b 0x2d9cc | goto label_1;
| label_14:
0x0002da8c movs r6, 0 | r6 = 0;
0x0002da8e mov r7, r6 | r7 = r6;
0x0002da90 b 0x2d95a | goto label_2;
| }
| label_24:
0x0002da92 ldr r0, [sp, 0x1c] | r0 = var_1ch;
0x0002da94 blx 0xe1b8 | r0 = fcn_0000e1b8 ();
0x0002da98 mov r3, r0 | r3 = r0;
0x0002da9a cmp r0, 0 |
| if (r0 == 0) {
0x0002da9c beq 0x2db18 | goto label_25;
| }
0x0002da9e ldr r1, [r4, 0x28] | r1 = *((r4 + 0x28));
0x0002daa0 movs r2, 0 | r2 = 0;
0x0002daa2 ldr r3, [r0] | r3 = *(r0);
0x0002daa4 ldr r0, [pc, 0xd4] |
0x0002daa6 orr r1, r1, 4 | r1 |= 4;
0x0002daaa str r1, [r4, 0x28] | *((r4 + 0x28)) = r1;
0x0002daac movw r1, 0x486 | r1 = 0x486;
0x0002dab0 add r0, pc | r0 = 0x5b630;
0x0002dab2 bl 0x40ed8 | zbx_strdup2 ();
0x0002dab6 b 0x2da34 |
| } while (1);
| label_18:
0x0002dab8 ldr r1, [pc, 0xc4] |
0x0002daba mov r0, r6 | r0 = r6;
0x0002dabc add r1, pc | r1 = 0x5b640;
0x0002dabe blx 0xe3b0 | r0 = fcn_0000e3b0 ();
0x0002dac2 cmp r0, 0 |
| if (r0 == 0) {
0x0002dac4 beq.w 0x2d984 | goto label_3;
| }
0x0002dac8 ldr r0, [r4, 0x28] | r0 = *((r4 + 0x28));
0x0002daca mov r2, r5 | r2 = r5;
0x0002dacc ldr r3, [pc, 0xb4] |
0x0002dace movw r1, 0x472 | r1 = 0x472;
0x0002dad2 orr r0, r0, 0x20 | r0 |= 0x20;
0x0002dad6 str r0, [r4, 0x28] | *((r4 + 0x28)) = r0;
0x0002dad8 add r3, pc | r3 = 0x5b660;
0x0002dada ldr r0, [pc, 0xac] |
0x0002dadc add r0, pc | r0 = 0x5b66a;
0x0002dade bl 0x40ed8 | zbx_strdup2 ();
0x0002dae2 b 0x2d9cc | goto label_1;
| label_23:
0x0002dae4 ldrb r3, [r7, 1] | r3 = *((r7 + 1));
0x0002dae6 cmp r3, 0x64 |
| if (r3 != 0x64) {
0x0002dae8 bne 0x2da40 | goto label_4;
| }
0x0002daea ldrb r3, [r7, 2] | r3 = *((r7 + 2));
0x0002daec cmp r3, 0 |
| if (r3 != 0) {
0x0002daee bne 0x2da40 | goto label_4;
| }
0x0002daf0 ldr r3, [r4, 0x28] | r3 = *((r4 + 0x28));
0x0002daf2 ldr r1, [pc, 0x98] |
0x0002daf4 ldr r2, [sp, 0x1c] | r2 = var_1ch;
0x0002daf6 orr r3, r3, 4 | r3 |= 4;
0x0002dafa str r3, [r4, 0x28] | *((r4 + 0x28)) = r3;
0x0002dafc add r1, pc | r1 = 0x5b68e;
0x0002dafe mov r3, r5 | r3 = r5;
0x0002db00 bl 0x44820 | zbx_dsprintf ()
0x0002db04 b 0x2da34 | goto label_5;
| label_21:
0x0002db06 ldr r1, [pc, 0x88] |
0x0002db08 mov r0, r7 | r0 = r7;
0x0002db0a add r1, pc | r1 = 0x5b6a0;
0x0002db0c blx 0xe3b0 | r0 = fcn_0000e3b0 ();
0x0002db10 cmp r0, 0 |
| if (r0 == 0) {
0x0002db12 beq.w 0x2da0e | goto label_6;
| }
0x0002db16 b 0x2da50 | goto label_7;
| label_25:
0x0002db18 ldr r2, [r4, 0x28] | r2 = *((r4 + 0x28));
0x0002db1a ldr r1, [pc, 0x78] |
0x0002db1c orr r2, r2, 4 | r2 |= 4;
0x0002db20 str r2, [r4, 0x28] | *((r4 + 0x28)) = r2;
0x0002db22 add r1, pc | r1 = 0x5b6bc;
0x0002db24 ldr r2, [sp, 0x1c] | r2 = var_1ch;
0x0002db26 bl 0x44820 | zbx_dsprintf ()
0x0002db2a b 0x2da34 | goto label_5;
| label_22:
0x0002db2c ldr r2, [r4, 0x28] | r2 = *((r4 + 0x28));
0x0002db2e ldr r1, [pc, 0x68] |
0x0002db30 orr r2, r2, 4 | r2 |= 4;
0x0002db34 str r2, [r4, 0x28] | *((r4 + 0x28)) = r2;
0x0002db36 add r1, pc | r1 = 0x5b6d4;
0x0002db38 ldr r2, [sp, 0x18] | r2 = var_18h;
0x0002db3a bl 0x44820 | zbx_dsprintf ()
0x0002db3e b 0x2da34 | goto label_5;
| label_20:
0x0002db40 blx 0xe158 | fcn_0000e158 ();
0x0002db44 b 0x2e0a0 | goto label_26;
| label_12:
0x0002ddb8 ldr r2, [sp, 0x78] | r2 = var_78h;
0x0002ddba movs r0, 0 | r0 = 0;
0x0002ddbc ldr r1, [pc, 0x3dc] |
0x0002ddbe and r3, r2, 7 | r3 = r2 & 7;
0x0002ddc2 str r3, [sp, 4] | var_4h = r3;
0x0002ddc4 ubfx r3, r2, 3, 3 | r3 = (r2 >> 3) & ((1 << 3) - 1);
0x0002ddc8 add r1, pc | r1 = 0x5bf68;
0x0002ddca str r3, [sp] | *(sp) = r3;
0x0002ddcc ubfx r3, r2, 6, 3 | r3 = (r2 >> 6) & ((1 << 3) - 1);
0x0002ddd0 ubfx r2, r2, 9, 3 | r2 = (r2 >> 9) & ((1 << 3) - 1);
0x0002ddd4 bl 0x44820 | zbx_dsprintf ()
0x0002ddd8 ldr r1, [pc, 0x3c4] |
0x0002ddda mov r7, r0 | r7 = r0;
0x0002dddc mov r2, r0 | r2 = r0;
0x0002ddde movs r3, 1 | r3 = 1;
0x0002dde0 mov r0, r4 | r0 = r4;
0x0002dde2 add r1, pc | r1 = 0x5bf86;
0x0002dde4 bl 0x3ac9c | zbx_json_addstring ();
| if (r7 != 0) {
0x0002dde8 cbz r7, 0x2ddf0 |
0x0002ddea mov r0, r7 | r0 = r7;
0x0002ddec blx 0xde30 | fcn_0000de30 ();
| }
0x0002ddf0 ldr r1, [pc, 0x3b0] |
0x0002ddf2 movs r3, 0 | r3 = 0;
0x0002ddf4 ldr r2, [sp, 0x80] | r2 = var_80h;
0x0002ddf6 mov r0, r4 | r0 = r4;
0x0002ddf8 add r1, pc | r1 = 0x5bfa0;
0x0002ddfa bl 0x3ae40 | zbx_json_adduint64 ();
0x0002ddfe ldr r1, [pc, 0x3a8] |
0x0002de00 movs r3, 0 | r3 = 0;
0x0002de02 ldr r2, [sp, 0x84] | r2 = var_84h;
0x0002de04 mov r0, r4 | r0 = r4;
0x0002de06 add r1, pc | r1 = 0x5bfb4;
0x0002de08 bl 0x3ae40 | zbx_json_adduint64 ();
0x0002de0c ldr r1, [pc, 0x39c] |
0x0002de0e mov r0, r4 | r0 = r4;
0x0002de10 ldrd r2, r3, [sp, 0x98] | __asm ("ldrd r2, r3, [arg_98h]");
0x0002de14 add r1, pc | r1 = 0x5bfc4;
0x0002de16 bl 0x3ae40 | zbx_json_adduint64 ();
0x0002de1a ldr r1, [pc, 0x394] |
0x0002de1c mov r0, r4 | r0 = r4;
0x0002de1e add r1, pc | r1 = 0x5bfd4;
0x0002de20 bl 0x3ac94 | zbx_json_addobject ();
0x0002de24 ldrd r2, r3, [sp, 0x28] | __asm ("ldrd r2, r3, [var_28h]");
0x0002de28 cmp r2, 1 |
0x0002de2a sbcs r3, r3, 0 | __asm ("sbcs r3, r3, 0");
| if (r2 < 1) {
0x0002de2e blt.w 0x2e018 | goto label_27;
| }
0x0002de32 ldr r0, [pc, 0x380] |
0x0002de34 movs r3, 0x1a | r3 = 0x1a;
0x0002de36 movw r1, 0x4d5 | r1 = 0x4d5;
0x0002de3a add.w r8, sp, 0x3c | r8 += var_3ch;
0x0002de3e str r2, [sp, 0x1c] | var_1ch = r2;
0x0002de40 movs r2, 0 | r2 = 0;
0x0002de42 add r0, pc | r0 = 0x5bffc;
0x0002de44 bl 0x40dd8 | zbx_malloc2 ();
0x0002de48 mov r1, r8 | r1 = r8;
0x0002de4a mov r7, r0 | r7 = r0;
0x0002de4c add r0, sp, 0x1c | r0 += var_1ch;
0x0002de4e blx 0xdb9c | fcn_0000db9c ();
0x0002de52 ldr r2, [pc, 0x364] |
0x0002de54 mov r3, r8 | r3 = r8;
0x0002de56 movs r1, 0x1a | r1 = 0x1a;
0x0002de58 mov r0, r7 | r0 = r7;
0x0002de5a add r2, pc | r2 = 0x5c018;
0x0002de5c blx 0xe214 | fcn_0000e214 ();
0x0002de60 ldr r1, [pc, 0x358] |
0x0002de62 movs r3, 1 | r3 = 1;
0x0002de64 mov r2, r7 | r2 = r7;
0x0002de66 mov r0, r4 | r0 = r4;
0x0002de68 add r1, pc | r1 = CONFIG_REFRESH_ACTIVE_CHECKS;
0x0002de6a bl 0x3ac9c | zbx_json_addstring ();
| if (r7 != 0) {
0x0002de6e cbz r7, 0x2de76 |
0x0002de70 mov r0, r7 | r0 = r7;
0x0002de72 blx 0xde30 | fcn_0000de30 ();
| }
| label_9:
0x0002de76 ldrd r2, r3, [sp, 0x20] | __asm ("ldrd r2, r3, [var_20h]");
0x0002de7a cmp r2, 1 |
0x0002de7c sbcs r3, r3, 0 | __asm ("sbcs r3, r3, 0");
| if (r2 < 1) {
0x0002de80 blt.w 0x2dfec | goto label_28;
| }
0x0002de84 ldr r0, [pc, 0x338] |
0x0002de86 movs r3, 0x1a | r3 = 0x1a;
0x0002de88 movw r1, 0x4d5 | r1 = 0x4d5;
0x0002de8c add.w r8, sp, 0x3c | r8 += var_3ch;
0x0002de90 str r2, [sp, 0x1c] | var_1ch = r2;
0x0002de92 movs r2, 0 | r2 = 0;
0x0002de94 add r0, pc | r0 = 0x5c058;
0x0002de96 bl 0x40dd8 | zbx_malloc2 ();
0x0002de9a mov r1, r8 | r1 = r8;
0x0002de9c mov r7, r0 | r7 = r0;
0x0002de9e add r0, sp, 0x1c | r0 += var_1ch;
0x0002dea0 blx 0xdb9c | fcn_0000db9c ();
0x0002dea4 ldr r2, [pc, 0x31c] |
0x0002dea6 mov r3, r8 | r3 = r8;
0x0002dea8 movs r1, 0x1a | r1 = 0x1a;
0x0002deaa mov r0, r7 | r0 = r7;
0x0002deac add r2, pc | r2 = 0x5c074;
0x0002deae blx 0xe214 | fcn_0000e214 ();
0x0002deb2 ldr r1, [pc, 0x314] |
0x0002deb4 movs r3, 1 | r3 = 1;
0x0002deb6 mov r2, r7 | r2 = r7;
0x0002deb8 mov r0, r4 | r0 = r4;
0x0002deba add r1, pc | r1 = 0x5c088;
0x0002debc bl 0x3ac9c | zbx_json_addstring ();
| if (r7 != 0) {
0x0002dec0 cbz r7, 0x2dec8 |
0x0002dec2 mov r0, r7 | r0 = r7;
0x0002dec4 blx 0xde30 | fcn_0000de30 ();
| }
0x0002dec8 ldrd r2, r3, [sp, 0x30] | __asm ("ldrd r2, r3, [var_30h]");
0x0002decc cmp r2, 1 |
0x0002dece sbcs r3, r3, 0 | __asm ("sbcs r3, r3, 0");
| if (r2 < 1) {
0x0002ded2 blt.w 0x2e008 | goto label_29;
| }
| do {
0x0002ded6 ldr r0, [pc, 0x2f4] |
0x0002ded8 movs r3, 0x1a | r3 = 0x1a;
0x0002deda movw r1, 0x4d5 | r1 = 0x4d5;
0x0002dede add.w r8, sp, 0x3c | r8 += var_3ch;
0x0002dee2 str r2, [sp, 0x1c] | var_1ch = r2;
0x0002dee4 movs r2, 0 | r2 = 0;
0x0002dee6 add r0, pc | r0 = 0x5c0b8;
0x0002dee8 bl 0x40dd8 | zbx_malloc2 ();
0x0002deec mov r1, r8 | r1 = r8;
0x0002deee mov r7, r0 | r7 = r0;
0x0002def0 add r0, sp, 0x1c | r0 += var_1ch;
0x0002def2 blx 0xdb9c | fcn_0000db9c ();
0x0002def6 ldr r2, [pc, 0x2d8] |
0x0002def8 mov r3, r8 | r3 = r8;
0x0002defa movs r1, 0x1a | r1 = 0x1a;
0x0002defc mov r0, r7 | r0 = r7;
0x0002defe add r2, pc | r2 = 0x5c0d4;
0x0002df00 blx 0xe214 | fcn_0000e214 ();
0x0002df04 ldr r1, [pc, 0x2cc] |
0x0002df06 movs r3, 1 | r3 = 1;
0x0002df08 mov r2, r7 | r2 = r7;
0x0002df0a mov r0, r4 | r0 = r4;
0x0002df0c add r1, pc | r1 = 0x5c0e4;
0x0002df0e bl 0x3ac9c | zbx_json_addstring ();
| if (r7 != 0) {
0x0002df12 cbz r7, 0x2df1a |
0x0002df14 mov r0, r7 | r0 = r7;
0x0002df16 blx 0xde30 | fcn_0000de30 ();
| }
| label_8:
0x0002df1a mov r0, r4 | r0 = r4;
0x0002df1c bl 0x3af6c | zbx_json_close ();
0x0002df20 ldr r1, [pc, 0x2b4] |
0x0002df22 mov r0, r4 | r0 = r4;
0x0002df24 add r1, pc | r1 = 0x5c100;
0x0002df26 bl 0x3ac94 | zbx_json_addobject ();
0x0002df2a ldrd r2, r3, [sp, 0x28] | __asm ("ldrd r2, r3, [var_28h]");
0x0002df2c movs r3, 0xa | r3 = 0xa;
0x0002df2e cmp r2, 1 |
0x0002df30 sbcs r1, r3, 0 | __asm ("sbcs r1, r3, 0");
| if (r2 < 1) {
0x0002df34 blt.w 0x2e048 | goto label_30;
| }
0x0002df38 ldr r1, [pc, 0x2a0] |
0x0002df3a mov r0, r4 | r0 = r4;
0x0002df3c add r1, pc | r1 = 0x5c11c;
0x0002df3e bl 0x3ae40 | zbx_json_adduint64 ();
| label_11:
0x0002df42 ldrd r2, r3, [sp, 0x20] | __asm ("ldrd r2, r3, [var_20h]");
0x0002df46 cmp r2, 1 |
0x0002df48 sbcs r1, r3, 0 | __asm ("sbcs r1, r3, 0");
| if (r2 < 1) {
0x0002df4c blt 0x2e038 | goto label_31;
| }
0x0002df4e ldr r1, [pc, 0x290] |
0x0002df50 mov r0, r4 | r0 = r4;
0x0002df52 add r1, pc | r1 = 0x5c138;
0x0002df54 bl 0x3ae40 | zbx_json_adduint64 ();
| label_10:
0x0002df58 ldrd r2, r3, [sp, 0x30] | __asm ("ldrd r2, r3, [var_30h]");
0x0002df5c cmp r2, 1 |
0x0002df5e sbcs r1, r3, 0 | __asm ("sbcs r1, r3, 0");
| if (r2 < 1) {
0x0002df62 blt 0x2e028 | goto label_32;
| }
0x0002df64 ldr r1, [pc, 0x27c] |
0x0002df66 mov r0, r4 | r0 = r4;
0x0002df68 add r1, pc | r1 = usage_message;
0x0002df6a bl 0x3ae40 | zbx_json_adduint64 ();
0x0002df6e mov r0, r4 | r0 = r4;
0x0002df70 bl 0x3af6c | zbx_json_close ();
0x0002df74 mov r0, r4 | r0 = r4;
0x0002df76 bl 0x3af6c | zbx_json_close ();
| if (r5 != 0) {
0x0002df7a cbz r5, 0x2df82 |
0x0002df7c mov r0, r5 | r0 = r5;
0x0002df7e blx 0xde30 | fcn_0000de30 ();
| }
0x0002df82 cmp.w fp, 0 |
| if (fp != 0) {
0x0002df86 beq 0x2df8e |
0x0002df88 mov r0, fp | r0 = fp;
0x0002df8a blx 0xde30 | fcn_0000de30 ();
0x0002df8c invalid |
| }
0x0002df8e cmp.w sl, 0 |
| if (sl != 0) {
0x0002df92 beq 0x2df9a |
0x0002df94 mov r0, sl | r0 = sl;
0x0002df96 blx 0xde30 | fcn_0000de30 ();
| }
0x0002df9a cmp.w sb, 0 |
| if (sb != 0) {
0x0002df9e beq 0x2dfa6 |
0x0002dfa0 mov r0, sb | r0 = sb;
0x0002dfa2 blx 0xde30 | fcn_0000de30 ();
| }
0x0002dfa6 ldr r2, [pc, 0x240] |
0x0002dfa8 ldr r3, [pc, 0x1d4] | r3 = *(0x2e180);
0x0002dfaa add r2, pc | r2 = my_diskstat_shmid;
0x0002dfac ldr r3, [r2, r3] | r3 = my_diskstat_shmid;
0x0002dfae ldr r2, [r3] | r2 = my_diskstat_shmid;
0x0002dfb0 ldr r3, [sp, 0xec] | r3 = *(arg_ech);
0x0002dfb2 eors r2, r3 | r2 ^= r3;
0x0002dfb4 mov.w r3, 0 | r3 = 0;
| if (r2 != r3) {
0x0002dfb8 bne.w 0x2e176 | goto label_33;
| }
0x0002dfbc mov r0, r6 | r0 = r6;
0x0002dfbe add sp, 0xf4 |
0x0002dfc0 pop.w {r4, r5, r6, r7, r8, sb, sl, fp, pc} |
| label_28:
0x0002dfec ldr r1, [pc, 0x204] |
0x0002dfee movs r3, 1 | r3 = 1;
0x0002dff0 movs r2, 0 | r2 = 0;
0x0002dff2 mov r0, r4 | r0 = r4;
0x0002dff4 add r1, pc | r1 = 0x5c1ec;
0x0002dff6 bl 0x3ac9c | zbx_json_addstring ();
0x0002dffa ldrd r2, r3, [sp, 0x30] | __asm ("ldrd r2, r3, [var_30h]");
0x0002dffe cmp r2, 1 |
0x0002e000 sbcs r3, r3, 0 | __asm ("sbcs r3, r3, 0");
0x0002e004 bge.w 0x2ded6 |
| } while (r2 >= 1);
| label_29:
0x0002e008 ldr r1, [pc, 0x1ec] |
0x0002e00a movs r3, 1 | r3 = 1;
0x0002e00c movs r2, 0 | r2 = 0;
0x0002e00e mov r0, r4 | r0 = r4;
0x0002e010 add r1, pc | r1 = 0x5c20c;
0x0002e012 bl 0x3ac9c | zbx_json_addstring ();
0x0002e016 b 0x2df1a | goto label_8;
| label_27:
0x0002e018 ldr r1, [pc, 0x1e0] |
0x0002e01a movs r3, 1 | r3 = 1;
0x0002e01c movs r2, 0 | r2 = 0;
0x0002e01e mov r0, r4 | r0 = r4;
0x0002e020 add r1, pc | r1 = 0x5c220;
0x0002e022 bl 0x3ac9c | zbx_json_addstring ();
0x0002e026 b 0x2de76 | goto label_9;
| label_32:
0x0002e028 ldr r1, [pc, 0x1d4] |
0x0002e02a movs r3, 1 | r3 = 1;
0x0002e02c movs r2, 0 | r2 = 0;
0x0002e02e mov r0, r4 | r0 = r4;
0x0002e030 add r1, pc | r1 = 0x5c234;
0x0002e032 bl 0x3ac9c | zbx_json_addstring ();
0x0002e034 mrc2 p7, 1, lr, c3, c10, 4 | __asm ("mrc2 p7, 1, lr, c3, c10, 4");
| label_31:
0x0002e038 ldr r1, [pc, 0x1c8] |
0x0002e03a movs r3, 1 | r3 = 1;
0x0002e03c movs r2, 0 | r2 = 0;
0x0002e03e mov r0, r4 | r0 = r4;
0x0002e040 add r1, pc | r1 = 0x5c248;
0x0002e042 bl 0x3ac9c | zbx_json_addstring ();
0x0002e046 b 0x2df58 | goto label_10;
| label_30:
0x0002e048 ldr r1, [pc, 0x1bc] |
0x0002e04a movs r3, 1 | r3 = 1;
0x0002e04c movs r2, 0 | r2 = 0;
0x0002e04e mov r0, r4 | r0 = r4;
0x0002e050 add r1, pc | r1 = 0x5c25c;
0x0002e052 bl 0x3ac9c | zbx_json_addstring ();
0x0002e056 b 0x2df42 | goto label_11;
| label_26:
0x0002e0a0 add r7, sp, 0xd4 | r7 += arg_d4h;
0x0002e0a2 ldr r2, [pc, 0x180] |
0x0002e0a4 movs r1, 0x15 | r1 = 0x15;
0x0002e0a6 str r0, [sp, 4] | var_4h = r0;
0x0002e0a8 mov r0, r7 | r0 = r7;
0x0002e0aa str r3, [sp] | *(sp) = r3;
0x0002e0ac add r2, pc | r2 = 0x5c2d6;
0x0002e0ae bl 0x43f38 | zbx_snprintf ();
0x0002e0b0 invalid |
0x0002e0b4 mov r2, r7 | r2 = r7;
0x0002e0b6 movs r3, 1 | r3 = 1;
0x0002e0b8 mov r0, r4 | r0 = r4;
0x0002e0ba add r1, pc | r1 += pc;
0x0002e0bc bl 0x3ac9c | zbx_json_addstring ();
0x0002e0c0 b 0x2ddb8 | goto label_12;
| label_33:
0x0002e176 blx 0xe158 | fcn_0000e158 ();
0x0002e17a nop |
0x0002e17c svc 0x2c | __asm ("svc 0x2c");
0x0002e17e movs r2, r0 | r2 = r0;
0x0002e180 lsls r4, r2, 0xe | r4 = r2 << 0xe;
0x0002e182 movs r0, r0 |
0x0002e184 ldr r0, [r7, r2] | r0 = *((r7 + r2));
0x0002e186 movs r2, r0 | r2 = r0;
0x0002e188 ldr r4, [r6, r2] | r4 = *((r6 + r2));
0x0002e18a movs r2, r0 | r2 = r0;
0x0002e18c ldr r0, [r6, r2] | r0 = *((r6 + r2));
0x0002e18e movs r2, r0 | r2 = r0;
0x0002e190 str r0, [r0, 0x70] | *((r0 + 0x70)) = r0;
0x0002e192 movs r2, r0 | r2 = r0;
0x0002e194 adcs r4, r0 | __asm ("adcs r4, r0");
0x0002e196 movs r2, r0 | r2 = r0;
0x0002e198 asrs r2, r2 | r2 >>= r2;
0x0002e19a movs r2, r0 | r2 = r0;
0x0002e19c ldrsb r0, [r4, r7] | r0 = *((r4 + r7));
0x0002e19e movs r2, r0 | r2 = r0;
0x0002e1a0 ldr r2, [r0, r1] | r2 = *((r0 + r1));
0x0002e1a2 movs r2, r0 | r2 = r0;
0x0002e1a4 lsrs r4, r2 | r4 >>= r2;
0x0002e1a6 movs r2, r0 | r2 = r0;
0x0002e1a8 lsrs r2, r1 | r2 >>= r1;
0x0002e1aa movs r2, r0 | r2 = r0;
0x0002e1ac adds r5, 0x40 | r5 += 0x40;
0x0002e1ae movs r2, r0 | r2 = r0;
0x0002e1b0 str r6, [r3, r1] | *((r3 + r1)) = r6;
0x0002e1b2 movs r2, r0 | r2 = r0;
0x0002e1b4 ldrsb r6, [r7, r1] | r6 = *((r7 + r1));
0x0002e1b6 movs r2, r0 | r2 = r0;
0x0002e1b8 ldrsb r6, [r2, r7] | r6 = *((r2 + r7));
0x0002e1ba movs r2, r0 | r2 = r0;
0x0002e1bc ldrsb r4, [r4, r2] | r4 = *((r4 + r2));
0x0002e1be movs r2, r0 | r2 = r0;
0x0002e1c0 ldrsb r4, [r5, r0] | r4 = *((r5 + r0));
0x0002e1c2 movs r2, r0 | r2 = r0;
0x0002e1c4 ldrsb r4, [r0, r6] | r4 = *((r0 + r6));
0x0002e1c6 movs r2, r0 | r2 = r0;
0x0002e1c8 str r2, [r2, r0] | *((r2 + r0)) = r2;
0x0002e1ca movs r2, r0 | r2 = r0;
0x0002e1cc strb r2, [r3, r7] | *((r3 + r7)) = r2;
0x0002e1ce movs r2, r0 | r2 = r0;
0x0002e1d0 ldrsb r2, [r6, r4] | r2 = *((r6 + r4));
0x0002e1d2 movs r2, r0 | r2 = r0;
0x0002e1d4 ldrsb r0, [r1, r0] | r0 = *((r1 + r0));
0x0002e1d6 movs r2, r0 | r2 = r0;
0x0002e1d8 cdp2 p0, 0xc, c0, c4, c1, 0 | __asm ("cdp2 p0, 0xc, c0, c4, c1, 0");
0x0002e1dc strb r0, [r2, r7] | *((r2 + r7)) = r0;
0x0002e1de movs r2, r0 | r2 = r0;
0x0002e1e0 ldr r7, [pc, 0x1e8] | r7 = *(0x2e3cc);
0x0002e1e2 movs r2, r0 | r2 = r0;
0x0002e1e4 strb r4, [r5, r6] | *((r5 + r6)) = r4;
0x0002e1e6 movs r2, r0 | r2 = r0;
| if (r2 <= r0) {
0x0002e1e8 bgt 0x2e248 |
0x0002e1ea movs r2, r0 | r2 = r0;
0x0002e1ec ldrsb r2, [r1, r0] | r2 = *((r1 + r0));
0x0002e1ee movs r2, r0 | r2 = r0;
0x0002e1f0 strb r4, [r5, r3] | *((r5 + r3)) = r4;
0x0002e1f2 movs r2, r0 | r2 = r0;
0x0002e1f4 ldr r6, [pc, 0x360] | r6 = *(0x2e558);
0x0002e1f6 movs r2, r0 | r2 = r0;
0x0002e1f8 strb r4, [r0, r4] | *((r0 + r4)) = r4;
0x0002e1fa movs r2, r0 | r2 = r0;
0x0002e1fc strb r4, [r5, r3] | *((r5 + r3)) = r4;
0x0002e1fe movs r2, r0 | r2 = r0;
0x0002e200 strb r4, [r4, r3] | *((r4 + r3)) = r4;
0x0002e202 movs r2, r0 | r2 = r0;
0x0002e204 ldr r6, [pc, 0x230] | r6 = *(0x2e438);
0x0002e206 movs r2, r0 | r2 = r0;
0x0002e208 strb r4, [r7, r2] | *((r7 + r2)) = r4;
0x0002e20a movs r2, r0 | r2 = r0;
0x0002e20c strb r4, [r2, r5] | *((r2 + r5)) = r4;
0x0002e20e movs r2, r0 | r2 = r0;
0x0002e210 strb r6, [r3, r1] | *((r3 + r1)) = r6;
0x0002e212 movs r2, r0 | r2 = r0;
0x0002e214 strb r0, [r1, r5] | *((r1 + r5)) = r0;
0x0002e216 movs r2, r0 | r2 = r0;
0x0002e218 strb r2, [r1, r1] | *((r1 + r1)) = r2;
0x0002e21a movs r2, r0 | r2 = r0;
0x0002e21c asrs r2, r1, 0x14 | r2 = r1 >> 0x14;
0x0002e21e movs r2, r0 | r2 = r0;
0x0002e220 strb r4, [r5, r0] | *((r5 + r0)) = r4;
0x0002e222 movs r2, r0 | r2 = r0;
0x0002e224 add ip, sl |
0x0002e226 movs r2, r0 | r2 = r0;
0x0002e228 subs r6, 0xa | r6 -= 0xa;
0x0002e22a movs r2, r0 | r2 = r0;
0x0002e22c add r8, r6 | r8 += r6;
0x0002e22e movs r2, r0 | r2 = r0;
0x0002e230 subs r5, 0xfe | r5 -= 0xfe;
0x0002e232 movs r2, r0 | r2 = r0;
0x0002e234 strh r6, [r5, r7] | *((r5 + r7)) = r6;
0x0002e236 movs r2, r0 | r2 = r0;
0x0002e238 strb r2, [r5, r2] | *((r5 + r2)) = r2;
0x0002e23a movs r2, r0 | r2 = r0;
0x0002e23c strh r0, [r6, r6] | *((r6 + r6)) = r0;
0x0002e23e movs r2, r0 | r2 = r0;
0x0002e240 strb r2, [r4, r2] | *((r4 + r2)) = r2;
0x0002e242 movs r2, r0 | r2 = r0;
0x0002e244 strh r4, [r3, r6] | *((r3 + r6)) = r4;
0x0002e246 movs r2, r0 | r2 = r0;
| }
0x0002e248 strb r6, [r2, r2] | *((r2 + r2)) = r6;
0x0002e24a movs r2, r0 | r2 = r0;
0x0002e24c strh r0, [r1, r6] | *((r1 + r6)) = r0;
0x0002e24e movs r2, r0 | r2 = r0;
0x0002e250 strb r2, [r1, r2] | *((r1 + r2)) = r2;
0x0002e252 movs r2, r0 | r2 = r0;
0x0002e254 strh r4, [r6, r5] | *((r6 + r5)) = r4;
0x0002e256 movs r2, r0 | r2 = r0;
0x0002e258 strh r6, [r7, r5] | *((r7 + r5)) = r6;
0x0002e25a movs r2, r0 | r2 = r0;
| }
; assembly | /* r2dec pseudo code output */
| /* /logs/firmware/patool_extraction/rootfs.img_unblob_extracted/rootfs.img_extract/0-80367616.squashfs_v4_le_extract/usr/sbin/zabbix_agentd @ 0x2db9c */
| #include <stdint.h>
|
; (fcn) sym.VFS_FILE_PERMISSIONS () | void VFS_FILE_PERMISSIONS (int16_t arg1, int16_t arg2) {
| int16_t var_0h;
| int16_t var_4h;
| int16_t var_8h;
| int16_t var_18h;
| int16_t var_74h;
| r0 = arg1;
| r1 = arg2;
0x0002db9c ldr r2, [pc, 0xd0] |
0x0002db9e ldr r3, [pc, 0xd4] | r3 = *(0x2dc76);
0x0002dba0 push {r4, r5, lr} |
0x0002dba2 sub sp, 0x7c |
0x0002dba4 add r2, pc | r2 = 0x5b818;
0x0002dba6 mov r4, r1 | r4 = r1;
0x0002dba8 ldr r3, [r2, r3] |
0x0002dbaa ldr r3, [r3] | r3 = *(0x5b818);
0x0002dbac str r3, [sp, 0x74] | var_74h = r3;
0x0002dbae mov.w r3, 0 | r3 = 0;
0x0002dbb2 ldr r3, [r0, 4] | r3 = *((r0 + 4));
0x0002dbb4 cmp r3, 1 |
| if (r3 > 1) {
0x0002dbb6 bgt 0x2dbfc | goto label_2;
| }
| if (r3 == 1) {
0x0002dbb8 bne 0x2dbc4 |
0x0002dbba ldr r3, [r0, 8] | r3 = *((r0 + 8));
0x0002dbbc ldr r0, [r3] | r0 = *(r3);
| if (r0 == 0) {
0x0002dbbe cbz r0, 0x2dbc4 | goto label_3;
| }
0x0002dbc0 ldrb r3, [r0] | r3 = *(r0);
| if (r3 != 0) {
0x0002dbc2 cbnz r3, 0x2dc18 | goto label_4;
| }
| }
| label_3:
0x0002dbc4 ldr r0, [r4, 0x28] | r0 = *((r4 + 0x28));
0x0002dbc6 movs r2, 0 | r2 = 0;
0x0002dbc8 ldr r3, [pc, 0xac] |
0x0002dbca movw r1, 0x4bd | r1 = 0x4bd;
0x0002dbce orr r0, r0, 0x20 | r0 |= 0x20;
0x0002dbd2 str r0, [r4, 0x28] | *((r4 + 0x28)) = r0;
0x0002dbd4 add r3, pc | r3 = 0x5b850;
0x0002dbd6 ldr r0, [pc, 0xa4] |
0x0002dbd8 add r0, pc | r0 = 0x5b85a;
0x0002dbda bl 0x40ed8 | zbx_strdup2 ();
| do {
| label_1:
0x0002dbde movs r5, 1 | r5 = 1;
0x0002dbe0 str r0, [r4, 0x20] | *((r4 + 0x20)) = r0;
| label_0:
0x0002dbe2 ldr r2, [pc, 0x9c] |
0x0002dbe4 ldr r3, [pc, 0x8c] | r3 = *(0x2dc74);
0x0002dbe6 add r2, pc | r2 = 0x5b86c;
0x0002dbe8 ldr r3, [r2, r3] | r3 = *(0x5b86c);
0x0002dbea ldr r2, [r3] | r2 = *(0x5b86c);
0x0002dbec ldr r3, [sp, 0x74] | r3 = var_74h;
0x0002dbee eors r2, r3 | r2 ^= r3;
0x0002dbf0 mov.w r3, 0 | r3 = 0;
| if (r2 != r3) {
0x0002dbf4 bne 0x2dc6c | goto label_5;
| }
0x0002dbf6 mov r0, r5 | r0 = r5;
0x0002dbf8 add sp, 0x7c |
0x0002dbfa pop {r4, r5, pc} |
| label_2:
0x0002dbfc ldr r0, [r1, 0x28] | r0 = *((r1 + 0x28));
0x0002dbfe movs r2, 0 | r2 = 0;
0x0002dc00 ldr r3, [pc, 0x80] |
0x0002dc02 movw r1, 0x4b5 | r1 = 0x4b5;
0x0002dc06 orr r0, r0, 0x20 | r0 |= 0x20;
0x0002dc0a str r0, [r4, 0x28] | *((r4 + 0x28)) = r0;
0x0002dc0c add r3, pc | r3 = 0x5b894;
0x0002dc0e ldr r0, [pc, 0x78] |
0x0002dc10 add r0, pc | r0 = 0x5b89e;
0x0002dc12 bl 0x40ed8 | zbx_strdup2 ();
0x0002dc16 b 0x2dbde |
| } while (1);
| label_4:
0x0002dc18 add r1, sp, 8 | r1 += var_8h;
0x0002dc1a blx 0xdec0 | fcn_0000dec0 ();
0x0002dc1c ldrd r4, r6, [r2, -0x14] | __asm ("ldrd r4, r6, [r2, -0x14]");
| if (r0 == 0) {
0x0002dc20 cbnz r0, 0x2dc4c |
0x0002dc22 ldr r3, [r4, 0x28] | r3 = *((r4 + 0x28));
0x0002dc24 ldr r2, [sp, 0x18] | r2 = var_18h;
0x0002dc26 ldr r1, [pc, 0x64] |
0x0002dc28 orr r3, r3, 4 | r3 |= 4;
0x0002dc2c str r3, [r4, 0x28] | *((r4 + 0x28)) = r3;
0x0002dc2e and r3, r2, 7 | r3 = r2 & 7;
0x0002dc32 str r3, [sp, 4] | var_4h = r3;
0x0002dc34 ubfx r3, r2, 3, 3 | r3 = (r2 >> 3) & ((1 << 3) - 1);
0x0002dc38 str r3, [sp] | *(sp) = r3;
0x0002dc3a add r1, pc | r1 = 0x5b8cc;
0x0002dc3c ubfx r3, r2, 6, 3 | r3 = (r2 >> 6) & ((1 << 3) - 1);
0x0002dc40 ubfx r2, r2, 9, 3 | r2 = (r2 >> 9) & ((1 << 3) - 1);
0x0002dc44 bl 0x44820 | zbx_dsprintf ()
0x0002dc48 str r0, [r4, 0x18] | *((r4 + 0x18)) = r0;
0x0002dc4a b 0x2dbe2 | goto label_0;
| }
0x0002dc4c ldr r3, [r4, 0x28] | r3 = *((r4 + 0x28));
0x0002dc4e orr r3, r3, 0x20 | r3 |= 0x20;
0x0002dc52 str r3, [r4, 0x28] | *((r4 + 0x28)) = r3;
0x0002dc54 blx 0xe3d4 | r0 = fcn_0000e3d4 ();
0x0002dc58 ldr r0, [r0] | r0 = *(r0);
0x0002dc5a bl 0x30b74 | zbx_strerror ();
0x0002dc5e ldr r1, [pc, 0x30] |
0x0002dc60 mov r2, r0 | r2 = r0;
0x0002dc62 movs r0, 0 | r0 = 0;
0x0002dc64 add r1, pc | r1 = 0x5b8fa;
0x0002dc66 bl 0x44820 | zbx_dsprintf ()
0x0002dc6a b 0x2dbde | goto label_1;
| label_5:
0x0002dc6c blx 0xe158 | fcn_0000e158 ();
0x0002dc70 b 0x2dcdc | return void (*0x2dcdc)() ();
| }
; assembly | /* r2dec pseudo code output */
| /* /logs/firmware/patool_extraction/rootfs.img_unblob_extracted/rootfs.img_extract/0-80367616.squashfs_v4_le_extract/usr/sbin/zabbix_agentd @ 0x2cfc0 */
| #include <stdint.h>
|
; (fcn) sym.VFS_FILE_REGEXP () | void VFS_FILE_REGEXP (int16_t arg_10000h_2, int16_t arg1, int16_t arg2) {
| int16_t var_10h;
| int16_t var_14h;
| int16_t var_18h;
| int16_t var_1ch;
| int16_t var_2ch;
| int16_t var_4ch;
| int16_t var_50h;
| r0 = arg1;
| r1 = arg2;
0x0002cfc0 ldr r2, [pc, 0x3b0] |
0x0002cfc2 ldr r3, [pc, 0x3b4] | r3 = *(0x2d37a);
0x0002cfc4 push.w {r4, r5, r6, r7, r8, sb, sl, fp, lr} |
0x0002cfc8 mov r5, r1 | r5 = r1;
0x0002cfca vpush {d8, d9} | __asm ("vpush {d8, d9}");
0x0002cfce add r2, pc | r2 = 0x5a346;
0x0002cfd0 sub.w sp, sp, 0x10000 |
0x0002cfd4 mov r6, r0 | r6 = r0;
0x0002cfd6 ldr r3, [r2, r3] |
0x0002cfd8 sub sp, 0x54 |
0x0002cfda add.w r1, sp, 0x10000 | r1 += arg_10000h_2;
0x0002cfde add r4, sp, 0x50 | r4 += var_50h;
0x0002cfe0 mov.w fp, 0 |
0x0002cfe4 adds r1, 0x4c | r1 += 0x4c;
0x0002cfe6 ldr r3, [r3] | r3 = *(0x5a346);
0x0002cfe8 str r3, [r1] | *(r1) = r3;
0x0002cfea mov.w r3, 0 | r3 = 0;
0x0002cfee str fp, [r4, -0x30] | *((r4 - 0x30)) = fp;
0x0002cff2 bl 0x3ffc0 | zbx_time ();
0x0002cff6 ldr r3, [r6, 4] | r3 = *((r6 + 4));
0x0002cff8 ldr r7, [pc, 0x380] |
0x0002cffa cmp r3, 6 |
0x0002cffc add r7, pc | r7 = 0x5a37c;
| if (r3 > 6) {
0x0002cffe bgt.w 0x2d1ce | goto label_10;
| }
0x0002d002 cmp r3, 0 |
| if (r3 <= 0) {
0x0002d004 ble.w 0x2d1ae | goto label_11;
| }
0x0002d008 ldr r0, [r6, 8] | r0 = *((r6 + 8));
0x0002d00a cmp r3, 1 |
0x0002d00c vmov.f64 d9, d0 | __asm ("vmov.f64 d9, d0");
0x0002d010 ldr r6, [r0] | r6 = *(r0);
| if (r3 == 1) {
0x0002d012 beq.w 0x2d22a | goto label_12;
| }
0x0002d016 cmp r3, 2 |
0x0002d018 ldr.w sl, [r0, 4] | sl = *((r0 + 4));
| if (r3 == 2) {
0x0002d01c beq.w 0x2d21e | goto label_13;
| }
0x0002d020 cmp r3, 3 |
0x0002d022 ldr r1, [r0, 8] | r1 = *((r0 + 8));
| if (r3 == 3) {
0x0002d024 beq.w 0x2d214 | goto label_14;
| }
0x0002d028 cmp r3, 4 |
0x0002d02a ldr.w sb, [r0, 0xc] | sb = *((r0 + 0xc));
| if (r3 == 4) {
0x0002d02e beq.w 0x2d20c | goto label_15;
| }
0x0002d032 cmp r3, 6 |
0x0002d034 ldr.w r8, [r0, 0x10] | r8 = *((r0 + 0x10));
0x0002d038 it ne |
| if (r3 == 6) {
0x0002d03a strne fp, [sp, 0x14] | var_14h = fp;
| }
| if (r3 == 6) {
0x0002d03e bne 0x2d044 |
0x0002d040 ldr r3, [r0, 0x14] | r3 = *((r0 + 0x14));
0x0002d042 str r3, [sp, 0x14] | var_14h = r3;
| }
| label_3:
0x0002d044 cmp r6, 0 |
| if (r6 == 0) {
0x0002d046 beq.w 0x2d1ae | goto label_11;
| }
0x0002d04a ldrb r3, [r6] | r3 = *(r6);
0x0002d04c cmp r3, 0 |
| if (r3 == 0) {
0x0002d04e beq.w 0x2d1ae | goto label_11;
| }
0x0002d052 cmp.w sl, 0 |
| if (sl == 0) {
0x0002d056 beq.w 0x2d1f0 | goto label_16;
| }
0x0002d058 strh r3, [r1, 6] | *((r1 + 6)) = r3;
0x0002d05a ldrb.w r3, [sl] | r3 = *(sl);
0x0002d05e cmp r3, 0 |
| if (r3 == 0) {
0x0002d060 beq.w 0x2d1f0 | goto label_16;
| }
0x0002d064 cmp r1, 0 |
| if (r1 == 0) {
0x0002d066 beq.w 0x2d1ea | goto label_17;
| }
0x0002d06a movs r2, 0x20 | r2 = 0x20;
0x0002d06c sub.w r0, r4, 0x24 | r0 = r4 - 0x24;
0x0002d070 bl 0x4465c | zbx_strlcpy ();
| label_2:
0x0002d074 cmp.w sb, 0 |
| if (sb != 0) {
0x0002d078 beq 0x2d084 |
0x0002d07a ldrb.w r3, [sb] | r3 = *(sb);
0x0002d07e cmp r3, 0 |
| if (r3 != 0) {
0x0002d080 bne.w 0x2d238 | goto label_18;
| }
| }
0x0002d084 movs r3, 0 | r3 = 0;
0x0002d086 str r3, [r4, -0x2c] | *((r4 - 0x2c)) = r3;
| label_4:
0x0002d08a cmp.w r8, 0 |
| if (r8 != 0) {
0x0002d08e beq 0x2d09a |
0x0002d090 ldrb.w r3, [r8] | r3 = *(r8);
0x0002d094 cmp r3, 0 |
| if (r3 != 0) {
0x0002d096 bne.w 0x2d27a | goto label_19;
| }
0x0002d098 strh r0, [r6, 6] | *((r6 + 6)) = r0;
| }
0x0002d09a mov.w r3, -1 | r3 = -1;
0x0002d09e str r3, [r4, -0x28] | *((r4 - 0x28)) = r3;
| label_5:
0x0002d0a2 mov r0, r6 | r0 = r6;
0x0002d0a4 movs r1, 0 | r1 = 0;
0x0002d0a6 blx 0xe030 | r0 = fcntl64 ();
0x0002d0aa mov r3, r0 | r3 = r0;
0x0002d0ac str r0, [sp, 0x10] | var_10h = r0;
0x0002d0ae adds r3, 1 | r3++;
| if (r3 == 1) {
0x0002d0b0 beq.w 0x2d2f0 | goto label_20;
| }
0x0002d0b4 ldr r3, [pc, 0x2c8] | r3 = *(0x2d380);
0x0002d0b6 ldr.w fp, [r7, r3] | fp = *((r7 + r3));
0x0002d0ba vldr s15, [fp] | __asm ("vldr s15, [fp]");
0x0002d0be vcvt.f64.s32 d8, s15 | __asm ("vcvt.f64.s32 d8, s15");
0x0002d0c2 bl 0x3ffc0 | zbx_time ();
0x0002d0c4 invalid |
0x0002d0c8 lsrs r1, r1, 0xd | r1 >>= 0xd;
0x0002d0ca vcmpe.f64 d8, d0 | __asm ("vcmpe.f64 d8, d0");
0x0002d0ce vmrs apsr_nzcv, fpscr | __asm ("vmrs apsr_nzcv, fpscr");
| if (r1 < r1) {
0x0002d0d2 bmi.w 0x2d310 | goto label_21;
| }
0x0002d0d6 ldr r3, [pc, 0x2ac] |
0x0002d0d8 movs r6, 0 | r6 = 0;
0x0002d0da add.w sb, sp, 0x2c | sb += var_2ch;
0x0002d0dc lsrs r4, r5, 4 | r4 = r5 >> 4;
0x0002d0de add.w r8, sp, 0x4c | r8 += var_4ch;
0x0002d0e0 lsrs r4, r1, 1 | r4 = r1 >> 1;
0x0002d0e2 add r3, pc | r3 = 0x5a46c;
0x0002d0e4 str r3, [sp, 0x18] | var_18h = r3;
0x0002d0e6 sub.w r3, r4, 0x30 | r3 = r4 - 0x30;
0x0002d0ea str r3, [sp, 0x1c] | var_1ch = r3;
| do {
| label_0:
0x0002d0ec ldr r0, [sp, 0x10] | r0 = var_10h;
0x0002d0ee mov r3, sb | r3 = sb;
0x0002d0f0 mov.w r2, 0x10000 | r2 = 0x10000;
0x0002d0f4 mov r1, r8 | r1 = r8;
0x0002d0f6 bl 0x3fa5c | r0 = zbx_read ();
0x0002d0fa subs r7, r0, 0 | r7 = r0 - 0;
| if (r7 <= r0) {
0x0002d0fc ble.w 0x2d2c4 | goto label_22;
| }
0x0002d100 vldr s15, [fp] | __asm ("vldr s15, [fp]");
0x0002d104 vcvt.f64.s32 d8, s15 | __asm ("vcvt.f64.s32 d8, s15");
0x0002d108 bl 0x3ffc0 | zbx_time ();
0x0002d10c vsub.f64 d0, d0, d9 | __asm ("vsub.f64 d0, d0, d9");
0x0002d110 vcmpe.f64 d8, d0 | __asm ("vcmpe.f64 d8, d0");
0x0002d114 vmrs apsr_nzcv, fpscr | __asm ("vmrs apsr_nzcv, fpscr");
| if (r7 < r0) {
0x0002d118 bmi.w 0x2d2d0 | goto label_23;
| }
0x0002d11c ldr r3, [r4, -0x2c] | r3 = *((r4 - 0x2c));
0x0002d120 adds r6, 1 | r6++;
0x0002d122 cmp r3, r6 |
0x0002d124 bhi 0x2d0ec |
| } while (r3 > r6);
0x0002d126 mov r1, r7 | r1 = r7;
0x0002d128 mov r2, sb | r2 = sb;
0x0002d12a mov r0, r8 | r0 = r8;
0x0002d12c bl 0x4587c | convert_to_utf8 ();
0x0002d130 ldr r1, [sp, 0x18] | r1 = var_18h;
0x0002d132 mov r7, r0 | r7 = r0;
0x0002d134 bl 0x444f4 | zbx_rtrim ();
0x0002d138 ldr r3, [sp, 0x1c] | r3 = var_1ch;
0x0002d13a mov r1, sl | r1 = sl;
0x0002d13c ldr r2, [sp, 0x14] | r2 = var_14h;
0x0002d13e mov r0, r7 | r0 = r7;
0x0002d140 bl 0x31b24 | zbx_regexp_sub ();
| if (r7 != 0) {
0x0002d144 cbz r7, 0x2d14c |
0x0002d146 mov r0, r7 | r0 = r7;
0x0002d148 blx 0xde30 | fcn_0000de30 ();
| }
0x0002d14c ldr r3, [r4, -0x30] | r3 = *((r4 - 0x30));
0x0002d150 cmp r3, 0 |
| if (r3 != 0) {
0x0002d152 bne.w 0x2d32c | goto label_24;
| }
0x0002d156 ldr r3, [r4, -0x28] | r3 = *((r4 - 0x28));
0x0002d15a cmp r3, r6 |
| if (r3 > r6) {
0x0002d15c bhi 0x2d0ec | goto label_0;
| }
| label_7:
0x0002d15e ldr r1, [r5, 0x28] | r1 = *((r5 + 0x28));
0x0002d160 movs r2, 0 | r2 = 0;
0x0002d162 ldr r3, [pc, 0x224] |
0x0002d164 ldr r0, [pc, 0x224] |
0x0002d166 orr r1, r1, 4 | r1 |= 4;
0x0002d16a str r1, [r5, 0x28] | *((r5 + 0x28)) = r1;
0x0002d16c add r3, pc | r3 = 0x5a4fa;
0x0002d16e add r0, pc | r0 = 0x5a4fe;
0x0002d170 movw r1, 0x23f | r1 = 0x23f;
0x0002d174 bl 0x40ed8 | zbx_strdup2 ();
0x0002d178 str r0, [r5, 0x18] | *((r5 + 0x18)) = r0;
| label_6:
0x0002d17a movs r4, 0 | r4 = 0;
| label_8:
0x0002d17c ldr r0, [sp, 0x10] | r0 = var_10h;
0x0002d17e blx 0xe0ac | fcn_0000e0ac ();
| do {
0x0002d182 ldr r2, [pc, 0x20c] |
0x0002d184 add.w r1, sp, 0x10000 | r1 += arg_10000h_2;
0x0002d188 ldr r3, [pc, 0x1ec] | r3 = *(0x2d378);
0x0002d18a adds r1, 0x4c | r1 += 0x4c;
0x0002d18c add r2, pc | r2 = 0x5a522;
0x0002d18e ldr r3, [r2, r3] | r3 = *(0x5a522);
0x0002d190 ldr r2, [r3] | r2 = *(0x5a522);
0x0002d192 ldr r3, [r1] | r3 = *(r1);
0x0002d194 eors r2, r3 | r2 ^= r3;
0x0002d196 mov.w r3, 0 | r3 = 0;
| if (r2 != r3) {
0x0002d19a bne.w 0x2d370 | goto label_25;
| }
0x0002d19e mov r0, r4 | r0 = r4;
0x0002d1a0 add.w sp, sp, 0x10000 |
0x0002d1a4 add sp, 0x54 |
0x0002d1a6 vpop {d8, d9} | __asm ("vpop {d8, d9}");
0x0002d1aa pop.w {r4, r5, r6, r7, r8, sb, sl, fp, pc} |
| label_11:
0x0002d1ae ldr r0, [r5, 0x28] | r0 = *((r5 + 0x28));
0x0002d1b0 movs r2, 0 | r2 = 0;
0x0002d1b2 ldr r3, [pc, 0x1e0] |
0x0002d1b4 movw r1, 0x1e9 | r1 = 0x1e9;
0x0002d1b8 orr r0, r0, 0x20 | r0 |= 0x20;
0x0002d1bc str r0, [r5, 0x28] | *((r5 + 0x28)) = r0;
0x0002d1be add r3, pc | r3 = 0x5a558;
0x0002d1c0 ldr r0, [pc, 0x1d4] |
0x0002d1c2 add r0, pc | r0 = 0x5a55e;
0x0002d1c4 bl 0x40ed8 | zbx_strdup2 ();
| label_1:
0x0002d1c8 movs r4, 1 | r4 = 1;
0x0002d1ca str r0, [r5, 0x20] | *((r5 + 0x20)) = r0;
0x0002d1cc b 0x2d182 |
| } while (1);
| label_10:
0x0002d1ce ldr r0, [r5, 0x28] | r0 = *((r5 + 0x28));
0x0002d1d0 mov r2, fp | r2 = fp;
0x0002d1d2 ldr r3, [pc, 0x1c8] |
0x0002d1d4 mov.w r1, 0x1dc | r1 = 0x1dc;
0x0002d1d8 orr r0, r0, 0x20 | r0 |= 0x20;
0x0002d1dc str r0, [r5, 0x28] | *((r5 + 0x28)) = r0;
0x0002d1de add r3, pc | r3 = 0x5a580;
0x0002d1e0 ldr r0, [pc, 0x1bc] |
0x0002d1e2 add r0, pc | r0 = 0x5a586;
0x0002d1e4 bl 0x40ed8 | zbx_strdup2 ();
0x0002d1e8 b 0x2d1c8 | goto label_1;
| label_17:
0x0002d1ea strb r1, [r4, -0x24] | *((r4 - 0x24)) = r1;
0x0002d1ee b 0x2d074 | goto label_2;
| label_16:
0x0002d1f0 ldr r0, [r5, 0x28] | r0 = *((r5 + 0x28));
0x0002d1f2 movs r2, 0 | r2 = 0;
0x0002d1f4 ldr r3, [pc, 0x1ac] |
0x0002d1f6 movw r1, 0x1ef | r1 = 0x1ef;
0x0002d1fa orr r0, r0, 0x20 | r0 |= 0x20;
0x0002d1fe str r0, [r5, 0x28] | *((r5 + 0x28)) = r0;
0x0002d200 add r3, pc | r3 = 0x5a5a8;
0x0002d202 ldr r0, [pc, 0x1a4] |
0x0002d204 add r0, pc | r0 = 0x5a5b2;
0x0002d206 bl 0x40ed8 | zbx_strdup2 ();
0x0002d20a b 0x2d1c8 | goto label_1;
| label_15:
0x0002d20c mov r8, fp | r8 = fp;
0x0002d20e str.w fp, [sp, 0x14] | __asm ("str.w fp, [var_14h]");
0x0002d212 b 0x2d044 | goto label_3;
| label_14:
0x0002d214 mov r8, fp | r8 = fp;
0x0002d216 mov sb, fp | sb = fp;
0x0002d218 str.w fp, [sp, 0x14] | __asm ("str.w fp, [var_14h]");
0x0002d21c b 0x2d044 | goto label_3;
| label_13:
0x0002d21e mov r8, fp | r8 = fp;
0x0002d220 mov sb, fp | sb = fp;
0x0002d222 mov r1, fp | r1 = fp;
0x0002d224 str.w fp, [sp, 0x14] | __asm ("str.w fp, [var_14h]");
0x0002d228 b 0x2d044 | goto label_3;
| label_12:
0x0002d22a mov r8, fp | r8 = fp;
0x0002d22c mov sb, fp | sb = fp;
0x0002d22e mov r1, fp | r1 = fp;
0x0002d230 mov sl, fp | sl = fp;
0x0002d232 str.w fp, [sp, 0x14] | __asm ("str.w fp, [var_14h]");
0x0002d236 b 0x2d044 | goto label_3;
| label_18:
0x0002d238 vmov.i64 d17, 0xffffffff | __asm ("vmov.i64 d17, 0xffffffff");
0x0002d23c mov r0, sb | r0 = sb;
0x0002d23e vmov.i32 d16, 0 | __asm ("vmov.i32 d16, 0");
0x0002d242 movs r3, 4 | r3 = 4;
0x0002d244 sub.w r2, r4, 0x2c | r2 = r4 - 0x2c;
0x0002d248 mov.w r1, -1 | r1 = -1;
0x0002d24c vstr d17, [sp, 8] | __asm ("vstr d17, [sp, 8]");
0x0002d250 vstr d16, [sp] | __asm ("vstr d16, [sp]");
0x0002d254 bl 0x419a8 | is_uint_n_range ();
0x0002d258 adds r0, 1 | r0++;
| if (r0 != 1) {
0x0002d25a bne.w 0x2d08a | goto label_4;
| }
0x0002d25e ldr r0, [r5, 0x28] | r0 = *((r5 + 0x28));
0x0002d260 movs r2, 0 | r2 = 0;
0x0002d262 ldr r3, [pc, 0x148] |
0x0002d264 mov.w r1, 0x1fc | r1 = 0x1fc;
0x0002d268 orr r0, r0, 0x20 | r0 |= 0x20;
0x0002d26c str r0, [r5, 0x28] | *((r5 + 0x28)) = r0;
0x0002d26e add r3, pc | r3 = 0x5a620;
0x0002d270 ldr r0, [pc, 0x13c] |
0x0002d272 add r0, pc | r0 = 0x5a626;
0x0002d274 bl 0x40ed8 | zbx_strdup2 ();
0x0002d278 b 0x2d1c8 | goto label_1;
| label_19:
0x0002d27a vmov.i64 d17, 0xffffffff | __asm ("vmov.i64 d17, 0xffffffff");
0x0002d27e mov r0, r8 | r0 = r8;
0x0002d280 vmov.i32 d16, 0 | __asm ("vmov.i32 d16, 0");
0x0002d284 movs r3, 4 | r3 = 4;
0x0002d286 sub.w r2, r4, 0x28 | r2 = r4 - 0x28;
0x0002d28a mov.w r1, -1 | r1 = -1;
0x0002d28e vstr d17, [sp, 8] | __asm ("vstr d17, [sp, 8]");
0x0002d292 vstr d16, [sp] | __asm ("vstr d16, [sp]");
0x0002d296 bl 0x419a8 | is_uint_n_range ();
0x0002d29a adds r0, 1 | r0++;
| if (r0 == 1) {
0x0002d29c beq 0x2d354 | goto label_26;
| }
0x0002d29e ldrd r2, r3, [r4, -0x2c] | __asm ("ldrd r2, r3, [r4, -0x2c]");
0x0002d2a2 cmp r2, r3 |
| if (r2 < r3) {
0x0002d2a4 bls.w 0x2d0a2 | goto label_5;
| }
0x0002d2a8 ldr r0, [r5, 0x28] | r0 = *((r5 + 0x28));
0x0002d2aa movs r2, 0 | r2 = 0;
0x0002d2ac ldr r3, [pc, 0x104] |
0x0002d2ae movw r1, 0x20a | r1 = 0x20a;
0x0002d2b2 orr r0, r0, 0x20 | r0 |= 0x20;
0x0002d2b6 str r0, [r5, 0x28] | *((r5 + 0x28)) = r0;
0x0002d2b8 add r3, pc | r3 = 0x5a670;
0x0002d2ba ldr r0, [pc, 0xfc] |
0x0002d2bc add r0, pc | r0 = 0x5a67a;
0x0002d2be bl 0x40ed8 | zbx_strdup2 ();
0x0002d2c2 b 0x2d1c8 | goto label_1;
| label_22:
0x0002d2c4 adds r3, r7, 1 | r3 = r7 + 1;
| if (r3 == r7) {
0x0002d2c6 beq 0x2d338 | goto label_27;
| }
0x0002d2c8 cmp r7, 0 |
| if (r7 != 0) {
0x0002d2ca bne.w 0x2d17a | goto label_6;
| }
0x0002d2ce b 0x2d15e | goto label_7;
| label_23:
0x0002d2d0 ldr r1, [r5, 0x28] | r1 = *((r5 + 0x28));
0x0002d2d2 movs r2, 0 | r2 = 0;
0x0002d2d4 ldr r3, [pc, 0xe4] |
0x0002d2d6 ldr r0, [pc, 0xe8] |
0x0002d2d8 orr r1, r1, 0x20 | r1 |= 0x20;
0x0002d2dc str r1, [r5, 0x28] | *((r5 + 0x28)) = r1;
0x0002d2de add r3, pc | r3 = 0x5a69e;
0x0002d2e0 add r0, pc | r0 = 0x5a6a6;
0x0002d2e2 movw r1, 0x21e | r1 = 0x21e;
0x0002d2e6 bl 0x40ed8 | zbx_strdup2 ();
| do {
| label_9:
0x0002d2ea movs r4, 1 | r4 = 1;
0x0002d2ec str r0, [r5, 0x20] | *((r5 + 0x20)) = r0;
0x0002d2ee b 0x2d17c | goto label_8;
| label_20:
0x0002d2f0 ldr r3, [r5, 0x28] | r3 = *((r5 + 0x28));
0x0002d2f2 orr r3, r3, 0x20 | r3 |= 0x20;
0x0002d2f6 str r3, [r5, 0x28] | *((r5 + 0x28)) = r3;
0x0002d2f8 blx 0xe3d4 | r0 = fcn_0000e3d4 ();
0x0002d2fc ldr r0, [r0] | r0 = *(r0);
0x0002d2fe bl 0x30b74 | zbx_strerror ();
0x0002d302 ldr r1, [pc, 0xc0] |
0x0002d304 mov r2, r0 | r2 = r0;
0x0002d306 movs r0, 0 | r0 = 0;
0x0002d308 add r1, pc | r1 = 0x5a6d2;
0x0002d30a bl 0x44820 | zbx_dsprintf ()
0x0002d30e b 0x2d1c8 | goto label_1;
| label_21:
0x0002d310 ldr r1, [r5, 0x28] | r1 = *((r5 + 0x28));
0x0002d312 movs r2, 0 | r2 = 0;
0x0002d314 ldr r3, [pc, 0xb0] |
0x0002d316 ldr r0, [pc, 0xb4] |
0x0002d318 orr r1, r1, 0x20 | r1 |= 0x20;
0x0002d31c str r1, [r5, 0x28] | *((r5 + 0x28)) = r1;
0x0002d31e add r3, pc | r3 = 0x5a6ea;
0x0002d320 movw r1, 0x216 | r1 = 0x216;
0x0002d324 add r0, pc | r0 = 0x5a6f6;
0x0002d326 bl 0x40ed8 | zbx_strdup2 ();
0x0002d32a b 0x2d2ea |
| } while (1);
| label_24:
0x0002d32c ldr r2, [r5, 0x28] | r2 = *((r5 + 0x28));
0x0002d32e str r3, [r5, 0x18] | *((r5 + 0x18)) = r3;
0x0002d330 orr r2, r2, 4 | r2 |= 4;
0x0002d334 str r2, [r5, 0x28] | *((r5 + 0x28)) = r2;
0x0002d336 b 0x2d17a | goto label_6;
| label_27:
0x0002d338 ldr r1, [r5, 0x28] | r1 = *((r5 + 0x28));
0x0002d33a movs r2, 0 | r2 = 0;
0x0002d33c ldr r3, [pc, 0x90] |
0x0002d33e ldr r0, [pc, 0x94] |
0x0002d340 orr r1, r1, 0x20 | r1 |= 0x20;
0x0002d344 str r1, [r5, 0x28] | *((r5 + 0x28)) = r1;
0x0002d346 add r3, pc | r3 = 0x5a71a;
0x0002d348 movw r1, 0x23a | r1 = 0x23a;
0x0002d34c add r0, pc | r0 = 0x5a726;
0x0002d34e bl 0x40ed8 | zbx_strdup2 ();
0x0002d352 b 0x2d2ea | goto label_9;
| label_26:
0x0002d354 ldr r0, [r5, 0x28] | r0 = *((r5 + 0x28));
0x0002d356 movs r2, 0 | r2 = 0;
0x0002d358 ldr r3, [pc, 0x7c] |
0x0002d35a mov.w r1, 0x204 | r1 = 0x204;
0x0002d35e orr r0, r0, 0x20 | r0 |= 0x20;
0x0002d362 str r0, [r5, 0x28] | *((r5 + 0x28)) = r0;
0x0002d364 add r3, pc | r3 = 0x5a740;
0x0002d366 ldr r0, [pc, 0x74] |
0x0002d368 add r0, pc | r0 = 0x5a74a;
0x0002d36a bl 0x40ed8 | zbx_strdup2 ();
0x0002d36e b 0x2d1c8 | goto label_1;
| label_25:
0x0002d370 blx 0xe158 | fcn_0000e158 ();
0x0002d374 invalid |
| }
; assembly | /* r2dec pseudo code output */
| /* /logs/firmware/patool_extraction/rootfs.img_unblob_extracted/rootfs.img_extract/0-80367616.squashfs_v4_le_extract/usr/sbin/zabbix_agentd @ 0x2d3e0 */
| #include <stdint.h>
|
; (fcn) sym.VFS_FILE_REGMATCH () | void VFS_FILE_REGMATCH (int16_t arg_10000h, int16_t arg1, int16_t arg2) {
| int16_t var_10000h;
| int16_t var_14h;
| int16_t var_18h;
| int16_t var_1ch;
| int16_t var_2ch;
| int16_t var_4ch;
| int16_t var_50h;
| r0 = arg1;
| r1 = arg2;
0x0002d3e0 blmi 0xff7fff60 | __asm ("blmi 0xff7fff60");
0x0002d3e4 push.w {r4, r5, r6, r7, r8, sb, sl, fp, lr} |
0x0002d3e8 mov r4, r1 | r4 = r1;
0x0002d3ea vpush {d8, d9} | __asm ("vpush {d8, d9}");
0x0002d3ee add r2, pc | r2 += pc;
0x0002d3f0 sub.w sp, sp, 0x10000 |
0x0002d3f4 mov r5, r0 | r5 = r0;
0x0002d3f6 ldr r3, [r2, r3] | r3 = *((r2 + r3));
0x0002d3f8 sub sp, 0x54 |
0x0002d3fa add.w r1, sp, 0x10000 | r1 += arg_10000h;
0x0002d3fe ldr r6, [pc, 0x364] |
0x0002d400 adds r1, 0x4c | r1 += 0x4c;
0x0002d402 ldr r3, [r3] | r3 = *(r3);
0x0002d404 str r3, [r1] | *(r1) = r3;
0x0002d406 mov.w r3, 0 | r3 = 0;
0x0002d40a bl 0x3ffc0 | zbx_time ();
0x0002d40e ldr r3, [r5, 4] | r3 = *((r5 + 4));
0x0002d410 add r6, pc | r6 = 0x5ab7a;
0x0002d412 cmp r3, 5 |
| if (r3 > 5) {
0x0002d414 bgt.w 0x2d5ca | goto label_10;
| }
0x0002d418 cmp r3, 0 |
| if (r3 <= 0) {
0x0002d41a ble.w 0x2d5aa | goto label_11;
| }
0x0002d41e ldr r2, [r5, 8] | r2 = *((r5 + 8));
0x0002d420 cmp r3, 1 |
0x0002d422 vmov.f64 d9, d0 | __asm ("vmov.f64 d9, d0");
0x0002d426 ldr r5, [r2] | r5 = *(r2);
| if (r3 == 1) {
0x0002d428 beq.w 0x2d61a | goto label_12;
| }
0x0002d42c cmp r3, 2 |
0x0002d42e ldr.w r8, [r2, 4] | r8 = *((r2 + 4));
| if (r3 == 2) {
0x0002d432 beq.w 0x2d610 | goto label_13;
| }
0x0002d436 cmp r3, 3 |
0x0002d438 ldr r1, [r2, 8] | r1 = *((r2 + 8));
| if (r3 == 3) {
0x0002d43a beq.w 0x2d608 | goto label_14;
| }
0x0002d43e cmp r3, 5 |
0x0002d440 ldr.w sb, [r2, 0xc] | sb = *((r2 + 0xc));
0x0002d444 it ne |
| if (r3 == 5) {
0x0002d446 movne sl, 0 | sl = 0;
| }
| if (r3 == 5) {
0x0002d44a bne 0x2d450 |
0x0002d44c ldr.w sl, [r2, 0x10] | sl = *((r2 + 0x10));
| }
| label_3:
0x0002d450 cmp r5, 0 |
| if (r5 == 0) {
0x0002d452 beq.w 0x2d5aa | goto label_11;
| }
0x0002d456 ldrb r3, [r5] | r3 = *(r5);
0x0002d458 cmp r3, 0 |
| if (r3 == 0) {
0x0002d45a beq.w 0x2d5aa | goto label_11;
| }
0x0002d45e cmp.w r8, 0 |
| if (r8 == 0) {
0x0002d462 beq.w 0x2d5ec | goto label_15;
| }
0x0002d466 ldrb.w r3, [r8] | r3 = *(r8);
0x0002d46a cmp r3, 0 |
| if (r3 == 0) {
0x0002d46c beq.w 0x2d5ec | goto label_15;
| }
0x0002d470 add r7, sp, 0x50 | r7 += var_50h;
0x0002d472 cmp r1, 0 |
| if (r1 == 0) {
0x0002d474 beq.w 0x2d5e6 | goto label_16;
| }
0x0002d478 movs r2, 0x20 | r2 = 0x20;
0x0002d47a sub.w r0, r7, 0x24 | r0 = r7 - 0x24;
0x0002d47e bl 0x4465c | zbx_strlcpy ();
| label_2:
0x0002d482 cmp.w sb, 0 |
| if (sb != 0) {
0x0002d486 beq 0x2d492 |
0x0002d488 ldrb.w r3, [sb] | r3 = *(sb);
0x0002d48c cmp r3, 0 |
| if (r3 != 0) {
0x0002d48e bne.w 0x2d626 | goto label_17;
| }
| }
0x0002d492 movs r3, 0 | r3 = 0;
0x0002d494 str r3, [r7, -0x2c] | *((r7 - 0x2c)) = r3;
| label_4:
0x0002d498 cmp.w sl, 0 |
| if (sl != 0) {
0x0002d49c beq 0x2d4a8 |
0x0002d49e ldrb.w r3, [sl] | r3 = *(sl);
0x0002d4a2 cmp r3, 0 |
| if (r3 != 0) {
0x0002d4a4 bne.w 0x2d668 | goto label_18;
| }
| }
0x0002d4a8 mov.w r3, -1 | r3 = -1;
0x0002d4ac str r3, [r7, -0x28] | *((r7 - 0x28)) = r3;
| label_5:
0x0002d4b0 mov r0, r5 | r0 = r5;
0x0002d4b2 movs r1, 0 | r1 = 0;
0x0002d4b4 blx 0xe030 | r0 = fcntl64 ();
0x0002d4b8 mov r3, r0 | r3 = r0;
0x0002d4ba str r0, [sp, 0x14] | var_14h = r0;
0x0002d4bc adds r3, 1 | r3++;
| if (r3 == 1) {
0x0002d4be beq.w 0x2d6b2 | goto label_19;
| }
0x0002d4c2 ldr r3, [pc, 0x2a4] | r3 = *(0x2d76a);
0x0002d4c4 ldr.w fp, [r6, r3] | fp = *((r6 + r3));
0x0002d4c8 vldr s15, [fp] | __asm ("vldr s15, [fp]");
0x0002d4cc vcvt.f64.s32 d8, s15 | __asm ("vcvt.f64.s32 d8, s15");
0x0002d4d0 bl 0x3ffc0 | zbx_time ();
0x0002d4d4 vsub.f64 d0, d0, d9 | __asm ("vsub.f64 d0, d0, d9");
0x0002d4d8 vcmpe.f64 d8, d0 | __asm ("vcmpe.f64 d8, d0");
0x0002d4dc vmrs apsr_nzcv, fpscr | __asm ("vmrs apsr_nzcv, fpscr");
| if (r3 < 1) {
0x0002d4e0 bmi.w 0x2d6f2 | goto label_20;
| }
0x0002d4e4 ldr r3, [pc, 0x284] |
0x0002d4e6 movs r5, 0 | r5 = 0;
0x0002d4e8 add.w sl, sp, 0x2c | sl += var_2ch;
0x0002d4ec add.w sb, sp, 0x4c | sb += var_4ch;
0x0002d4f0 add r3, pc | r3 = 0x5ac60;
0x0002d4f2 str r3, [sp, 0x18] | var_18h = r3;
| do {
| label_0:
0x0002d4f4 ldr r0, [sp, 0x14] | r0 = var_14h;
0x0002d4f6 mov r3, sl | r3 = sl;
0x0002d4f8 mov.w r2, 0x10000 | r2 = 0x10000;
0x0002d4fc mov r1, sb | r1 = sb;
0x0002d4fe bl 0x3fa5c | r0 = zbx_read ();
0x0002d502 subs r6, r0, 0 | r6 = r0 - 0;
| if (r6 <= r0) {
0x0002d504 ble.w 0x2d716 | goto label_21;
| }
0x0002d508 vldr s15, [fp] | __asm ("vldr s15, [fp]");
0x0002d50c vcvt.f64.s32 d8, s15 | __asm ("vcvt.f64.s32 d8, s15");
0x0002d510 bl 0x3ffc0 | zbx_time ();
0x0002d514 vsub.f64 d0, d0, d9 | __asm ("vsub.f64 d0, d0, d9");
0x0002d518 vcmpe.f64 d8, d0 | __asm ("vcmpe.f64 d8, d0");
0x0002d51c vmrs apsr_nzcv, fpscr | __asm ("vmrs apsr_nzcv, fpscr");
| if (r6 < r0) {
0x0002d520 bmi.w 0x2d6d2 | goto label_22;
| }
0x0002d524 ldr r3, [r7, -0x2c] | r3 = *((r7 - 0x2c));
0x0002d528 adds r5, 1 | r5++;
0x0002d52a cmp r3, r5 |
0x0002d52c bhi 0x2d4f4 |
| } while (r3 > r5);
0x0002d52e mov r1, r6 | r1 = r6;
0x0002d530 mov r2, sl | r2 = sl;
0x0002d532 mov r0, sb | r0 = sb;
0x0002d534 bl 0x4587c | convert_to_utf8 ();
0x0002d538 ldr r1, [sp, 0x18] | r1 = var_18h;
0x0002d53a mov r6, r0 | r6 = r0;
0x0002d53c bl 0x444f4 | zbx_rtrim ();
0x0002d540 movs r2, 0 | r2 = 0;
0x0002d542 mov r1, r8 | r1 = r8;
0x0002d544 mov r0, r6 | r0 = r6;
0x0002d546 bl 0x31a84 | r0 = zbx_regexp_match ();
0x0002d54a mov r3, r0 | r3 = r0;
| if (r6 != 0) {
0x0002d54c cbz r6, 0x2d558 |
0x0002d54e str r0, [sp, 0x1c] | var_1ch = r0;
0x0002d550 mov r0, r6 | r0 = r6;
0x0002d552 blx 0xde30 | fcn_0000de30 ();
0x0002d556 ldr r3, [sp, 0x1c] | r3 = var_1ch;
| }
0x0002d558 ldr r2, [r7, -0x28] | r2 = *((r7 - 0x28));
0x0002d55c cmp r2, r5 |
| if (r2 < r5) {
0x0002d55e bls.w 0x2d70e | goto label_23;
| }
0x0002d562 cmp r3, 0 |
| if (r3 == 0) {
0x0002d564 beq 0x2d4f4 | goto label_0;
| }
0x0002d566 movs r3, 1 | r3 = 1;
| label_7:
0x0002d568 ldr r2, [r4, 0x28] | r2 = *((r4 + 0x28));
| label_9:
0x0002d56a asrs r1, r3, 0x1f | r1 = r3 >> 0x1f;
0x0002d56c movs r5, 0 | r5 = 0;
0x0002d56e orr r2, r2, 1 | r2 |= 1;
0x0002d572 str r3, [r4, 8] | *((r4 + 8)) = r3;
0x0002d574 str r2, [r4, 0x28] | *((r4 + 0x28)) = r2;
0x0002d576 str r1, [r4, 0xc] | *((r4 + 0xc)) = r1;
| label_6:
0x0002d578 ldr r0, [sp, 0x14] | r0 = var_14h;
0x0002d57a blx 0xe0ac | fcn_0000e0ac ();
| do {
0x0002d57e ldr r2, [pc, 0x1f0] |
0x0002d580 add.w r1, sp, 0x10000 | r1 += arg_10000h;
0x0002d584 ldr r3, [pc, 0x1d8] | r3 = *(0x2d760);
0x0002d586 adds r1, 0x4c | r1 += 0x4c;
0x0002d588 add r2, pc | r2 = 0x5acfe;
0x0002d58a ldr r3, [r2, r3] | r3 = *(0x5acfe);
0x0002d58c ldr r2, [r3] | r2 = *(0x5acfe);
0x0002d58e ldr r3, [r1] | r3 = *(r1);
0x0002d590 eors r2, r3 | r2 ^= r3;
0x0002d592 mov.w r3, 0 | r3 = 0;
| if (r2 != r3) {
0x0002d596 bne.w 0x2d756 | goto label_24;
| }
0x0002d59a mov r0, r5 | r0 = r5;
0x0002d59c add.w sp, sp, 0x10000 |
0x0002d5a0 add sp, 0x54 |
0x0002d5a2 vpop {d8, d9} | __asm ("vpop {d8, d9}");
0x0002d5a6 pop.w {r4, r5, r6, r7, r8, sb, sl, fp, pc} |
| label_11:
0x0002d5aa ldr r0, [r4, 0x28] | r0 = *((r4 + 0x28));
0x0002d5ac movs r2, 0 | r2 = 0;
0x0002d5ae ldr r3, [pc, 0x1c4] |
0x0002d5b0 movw r1, 0x261 | r1 = 0x261;
0x0002d5b4 orr r0, r0, 0x20 | r0 |= 0x20;
0x0002d5b8 str r0, [r4, 0x28] | *((r4 + 0x28)) = r0;
0x0002d5ba add r3, pc | r3 = 0x5ad34;
0x0002d5bc ldr r0, [pc, 0x1b8] |
0x0002d5be add r0, pc | r0 = 0x5ad3a;
0x0002d5c0 bl 0x40ed8 | zbx_strdup2 ();
| label_1:
0x0002d5c4 movs r5, 1 | r5 = 1;
0x0002d5c6 str r0, [r4, 0x20] | *((r4 + 0x20)) = r0;
0x0002d5c8 b 0x2d57e |
| } while (1);
| label_10:
0x0002d5ca ldr r0, [r4, 0x28] | r0 = *((r4 + 0x28));
0x0002d5cc movs r2, 0 | r2 = 0;
0x0002d5ce ldr r3, [pc, 0x1ac] |
0x0002d5d0 movw r1, 0x255 | r1 = 0x255;
0x0002d5d4 orr r0, r0, 0x20 | r0 |= 0x20;
0x0002d5d8 str r0, [r4, 0x28] | *((r4 + 0x28)) = r0;
0x0002d5da add r3, pc | r3 = 0x5ad5c;
0x0002d5dc ldr r0, [pc, 0x1a0] |
0x0002d5de add r0, pc | r0 = 0x5ad62;
0x0002d5e0 bl 0x40ed8 | zbx_strdup2 ();
0x0002d5e4 b 0x2d5c4 | goto label_1;
| label_16:
0x0002d5e6 strb r1, [r7, -0x24] | *((r7 - 0x24)) = r1;
0x0002d5ea b 0x2d482 | goto label_2;
| label_15:
0x0002d5ec ldr r0, [r4, 0x28] | r0 = *((r4 + 0x28));
0x0002d5ee movs r2, 0 | r2 = 0;
0x0002d5f0 ldr r3, [pc, 0x190] |
0x0002d5f2 movw r1, 0x267 | r1 = 0x267;
0x0002d5f6 orr r0, r0, 0x20 | r0 |= 0x20;
0x0002d5fa str r0, [r4, 0x28] | *((r4 + 0x28)) = r0;
0x0002d5fc add r3, pc | r3 = 0x5ad84;
0x0002d5fe ldr r0, [pc, 0x188] |
0x0002d600 add r0, pc | r0 = 0x5ad8e;
0x0002d602 bl 0x40ed8 | zbx_strdup2 ();
0x0002d606 b 0x2d5c4 | goto label_1;
| label_14:
0x0002d608 mov.w sb, 0 | sb = 0;
0x0002d60c mov sl, sb | sl = sb;
0x0002d60e b 0x2d450 | goto label_3;
| label_13:
0x0002d610 mov.w sb, 0 | sb = 0;
0x0002d614 mov r1, sb | r1 = sb;
0x0002d616 mov sl, sb | sl = sb;
0x0002d618 b 0x2d450 | goto label_3;
| label_12:
0x0002d61a mov.w sb, 0 | sb = 0;
0x0002d61e mov r1, sb | r1 = sb;
0x0002d620 mov r8, sb | r8 = sb;
0x0002d622 mov sl, sb | sl = sb;
0x0002d624 b 0x2d450 | goto label_3;
| label_17:
0x0002d626 vmov.i64 d17, 0xffffffff | __asm ("vmov.i64 d17, 0xffffffff");
0x0002d62a mov r0, sb | r0 = sb;
0x0002d62c vmov.i32 d16, 0 | __asm ("vmov.i32 d16, 0");
0x0002d630 movs r3, 4 | r3 = 4;
0x0002d632 sub.w r2, r7, 0x2c | r2 = r7 - 0x2c;
0x0002d636 mov.w r1, -1 | r1 = -1;
0x0002d63a vstr d17, [sp, 8] | __asm ("vstr d17, [sp, 8]");
0x0002d63e vstr d16, [sp] | __asm ("vstr d16, [sp]");
0x0002d642 bl 0x419a8 | is_uint_n_range ();
0x0002d646 adds r0, 1 | r0++;
| if (r0 != 1) {
0x0002d648 bne.w 0x2d498 | goto label_4;
| }
0x0002d64c ldr r0, [r4, 0x28] | r0 = *((r4 + 0x28));
0x0002d64e movs r2, 0 | r2 = 0;
0x0002d650 ldr r3, [pc, 0x138] |
0x0002d652 mov.w r1, 0x274 | r1 = 0x274;
0x0002d656 orr r0, r0, 0x20 | r0 |= 0x20;
0x0002d65a str r0, [r4, 0x28] | *((r4 + 0x28)) = r0;
0x0002d65c add r3, pc | r3 = 0x5adec;
0x0002d65e ldr r0, [pc, 0x130] |
0x0002d660 add r0, pc | r0 = 0x5adf6;
0x0002d662 bl 0x40ed8 | zbx_strdup2 ();
0x0002d666 b 0x2d5c4 | goto label_1;
| label_18:
0x0002d668 vmov.i64 d17, 0xffffffff | __asm ("vmov.i64 d17, 0xffffffff");
0x0002d66c mov r0, sl | r0 = sl;
0x0002d66e vmov.i32 d16, 0 | __asm ("vmov.i32 d16, 0");
0x0002d672 movs r3, 4 | r3 = 4;
0x0002d674 sub.w r2, r7, 0x28 | r2 = r7 - 0x28;
0x0002d678 mov.w r1, -1 | r1 = -1;
0x0002d67c vstr d17, [sp, 8] | __asm ("vstr d17, [sp, 8]");
0x0002d680 vstr d16, [sp] | __asm ("vstr d16, [sp]");
0x0002d684 bl 0x419a8 | is_uint_n_range ();
0x0002d688 adds r0, 1 | r0++;
| if (r0 == 1) {
0x0002d68a beq 0x2d736 | goto label_25;
| }
0x0002d68c ldrd r2, r3, [r7, -0x2c] | __asm ("ldrd r2, r3, [r7, -0x2c]");
0x0002d690 cmp r2, r3 |
| if (r2 < r3) {
0x0002d692 bls.w 0x2d4b0 | goto label_5;
| }
0x0002d696 ldr r0, [r4, 0x28] | r0 = *((r4 + 0x28));
0x0002d698 movs r2, 0 | r2 = 0;
0x0002d69a ldr r3, [pc, 0xf8] |
0x0002d69c movw r1, 0x282 | r1 = 0x282;
0x0002d6a0 orr r0, r0, 0x20 | r0 |= 0x20;
0x0002d6a4 str r0, [r4, 0x28] | *((r4 + 0x28)) = r0;
0x0002d6a6 add r3, pc | r3 = 0x5ae40;
0x0002d6a8 ldr r0, [pc, 0xec] |
0x0002d6aa add r0, pc | r0 = 0x5ae46;
0x0002d6ac bl 0x40ed8 | zbx_strdup2 ();
0x0002d6b0 b 0x2d5c4 | goto label_1;
| label_19:
0x0002d6b2 ldr r3, [r4, 0x28] | r3 = *((r4 + 0x28));
0x0002d6b4 orr r3, r3, 0x20 | r3 |= 0x20;
0x0002d6b8 str r3, [r4, 0x28] | *((r4 + 0x28)) = r3;
0x0002d6ba blx 0xe3d4 | r0 = fcn_0000e3d4 ();
0x0002d6be ldr r0, [r0] | r0 = *(r0);
0x0002d6c0 bl 0x30b74 | zbx_strerror ();
0x0002d6c4 ldr r1, [pc, 0xd4] |
0x0002d6c6 mov r2, r0 | r2 = r0;
0x0002d6c8 movs r0, 0 | r0 = 0;
0x0002d6ca add r1, pc | r1 = 0x5ae6a;
0x0002d6cc bl 0x44820 | zbx_dsprintf ()
0x0002d6d0 b 0x2d5c4 | goto label_1;
| label_22:
0x0002d6d2 ldr r1, [r4, 0x28] | r1 = *((r4 + 0x28));
0x0002d6d4 movs r2, 0 | r2 = 0;
0x0002d6d6 ldr r3, [pc, 0xc8] |
0x0002d6d8 ldr r0, [pc, 0xc8] |
0x0002d6da orr r1, r1, 0x20 | r1 |= 0x20;
0x0002d6de str r1, [r4, 0x28] | *((r4 + 0x28)) = r1;
0x0002d6e0 add r3, pc | r3 = 0x5ae86;
0x0002d6e2 add r0, pc | r0 = 0x5ae8a;
0x0002d6e4 mov.w r1, 0x298 | r1 = 0x298;
0x0002d6e8 bl 0x40ed8 | zbx_strdup2 ();
| do {
| label_8:
0x0002d6ec movs r5, 1 | r5 = 1;
0x0002d6ee str r0, [r4, 0x20] | *((r4 + 0x20)) = r0;
0x0002d6f0 b 0x2d578 | goto label_6;
| label_20:
0x0002d6f2 ldr r1, [r4, 0x28] | r1 = *((r4 + 0x28));
0x0002d6f4 movs r2, 0 | r2 = 0;
0x0002d6f6 ldr r3, [pc, 0xb0] |
0x0002d6f8 ldr r0, [pc, 0xb0] |
0x0002d6fa orr r1, r1, 0x20 | r1 |= 0x20;
0x0002d6fe str r1, [r4, 0x28] | *((r4 + 0x28)) = r1;
0x0002d700 add r3, pc | r3 = 0x5aeae;
0x0002d702 movw r1, 0x28e | r1 = 0x28e;
0x0002d706 add r0, pc | r0 = 0x5aeb6;
0x0002d708 bl 0x40ed8 | zbx_strdup2 ();
0x0002d70c b 0x2d6ec |
| } while (1);
| label_23:
0x0002d70e subs r3, 0 |
0x0002d710 it ne |
| if (r3 == 0) {
0x0002d712 movne r3, 1 | r3 = 1;
| }
0x0002d714 b 0x2d568 | goto label_7;
| label_21:
0x0002d716 adds r6, 1 | r6++;
0x0002d718 ldr r2, [r4, 0x28] | r2 = *((r4 + 0x28));
| if (r6 != 1) {
0x0002d71a bne 0x2d752 | goto label_26;
| }
0x0002d71c ldr r3, [pc, 0x90] |
0x0002d71e orr r1, r2, 0x20 | r1 = r2 | 0x20;
0x0002d722 ldr r0, [pc, 0x90] |
0x0002d724 movs r2, 0 | r2 = 0;
0x0002d726 str r1, [r4, 0x28] | *((r4 + 0x28)) = r1;
0x0002d728 movw r1, 0x2ab | r1 = 0x2ab;
0x0002d72c add r3, pc | r3 = 0x5aee0;
0x0002d72e add r0, pc | r0 = 0x5aee8;
0x0002d730 bl 0x40ed8 | zbx_strdup2 ();
| do {
0x0002d734 b 0x2d6ec | goto label_8;
| label_25:
0x0002d736 ldr r0, [r4, 0x28] | r0 = *((r4 + 0x28));
0x0002d738 movs r2, 0 | r2 = 0;
0x0002d73a ldr r3, [pc, 0x7c] |
0x0002d73c mov.w r1, 0x27c | r1 = 0x27c;
0x0002d740 orr r0, r0, 0x20 | r0 |= 0x20;
0x0002d744 str r0, [r4, 0x28] | *((r4 + 0x28)) = r0;
0x0002d746 add r3, pc | r3 = 0x5af04;
0x0002d748 ldr r0, [pc, 0x70] |
0x0002d74a add r0, pc | r0 = 0x5af0a;
0x0002d74c bl 0x40ed8 | zbx_strdup2 ();
0x0002d750 b 0x2d5c4 | goto label_1;
| label_26:
0x0002d752 movs r3, 0 | r3 = 0;
0x0002d754 b 0x2d56a | goto label_9;
| label_24:
0x0002d756 blx 0xe158 | fcn_0000e158 ();
0x0002d75a nop |
0x0002d75c b 0x2d734 |
| } while (1);
| }
; assembly | /* r2dec pseudo code output */
| /* /logs/firmware/patool_extraction/rootfs.img_unblob_extracted/rootfs.img_extract/0-80367616.squashfs_v4_le_extract/usr/sbin/zabbix_agentd @ 0x2c630 */
| #include <stdint.h>
|
; (fcn) sym.VFS_FILE_SIZE () | void VFS_FILE_SIZE (int16_t arg_10000h, int16_t arg1, int16_t arg2) {
| int16_t var_10000h;
| int16_t var_6ch;
| int16_t var_70h;
| r0 = arg1;
| r1 = arg2;
0x0002c630 push.w {r4, r5, r6, r7, r8, sb, sl, fp, lr} |
0x0002c634 mov r6, r1 | r6 = r1;
0x0002c636 ldr r4, [pc, 0x22c] |
0x0002c638 ldr r2, [pc, 0x22c] | r2 = *(0x2c868);
0x0002c63a ldr r3, [r0, 4] | r3 = *((r0 + 4));
0x0002c63c add r4, pc | r4 = 0x58ea6;
0x0002c63e vpush {d8, d9} | __asm ("vpush {d8, d9}");
0x0002c642 sub.w sp, sp, 0x10000 |
0x0002c646 ldr r7, [pc, 0x224] |
0x0002c648 sub sp, 0x74 |
0x0002c64a ldr r2, [r4, r2] |
0x0002c64c add.w r5, sp, 0x10000 | r5 += arg_10000h;
0x0002c650 cmp r3, 2 |
0x0002c652 add.w r5, r5, 0x6c | r5 += var_6ch;
0x0002c656 add r7, pc | r7 = 0x58ec8;
0x0002c658 ldr r2, [r2] | r2 = *(0x58ea6);
0x0002c65a str r2, [r5] | *(r5) = r2;
0x0002c65c mov.w r2, 0 | r2 = 0;
| if (r3 > 2) {
0x0002c660 bgt 0x2c70e | goto label_3;
| }
0x0002c662 cmp r3, 0 |
| if (r3 <= 0) {
0x0002c664 ble 0x2c6c8 | goto label_4;
| }
0x0002c666 ldr r2, [r0, 8] | r2 = *((r0 + 8));
0x0002c668 cmp r3, 2 |
0x0002c66a ldr r5, [r2] | r5 = *(r2);
| if (r3 != 2) {
0x0002c66c bne 0x2c6c0 | goto label_5;
| }
0x0002c66e ldr.w r8, [r2, 4] | r8 = *((r2 + 4));
| if (r5 == 0) {
0x0002c672 cbz r5, 0x2c6c8 | goto label_4;
| }
0x0002c674 ldrb r3, [r5] | r3 = *(r5);
| if (r3 == 0) {
0x0002c676 cbz r3, 0x2c6c8 | goto label_4;
| }
0x0002c678 cmp.w r8, 0 |
| if (r8 == 0) {
0x0002c67c beq 0x2c69e | goto label_6;
| }
0x0002c67e ldr r1, [pc, 0x1f0] |
0x0002c680 mov r0, r8 | r0 = r8;
0x0002c682 add r1, pc | r1 = 0x58ef8;
0x0002c684 blx 0xe3b0 | r0 = fcn_0000e3b0 ();
0x0002c688 mov r4, r0 | r4 = r0;
0x0002c68a cmp r0, 0 |
| if (r0 == 0) {
0x0002c68c beq 0x2c72a | goto label_7;
| }
0x0002c68e ldr r1, [pc, 0x1e4] |
0x0002c690 mov r0, r8 | r0 = r8;
0x0002c692 add r1, pc | r1 = 0x58f0c;
0x0002c694 blx 0xe3b0 | r0 = fcn_0000e3b0 ();
0x0002c698 cmp r0, 0 |
| if (r0 != 0) {
0x0002c69a bne.w 0x2c802 | goto label_8;
| }
| do {
| label_6:
0x0002c69e mov r0, r5 | r0 = r5;
0x0002c6a0 mov r1, sp | r1 = sp;
0x0002c6a2 blx 0xdec0 | fcn_0000dec0 ();
0x0002c6a6 add r4, sp, 0x70 | r4 += var_70h;
0x0002c6a8 ldr r3, [r6, 0x28] | r3 = *((r6 + 0x28));
0x0002c6aa cmp r0, 0 |
| if (r0 != 0) {
0x0002c6ac bne 0x2c7a6 | goto label_9;
| }
0x0002c6ae ldrd r0, r1, [r4, -0x40] | __asm ("ldrd r0, r1, [r4, -0x40]");
0x0002c6b2 orr r3, r3, 1 | r3 |= 1;
0x0002c6b6 str r3, [r6, 0x28] | *((r6 + 0x28)) = r3;
0x0002c6b8 strd r0, r1, [r6, 8] | __asm ("strd r0, r1, [r6, 8]");
| label_2:
0x0002c6bc movs r0, 0 | r0 = 0;
0x0002c6be b 0x2c6e4 | goto label_10;
| if (r5 == 0) {
| label_5:
0x0002c6c0 cbz r5, 0x2c6c8 | goto label_4;
| }
0x0002c6c2 ldrb r3, [r5] | r3 = *(r5);
0x0002c6c4 cmp r3, 0 |
0x0002c6c6 bne 0x2c69e |
| } while (r3 != 0);
| label_4:
0x0002c6c8 ldr r0, [r6, 0x28] | r0 = *((r6 + 0x28));
0x0002c6ca movs r2, 0 | r2 = 0;
0x0002c6cc ldr r3, [pc, 0x1a8] |
0x0002c6ce movs r1, 0x39 | r1 = 0x39;
0x0002c6d0 orr r0, r0, 0x20 | r0 |= 0x20;
0x0002c6d4 str r0, [r6, 0x28] | *((r6 + 0x28)) = r0;
0x0002c6d6 add r3, pc | r3 = 0x58f52;
0x0002c6d8 ldr r0, [pc, 0x1a0] |
0x0002c6da add r0, pc | r0 = 0x58f5a;
0x0002c6dc bl 0x40ed8 | zbx_strdup2 ();
0x0002c6e0 str r0, [r6, 0x20] | *((r6 + 0x20)) = r0;
| do {
| label_1:
0x0002c6e2 movs r0, 1 | r0 = 1;
| label_10:
0x0002c6e4 ldr r2, [pc, 0x198] |
0x0002c6e6 add.w r1, sp, 0x10000 | r1 += arg_10000h;
0x0002c6ea ldr r3, [pc, 0x17c] | r3 = *(0x2c86a);
0x0002c6ec adds r1, 0x6c | r1 += 0x6c;
0x0002c6ee add r2, pc | r2 = 0x58f72;
0x0002c6f0 ldr r3, [r2, r3] | r3 = *(0x58f72);
0x0002c6f2 ldr r2, [r3] | r2 = *(0x58f72);
0x0002c6f4 ldr r3, [r1] | r3 = *(r1);
0x0002c6f6 eors r2, r3 | r2 ^= r3;
0x0002c6f8 mov.w r3, 0 | r3 = 0;
| if (r2 != r3) {
0x0002c6fc bne.w 0x2c860 | goto label_11;
| }
0x0002c700 add.w sp, sp, 0x10000 |
0x0002c704 add sp, 0x74 |
0x0002c706 vpop {d8, d9} | __asm ("vpop {d8, d9}");
0x0002c70a pop.w {r4, r5, r6, r7, r8, sb, sl, fp, pc} |
| label_3:
0x0002c70e ldr r0, [r1, 0x28] | r0 = *((r1 + 0x28));
0x0002c710 movs r2, 0 | r2 = 0;
0x0002c712 ldr r3, [pc, 0x170] |
0x0002c714 movs r1, 0x30 | r1 = 0x30;
0x0002c716 orr r0, r0, 0x20 | r0 |= 0x20;
0x0002c71a str r0, [r6, 0x28] | *((r6 + 0x28)) = r0;
0x0002c71c add r3, pc | r3 = 0x58fa6;
0x0002c71e ldr r0, [pc, 0x168] |
0x0002c720 add r0, pc | r0 = 0x58fae;
0x0002c722 bl 0x40ed8 | zbx_strdup2 ();
0x0002c726 str r0, [r6, 0x20] | *((r6 + 0x20)) = r0;
0x0002c728 b 0x2c6e2 |
| } while (1);
| label_7:
0x0002c72a bl 0x3ffc0 | zbx_time ();
0x0002c72e mov r0, r5 | r0 = r5;
0x0002c730 mov r1, r4 | r1 = r4;
0x0002c732 vmov.f64 d9, d0 | __asm ("vmov.f64 d9, d0");
0x0002c736 blx 0xe030 | r0 = fcntl64 ();
0x0002c73a cmp.w r0, -1 |
0x0002c73e mov sb, r0 | sb = r0;
0x0002c740 itt ne |
| if (r0 == -1) {
0x0002c742 movne r5, r4 | r5 = r4;
| }
| if (r0 == -1) {
0x0002c744 addne r8, sp, 0x6c | r8 += var_6ch;
| }
| if (r0 == -1) {
0x0002c748 beq 0x2c83e | goto label_12;
| }
| do {
0x0002c74a mov.w r2, 0x10000 | r2 = 0x10000;
0x0002c74e mov r1, r8 | r1 = r8;
0x0002c750 mov r0, sb | r0 = sb;
0x0002c752 blx 0xde54 | r0 = fcn_0000de54 ();
0x0002c756 subs.w fp, r0, 0 |
| if (fp <= r0) {
0x0002c75a ble 0x2c7c6 | goto label_13;
| }
0x0002c75c ldr r3, [pc, 0x12c] | r3 = *(0x2c88c);
0x0002c75e ldr r3, [r7, r3] | r3 = *((r7 + r3));
0x0002c760 vldr s16, [r3] | __asm ("vldr s16, [r3]");
0x0002c764 bl 0x3ffc0 | zbx_time ();
0x0002c768 vsub.f64 d0, d0, d9 | __asm ("vsub.f64 d0, d0, d9");
0x0002c76c vcvt.f64.s32 d8, s16 | __asm ("vcvt.f64.s32 d8, s16");
0x0002c770 vcmpe.f64 d8, d0 | __asm ("vcmpe.f64 d8, d0");
0x0002c774 vmrs apsr_nzcv, fpscr | __asm ("vmrs apsr_nzcv, fpscr");
| if (fp < r0) {
0x0002c778 bmi 0x2c7e0 | goto label_14;
| }
0x0002c77a mov sl, r8 | sl = r8;
| label_0:
0x0002c77c mov r2, fp | r2 = fp;
0x0002c77e movs r1, 0xa | r1 = 0xa;
0x0002c780 mov r0, sl | r0 = sl;
0x0002c782 blx 0xe394 | r0 = fcn_0000e394 ();
0x0002c786 cmp r0, 0 |
0x0002c788 beq 0x2c74a |
| } while (r0 == 0);
0x0002c78a sub.w sl, r0, sl | sl = r0 - sl;
0x0002c78e adds r4, 1 | r4++;
0x0002c790 adc r5, r5, 0 | __asm ("adc r5, r5, 0");
0x0002c794 cmp fp, sl |
0x0002c796 ittt hi |
| if (fp <= sl) {
0x0002c798 addhi fp, fp, -1 |
| }
| if (fp <= sl) {
0x0002c79c addhi r0, 1 | r0++;
| }
| if (fp > sl) {
0x0002c79e sub.w fp, fp, sl |
| }
0x0002c7a2 mov sl, r0 | sl = r0;
0x0002c7a4 b 0x2c77c | goto label_0;
| label_9:
0x0002c7a6 orr r3, r3, 0x20 | r3 |= 0x20;
0x0002c7aa str r3, [r6, 0x28] | *((r6 + 0x28)) = r3;
0x0002c7ac blx 0xe3d4 | r0 = fcn_0000e3d4 ();
0x0002c7b0 ldr r0, [r0] | r0 = *(r0);
0x0002c7b2 bl 0x30b74 | zbx_strerror ();
0x0002c7b6 ldr r1, [pc, 0xd8] |
0x0002c7b8 mov r2, r0 | r2 = r0;
0x0002c7ba movs r0, 0 | r0 = 0;
0x0002c7bc add r1, pc | r1 = 0x59052;
0x0002c7be bl 0x44820 | zbx_dsprintf ()
0x0002c7c0 invalid |
0x0002c7c4 b 0x2c6e2 | goto label_1;
| label_13:
0x0002c7c6 mov r0, sb | r0 = sb;
0x0002c7c8 blx 0xe0ac | fcn_0000e0ac ();
0x0002c7cc ldr r3, [r6, 0x28] | r3 = *((r6 + 0x28));
0x0002c7ce cmp.w fp, 0 |
0x0002c7d0 lsrs r0, r0, 0x1c | r0 >>= 0x1c;
| if (r0 == r0) {
0x0002c7d2 bne 0x2c81e |
0x0002c7d4 orr r3, r3, 1 | r3 |= 1;
0x0002c7d8 strd r4, r5, [r6, 8] | __asm ("strd r4, r5, [r6, 8]");
0x0002c7dc str r3, [r6, 0x28] | *((r6 + 0x28)) = r3;
0x0002c7de b 0x2c6bc | goto label_2;
| label_14:
0x0002c7e0 ldr r1, [r6, 0x28] | r1 = *((r6 + 0x28));
0x0002c7e2 movs r2, 0 | r2 = 0;
0x0002c7e4 ldr r3, [pc, 0xac] |
0x0002c7e6 ldr r0, [pc, 0xb0] |
0x0002c7e8 orr r1, r1, 0x20 | r1 |= 0x20;
0x0002c7ec str r1, [r6, 0x28] | *((r6 + 0x28)) = r1;
0x0002c7ee add r3, pc | r3 = 0x59086;
0x0002c7f0 movs r1, 0x54 | r1 = 0x54;
0x0002c7f2 add r0, pc | r0 = 0x59090;
0x0002c7f4 bl 0x40ed8 | zbx_strdup2 ();
0x0002c7f8 str r0, [r6, 0x20] | *((r6 + 0x20)) = r0;
0x0002c7fa mov r0, sb | r0 = sb;
0x0002c7fc blx 0xe0ac | fcn_0000e0ac ();
0x0002c800 b 0x2c6e2 | goto label_1;
| label_8:
0x0002c802 ldr r0, [r6, 0x28] | r0 = *((r6 + 0x28));
0x0002c804 movs r2, 0 | r2 = 0;
0x0002c806 ldr r3, [pc, 0x94] |
0x0002c808 movs r1, 0x75 | r1 = 0x75;
0x0002c80a orr r0, r0, 0x20 | r0 |= 0x20;
0x0002c80e str r0, [r6, 0x28] | *((r6 + 0x28)) = r0;
0x0002c810 add r3, pc | r3 = 0x590b2;
0x0002c812 ldr r0, [pc, 0x8c] |
0x0002c814 add r0, pc | r0 = 0x590ba;
0x0002c816 bl 0x40ed8 | zbx_strdup2 ();
0x0002c81a str r0, [r6, 0x20] | *((r6 + 0x20)) = r0;
0x0002c81c b 0x2c6e2 | goto label_1;
| }
0x0002c81e orr r3, r3, 0x20 | r3 |= 0x20;
0x0002c822 str r3, [r6, 0x28] | *((r6 + 0x28)) = r3;
0x0002c824 blx 0xe3d4 | r0 = fcn_0000e3d4 ();
0x0002c828 ldr r0, [r0] | r0 = *(r0);
0x0002c82a bl 0x30b74 | zbx_strerror ();
0x0002c82c vld2.32 {d4[0], d5[0]}, [r3:0x40]! | __asm ("vld2.32 {d4[0], d5[0]}, [r3:0x40]!");
0x0002c830 mov r2, r0 | r2 = r0;
0x0002c832 movs r0, 0 | r0 = 0;
0x0002c834 add r1, pc | r1 += pc;
0x0002c836 bl 0x44820 | zbx_dsprintf ()
0x0002c83a str r0, [r6, 0x20] | *((r6 + 0x20)) = r0;
0x0002c83c b 0x2c6e2 | goto label_1;
| label_12:
0x0002c83e ldr r3, [r6, 0x28] | r3 = *((r6 + 0x28));
0x0002c840 orr r3, r3, 0x20 | r3 |= 0x20;
0x0002c844 str r3, [r6, 0x28] | *((r6 + 0x28)) = r3;
0x0002c846 blx 0xe3d4 | r0 = fcn_0000e3d4 ();
0x0002c84a ldr r0, [r0] | r0 = *(r0);
0x0002c84c bl 0x30b74 | zbx_strerror ();
0x0002c850 ldr r1, [pc, 0x54] |
0x0002c852 mov r2, r0 | r2 = r0;
0x0002c854 mov r0, r4 | r0 = r4;
0x0002c856 add r1, pc | r1 = 0x59102;
0x0002c858 bl 0x44820 | zbx_dsprintf ()
0x0002c85c str r0, [r6, 0x20] | *((r6 + 0x20)) = r0;
0x0002c85e b 0x2c6e2 | goto label_1;
| label_11:
0x0002c860 blx 0xe158 | fcn_0000e158 ();
0x0002c864 invalid |
| }
; assembly | /* r2dec pseudo code output */
| /* /logs/firmware/patool_extraction/rootfs.img_unblob_extracted/rootfs.img_extract/0-80367616.squashfs_v4_le_extract/usr/sbin/zabbix_agentd @ 0x2c8ac */
| #include <stdint.h>
|
; (fcn) sym.VFS_FILE_TIME () | void VFS_FILE_TIME (int16_t arg1, int16_t arg2) {
| int16_t var_6ch;
| int16_t var_0h;
| int32_t var_0h_2;
| int16_t var_8h;
| int32_t var_8h_2;
| int16_t var_10h;
| int32_t var_10h_2;
| int16_t var_1ch;
| r0 = arg1;
| r1 = arg2;
0x0002c8ac blmi 0x127f1d4 | __asm ("blmi aav.0x0002f324");
0x0002c8b0 push {r4, r5, r6, r7, lr} |
0x0002c8b2 sub sp, 0x24 |
0x0002c8b4 add r2, pc | r2 += pc;
0x0002c8b6 mov r4, r1 | r4 = r1;
0x0002c8b8 ldr r3, [r2, r3] | r3 = *((r2 + r3));
0x0002c8ba ldr r3, [r3] | r3 = *(r3);
0x0002c8bc str r3, [sp, 0x1c] | var_1ch = r3;
0x0002c8be mov.w r3, 0 | r3 = 0;
0x0002c8c2 ldr r3, [r0, 4] | r3 = *((r0 + 4));
0x0002c8c4 cmp r3, 2 |
| if (r3 > 2) {
0x0002c8c6 bgt 0x2c94a | goto label_2;
| }
0x0002c8c8 cmp r3, 0 |
| if (r3 > 0) {
0x0002c8ca ble 0x2c914 |
0x0002c8cc ldr r2, [r0, 8] | r2 = *((r0 + 8));
0x0002c8ce cmp r3, 2 |
0x0002c8d0 it ne |
| if (r3 == 2) {
0x0002c8d2 movne r7, 0 | r7 = 0;
| }
0x0002c8d4 ldr r0, [r2] | r0 = *(r2);
0x0002c8d6 it eq |
| if (r3 != 2) {
0x0002c8d8 ldreq r7, [r2, 4] | r7 = *((r2 + 4));
| }
| if (r0 == 0) {
0x0002c8da cbz r0, 0x2c914 | goto label_3;
| }
0x0002c8dc ldrb r3, [r0] | r3 = *(r0);
| if (r3 == 0) {
0x0002c8de cbz r3, 0x2c914 | goto label_3;
| }
0x0002c8e0 mov r2, sp | r2 = sp;
0x0002c8e2 movs r1, 0 | r1 = 0;
0x0002c8e4 bl 0x3fbe0 | r0 = zbx_get_file_time ();
0x0002c8e8 mov r5, r0 | r5 = r0;
0x0002c8ea cmp r0, 0 |
| if (r0 != 0) {
0x0002c8ec bne 0x2c964 | goto label_4;
| }
0x0002c8ee ldr r6, [r4, 0x28] | r6 = *((r4 + 0x28));
| if (r7 != 0) {
0x0002c8f0 cbz r7, 0x2c904 |
0x0002c8f2 ldrb r3, [r7] | r3 = *(r7);
| if (r3 == 0) {
0x0002c8f4 cbz r3, 0x2c904 | goto label_5;
| }
0x0002c8f6 ldr r1, [pc, 0xe0] |
0x0002c8f8 mov r0, r7 | r0 = r7;
0x0002c8fa add r1, pc | r1 = 0x592d8;
0x0002c8fc blx 0xe3b0 | r0 = fcn_0000e3b0 ();
0x0002c900 cmp r0, 0 |
| if (r0 != 0) {
0x0002c902 bne 0x2c984 | goto label_6;
| }
| }
| label_5:
0x0002c904 ldrd r2, r3, [sp] | __asm ("ldrd r2, r3, [sp]");
0x0002c908 orr r6, r6, 1 | r6 |= 1;
0x0002c90c str r6, [r4, 0x28] | *((r4 + 0x28)) = r6;
| label_1:
0x0002c90e strd r2, r3, [r4, 8] | __asm ("strd r2, r3, [r4, 8]");
0x0002c912 b 0x2c930 | goto label_7;
| }
| label_3:
0x0002c914 ldr r0, [r4, 0x28] | r0 = *((r4 + 0x28));
0x0002c916 movs r2, 0 | r2 = 0;
0x0002c918 ldr r3, [pc, 0xc0] |
0x0002c91a movs r1, 0x96 | r1 = 0x96;
0x0002c91c orr r0, r0, 0x20 | r0 |= 0x20;
0x0002c920 str r0, [r4, 0x28] | *((r4 + 0x28)) = r0;
0x0002c922 add r3, pc | r3 = 0x59302;
0x0002c924 ldr r0, [pc, 0xb8] |
0x0002c926 add r0, pc | r0 = 0x5930a;
0x0002c928 bl 0x40ed8 | zbx_strdup2 ();
| do {
| label_0:
0x0002c92c movs r5, 1 | r5 = 1;
0x0002c92e str r0, [r4, 0x20] | *((r4 + 0x20)) = r0;
| label_7:
0x0002c930 ldr r2, [pc, 0xb0] |
0x0002c932 ldr r3, [pc, 0xa0] | r3 = *(0x2c9d6);
0x0002c934 add r2, pc | r2 = 0x5931c;
0x0002c936 ldr r3, [r2, r3] | r3 = *(0x5931c);
0x0002c938 ldr r2, [r3] | r2 = *(0x5931c);
0x0002c93a ldr r3, [sp, 0x1c] | r3 = var_1ch;
0x0002c93c eors r2, r3 | r2 ^= r3;
0x0002c93e mov.w r3, 0 | r3 = 0;
| if (r2 != r3) {
0x0002c942 bne 0x2c9cc | goto label_8;
| }
0x0002c944 mov r0, r5 | r0 = r5;
0x0002c946 add sp, 0x24 |
0x0002c948 pop {r4, r5, r6, r7, pc} |
| label_2:
0x0002c94a ldr r0, [r1, 0x28] | r0 = *((r1 + 0x28));
0x0002c94c movs r2, 0 | r2 = 0;
0x0002c94e ldr r3, [pc, 0x98] |
0x0002c950 movs r1, 0x8d | r1 = 0x8d;
0x0002c952 orr r0, r0, 0x20 | r0 |= 0x20;
0x0002c956 str r0, [r4, 0x28] | *((r4 + 0x28)) = r0;
0x0002c958 add r3, pc | r3 = 0x59346;
0x0002c95a ldr r0, [pc, 0x90] |
0x0002c95c add r0, pc | r0 = 0x5934e;
0x0002c95e bl 0x40ed8 | zbx_strdup2 ();
0x0002c962 b 0x2c92c |
| } while (1);
| label_4:
0x0002c964 ldr r3, [r4, 0x28] | r3 = *((r4 + 0x28));
0x0002c966 orr r3, r3, 0x20 | r3 |= 0x20;
0x0002c96a str r3, [r4, 0x28] | *((r4 + 0x28)) = r3;
0x0002c96c blx 0xe3d4 | r0 = fcn_0000e3d4 ();
0x0002c970 ldr r0, [r0] | r0 = *(r0);
0x0002c972 bl 0x30b74 | zbx_strerror ();
0x0002c976 ldr r1, [pc, 0x78] |
0x0002c978 mov r2, r0 | r2 = r0;
0x0002c97a movs r0, 0 | r0 = 0;
0x0002c97c add r1, pc | r1 = 0x59372;
0x0002c97e bl 0x44820 | zbx_dsprintf ()
0x0002c982 b 0x2c92c | goto label_0;
| label_6:
0x0002c984 ldr r1, [pc, 0x6c] |
0x0002c986 mov r0, r7 | r0 = r7;
0x0002c988 add r1, pc | r1 = 0x59380;
0x0002c98a blx 0xe3b0 | r0 = fcn_0000e3b0 ();
| if (r0 == 0) {
0x0002c98e cbnz r0, 0x2c99c |
0x0002c990 orr r6, r6, 1 | r6 |= 1;
0x0002c994 ldrd r2, r3, [sp, 8] | __asm ("ldrd r2, r3, [var_8h]");
0x0002c998 str r6, [r4, 0x28] | *((r4 + 0x28)) = r6;
0x0002c99a b 0x2c90e | goto label_1;
| }
0x0002c99c ldr r1, [pc, 0x58] |
0x0002c99e mov r0, r7 | r0 = r7;
0x0002c9a0 add r1, pc | r1 = 0x5939c;
0x0002c9a2 blx 0xe3b0 | r0 = fcn_0000e3b0 ();
| if (r0 == 0) {
0x0002c9a6 cbnz r0, 0x2c9b4 |
0x0002c9a8 orr r6, r6, 1 | r6 |= 1;
0x0002c9ac ldrd r2, r3, [sp, 0x10] | __asm ("ldrd r2, r3, [var_10h]");
0x0002c9b0 str r6, [r4, 0x28] | *((r4 + 0x28)) = r6;
0x0002c9b2 b 0x2c90e | goto label_1;
| }
0x0002c9b4 ldr r3, [pc, 0x44] |
0x0002c9b6 orr r6, r6, 0x20 | r6 |= 0x20;
0x0002c9ba ldr r0, [pc, 0x44] |
0x0002c9bc mov r2, r5 | r2 = r5;
0x0002c9be movs r1, 0xa8 | r1 = 0xa8;
0x0002c9c0 str r6, [r4, 0x28] | *((r4 + 0x28)) = r6;
0x0002c9c2 add r3, pc | r3 = 0x593c2;
0x0002c9c4 add r0, pc | r0 = 0x593ca;
0x0002c9c6 bl 0x40ed8 | zbx_strdup2 ();
0x0002c9ca b 0x2c92c | goto label_0;
| label_8:
0x0002c9cc blx 0xe158 | fcn_0000e158 ();
0x0002c9d0 ssat16 r0, 3, r4 | __asm ("ssat16 r0, 3, r4");
0x0002c9d4 lsls r4, r2, 0xe | r4 = r2 << 0xe;
0x0002c9d6 movs r0, r0 |
0x0002c9d8 str r2, [r2, 0x5c] | *((r2 + 0x5c)) = r2;
0x0002c9da movs r2, r0 | r2 = r0;
0x0002c9dc cmp r5, 0x4e |
0x0002c9de movs r2, r0 | r2 = r0;
0x0002c9e0 ldr r2, [r3, 0x38] | r2 = *((r3 + 0x38));
0x0002c9e2 movs r2, r0 | r2 = r0;
0x0002c9e4 subw r0, r4, 2 | __asm ("subw r0, r4, 2");
0x0002c9e8 cmp r5, 0 |
0x0002c9ea movs r2, r0 | r2 = r0;
0x0002c9ec ldr r4, [r4, 0x34] | r4 = *((r4 + 0x34));
0x0002c9ee movs r2, r0 | r2 = r0;
0x0002c9f0 ldr r4, [r5, 0x34] | r4 = *((r5 + 0x34));
0x0002c9f2 movs r2, r0 | r2 = r0;
0x0002c9f4 ldr r4, [r0, 0x38] | r4 = *((r0 + 0x38));
0x0002c9f6 movs r2, r0 | r2 = r0;
0x0002c9f8 ldr r4, [r6, 0x34] | r4 = *((r6 + 0x34));
0x0002c9fa movs r2, r0 | r2 = r0;
0x0002c9fc mvns r6, r0 | r6 = ~r0;
0x0002c9fe movs r2, r0 | r2 = r0;
0x0002ca00 ldr r4, [r7, 0x2c] | r4 = *((r7 + 0x2c));
0x0002ca02 movs r2, r0 | r2 = r0;
| }
; assembly | /* r2dec pseudo code output */
| /* /logs/firmware/patool_extraction/rootfs.img_unblob_extracted/rootfs.img_extract/0-80367616.squashfs_v4_le_extract/usr/sbin/zabbix_agentd @ 0x2790c */
| #include <stdint.h>
|
; (fcn) sym.VFS_FS_DISCOVERY () | void VFS_FS_DISCOVERY (int16_t arg2) {
| int16_t var_4h;
| int16_t var_ch;
| int16_t var_68h;
| int16_t var_a8h;
| int16_t var_100h;
| int16_t var_168h;
| int16_t var_188h;
| int16_t var_390h;
| int16_t var_1020h;
| int16_t var_0h_2;
| int16_t var_1h;
| int16_t var_0h_3;
| int16_t var_1820h;
| int32_t var_0h;
| r1 = arg2;
0x0002790c blmi 0x15ba268 | __asm ("blmi 0x15ba268");
0x00027910 push.w {r4, r5, r6, r7, r8, sb, sl, fp, lr} |
0x00027914 mov r8, r1 | r8 = r1;
0x00027916 add r2, pc | r2 += pc;
0x00027918 ldr r0, [pc, 0x150] |
0x0002791a sub.w sp, sp, 0x1820 |
0x0002791e ldr r1, [pc, 0x150] |
0x00027920 sub sp, 0xc |
0x00027922 ldr r3, [r2, r3] | r3 = *((r2 + r3));
0x00027924 add.w r4, sp, 0x1820 | r4 += var_1820h;
0x00027928 add r0, pc | r0 = 0x4f398;
0x0002792a adds r4, 4 | r4 += 4;
0x0002792c add r1, pc | r1 = 0x4f3a2;
0x0002792e ldr r3, [r3] | r3 = *(r3);
0x00027930 str r3, [r4] | *(r4) = r3;
0x00027932 mov.w r3, 0 | r3 = 0;
0x00027936 blx 0xdf90 | r0 = fcn_0000df90 ();
0x0002793a mov r7, r0 | r7 = r0;
0x0002793c cmp r0, 0 |
| if (r0 == 0) {
0x0002793e beq 0x27a32 | goto label_2;
| }
0x00027940 add r5, sp, 0xc | r5 += var_ch;
0x00027942 ldr.w sl, [pc, 0x130] | sl = *(0x00027a74);
0x00027946 mov.w r1, 0x1000 | r1 = 0x1000;
0x0002794a mov r0, r5 | r0 = r5;
0x0002794c bl 0x3ab5c | zbx_json_initarray ();
0x00027950 ldr r3, [pc, 0x124] |
0x00027952 add.w r6, sp, 0x1020 | r6 += var_1020h;
0x00027956 add sl, pc | sl += pc;
0x00027958 adds r6, 4 | r6 += 4;
0x0002795a add r3, pc | r3 = 0x4f3d6;
0x0002795c str r3, [sp, 4] | var_4h = r3;
| do {
| label_0:
0x0002795e mov r2, r7 | r2 = r7;
0x00027960 mov.w r1, 0x800 | r1 = 0x800;
0x00027964 mov r0, r6 | r0 = r6;
0x00027966 blx 0xdc98 | r0 = fcn_0000dc98 ();
0x0002796a mov r4, r0 | r4 = r0;
| if (r0 == 0) {
0x0002796c cbz r0, 0x279dc | goto label_3;
| }
| label_1:
0x0002796e movs r1, 0x20 | r1 = 0x20;
0x00027970 mov r0, r6 | r0 = r6;
0x00027972 blx 0xdcd4 | r0 = fcn_0000dcd4 ();
0x00027976 cmp r0, 0 |
0x00027978 beq 0x2795e |
| } while (r0 == 0);
0x0002797a add.w fp, r0, 1 |
0x0002797e movs r1, 0x20 | r1 = 0x20;
0x00027980 mov r0, fp | r0 = fp;
0x00027982 blx 0xdcd4 | r0 = fcn_0000dcd4 ();
0x00027986 mov r4, r0 | r4 = r0;
0x00027988 cmp r0, 0 |
| if (r0 == 0) {
0x0002798a beq 0x2795e | goto label_0;
| }
0x0002798c mov.w sb, 0 | sb = 0;
0x00027990 movs r1, 0x20 | r1 = 0x20;
0x00027992 strb sb, [r4], 1 | *(r4) = sb;
| r4++;
0x00027996 mov r0, r4 | r0 = r4;
0x00027998 blx 0xdcd4 | r0 = fcn_0000dcd4 ();
0x0002799c cmp r0, 0 |
| if (r0 == 0) {
0x0002799e beq 0x2795e | goto label_0;
| }
0x000279a0 mov r1, sb | r1 = sb;
0x000279a2 strb.w sb, [r0] | *(r0) = sb;
0x000279a6 mov r0, r5 | r0 = r5;
0x000279a8 bl 0x3ac94 | zbx_json_addobject ();
0x000279ac movs r3, 1 | r3 = 1;
0x000279ae mov r2, fp | r2 = fp;
0x000279b0 mov r1, sl | r1 = sl;
0x000279b2 mov r0, r5 | r0 = r5;
0x000279b4 bl 0x3ac9c | zbx_json_addstring ();
0x000279b8 mov r2, r4 | r2 = r4;
0x000279ba ldr r1, [sp, 4] | r1 = var_4h;
0x000279bc movs r3, 1 | r3 = 1;
0x000279be mov r0, r5 | r0 = r5;
0x000279c0 bl 0x3ac9c | zbx_json_addstring ();
0x000279c4 mov r0, r5 | r0 = r5;
0x000279c6 bl 0x3af6c | zbx_json_close ();
0x000279ca mov r2, r7 | r2 = r7;
0x000279cc mov.w r1, 0x800 | r1 = 0x800;
0x000279d0 mov r0, r6 | r0 = r6;
0x000279d2 blx 0xdc98 | r0 = fcn_0000dc98 ();
0x000279d6 mov r4, r0 | r4 = r0;
0x000279d8 cmp r0, 0 |
| if (r0 != 0) {
0x000279da bne 0x2796e | goto label_1;
| }
| label_3:
0x000279dc mov r0, r7 | r0 = r7;
0x000279de blx 0xdc8c | fcn_0000dc8c ();
0x000279e2 mov r0, r5 | r0 = r5;
0x000279e4 bl 0x3af6c | zbx_json_close ();
0x000279e8 ldr.w r2, [r8, 0x28] | r2 = *((r8 + 0x28));
0x000279ec movs r1, 0xaf | r1 = 0xaf;
0x000279ee ldr r0, [pc, 0x8c] |
0x000279f0 ldr r3, [sp, 0xc] | r3 = var_ch;
0x000279f2 orr r2, r2, 4 | r2 |= 4;
0x000279f6 str.w r2, [r8, 0x28] | __asm ("str.w r2, [r8, 0x28]");
0x000279fa add r0, pc | r0 = 0x4f47c;
0x000279fc mov r2, r4 | r2 = r4;
0x000279fe bl 0x40ed8 | zbx_strdup2 ();
0x00027a02 str.w r0, [r8, 0x18] | __asm ("str.w r0, [r8, 0x18]");
0x00027a06 mov r0, r5 | r0 = r5;
0x00027a08 bl 0x3ac14 | zbx_json_free ();
0x00027a0c mov r0, r4 | r0 = r4;
| do {
0x00027a0e ldr r2, [pc, 0x70] |
0x00027a10 add.w r1, sp, 0x1820 | r1 += var_1820h;
0x00027a14 ldr r3, [pc, 0x50] | r3 = *(0x27a68);
0x00027a16 adds r1, 4 | r1 += 4;
0x00027a18 add r2, pc | r2 = 0x4f49e;
0x00027a1a ldr r3, [r2, r3] | r3 = *(0x4f49e);
0x00027a1c ldr r2, [r3] | r2 = *(0x4f49e);
0x00027a1e ldr r3, [r1] | r3 = *(r1);
0x00027a20 eors r2, r3 | r2 ^= r3;
0x00027a22 mov.w r3, 0 | r3 = 0;
| if (r2 != r3) {
0x00027a26 bne 0x27a5e | goto label_4;
| }
0x00027a28 add.w sp, sp, 0x1820 |
0x00027a2c add sp, 0xc |
0x00027a2e pop.w {r4, r5, r6, r7, r8, sb, sl, fp, pc} |
| label_2:
0x00027a32 ldr.w r3, [r8, 0x28] | r3 = *((r8 + 0x28));
0x00027a36 orr r3, r3, 0x20 | r3 |= 0x20;
0x00027a3a str.w r3, [r8, 0x28] | __asm ("str.w r3, [r8, 0x28]");
0x00027a3e blx 0xe3d4 | r0 = fcn_0000e3d4 ();
0x00027a42 ldr r0, [r0] | r0 = *(r0);
0x00027a44 bl 0x30b74 | zbx_strerror ();
0x00027a48 ldr r1, [pc, 0x38] |
0x00027a4a mov r2, r0 | r2 = r0;
0x00027a4c mov r0, r7 | r0 = r7;
0x00027a4e add r1, pc | r1 = 0x4f4d6;
0x00027a50 bl 0x44820 | r0 = zbx_dsprintf ()
0x00027a54 mov r3, r0 | r3 = r0;
0x00027a56 movs r0, 1 | r0 = 1;
0x00027a58 str.w r3, [r8, 0x20] | __asm ("str.w r3, [r8, 0x20]");
0x00027a5c b 0x27a0e |
| } while (1);
| label_4:
0x00027a5e blx 0xe158 | fcn_0000e158 ();
0x00027a62 nop |
0x00027a64 cmn r2, r0 |
0x00027a66 movs r3, r0 | r3 = r0;
0x00027a68 lsls r4, r2, 0xe | r4 = r2 << 0xe;
0x00027a6a movs r0, r0 |
0x00027a6c add r5, sp, 0x100 | r5 += var_100h;
0x00027a6e movs r2, r0 | r2 = r0;
0x00027a70 ldr r1, [sp, 0x390] | r1 = var_390h;
0x00027a72 movs r2, r0 | r2 = r0;
0x00027a74 add r5, sp, 0x168 | r5 += var_168h;
0x00027a76 movs r2, r0 | r2 = r0;
0x00027a78 add r5, sp, 0x188 | r5 += var_188h;
0x00027a7a movs r2, r0 | r2 = r0;
0x00027a7c add r4, sp, 0x68 | r4 += var_68h;
0x00027a7e movs r2, r0 | r2 = r0;
0x00027a80 rors r0, r0 | __asm ("rors r0, r0");
0x00027a82 movs r3, r0 | r3 = r0;
0x00027a84 add r4, sp, 0xa8 | r4 += var_a8h;
0x00027a86 movs r2, r0 | r2 = r0;
| }
; assembly | /* r2dec pseudo code output */
| /* /logs/firmware/patool_extraction/rootfs.img_unblob_extracted/rootfs.img_extract/0-80367616.squashfs_v4_le_extract/usr/sbin/zabbix_agentd @ 0x1e77c */
| #include <stdint.h>
|
; (fcn) sym.VM_MEMORY_SIZE () | void VM_MEMORY_SIZE (int16_t arg1, int16_t arg2) {
| int16_t var_74h_2;
| int16_t var_0h;
| int16_t var_8h;
| int16_t var_ch;
| int16_t var_20h;
| int16_t var_34h;
| int16_t var_44h;
| int16_t var_48h;
| int16_t var_50h;
| int16_t var_68h;
| int16_t var_74h;
| r0 = arg1;
| r1 = arg2;
| label_3:
0x0001e6bc blmi 0xa70f64 | __asm ("blmi aav.0x0003d514");
0x0001e6c0 push {r4, r5, r6, lr} |
0x0001e6c2 mov r5, r0 | r5 = r0;
0x0001e6c4 add r2, pc | r2 += pc;
0x0001e6c6 ldr r0, [pc, 0xa0] |
0x0001e6c8 mov r4, r1 | r4 = r1;
0x0001e6ca sub sp, 0x10 |
0x0001e6cc ldr r1, [pc, 0x9c] |
0x0001e6ce ldr r3, [r2, r3] | r3 = *((r2 + r3));
0x0001e6d0 add r0, pc | r0 = 0x3ce3e;
0x0001e6d2 add r1, pc | r1 = 0x3ce42;
0x0001e6d4 ldr r3, [r3] | r3 = *(r3);
0x0001e6d6 str r3, [sp, 0xc] | var_ch = r3;
0x0001e6d8 mov.w r3, 0 | r3 = 0;
0x0001e6dc blx 0xdf90 | r0 = fcn_0000df90 ();
0x0001e6e0 mov r6, r0 | r6 = r0;
| if (r0 == 0) {
0x0001e6e2 cbz r0, 0x1e738 | goto label_9;
| }
0x0001e6e4 mov r3, sp | r3 = sp;
0x0001e6e6 mov r1, r5 | r1 = r5;
0x0001e6e8 movs r2, 0 | r2 = 0;
0x0001e6ea bl 0x21570 | byte_value_from_proc_file ();
0x0001e6ee ldr r3, [r4, 0x28] | r3 = *((r4 + 0x28));
0x0001e6f0 mov r5, r0 | r5 = r0;
| if (r0 != 0) {
0x0001e6f2 cbnz r0, 0x1e722 | goto label_10;
| }
0x0001e6f4 orr r3, r3, 1 | r3 |= 1;
0x0001e6f8 str r3, [r4, 0x28] | *((r4 + 0x28)) = r3;
0x0001e6fa ldrd r2, r3, [sp] | __asm ("ldrd r2, r3, [sp]");
0x0001e6fc movs r3, 0 | r3 = 0;
0x0001e6fe strd r2, r3, [r4, 8] | __asm ("strd r2, r3, [r4, 8]");
0x0001e700 movs r3, 2 | r3 = 2;
| do {
0x0001e702 mov r0, r6 | r0 = r6;
0x0001e704 blx 0xdc8c | fcn_0000dc8c ();
| label_0:
0x0001e708 ldr r2, [pc, 0x64] | r2 = *(0x1e770);
0x0001e70a ldr r3, [pc, 0x58] | r3 = *(0x1e766);
| label_1:
0x0001e70c add r2, pc | r2 += pc;
0x0001e70e ldr r3, [r2, r3] | r3 = *((r2 + r3));
0x0001e710 ldr r2, [r3] | r2 = *(r3);
0x0001e712 ldr r3, [sp, 0xc] | r3 = var_ch;
0x0001e714 eors r2, r3 | r2 ^= r3;
0x0001e716 mov.w r3, 0 | r3 = 0;
| if (r2 != r3) {
0x0001e71a bne 0x1e75c | goto label_11;
| }
0x0001e71c mov r0, r5 | r0 = r5;
0x0001e71e add sp, 0x10 |
0x0001e720 pop {r4, r5, r6, pc} |
| label_10:
0x0001e722 ldr r1, [pc, 0x50] |
0x0001e724 orr r3, r3, 0x20 | r3 |= 0x20;
0x0001e728 movs r0, 0 | r0 = 0;
0x0001e72a str r3, [r4, 0x28] | *((r4 + 0x28)) = r3;
0x0001e72c movs r5, 1 | r5 = 1;
0x0001e72e add r1, pc | r1 = 0x3cea8;
0x0001e730 bl 0x44820 | zbx_dsprintf ()
0x0001e734 str r0, [r4, 0x20] | *((r4 + 0x20)) = r0;
0x0001e736 b 0x1e702 |
| } while (1);
| label_9:
0x0001e738 ldr r3, [r4, 0x28] | r3 = *((r4 + 0x28));
0x0001e73a movs r5, 1 | r5 = 1;
0x0001e73c orr r3, r3, 0x20 | r3 |= 0x20;
0x0001e740 str r3, [r4, 0x28] | *((r4 + 0x28)) = r3;
0x0001e742 blx 0xe3d4 | r0 = fcn_0000e3d4 ();
0x0001e746 ldr r0, [r0] | r0 = *(r0);
0x0001e748 bl 0x30b74 | zbx_strerror ();
0x0001e74c ldr r1, [pc, 0x28] |
0x0001e74e mov r2, r0 | r2 = r0;
0x0001e750 mov r0, r6 | r0 = r6;
0x0001e752 add r1, pc | r1 = 0x3cece;
0x0001e754 bl 0x44820 | zbx_dsprintf ()
0x0001e758 str r0, [r4, 0x20] | *((r4 + 0x20)) = r0;
0x0001e75a b 0x1e708 | goto label_0;
| label_11:
0x0001e75c blx 0xe158 | fcn_0000e158 ();
| if (r5 >= 1) {
0x0001e760 bpl 0x1e78c | goto label_12;
| }
0x0001e762 movs r3, r0 | r3 = r0;
0x0001e764 lsls r4, r2, 0xe | r4 = r2 << 0xe;
0x0001e766 movs r0, r0 |
0x0001e768 cmp r4, 0xf8 |
0x0001e76a movs r3, r0 | r3 = r0;
0x0001e76c cmp r4, 0x3e |
0x0001e76e movs r3, r0 | r3 = r0;
| if (r3 < r0) {
0x0001e770 bmi 0x1e70c | goto label_1;
| }
0x0001e772 movs r3, r0 | r3 = r0;
0x0001e774 cmp r5, 0x8a |
0x0001e776 movs r3, r0 | r3 = r0;
0x0001e778 cmp r4, 0x86 |
0x0001e77a movs r3, r0 | r3 = r0;
0x0001e77c ldr.w r2, [pc, 0x478] | r2 = *(0x1ebf8);
0x0001e780 ldr.w r3, [pc, 0x478] | r3 = *(0x1ebfc);
0x0001e784 push.w {r4, r5, r6, r7, r8, sb, sl, lr} |
0x0001e788 mov r4, r1 | r4 = r1;
0x0001e78a ldr r6, [r0, 4] | r6 = *((r0 + 4));
| label_12:
0x0001e78c add r2, pc | r2 += pc;
0x0001e78e vpush {d8} | __asm ("vpush {d8}");
0x0001e792 sub sp, 0x78 |
0x0001e794 ldr r3, [r2, r3] | r3 = *((r2 + r3));
0x0001e796 cmp r6, 1 |
0x0001e798 ldr r3, [r3] | r3 = *(r3);
0x0001e79a str r3, [sp, 0x74] | var_74h = r3;
0x0001e79c mov.w r3, 0 | r3 = 0;
| if (r6 > 1) {
0x0001e7a0 bgt 0x1e7f8 | goto label_13;
| }
| if (r6 == 1) {
0x0001e7a2 bne 0x1e7b0 |
0x0001e7a4 ldr r3, [r0, 8] | r3 = *((r0 + 8));
0x0001e7a6 ldr r5, [r3] | r5 = *(r3);
| if (r5 == 0) {
0x0001e7a8 cbz r5, 0x1e7b0 | goto label_2;
| }
0x0001e7aa ldrb r3, [r5] | r3 = *(r5);
0x0001e7ac cmp r3, 0 |
| if (r3 != 0) {
0x0001e7ae bne 0x1e818 | goto label_14;
| }
| }
| label_2:
0x0001e7b0 add r0, sp, 0x34 | r0 += var_34h;
0x0001e7b2 blx 0xe364 | fcn_0000e364 ();
0x0001e7b6 ldr r2, [sp, 0x44] | r2 = var_44h;
0x0001e7b8 mov r5, r0 | r5 = r0;
0x0001e7ba cmp r0, 0 |
| if (r0 != 0) {
0x0001e7bc bne.w 0x1e918 | goto label_15;
| }
| label_5:
0x0001e7c0 ldr r3, [sp, 0x68] | r3 = var_68h;
0x0001e7c2 ldr r1, [r4, 0x28] | r1 = *((r4 + 0x28));
0x0001e7c4 umull r2, r3, r2, r3 | r2:r3 = r2 * r3;
0x0001e7c8 orr r1, r1, 1 | r1 |= 1;
0x0001e7cc str r1, [r4, 0x28] | *((r4 + 0x28)) = r1;
0x0001e7ce strd r2, r3, [r4, 8] | __asm ("strd r2, r3, [r4, 8]");
| do {
| label_4:
0x0001e7d2 ldr.w r2, [pc, 0x42c] | r2 = *(0x0001ec00);
0x0001e7d6 ldr.w r3, [pc, 0x424] | r3 = *(0x1ebfe);
0x0001e7da add r2, pc | r2 += pc;
0x0001e7dc ldr r3, [r2, r3] | r3 = *((r2 + r3));
0x0001e7de ldr r2, [r3] | r2 = *(0x1ebfe);
0x0001e7e0 ldr r3, [sp, 0x74] | r3 = var_74h;
0x0001e7e2 eors r2, r3 | r2 ^= r3;
0x0001e7e4 mov.w r3, 0 | r3 = 0;
| if (r2 != r3) {
0x0001e7e8 bne.w 0x1eb9c | goto label_16;
| }
0x0001e7ec mov r0, r5 | r0 = r5;
0x0001e7ee add sp, 0x78 |
0x0001e7f0 vpop {d8} | __asm ("vpop {d8}");
0x0001e7f4 pop.w {r4, r5, r6, r7, r8, sb, sl, pc} |
| label_13:
0x0001e7f8 ldr r0, [r1, 0x28] | r0 = *((r1 + 0x28));
0x0001e7fa movs r2, 0 | r2 = 0;
0x0001e7fc ldr.w r3, [pc, 0x404] |
0x0001e800 movs r1, 0xf9 | r1 = 0xf9;
0x0001e802 orr r0, r0, 0x20 | r0 |= 0x20;
0x0001e806 str r0, [r4, 0x28] | *((r4 + 0x28)) = r0;
0x0001e808 add r3, pc | r3 = 0x3d410;
0x0001e80a ldr r0, [pc, 0x3fc] |
0x0001e80c add r0, pc | r0 = 0x3d41a;
0x0001e80e bl 0x40ed8 | zbx_strdup2 ();
| label_6:
0x0001e812 movs r5, 1 | r5 = 1;
0x0001e814 str r0, [r4, 0x20] | *((r4 + 0x20)) = r0;
0x0001e816 b 0x1e7d2 |
| } while (1);
| label_14:
0x0001e818 ldr r1, [pc, 0x3f0] |
0x0001e81a mov r0, r5 | r0 = r5;
0x0001e81c add r1, pc | r1 = 0x3d42c;
0x0001e81e blx 0xe3b0 | r0 = fcn_0000e3b0 ();
0x0001e822 cmp r0, 0 |
| if (r0 == 0) {
0x0001e824 beq 0x1e7b0 | goto label_2;
| }
0x0001e826 ldr r1, [pc, 0x3e8] |
0x0001e828 mov r0, r5 | r0 = r5;
0x0001e82a add r1, pc | r1 = 0x3d440;
0x0001e82c blx 0xe3b0 | r0 = fcn_0000e3b0 ();
0x0001e830 mov r7, r0 | r7 = r0;
0x0001e832 cmp r0, 0 |
| if (r0 != 0) {
0x0001e834 beq.w 0x1e93c |
0x0001e838 ldr r1, [pc, 0x3d8] |
0x0001e83a mov r0, r5 | r0 = r5;
0x0001e83c add r1, pc | r1 = 0x3d454;
0x0001e83e blx 0xe3b0 | r0 = fcn_0000e3b0 ();
0x0001e842 mov r7, r0 | r7 = r0;
0x0001e844 cmp r0, 0 |
| if (r0 == 0) {
0x0001e846 beq.w 0x1e970 | goto label_17;
| }
0x0001e84a ldr r1, [pc, 0x3cc] |
0x0001e84c mov r0, r5 | r0 = r5;
0x0001e84e add r1, pc | r1 = 0x3d46c;
0x0001e850 blx 0xe3b0 | r0 = fcn_0000e3b0 ();
0x0001e854 mov r7, r0 | r7 = r0;
0x0001e856 cmp r0, 0 |
| if (r0 == 0) {
0x0001e858 beq.w 0x1e9a4 | goto label_18;
| }
0x0001e85c ldr r1, [pc, 0x3bc] |
0x0001e85e mov r0, r5 | r0 = r5;
0x0001e860 add r1, pc | r1 = 0x3d480;
0x0001e862 blx 0xe3b0 | r0 = fcn_0000e3b0 ();
0x0001e866 cmp r0, 0 |
| if (r0 == 0) {
0x0001e868 beq.w 0x1e9ca | goto label_19;
| }
0x0001e86c ldr r1, [pc, 0x3b0] |
0x0001e86e mov r0, r5 | r0 = r5;
0x0001e870 add r1, pc | r1 = 0x3d494;
0x0001e872 blx 0xe3b0 | fcn_0000e3b0 ();
0x0001e874 ldc p8, c2, [lr] | __asm ("ldc p8, c2, [lr]");
| if (r0 == 0) {
0x0001e878 beq.w 0x1ea0c | goto label_20;
| }
0x0001e87c ldr r1, [pc, 0x3a4] |
0x0001e87e mov r0, r5 | r0 = r5;
0x0001e880 add r1, pc | r1 = 0x3d4a8;
0x0001e882 blx 0xe3b0 | r0 = fcn_0000e3b0 ();
0x0001e886 mov r7, r0 | r7 = r0;
0x0001e888 cmp r0, 0 |
| if (r0 == 0) {
0x0001e88a beq.w 0x1ea30 | goto label_21;
| }
0x0001e88e ldr r1, [pc, 0x398] |
0x0001e890 mov r0, r5 | r0 = r5;
0x0001e892 add r1, pc | r1 = 0x3d4c0;
0x0001e894 blx 0xe3b0 | r0 = fcn_0000e3b0 ();
0x0001e898 mov r2, r0 | r2 = r0;
0x0001e89a cmp r0, 0 |
| if (r0 == 0) {
0x0001e89c beq.w 0x1eabe | goto label_22;
| }
0x0001e8a0 ldr r1, [pc, 0x388] |
0x0001e8a2 mov r0, r5 | r0 = r5;
0x0001e8a4 add r1, pc | r1 = 0x3d4d4;
0x0001e8a6 blx 0xe3b0 | r0 = fcn_0000e3b0 ();
0x0001e8aa cmp r0, 0 |
| if (r0 == 0) {
0x0001e8ac beq.w 0x1eafa | goto label_23;
| }
0x0001e8b0 ldr r1, [pc, 0x37c] |
0x0001e8b2 mov r0, r5 | r0 = r5;
0x0001e8b4 add r1, pc | r1 = 0x3d4e8;
0x0001e8b6 blx 0xe3b0 | r0 = fcn_0000e3b0 ();
0x0001e8ba cmp r0, 0 |
| if (r0 == 0) {
0x0001e8bc beq.w 0x1eb4e | goto label_24;
| }
0x0001e8c0 ldr r1, [pc, 0x370] |
0x0001e8c2 mov r0, r5 | r0 = r5;
0x0001e8c4 add r1, pc | r1 = 0x3d4fc;
0x0001e8c6 blx 0xe3b0 | r0 = fcn_0000e3b0 ();
0x0001e8ca cmp r0, 0 |
| if (r0 == 0) {
0x0001e8cc beq.w 0x1eb68 | goto label_25;
| }
0x0001e8d0 ldr r1, [pc, 0x364] |
0x0001e8d2 mov r0, r5 | r0 = r5;
0x0001e8d4 add r1, pc | r1 = 0x3d510;
0x0001e8d6 blx 0xe3b0 | r0 = fcn_0000e3b0 ();
0x0001e8da cmp r0, 0 |
| if (r0 == 0) {
0x0001e8dc beq.w 0x1eb82 | goto label_26;
| }
0x0001e8e0 ldr r1, [pc, 0x358] |
0x0001e8e2 mov r0, r5 | r0 = r5;
0x0001e8e4 add r1, pc | r1 = 0x3d524;
0x0001e8e6 blx 0xe3b0 | r0 = fcn_0000e3b0 ();
0x0001e8ea cmp r0, 0 |
| if (r0 != 0) {
0x0001e8ec bne.w 0x1eba0 | goto label_27;
| }
0x0001e8f0 ldr r2, [pc, 0x34c] |
0x0001e8f2 ldr r3, [pc, 0x308] | r3 = *(0x1ebfe);
0x0001e8f4 add r2, pc | r2 = 0x3d538;
0x0001e8f6 ldr r3, [r2, r3] | r3 = *(0x3d538);
0x0001e8f8 ldr r2, [r3] | r2 = *(0x3d538);
0x0001e8fa ldr r3, [sp, 0x74] | r3 = var_74h;
0x0001e8fc eors r2, r3 | r2 ^= r3;
0x0001e8fe mov.w r3, 0 | r3 = 0;
| if (r2 != r3) {
0x0001e902 bne.w 0x1eb9c | goto label_16;
| }
0x0001e904 strh r3, [r1, 0xa] | *((r1 + 0xa)) = r3;
0x0001e906 ldr r0, [pc, 0x33c] |
0x0001e908 add r0, pc | r0 = 0x3d552;
| label_7:
0x0001e90a mov r1, r4 | r1 = r4;
0x0001e90c add sp, 0x78 |
0x0001e90e vpop {d8} | __asm ("vpop {d8}");
0x0001e912 pop.w {r4, r5, r6, r7, r8, sb, sl, lr} |
0x0001e916 b 0x1e6bc | goto label_3;
| label_15:
0x0001e918 ldr r3, [r4, 0x28] | r3 = *((r4 + 0x28));
0x0001e91a movs r5, 1 | r5 = 1;
0x0001e91c orr r3, r3, 0x20 | r3 |= 0x20;
0x0001e920 str r3, [r4, 0x28] | *((r4 + 0x28)) = r3;
0x0001e922 blx 0xe3d4 | r0 = fcn_0000e3d4 ();
0x0001e926 ldr r0, [r0] | r0 = *(r0);
0x0001e928 bl 0x30b74 | zbx_strerror ();
0x0001e92c ldr r1, [pc, 0x318] |
0x0001e92e mov r2, r0 | r2 = r0;
0x0001e930 movs r0, 0 | r0 = 0;
0x0001e932 add r1, pc | r1 = 0x3d57e;
0x0001e934 bl 0x44820 | zbx_dsprintf ()
0x0001e938 str r0, [r4, 0x20] | *((r4 + 0x20)) = r0;
0x0001e93a b 0x1e7d2 | goto label_4;
| }
0x0001e93c add r0, sp, 0x34 | r0 += var_34h;
0x0001e93e blx 0xe364 | fcn_0000e364 ();
0x0001e942 ldr r2, [sp, 0x48] | r2 = var_48h;
0x0001e944 mov r5, r0 | r5 = r0;
0x0001e946 cmp r0, 0 |
| if (r0 == 0) {
0x0001e948 beq.w 0x1e7c0 | goto label_5;
| }
0x0001e94c ldr r3, [r4, 0x28] | r3 = *((r4 + 0x28));
0x0001e94e mov r5, r6 | r5 = r6;
0x0001e950 orr r3, r3, 0x20 | r3 |= 0x20;
0x0001e954 str r3, [r4, 0x28] | *((r4 + 0x28)) = r3;
0x0001e956 blx 0xe3d4 | r0 = fcn_0000e3d4 ();
0x0001e95a ldr r0, [r0] | r0 = *(r0);
0x0001e95c bl 0x30b74 | zbx_strerror ();
0x0001e960 ldr r1, [pc, 0x2e8] |
0x0001e962 mov r2, r0 | r2 = r0;
0x0001e964 mov r0, r7 | r0 = r7;
0x0001e966 add r1, pc | r1 = 0x3d5b6;
0x0001e968 bl 0x44820 | zbx_dsprintf ()
0x0001e96c str r0, [r4, 0x20] | *((r4 + 0x20)) = r0;
0x0001e96e b 0x1e7d2 | goto label_4;
| label_17:
0x0001e970 add r0, sp, 0x34 | r0 += var_34h;
0x0001e972 blx 0xe364 | fcn_0000e364 ();
0x0001e976 ldr r2, [sp, 0x50] | r2 = var_50h;
0x0001e978 mov r5, r0 | r5 = r0;
0x0001e97a cmp r0, 0 |
| if (r0 == 0) {
0x0001e97c beq.w 0x1e7c0 | goto label_5;
| }
0x0001e980 ldr r3, [r4, 0x28] | r3 = *((r4 + 0x28));
0x0001e982 mov r5, r6 | r5 = r6;
0x0001e984 orr r3, r3, 0x20 | r3 |= 0x20;
0x0001e988 str r3, [r4, 0x28] | *((r4 + 0x28)) = r3;
0x0001e98a blx 0xe3d4 | r0 = fcn_0000e3d4 ();
0x0001e98e ldr r0, [r0] | r0 = *(r0);
0x0001e990 bl 0x30b74 | zbx_strerror ();
0x0001e994 ldr r1, [pc, 0x2b8] |
0x0001e996 mov r2, r0 | r2 = r0;
0x0001e998 mov r0, r7 | r0 = r7;
0x0001e99a add r1, pc | r1 = 0x3d5ee;
0x0001e99c bl 0x44820 | zbx_dsprintf ()
0x0001e9a0 str r0, [r4, 0x20] | *((r4 + 0x20)) = r0;
0x0001e9a2 b 0x1e7d2 | goto label_4;
| label_18:
0x0001e9a4 add r0, sp, 0x34 | r0 += var_34h;
0x0001e9a6 blx 0xe364 | r0 = fcn_0000e364 ();
0x0001e9aa mov r5, r0 | r5 = r0;
0x0001e9ac cmp r0, 0 |
| if (r0 == 0) {
0x0001e9ae bne 0x1ea9a |
0x0001e9b0 ldrd r3, r0, [sp, 0x44] | __asm ("ldrd r3, r0, [var_44h]");
0x0001e9b4 ldr r2, [sp, 0x68] | r2 = var_68h;
0x0001e9b6 ldr r1, [r4, 0x28] | r1 = *((r4 + 0x28));
0x0001e9b8 subs r3, r3, r0 | r3 -= r0;
0x0001e9ba umull r3, r2, r3, r2 | r3:r2 = r3 * r2;
0x0001e9be orr r1, r1, 1 | r1 |= 1;
0x0001e9c2 str r1, [r4, 0x28] | *((r4 + 0x28)) = r1;
0x0001e9c4 strd r3, r2, [r4, 8] | __asm ("strd r3, r2, [r4, 8]");
0x0001e9c8 b 0x1e7d2 | goto label_4;
| label_19:
0x0001e9ca add r0, sp, 0x34 | r0 += var_34h;
0x0001e9cc blx 0xe364 | r0 = fcn_0000e364 ();
0x0001e9d0 mov r5, r0 | r5 = r0;
0x0001e9d2 cmp r0, 0 |
| if (r0 != 0) {
0x0001e9d4 bne 0x1ead6 | goto label_28;
| }
0x0001e9d6 ldr r2, [sp, 0x44] | r2 = var_44h;
0x0001e9d8 ldr r3, [r4, 0x28] | r3 = *((r4 + 0x28));
0x0001e9da cmp r2, 0 |
| if (r2 == 0) {
0x0001e9dc beq.w 0x1eb38 | goto label_29;
| }
0x0001e9e0 ldr r1, [sp, 0x48] | r1 = var_48h;
0x0001e9e2 orr r3, r3, 2 | r3 |= 2;
0x0001e9e6 vmov s15, r2 | __asm ("vmov s15, r2");
0x0001e9ea vcvt.f64.u32 d19, s15 | __asm ("vcvt.f64.u32 d19, s15");
0x0001e9ee subs r2, r2, r1 | r2 -= r1;
0x0001e9f0 vldr d18, [pc, 0x1fc] | __asm ("vldr d18, [0x0001ebf4]");
0x0001e9f4 str r3, [r4, 0x28] | *((r4 + 0x28)) = r3;
0x0001e9f6 vmov s15, r2 | __asm ("vmov s15, r2");
0x0001e9fa vcvt.f64.u32 d16, s15 | __asm ("vcvt.f64.u32 d16, s15");
0x0001e9fe vdiv.f64 d17, d16, d19 | __asm ("vdiv.f64 d17, d16, d19");
0x0001ea02 vmul.f64 d17, d17, d18 | __asm ("vmul.f64 d17, d17, d18");
0x0001ea06 vstr d17, [r4, 0x10] | __asm ("vstr d17, [r4, 0x10]");
0x0001ea0a b 0x1e7d2 | goto label_4;
| label_20:
0x0001ea0c ldr r2, [pc, 0x244] |
0x0001ea0e ldr r3, [pc, 0x1ec] | r3 = *(0x1ebfe);
0x0001ea10 add r2, pc | r2 = 0x3d668;
0x0001ea12 ldr r3, [r2, r3] | r3 = *(0x3d668);
0x0001ea14 ldr r2, [r3] | r2 = *(0x3d668);
0x0001ea16 ldr r3, [sp, 0x74] | r3 = var_74h;
0x0001ea18 eors r2, r3 | r2 ^= r3;
0x0001ea1a mov.w r3, 0 | r3 = 0;
| if (r2 != r3) {
0x0001ea1e bne.w 0x1eb9c | goto label_16;
| }
0x0001ea22 mov r0, r4 | r0 = r4;
0x0001ea24 add sp, 0x78 |
0x0001ea26 vpop {d8} | __asm ("vpop {d8}");
0x0001ea2a pop.w {r4, r5, r6, r7, r8, sb, sl, lr} |
0x0001ea2e b 0x1e558 | void (*0x1e558)() ();
| label_21:
0x0001ea30 add r0, sp, 0x34 | r0 += var_34h;
0x0001ea32 blx 0xe364 | r0 = fcn_0000e364 ();
0x0001ea36 mov sl, r0 | sl = r0;
0x0001ea38 cmp r0, 0 |
| if (r0 != 0) {
0x0001ea3a bne 0x1eb14 | goto label_30;
| }
0x0001ea3c mov r7, sp | r7 = sp;
0x0001ea3e mov r0, r7 | r0 = r7;
0x0001ea40 bl 0x1c298 | init_result ();
0x0001ea44 mov r0, r7 | r0 = r7;
0x0001ea46 bl 0x1e558 | r0 = fcn_0001e558 (r0);
0x0001ea4a cmp r0, 1 |
0x0001ea4c mov r5, r0 | r5 = r0;
| if (r0 == 1) {
0x0001ea4e beq.w 0x1ebd8 | goto label_31;
| }
0x0001ea52 ldr r1, [sp, 0x44] | r1 = var_44h;
0x0001ea54 ldr r3, [sp, 0x68] | r3 = var_68h;
0x0001ea56 umull sb, r8, r1, r3 | sb:r8 = r1 * r3;
0x0001ea5a ldr r3, [r4, 0x28] | r3 = *((r4 + 0x28));
0x0001ea5c ldrd r0, r1, [sp, 8] | __asm ("ldrd r0, r1, [var_8h]");
0x0001ea60 orrs.w ip, sb, r8 |
| if (ip == sb) {
0x0001ea64 beq.w 0x1ebbc | goto label_32;
| }
0x0001ea68 orr r3, r3, 2 | r3 |= 2;
0x0001ea6c str r3, [r4, 0x28] | *((r4 + 0x28)) = r3;
0x0001ea6e bl 0x4c6f4 | fcn_0004c6f4 (r0, r1, r2);
0x0001ea70 cdp2 p12, 4, c14, c1, c1, 2 | __asm ("cdp2 p12, 4, c14, c1, c1, 2");
0x0001ea74 lsrs r0, r3, 0xc | r0 = r3 >> 0xc;
0x0001ea76 mov r0, sb | r0 = sb;
0x0001ea78 mov r1, r8 | r1 = r8;
0x0001ea7a bl 0x4c6f4 | r0 = fcn_0004c6f4 (r0, r1, r2);
0x0001ea7e vmov d18, r0, r1 | __asm ("vmov d18, r0, r1");
0x0001ea82 vldr d17, [pc, 0x16c] | __asm ("vldr d17, [0x0001ebf4]");
0x0001ea84 subs r3, r3, r5 | r3 -= r5;
0x0001ea86 vdiv.f64 d16, d8, d18 | __asm ("vdiv.f64 d16, d8, d18");
0x0001ea8a vmul.f64 d16, d16, d17 | __asm ("vmul.f64 d16, d16, d17");
0x0001ea8e vstr d16, [r4, 0x10] | __asm ("vstr d16, [r4, 0x10]");
| label_8:
0x0001ea92 mov r0, r7 | r0 = r7;
0x0001ea94 bl 0x1c2c0 | free_result ();
0x0001ea98 b 0x1e7d2 | goto label_4;
| }
0x0001ea9a ldr r3, [r4, 0x28] | r3 = *((r4 + 0x28));
0x0001ea9c mov r5, r6 | r5 = r6;
0x0001ea9e orr r3, r3, 0x20 | r3 |= 0x20;
0x0001eaa2 str r3, [r4, 0x28] | *((r4 + 0x28)) = r3;
0x0001eaa4 blx 0xe3d4 | r0 = fcn_0000e3d4 ();
0x0001eaa8 ldr r0, [r0] | r0 = *(r0);
0x0001eaaa bl 0x30b74 | zbx_strerror ();
0x0001eaae ldr r1, [pc, 0x1a8] |
0x0001eab0 mov r2, r0 | r2 = r0;
0x0001eab2 mov r0, r7 | r0 = r7;
0x0001eab4 add r1, pc | r1 = 0x3d712;
0x0001eab6 bl 0x44820 | zbx_dsprintf ()
0x0001eaba str r0, [r4, 0x20] | *((r4 + 0x20)) = r0;
0x0001eabc b 0x1e7d2 | goto label_4;
| label_22:
0x0001eabe ldr r0, [r4, 0x28] | r0 = *((r4 + 0x28));
0x0001eac0 movs r1, 0xd4 | r1 = 0xd4;
0x0001eac2 ldr r3, [pc, 0x198] |
0x0001eac4 orr r0, r0, 0x20 | r0 |= 0x20;
0x0001eac8 str r0, [r4, 0x28] | *((r4 + 0x28)) = r0;
0x0001eaca add r3, pc | r3 = 0x3d72c;
0x0001eacc ldr r0, [pc, 0x190] |
0x0001eace add r0, pc | r0 = 0x3d732;
0x0001ead0 bl 0x40ed8 | zbx_strdup2 ();
0x0001ead4 b 0x1e812 | goto label_6;
| label_28:
0x0001ead6 ldr r3, [r4, 0x28] | r3 = *((r4 + 0x28));
0x0001ead8 orr r3, r3, 0x20 | r3 |= 0x20;
0x0001eadc str r3, [r4, 0x28] | *((r4 + 0x28)) = r3;
0x0001eade blx 0xe3d4 | r0 = fcn_0000e3d4 ();
0x0001eae2 ldr r0, [r0] | r0 = *(r0);
0x0001eae4 bl 0x30b74 | zbx_strerror ();
0x0001eae8 ldr r1, [pc, 0x178] |
0x0001eaea mov r2, r0 | r2 = r0;
0x0001eaec movs r0, 0 | r0 = 0;
0x0001eaee add r1, pc | r1 = 0x3d756;
0x0001eaf0 bl 0x44820 | zbx_dsprintf ()
| do {
0x0001eaf4 mov r5, r6 | r5 = r6;
0x0001eaf6 str r0, [r4, 0x20] | *((r4 + 0x20)) = r0;
0x0001eaf8 b 0x1e7d2 | goto label_4;
| label_23:
0x0001eafa ldr r2, [pc, 0x16c] |
0x0001eafc ldr r3, [pc, 0xfc] | r3 = *(0x1ebfc);
0x0001eafe add r2, pc | r2 = zbx_jsonpath_compile;
0x0001eb00 ldr r3, [r2, r3] | r3 = zbx_jsonpath_compile;
0x0001eb02 ldr r2, [r3] | r2 = zbx_jsonpath_compile;
0x0001eb04 ldr r3, [sp, 0x74] | r3 = var_74h;
0x0001eb06 eors r2, r3 | r2 ^= r3;
0x0001eb08 mov.w r3, 0 | r3 = 0;
| if (r2 != r3) {
0x0001eb0c bne 0x1eb9c | goto label_16;
| }
0x0001eb0e ldr r0, [pc, 0x15c] |
0x0001eb10 add r0, pc | r0 = 0x3d782;
0x0001eb12 b 0x1e90a | goto label_7;
| label_30:
0x0001eb14 ldr r3, [r4, 0x28] | r3 = *((r4 + 0x28));
0x0001eb16 mov r5, r6 | r5 = r6;
0x0001eb18 orr r3, r3, 0x20 | r3 |= 0x20;
0x0001eb1c str r3, [r4, 0x28] | *((r4 + 0x28)) = r3;
0x0001eb1e blx 0xe3d4 | r0 = fcn_0000e3d4 ();
0x0001eb22 ldr r0, [r0] | r0 = *(r0);
0x0001eb24 bl 0x30b74 | zbx_strerror ();
0x0001eb28 ldr r1, [pc, 0x144] |
0x0001eb2a mov r2, r0 | r2 = r0;
0x0001eb2c mov r0, r7 | r0 = r7;
0x0001eb2e add r1, pc | r1 = 0x3d7a2;
0x0001eb30 bl 0x44820 | zbx_dsprintf ()
0x0001eb34 str r0, [r4, 0x20] | *((r4 + 0x20)) = r0;
0x0001eb36 b 0x1e7d2 | goto label_4;
| label_29:
0x0001eb38 orr r1, r3, 0x20 | r1 = r3 | 0x20;
0x0001eb3c ldr r0, [pc, 0x134] |
0x0001eb3e ldr r3, [pc, 0x138] |
0x0001eb40 str r1, [r4, 0x28] | *((r4 + 0x28)) = r1;
0x0001eb42 movs r1, 0x61 | r1 = 0x61;
0x0001eb44 add r0, pc | r0 = 0x3d7bc;
0x0001eb46 add r3, pc | r3 = 0x3d7c4;
0x0001eb48 bl 0x40ed8 | zbx_strdup2 ();
0x0001eb4c b 0x1eaf4 |
| } while (1);
| label_24:
0x0001eb4e ldr r2, [pc, 0x12c] |
0x0001eb50 ldr r3, [pc, 0xa8] | r3 = *(0x1ebfc);
0x0001eb52 add r2, pc | r2 = 0x3d7d4;
0x0001eb54 ldr r3, [r2, r3] | r3 = *(0x3d7d4);
0x0001eb56 ldr r2, [r3] | r2 = *(0x3d7d4);
0x0001eb58 ldr r3, [sp, 0x74] | r3 = var_74h;
0x0001eb5a eors r2, r3 | r2 ^= r3;
0x0001eb5c mov.w r3, 0 | r3 = 0;
| if (r2 == r3) {
0x0001eb60 bne 0x1eb9c |
0x0001eb62 ldr r0, [pc, 0x11c] |
0x0001eb64 add r0, pc | r0 = 0x3d7ea;
0x0001eb66 b 0x1e90a | goto label_7;
| label_25:
0x0001eb68 ldr r2, [pc, 0x118] |
0x0001eb6a ldr r3, [pc, 0x90] | r3 = *(0x1ebfe);
0x0001eb6c add r2, pc | r2 = 0x3d7f4;
0x0001eb6e ldr r3, [r2, r3] | r3 = *(0x3d7f4);
0x0001eb70 ldr r2, [r3] | r2 = *(0x3d7f4);
0x0001eb72 ldr r3, [sp, 0x74] | r3 = var_74h;
0x0001eb74 eors r2, r3 | r2 ^= r3;
0x0001eb76 mov.w r3, 0 | r3 = 0;
0x0001eb78 lsls r0, r0, 0xc | r0 <<= 0xc;
| if (r0 != r0) {
0x0001eb7a bne 0x1eb9c | goto label_16;
| }
0x0001eb7c ldr r0, [pc, 0x108] |
0x0001eb7e add r0, pc | r0 = 0x3d80a;
0x0001eb80 b 0x1e90a | goto label_7;
| label_26:
0x0001eb82 ldr r2, [pc, 0x108] |
0x0001eb84 ldr r3, [pc, 0x74] | r3 = *(0x1ebfc);
0x0001eb86 add r2, pc | r2 = 0x3d818;
0x0001eb88 ldr r3, [r2, r3] | r3 = *(0x3d818);
0x0001eb8a ldr r2, [r3] | r2 = *(0x3d818);
0x0001eb8c ldr r3, [sp, 0x74] | r3 = var_74h;
0x0001eb8e eors r2, r3 | r2 ^= r3;
0x0001eb90 mov.w r3, 0 | r3 = 0;
| if (r2 != r3) {
0x0001eb94 bne 0x1eb9c | goto label_16;
| }
0x0001eb96 ldr r0, [pc, 0xf8] |
0x0001eb98 add r0, pc | r0 = 0x3d82e;
0x0001eb9a b 0x1e90a | goto label_7;
| }
| label_16:
0x0001eb9c blx 0xe158 | fcn_0000e158 ();
| label_27:
0x0001eba0 ldr r0, [r4, 0x28] | r0 = *((r4 + 0x28));
0x0001eba2 movs r2, 0 | r2 = 0;
0x0001eba4 ldr r3, [pc, 0xec] |
0x0001eba6 movw r1, 0x11b | r1 = 0x11b;
0x0001ebaa orr r0, r0, 0x20 | r0 |= 0x20;
0x0001ebae str r0, [r4, 0x28] | *((r4 + 0x28)) = r0;
0x0001ebb0 add r3, pc | r3 = 0x3d848;
0x0001ebb2 ldr r0, [pc, 0xe4] |
0x0001ebb4 add r0, pc | r0 = 0x3d852;
0x0001ebb6 bl 0x40ed8 | zbx_strdup2 ();
0x0001ebba b 0x1e812 | goto label_6;
| label_32:
0x0001ebbc orr r3, r3, 0x20 | r3 |= 0x20;
0x0001ebc0 ldr r0, [pc, 0xd8] |
0x0001ebc2 str r3, [r4, 0x28] | *((r4 + 0x28)) = r3;
0x0001ebc4 mov r2, sl | r2 = sl;
0x0001ebc6 ldr r3, [pc, 0xd8] |
0x0001ebc8 movs r1, 0xb9 | r1 = 0xb9;
0x0001ebca add r0, pc | r0 = 0x3d86a;
0x0001ebcc add r3, pc | r3 = 0x3d872;
0x0001ebce bl 0x40ed8 | zbx_strdup2 ();
| do {
0x0001ebd2 mov r5, r6 | r5 = r6;
0x0001ebd4 str r0, [r4, 0x20] | *((r4 + 0x20)) = r0;
0x0001ebd6 b 0x1ea92 | goto label_8;
| label_31:
0x0001ebd8 ldr r3, [r4, 0x28] | r3 = *((r4 + 0x28));
0x0001ebda mov r2, sl | r2 = sl;
0x0001ebdc ldr r0, [pc, 0xc4] |
0x0001ebde movs r1, 0xb0 | r1 = 0xb0;
0x0001ebe0 orr r3, r3, 0x20 | r3 |= 0x20;
0x0001ebe4 str r3, [r4, 0x28] | *((r4 + 0x28)) = r3;
0x0001ebe6 add r0, pc | r0 = 0x3d88e;
0x0001ebe8 ldr r3, [sp, 0x20] | r3 = var_20h;
0x0001ebea bl 0x40ed8 | zbx_strdup2 ();
0x0001ebee b 0x1ebd2 |
| } while (1);
| }
; assembly | /* r2dec pseudo code output */
| /* /logs/firmware/patool_extraction/rootfs.img_unblob_extracted/rootfs.img_extract/0-80367616.squashfs_v4_le_extract/usr/sbin/zabbix_agentd @ 0x28c50 */
| #include <stdint.h>
|
; (fcn) sym.get_fs_inode_stat () | void get_fs_inode_stat (int16_t arg2, int16_t arg3, int16_t arg4) {
| int16_t var_0h;
| int16_t var_4h;
| int16_t var_8h;
| int16_t var_80h_2;
| int16_t var_28h_2;
| int16_t var_30h_2;
| int16_t var_38h;
| int16_t var_6ch;
| int16_t var_80h;
| int16_t var_a8h;
| int16_t var_ach;
| int16_t var_b4h;
| int16_t var_20h;
| int16_t var_c8h;
| int16_t var_90h;
| int16_t var_180h;
| int16_t var_188h;
| int16_t var_2b8h;
| int16_t var_3a8h;
| int16_t var_328h;
| int16_t var_3c8h_2;
| int16_t var_0h_3;
| int16_t var_4h_2;
| int16_t var_14h_2;
| int16_t var_18h_2;
| int16_t var_20h_2;
| int16_t var_28h;
| int16_t var_30h;
| int16_t var_38h_2;
| int16_t var_44h;
| int16_t var_58h;
| r1 = arg2;
| r2 = arg3;
| r3 = arg4;
0x00028c50 push.w {r4, r5, r6, r7, r8, sb, sl, fp, lr} |
0x00028c54 mov sl, r1 | sl = r1;
0x00028c56 vpush {d8, d9} | __asm ("vpush {d8, d9}");
0x00028c5a sub sp, 0x74 |
0x00028c5c mov sb, r3 | sb = r3;
0x00028c5e mov r8, r2 | r8 = r2;
0x00028c60 ldr r4, [sp, 0xa8] | r4 = var_a8h;
0x00028c62 ldr r1, [pc, 0x17c] | r1 = *(0x28de2);
0x00028c64 ldr r3, [sp, 0xb4] | r3 = var_b4h;
0x00028c66 str r4, [sp] | *(sp) = r4;
0x00028c68 ldr r4, [pc, 0x178] |
0x00028c6a ldrd r7, r6, [sp, 0xac] | __asm ("ldrd r7, r6, [var_ach]");
0x00028c6e add r4, pc | r4 = 0x51a56;
0x00028c70 ldr r1, [r4, r1] |
0x00028c72 ldr r1, [r1] | r1 = *(0x51a56);
0x00028c74 str r1, [sp, 0x6c] | var_6ch = r1;
0x00028c76 mov.w r1, 0 | r1 = 0;
0x00028c7a add r1, sp, 8 | r1 += var_8h;
0x00028c7c str r3, [sp, 4] | var_4h = r3;
0x00028c7e blx 0xddc0 | wait ();
0x00028c80 invalid |
| if (? != ?) {
0x00028c84 bne 0x28d7e | goto label_4;
| }
0x00028c86 mov r5, r0 | r5 = r0;
0x00028c88 ldrd r4, r0, [sp, 0x28] | __asm ("ldrd r4, r0, [var_28h_2]");
0x00028c8c cmp.w r0, -1 |
0x00028c90 it eq |
| if (r0 == -1) {
0x00028c92 cmpeq r4, -1 | __asm ("cmpeq r4, -1");
| }
| if (r0 == -1) {
0x00028c96 beq.w 0x28d9c | goto label_5;
| }
0x00028c9a strd r4, r0, [sl] | __asm ("strd r4, r0, [sl]");
0x00028c9e ldrd sl, fp, [sp, 0x38] | __asm ("ldrd sl, fp, [var_38h]");
0x00028ca2 cmp.w fp, -1 |
0x00028ca6 it eq |
| if (fp == -1) {
0x00028ca8 cmpeq sl, -1 | __asm ("cmpeq sl, -1");
| }
| if (fp == -1) {
0x00028cac beq 0x28dae | goto label_6;
| }
0x00028cae ldrd r1, r2, [sp, 0x30] | __asm ("ldrd r1, r2, [var_30h_2]");
0x00028cb2 strd sl, fp, [r8] | __asm ("strd sl, fp, [r8]");
0x00028cb6 cmp.w r2, -1 |
0x00028cba it eq |
| if (r2 == -1) {
0x00028cbc cmpeq r1, -1 | __asm ("cmpeq r1, -1");
| }
| if (r2 == -1) {
0x00028cc0 beq 0x28dc0 | goto label_7;
| }
0x00028cc2 subs r3, r4, r1 | r3 = r4 - r1;
0x00028cc4 str.w r3, [sb] | __asm ("str.w r3, [sb]");
0x00028cc8 sbc.w r3, r0, r2 | __asm ("sbc.w r3, r0, r2");
0x00028ccc adds.w r4, r4, sl | r4 += sl;
0x00028cd0 str.w r3, [sb, 4] | __asm ("str.w r3, [sb, 4]");
0x00028cd4 adc.w r0, r0, fp | __asm ("adc.w r0, r0, fp");
0x00028cd8 subs r4, r4, r1 | r4 -= r1;
0x00028cda sbc.w r3, r0, r2 | __asm ("sbc.w r3, r0, r2");
0x00028cde orrs.w r2, r4, r3 | r2 = r4 | r3;
| if (r2 == r4) {
0x00028ce2 beq 0x28d4e | goto label_8;
| }
0x00028ce4 mov r1, r3 | r1 = r3;
0x00028ce6 vldr d9, [pc, 0xf0] | __asm ("vldr d9, [0x00028ddc]");
0x00028cea mov r0, r4 | r0 = r4;
0x00028cec str r3, [sp, 4] | var_4h = r3;
0x00028cee bl 0x4c6f4 | r0 = fcn_0004c6f4 (r0, r1, r2);
0x00028cf2 vmov d8, r0, r1 | __asm ("vmov d8, r0, r1");
0x00028cf6 mov r0, sl | r0 = sl;
0x00028cf8 mov r1, fp | r1 = fp;
0x00028cfa bl 0x4c6f4 | r0 = fcn_0004c6f4 (r0, r1, r2);
0x00028cfe vmov d16, r0, r1 | __asm ("vmov d16, r0, r1");
0x00028d02 subs.w r0, r4, sl | r0 = r4 - sl;
0x00028d04 movs r2, r1 | r2 = r1;
0x00028d06 ldr r3, [sp, 4] | r3 = var_4h;
0x00028d08 vmul.f64 d16, d16, d9 | __asm ("vmul.f64 d16, d16, d9");
0x00028d0c sbc.w r1, r3, fp | __asm ("sbc.w r1, r3, fp");
0x00028d10 ldr r3, [sp] | r3 = *(sp);
0x00028d12 vdiv.f64 d17, d16, d8 | __asm ("vdiv.f64 d17, d16, d8");
0x00028d16 vstr d17, [r3] | __asm ("vstr d17, [r3]");
0x00028d1a bl 0x4c6f4 | r0 = fcn_0004c6f4 (r0, r1, r2);
0x00028d1e vmov d16, r0, r1 | __asm ("vmov d16, r0, r1");
0x00028d22 vmul.f64 d16, d16, d9 | __asm ("vmul.f64 d16, d16, d9");
0x00028d26 vdiv.f64 d17, d16, d8 | __asm ("vdiv.f64 d17, d16, d8");
0x00028d2a vstr d17, [r7] | __asm ("vstr d17, [r7]");
| do {
| label_0:
0x00028d2e ldr r2, [pc, 0xb8] |
0x00028d30 ldr r3, [pc, 0xac] | r3 = *(0x28de0);
0x00028d32 add r2, pc | r2 = 0x51b20;
0x00028d34 ldr r3, [r2, r3] | r3 = *(0x51b20);
0x00028d36 ldr r2, [r3] | r2 = *(0x51b20);
0x00028d38 ldr r3, [sp, 0x6c] | r3 = var_6ch;
0x00028d3a eors r2, r3 | r2 ^= r3;
0x00028d3c mov.w r3, 0 | r3 = 0;
| if (r2 != r3) {
0x00028d40 bne 0x28dd2 | goto label_9;
| }
0x00028d42 mov r0, r5 | r0 = r5;
0x00028d44 add sp, 0x74 |
0x00028d46 vpop {d8, d9} | __asm ("vpop {d8, d9}");
0x00028d4a pop.w {r4, r5, r6, r7, r8, sb, sl, fp, pc} |
| label_8:
0x00028d4e cmp r6, 0 |
0x00028d50 beq 0x28d2e |
| } while (r6 == 0);
0x00028d52 ldr r1, [pc, 0x98] |
0x00028d54 mov r0, r6 | r0 = r6;
0x00028d56 add r1, pc | r1 = "VmSize";
0x00028d58 blx 0xe3b0 | r0 = fcn_0000e3b0 ();
| if (r0 == 0) {
0x00028d5c cbz r0, 0x28d6c | goto label_10;
| }
0x00028d5e ldr r1, [pc, 0x90] |
0x00028d60 mov r0, r6 | r0 = r6;
0x00028d62 add r1, pc | r1 = "VmLck";
0x00028d64 blx 0xe3b0 | r0 = fcn_0000e3b0 ();
0x00028d68 cmp r0, 0 |
| if (r0 != 0) {
0x00028d6a bne 0x28d2e | goto label_0;
| }
| label_10:
0x00028d6c ldr r3, [pc, 0x84] |
0x00028d6e movs r2, 0 | r2 = 0;
0x00028d70 ldr r0, [pc, 0x84] |
0x00028d72 movs r1, 0x51 | r1 = 0x51;
0x00028d74 add r3, pc | r3 = 0x51b6c;
0x00028d76 add r0, pc | r0 = 0x51b72;
0x00028d78 bl 0x40ed8 | zbx_strdup2 ();
0x00028d7c b 0x28d94 | goto label_1;
| label_4:
0x00028d7e blx 0xe3d4 | r0 = fcn_0000e3d4 ();
0x00028d82 ldr r0, [r0] | r0 = *(r0);
0x00028d84 bl 0x30b74 | zbx_strerror ();
0x00028d88 ldr r1, [pc, 0x70] |
0x00028d8a mov r2, r0 | r2 = r0;
0x00028d8c movs r0, 0 | r0 = 0;
0x00028d8e add r1, pc | r1 = 0x51b8e;
0x00028d90 bl 0x44820 | zbx_dsprintf ()
| do {
| label_1:
0x00028d94 ldr r3, [sp, 4] | r3 = var_4h;
0x00028d96 movs r5, 1 | r5 = 1;
0x00028d98 str r0, [r3] | *(r3) = r0;
0x00028d9a b 0x28d2e | goto label_0;
| label_5:
0x00028d9c ldr r3, [pc, 0x60] |
0x00028d9e mov r2, r5 | r2 = r5;
0x00028da0 ldr r0, [pc, 0x60] |
0x00028da2 movs r1, 0x3c | r1 = 0x3c;
0x00028da4 add r3, pc | r3 = "MemTotal:";
0x00028da6 add r0, pc | r0 = 0x51bae;
0x00028da8 bl 0x40ed8 | zbx_strdup2 ();
0x00028dac b 0x28d94 |
| } while (1);
| label_6:
0x00028dae ldr r3, [pc, 0x58] |
0x00028db0 mov r2, r5 | r2 = r5;
0x00028db2 ldr r0, [pc, 0x58] |
0x00028db4 movs r1, 0x3f | r1 = 0x3f;
0x00028db6 add r3, pc | r3 = "VmHWM";
0x00028db8 add r0, pc | r0 = 0x51bca;
0x00028dba bl 0x40ed8 | zbx_strdup2 ();
0x00028dbc strb.w lr, [sp, 0x7e9] |
| label_7:
0x00028dc0 ldr r3, [pc, 0x4c] |
0x00028dc2 mov r2, r5 | r2 = r5;
0x00028dc4 ldr r0, [pc, 0x4c] |
0x00028dc6 movs r1, 0x42 | r1 = 0x42;
0x00028dc8 add r3, pc | r3 = 0x51bdc;
0x00028dca add r0, pc | r0 = 0x51be2;
0x00028dcc bl 0x40ed8 | zbx_strdup2 ();
0x00028dd0 b 0x28d94 | goto label_1;
| label_9:
0x00028dd2 blx 0xe158 | fcn_0000e158 ();
0x00028dd6 nop |
0x00028dd8 movs r0, r0 |
0x00028dda movs r0, r0 |
0x00028ddc movs r0, r0 |
0x00028dde eors r1, r3 | r1 ^= r3;
0x00028de0 lsls r4, r2, 0xe | r4 = r2 << 0xe;
0x00028de2 movs r0, r0 |
0x00028de4 cmp r7, 0x6a |
0x00028de6 movs r3, r0 | r3 = r0;
0x00028de8 cmp r6, 0xa6 |
0x00028dea movs r3, r0 | r3 = r0;
0x00028dec str r6, [sp, 0x3c8] | var_3c8h_2 = r6;
0x00028dee movs r2, r0 | r2 = r0;
0x00028df0 strh r6, [r0, 0x3c] | *((r0 + 0x3c)) = r6;
0x00028df2 movs r2, r0 | r2 = r0;
0x00028df4 strh r4, [r7, 0x3a] | *((r7 + 0x3a)) = r4;
0x00028df6 movs r2, r0 | r2 = r0;
0x00028df8 ldr r5, [sp, 0x188] | r5 = var_188h;
0x00028dfa movs r2, r0 | r2 = r0;
0x00028dfc ldr r0, [sp, 0x2b8] | r0 = var_2b8h;
0x00028dfe movs r2, r0 | r2 = r0;
0x00028e00 ldr r4, [sp, 0x3c0] | r4 = var_328h;
0x00028e02 movs r2, r0 | r2 = r0;
0x00028e04 ldr r5, [sp, 0xc8] | r5 = var_c8h;
0x00028e06 movs r2, r0 | r2 = r0;
0x00028e08 ldr r5, [sp, 0xb8] | r5 = var_20h;
0x00028e0a movs r2, r0 | r2 = r0;
0x00028e0c ldr r5, [sp, 0x80] | r5 = var_80h;
0x00028e0e movs r2, r0 | r2 = r0;
0x00028e10 ldr r5, [sp, 0x180] | r5 = var_180h;
0x00028e12 movs r2, r0 | r2 = r0;
0x00028e14 ldr r5, [sp, 0x38] | r5 = var_38h;
0x00028e16 movs r2, r0 | r2 = r0;
0x00028e18 ldr r2, [pc, 0x168] |
0x00028e1a ldr r3, [pc, 0x16c] | r3 = *(0x28f8a);
0x00028e1c push {r4, r5, r6, r7, lr} |
0x00028e1e sub sp, 0x4c |
0x00028e20 add r2, pc | r2 = 0x51da8;
0x00028e22 mov r4, r1 | r4 = r1;
0x00028e24 ldr r3, [r2, r3] |
0x00028e26 ldr r3, [r3] | r3 = imp.__aeabi_unwind_cpp_pr0;
0x00028e28 str r3, [sp, 0x44] | var_44h = r3;
0x00028e2a mov.w r3, 0 | r3 = 0;
0x00028e2e ldr r3, [r0, 4] | r3 = *((r0 + 4));
0x00028e30 cmp r3, 2 |
| if (r3 > 2) {
0x00028e32 bgt 0x28edc | goto label_11;
| }
0x00028e34 cmp r3, 0 |
| if (r3 > 0) {
0x00028e36 ble 0x28ea6 |
0x00028e38 ldr r2, [r0, 8] | r2 = *((r0 + 8));
0x00028e3a cmp r3, 2 |
0x00028e3c it ne |
| if (r3 == 2) {
0x00028e3e movne r6, 0 | r6 = 0;
| }
0x00028e40 ldr r0, [r2] | r0 = *(r2);
0x00028e42 it eq |
| if (r3 != 2) {
0x00028e44 ldreq r6, [r2, 4] | r6 = *((r2 + 4));
| }
0x00028e46 cmp r0, 0 |
| if (r0 == 0) {
0x00028e48 beq 0x28ea6 | goto label_12;
| }
0x00028e4a ldrb r3, [r0] | r3 = *(r0);
0x00028e4c cmp r3, 0 |
| if (r3 == 0) {
0x00028e4e beq 0x28ea6 | goto label_12;
| }
0x00028e50 add r3, sp, 0x14 | r3 += var_14h_2;
0x00028e52 add r2, sp, 0x30 | r2 += var_30h;
0x00028e54 strd r6, r3, [sp, 8] | __asm ("strd r6, r3, [sp, 8]");
0x00028e58 add r3, sp, 0x38 | r3 += var_38h_2;
0x00028e5a str r3, [sp, 4] | var_4h_2 = r3;
0x00028e5c add r1, sp, 0x18 | r1 += var_18h_2;
0x00028e5e str r2, [sp] | *(sp) = r2;
0x00028e60 add r3, sp, 0x28 | r3 += var_28h;
0x00028e62 add r2, sp, 0x20 | r2 += var_20h_2;
0x00028e64 bl 0x28c50 | r0 = get_fs_inode_stat ();
0x00028e68 mov r5, r0 | r5 = r0;
0x00028e6a cmp r0, 0 |
| if (r0 != 0) {
0x00028e6c bne 0x28f06 | goto label_13;
| }
0x00028e6e ldr r7, [r4, 0x28] | r7 = *((r4 + 0x28));
0x00028e70 cmp r6, 0 |
| if (r6 == 0) {
0x00028e72 beq 0x28ef6 | goto label_14;
| }
0x00028e74 ldrb r3, [r6] | r3 = *(r6);
0x00028e76 cmp r3, 0 |
| if (r3 == 0) {
0x00028e78 beq 0x28ef6 | goto label_14;
| }
0x00028e7a ldr r1, [pc, 0x110] |
0x00028e7c mov r0, r6 | r0 = r6;
0x00028e7e add r1, pc | r1 = 0x51e10;
0x00028e80 blx 0xe3b0 | r0 = fcn_0000e3b0 ();
0x00028e84 cmp r0, 0 |
| if (r0 == 0) {
0x00028e86 beq 0x28ef6 | goto label_14;
| }
0x00028e88 ldr r1, [pc, 0x104] |
0x00028e8a mov r0, r6 | r0 = r6;
0x00028e8c add r1, pc | r1 = 0x51e20;
0x00028e8e blx 0xe3b0 | r0 = fcn_0000e3b0 ();
0x00028e92 cmp r0, 0 |
| if (r0 != 0) {
0x00028e94 bne 0x28f12 | goto label_15;
| }
0x00028e96 ldrd r2, r3, [sp, 0x20] | __asm ("ldrd r2, r3, [var_20h_2]");
0x00028e9a orr r7, r7, 1 | r7 |= 1;
0x00028e9e str r7, [r4, 0x28] | *((r4 + 0x28)) = r7;
0x00028ea0 strd r2, r3, [r4, 8] | __asm ("strd r2, r3, [r4, 8]");
0x00028ea4 b 0x28ec2 | goto label_2;
| }
| label_12:
0x00028ea6 ldr r0, [r4, 0x28] | r0 = *((r4 + 0x28));
0x00028ea8 movs r2, 0 | r2 = 0;
0x00028eaa ldr r3, [pc, 0xe8] |
0x00028eac movs r1, 0x68 | r1 = 0x68;
0x00028eae orr r0, r0, 0x20 | r0 |= 0x20;
0x00028eb2 str r0, [r4, 0x28] | *((r4 + 0x28)) = r0;
0x00028eb4 add r3, pc | r3 = 0x51e4e;
0x00028eb6 ldr r0, [pc, 0xe0] |
0x00028eb8 add r0, pc | r0 = 0x51e56;
0x00028eba bl 0x40ed8 | zbx_strdup2 ();
| do {
| label_3:
0x00028ebe movs r5, 1 | r5 = 1;
0x00028ec0 str r0, [r4, 0x20] | *((r4 + 0x20)) = r0;
| label_2:
0x00028ec2 ldr r2, [pc, 0xd8] |
0x00028ec4 ldr r3, [pc, 0xc0] | r3 = *(0x28f88);
0x00028ec6 add r2, pc | r2 = "thread";
0x00028ec8 ldr r3, [r2, r3] | r3 = "thread";
0x00028eca ldr r2, [r3] | r2 = "thread";
0x00028ecc ldr r3, [sp, 0x44] | r3 = var_44h;
0x00028ece eors r2, r3 | r2 ^= r3;
0x00028ed0 mov.w r3, 0 | r3 = 0;
| if (r2 != r3) {
0x00028ed4 bne 0x28f7e | goto label_16;
| }
0x00028ed6 mov r0, r5 | r0 = r5;
0x00028ed8 add sp, 0x4c |
0x00028eda pop {r4, r5, r6, r7, pc} |
| label_11:
0x00028edc ldr r0, [r1, 0x28] | r0 = *((r1 + 0x28));
0x00028ede movs r2, 0 | r2 = 0;
0x00028ee0 ldr r3, [pc, 0xbc] |
0x00028ee2 movs r1, 0x5f | r1 = 0x5f;
0x00028ee4 orr r0, r0, 0x20 | r0 |= 0x20;
0x00028ee8 str r0, [r4, 0x28] | *((r4 + 0x28)) = r0;
0x00028eea add r3, pc | r3 = 0x51e8e;
0x00028eec ldr r0, [pc, 0xb4] |
0x00028eee add r0, pc | r0 = 0x51e96;
0x00028ef0 bl 0x40ed8 | zbx_strdup2 ();
0x00028ef4 b 0x28ebe |
| } while (1);
| label_14:
0x00028ef6 ldrd r2, r3, [sp, 0x18] | __asm ("ldrd r2, r3, [var_18h_2]");
0x00028efa orr r7, r7, 1 | r7 |= 1;
0x00028efe str r7, [r4, 0x28] | *((r4 + 0x28)) = r7;
0x00028f00 strd r2, r3, [r4, 8] | __asm ("strd r2, r3, [r4, 8]");
0x00028f04 b 0x28ec2 | goto label_2;
| label_13:
0x00028f06 ldr r3, [r4, 0x28] | r3 = *((r4 + 0x28));
0x00028f08 ldr r0, [sp, 0x14] | r0 = var_14h_2;
0x00028f0a orr r3, r3, 0x20 | r3 |= 0x20;
0x00028f0e str r3, [r4, 0x28] | *((r4 + 0x28)) = r3;
0x00028f10 b 0x28ebe | goto label_3;
| label_15:
0x00028f12 ldr r1, [pc, 0x94] |
0x00028f14 mov r0, r6 | r0 = r6;
0x00028f16 add r1, pc | r1 = 0x51ec4;
0x00028f18 blx 0xe3b0 | r0 = fcn_0000e3b0 ();
| if (r0 == 0) {
0x00028f1c cbnz r0, 0x28f2e |
0x00028f1e ldrd r2, r3, [sp, 0x28] | __asm ("ldrd r2, r3, [var_28h]");
0x00028f22 orr r7, r7, 1 | r7 |= 1;
0x00028f26 str r7, [r4, 0x28] | *((r4 + 0x28)) = r7;
0x00028f28 strd r2, r3, [r4, 8] | __asm ("strd r2, r3, [r4, 8]");
0x00028f2c b 0x28ec2 | goto label_2;
| }
0x00028f2e ldr r1, [pc, 0x7c] |
0x00028f30 mov r0, r6 | r0 = r6;
0x00028f32 add r1, pc | r1 = 0x51ee4;
0x00028f34 blx 0xe3b0 | r0 = fcn_0000e3b0 ();
| if (r0 == 0) {
0x00028f38 cbnz r0, 0x28f4a |
0x00028f3a ldrd r2, r3, [sp, 0x30] | __asm ("ldrd r2, r3, [var_30h]");
0x00028f3e orr r7, r7, 2 | r7 |= 2;
0x00028f42 str r7, [r4, 0x28] | *((r4 + 0x28)) = r7;
0x00028f44 strd r2, r3, [r4, 0x10] | __asm ("strd r2, r3, [r4, 0x10]");
0x00028f48 b 0x28ec2 | goto label_2;
| }
0x00028f4a ldr r1, [pc, 0x64] |
0x00028f4c mov r0, r6 | r0 = r6;
0x00028f4e add r1, pc | r1 = 0x51f04;
0x00028f50 blx 0xe3b0 | r0 = fcn_0000e3b0 ();
| if (r0 == 0) {
0x00028f54 cbnz r0, 0x28f66 |
0x00028f56 ldrd r2, r3, [sp, 0x38] | __asm ("ldrd r2, r3, [var_38h_2]");
0x00028f5a orr r7, r7, 2 | r7 |= 2;
0x00028f5e str r7, [r4, 0x28] | *((r4 + 0x28)) = r7;
0x00028f60 strd r2, r3, [r4, 0x10] | __asm ("strd r2, r3, [r4, 0x10]");
0x00028f64 b 0x28ec2 | goto label_2;
| }
0x00028f66 ldr r3, [pc, 0x4c] |
0x00028f68 orr r7, r7, 0x20 | r7 |= 0x20;
0x00028f6c ldr r0, [pc, 0x48] |
0x00028f6e movs r2, 0 | r2 = 0;
0x00028f70 movs r1, 0x88 | r1 = 0x88;
0x00028f72 str r7, [r4, 0x28] | *((r4 + 0x28)) = r7;
0x00028f74 add r3, pc | r3 = 0x51f2e;
0x00028f76 add r0, pc | r0 = 0x51f32;
0x00028f78 bl 0x40ed8 | zbx_strdup2 ();
0x00028f7c b 0x28ebe | goto label_3;
| label_16:
0x00028f7e blx 0xe158 | fcn_0000e158 ();
0x00028f82 nop |
0x00028f84 cmp r5, 0xb8 |
0x00028f86 movs r3, r0 | r3 = r0;
0x00028f88 lsls r4, r2, 0xe | r4 = r2 << 0xe;
0x00028f8a movs r0, r0 |
0x00028f8c strh r6, [r4, 0x1a] | *((r4 + 0x1a)) = r6;
0x00028f8e movs r2, r0 | r2 = r0;
0x00028f90 strh r4, [r2, 0x26] | *((r2 + 0x26)) = r4;
0x00028f92 movs r2, r0 | r2 = r0;
0x00028f94 str r4, [r7, 0x78] | *((r7 + 0x78)) = r4;
0x00028f96 movs r2, r0 | r2 = r0;
0x00028f98 ldr r4, [sp, 0x80] | r4 = var_80h_2;
0x00028f9a movs r2, r0 | r2 = r0;
0x00028f9c cmp r5, 0x12 |
0x00028f9e movs r3, r0 | r3 = r0;
0x00028fa0 str r6, [r5, 0x74] | *((r5 + 0x74)) = r6;
0x00028fa2 movs r2, r0 | r2 = r0;
0x00028fa4 ldr r3, [sp, 0x3a8] | r3 = var_3a8h;
0x00028fa6 movs r2, r0 | r2 = r0;
0x00028fa8 subs r3, 0x2e | r3 -= 0x2e;
0x00028faa movs r2, r0 | r2 = r0;
0x00028fac str r5, [sp, 0x58] | var_58h = r5;
0x00028fae movs r2, r0 | r2 = r0;
0x00028fb0 strh r2, [r3, 0x2c] | *((r3 + 0x2c)) = r2;
0x00028fb2 movs r2, r0 | r2 = r0;
0x00028fb4 ldrb r4, [r2, 0x18] | r4 = *((r2 + 0x18));
0x00028fb6 movs r2, r0 | r2 = r0;
0x00028fb8 ldr r3, [sp, 0x188] | r3 = var_90h;
0x00028fba movs r2, r0 | r2 = r0;
| }
; assembly | /* r2dec pseudo code output */
| /* /logs/firmware/patool_extraction/rootfs.img_unblob_extracted/rootfs.img_extract/0-80367616.squashfs_v4_le_extract/usr/sbin/zabbix_agentd @ 0x1ced8 */
| #include <stdint.h>
|
; (fcn) sym.get_result_value_by_type () | void get_result_value_by_type (uint32_t arg1) {
| int16_t var_10h;
| int32_t var_10h_2;
| int16_t var_1ch;
| r0 = arg1;
0x0001ced8 blmi 0xff1ef9f8 | __asm ("blmi aav.0x0003ecf8");
0x0001cedc push {r4, r5, r6, r7, lr} |
0x0001cede sub sp, 0x24 |
0x0001cee0 add r2, pc | r2 += pc;
0x0001cee2 ldr r3, [r2, r3] | r3 = *((r2 + r3));
0x0001cee4 ldr r3, [r3] | r3 = *(r3);
0x0001cee6 str r3, [sp, 0x1c] | var_1ch = r3;
0x0001cee8 mov.w r3, 0 | r3 = 0;
0x0001ceec cmp r0, 0 |
| if (r0 == 0) {
0x0001ceee beq.w 0x1d1dc | goto label_10;
| }
0x0001cef2 subs r1, 1 | r1--;
0x0001cef4 mov r4, r0 | r4 = r0;
0x0001cef6 cmp r1, 0x1f |
| if (r1 > 0x1f) {
0x0001cef8 bhi 0x1cf30 | goto label_1;
| }
| /* switch table (32 cases) at 0x1cefe */
0x0001cefa tbb [pc, r1] | __asm ("tbb [0x0001cf00]");
0x0001cf1e ldr r3, [r0, 0x28] | r3 = *((r0 + 0x28));
0x0001cf20 ands r6, r3, 0x10 | r6 = r3 & 0x10;
0x0001cf24 it ne |
| if (r6 == r3) {
0x0001cf26 ldrne r5, [r0, 0x24] | r5 = *((r0 + 0x24));
| }
| if (r6 != r3) {
0x0001cf28 bne 0x1cf32 | goto label_0;
| }
0x0001cf2a lsls r1, r3, 0x1b | r1 = r3 << 0x1b;
| if (r1 != r3) {
0x0001cf2c bne.w 0x1d06e | goto label_11;
| }
| do {
| label_1:
0x0001cf30 movs r5, 0 | r5 = 0;
| label_0:
0x0001cf32 ldr r2, [pc, 0x2c8] |
0x0001cf34 ldr r3, [pc, 0x2c0] | r3 = *(0x1d1f8);
0x0001cf36 add r2, pc | r2 = 0x3a138;
0x0001cf38 ldr r3, [r2, r3] | r3 = *(0x3a138);
0x0001cf3a ldr r2, [r3] | r2 = *(0x3a138);
0x0001cf3c ldr r3, [sp, 0x1c] | r3 = var_1ch;
0x0001cf3e eors r2, r3 | r2 ^= r3;
0x0001cf40 mov.w r3, 0 | r3 = 0;
| if (r2 != r3) {
0x0001cf44 bne.w 0x1d1d8 | goto label_12;
| }
0x0001cf48 mov r0, r5 | r0 = r5;
0x0001cf4a add sp, 0x24 |
0x0001cf4c pop {r4, r5, r6, r7, pc} |
0x0001cf4e ldr r3, [r0, 0x28] | r3 = *((r0 + 0x28));
0x0001cf50 lsls r3, r3, 0x1a | r3 <<= 0x1a;
0x0001cf52 bpl 0x1cf30 |
| } while (r3 >= r3);
0x0001cf54 add.w r5, r0, 0x20 | r5 = r0 + 0x20;
0x0001cf58 b 0x1cf32 | goto label_0;
0x0001cf5a ldr r3, [r0, 0x28] | r3 = *((r0 + 0x28));
0x0001cf5c lsls r0, r3, 0x1f | r0 = r3 << 0x1f;
| if (r0 >= r3) {
0x0001cf5e bpl 0x1d01e | goto label_13;
| }
| label_3:
0x0001cf60 add.w r5, r4, 8 | r5 = r4 + 8;
0x0001cf64 b 0x1cf32 | goto label_0;
0x0001cf66 ldr r1, [r0, 0x28] | r1 = *((r0 + 0x28));
0x0001cf68 ands r2, r1, 8 | r2 = r1 & 8;
| if (r2 != r1) {
0x0001cf6c bne 0x1cf9e | goto label_14;
| }
0x0001cf6e ands r0, r1, 4 | r0 = r1 & 4;
| if (r0 != r1) {
0x0001cf72 bne.w 0x1d116 | goto label_15;
| }
0x0001cf76 ands r5, r1, 1 | r5 = r1 & 1;
| if (r5 != r1) {
0x0001cf7a bne.w 0x1d12c | goto label_16;
| }
0x0001cf7e lsls r6, r1, 0x1e | r6 = r1 << 0x1e;
| if (r6 >= r1) {
0x0001cf80 bpl 0x1cf30 | goto label_1;
| }
0x0001cf82 orr r1, r1, 8 | r1 |= 8;
0x0001cf86 ldrd r2, r3, [r4, 0x10] | __asm ("ldrd r2, r3, [r4, 0x10]");
0x0001cf8a str r1, [r4, 0x28] | *((r4 + 0x28)) = r1;
0x0001cf8c mov r0, r5 | r0 = r5;
0x0001cf8e ldr r1, [pc, 0x270] |
0x0001cf90 add r1, pc | r1 = 0x3a196;
0x0001cf92 bl 0x44820 | zbx_dsprintf ()
| label_6:
0x0001cf96 ldr r3, [r4, 0x28] | r3 = *((r4 + 0x28));
0x0001cf98 str r0, [r4, 0x1c] | *((r4 + 0x1c)) = r0;
0x0001cf9a lsls r0, r3, 0x1c | r0 = r3 << 0x1c;
| if (r0 >= r3) {
0x0001cf9c bpl 0x1cf30 | goto label_1;
| }
| label_14:
0x0001cf9e add.w r5, r4, 0x1c | r5 = r4 + 0x1c;
0x0001cfa2 b 0x1cf32 | goto label_0;
0x0001cfa4 ldr r3, [r0, 0x28] | r3 = *((r0 + 0x28));
0x0001cfa6 lsls r6, r3, 0x1e | r6 = r3 << 0x1e;
| if (r6 >= r3) {
0x0001cfa8 bpl 0x1cfec | goto label_17;
| }
| label_2:
0x0001cfaa add.w r5, r4, 0x10 | r5 = r4 + 0x10;
0x0001cfae b 0x1cf32 | goto label_0;
0x0001cfb0 ldr r1, [r0, 0x28] | r1 = *((r0 + 0x28));
0x0001cfb2 lsls r2, r1, 0x1d | r2 = r1 << 0x1d;
| if (r2 < r1) {
0x0001cfb4 bmi 0x1cfe6 | goto label_18;
| }
0x0001cfb6 ands r0, r1, 8 | r0 = r1 & 8;
| if (r0 != r1) {
0x0001cfba bne.w 0x1d0d8 | goto label_19;
| }
0x0001cfbe ands r5, r1, 1 | r5 = r1 & 1;
| if (r5 != r1) {
0x0001cfc2 bne.w 0x1d156 | goto label_20;
| }
0x0001cfc6 lsls r3, r1, 0x1e | r3 = r1 << 0x1e;
| if (r3 >= r1) {
0x0001cfc8 bpl 0x1cf30 | goto label_1;
| }
0x0001cfca orr r1, r1, 4 | r1 |= 4;
0x0001cfce ldrd r2, r3, [r4, 0x10] | __asm ("ldrd r2, r3, [r4, 0x10]");
0x0001cfd2 str r1, [r4, 0x28] | *((r4 + 0x28)) = r1;
0x0001cfd4 mov r0, r5 | r0 = r5;
0x0001cfd6 ldr r1, [pc, 0x22c] |
0x0001cfd8 add r1, pc | r1 = 0x3a1e2;
0x0001cfda bl 0x44820 | zbx_dsprintf ()
0x0001cfde str r0, [r4, 0x18] | *((r4 + 0x18)) = r0;
| label_5:
0x0001cfe0 ldr r3, [r4, 0x28] | r3 = *((r4 + 0x28));
0x0001cfe2 lsls r7, r3, 0x1d | r7 = r3 << 0x1d;
| if (r7 >= r3) {
0x0001cfe4 bpl 0x1cf30 | goto label_1;
| }
| label_18:
0x0001cfe6 add.w r5, r4, 0x18 | r5 = r4 + 0x18;
0x0001cfea b 0x1cf32 | goto label_0;
| label_17:
0x0001cfec lsls r5, r3, 0x1f | r5 = r3 << 0x1f;
| if (r5 < r3) {
0x0001cfee bmi 0x1d0c8 | goto label_21;
| }
0x0001cff0 lsls r0, r3, 0x1d | r0 = r3 << 0x1d;
| if (r0 < r3) {
0x0001cff2 bmi.w 0x1d184 | goto label_22;
| }
0x0001cff6 lsls r1, r3, 0x1c | r1 = r3 << 0x1c;
| if (r1 >= r3) {
0x0001cff8 bpl 0x1cf30 | goto label_1;
| }
0x0001cffa ldr r0, [r4, 0x1c] | r0 = *((r4 + 0x1c));
0x0001cffc bl 0x47e24 | zbx_trim_float ();
0x0001d000 ldr r0, [r4, 0x1c] | r0 = *((r4 + 0x1c));
0x0001d002 add r1, sp, 0x10 | r1 += var_10h;
0x0001d004 bl 0x41798 | r0 = is_double ();
0x0001d008 cmp r0, 0 |
| if (r0 != 0) {
0x0001d00a bne 0x1cf30 | goto label_1;
| }
| label_9:
0x0001d00c ldr r3, [r4, 0x28] | r3 = *((r4 + 0x28));
0x0001d00e ldrd r0, r1, [sp, 0x10] | __asm ("ldrd r0, r1, [var_10h]");
0x0001d012 orr r3, r3, 2 | r3 |= 2;
0x0001d016 str r3, [r4, 0x28] | *((r4 + 0x28)) = r3;
| label_4:
0x0001d018 strd r0, r1, [r4, 0x10] | __asm ("strd r0, r1, [r4, 0x10]");
0x0001d01c b 0x1cfaa | goto label_2;
| label_13:
0x0001d01e lsls r1, r3, 0x1e | r1 = r3 << 0x1e;
| if (r1 < r3) {
0x0001d020 bmi 0x1d0b8 | goto label_23;
| }
0x0001d022 lsls r2, r3, 0x1d | r2 = r3 << 0x1d;
| if (r2 < r3) {
0x0001d024 bmi.w 0x1d16c | goto label_24;
| }
0x0001d028 lsls r7, r3, 0x1c | r7 = r3 << 0x1c;
| if (r7 >= r3) {
0x0001d02a bpl 0x1cf30 | goto label_1;
| }
0x0001d02c ldr r0, [r4, 0x1c] | r0 = *((r4 + 0x1c));
0x0001d02e bl 0x47e1c | zbx_trim_integer ();
0x0001d032 ldr r0, [r4, 0x1c] | r0 = *((r4 + 0x1c));
0x0001d034 bl 0x4448c | del_zeros ();
0x0001d038 ldr r0, [r4, 0x1c] | r0 = *((r4 + 0x1c));
0x0001d03a vmov.i8 d17, 0xff | __asm ("vmov.i8 d17, 0xff");
0x0001d03e vmov.i32 d16, 0 | __asm ("vmov.i32 d16, 0");
| label_8:
0x0001d042 movs r3, 8 | r3 = 8;
0x0001d044 add r2, sp, 0x10 | r2 += var_10h;
0x0001d046 mov.w r1, -1 | r1 = -1;
0x0001d04a vstr d17, [sp, 8] | __asm ("vstr d17, [sp, 8]");
0x0001d04e vstr d16, [sp] | __asm ("vstr d16, [sp]");
0x0001d052 bl 0x419a8 | r0 = is_uint_n_range ();
0x0001d056 cmp r0, 0 |
| if (r0 != 0) {
0x0001d058 bne.w 0x1cf30 | goto label_1;
| }
0x0001d05c ldr r3, [r4, 0x28] | r3 = *((r4 + 0x28));
0x0001d05e ldrd r0, r1, [sp, 0x10] | __asm ("ldrd r0, r1, [var_10h]");
0x0001d062 orr r3, r3, 1 | r3 |= 1;
0x0001d066 str r3, [r4, 0x28] | *((r4 + 0x28)) = r3;
| do {
0x0001d068 strd r0, r1, [r4, 8] | __asm ("strd r0, r1, [r4, 8]");
0x0001d06c b 0x1cf60 | goto label_3;
| label_11:
0x0001d06e ldr r7, [pc, 0x198] |
0x0001d070 movs r3, 0x14 | r3 = 0x14;
0x0001d072 ldr r2, [r0, 0x24] | r2 = *((r0 + 0x24));
0x0001d074 movw r1, 0x5a4 | r1 = 0x5a4;
0x0001d078 add r7, pc | r7 = 0x3a286;
0x0001d07a mov r0, r7 | r0 = r7;
0x0001d07c bl 0x40dd8 | zbx_malloc2 ();
0x0001d080 vmov.i32 d16, 0 | __asm ("vmov.i32 d16, 0");
0x0001d084 mov r3, r0 | r3 = r0;
0x0001d086 str r0, [r4, 0x24] | *((r4 + 0x24)) = r0;
0x0001d088 mov r5, r0 | r5 = r0;
0x0001d08a vst1.32 {d16}, [r3]! | __asm ("vst1.32 {d16}, [r3]!");
0x0001d08e vst1.32 {d16}, [r3] | __asm ("vst1.32 {d16}, [r3]");
0x0001d092 ldr r3, [r4, 0x28] | r3 = *((r4 + 0x28));
0x0001d094 str r6, [r0, 0x10] | *((r0 + 0x10)) = r6;
0x0001d096 ands r2, r3, 4 | r2 = r3 & 4;
| if (r2 != r3) {
0x0001d09a bne 0x1d140 | goto label_25;
| }
0x0001d09c ands r0, r3, 8 | r0 = r3 & 8;
| if (r0 != r3) {
0x0001d0a0 bne 0x1d19a | goto label_26;
| }
0x0001d0a2 ands r1, r3, 1 | r1 = r3 & 1;
| if (r1 != r3) {
0x0001d0a6 bne.w 0x1d1ae | goto label_27;
| }
0x0001d0aa lsls r2, r3, 0x1e | r2 = r3 << 0x1e;
| if (r2 < r3) {
0x0001d0ac bmi.w 0x1d1c2 | goto label_28;
| }
| label_7:
0x0001d0b0 orr r3, r3, 0x10 | r3 |= 0x10;
0x0001d0b4 str r3, [r4, 0x28] | *((r4 + 0x28)) = r3;
0x0001d0b6 b 0x1cf32 | goto label_0;
| label_23:
0x0001d0b8 orr r3, r3, 1 | r3 |= 1;
0x0001d0bc ldrd r0, r1, [r4, 0x10] | __asm ("ldrd r0, r1, [r4, 0x10]");
0x0001d0c0 str r3, [r4, 0x28] | *((r4 + 0x28)) = r3;
0x0001d0c2 bl 0x4c7a0 | fcn_0004c7a0 (r0, r1);
0x0001d0c6 b 0x1d068 |
| } while (1);
| label_21:
0x0001d0c8 orr r3, r3, 2 | r3 |= 2;
0x0001d0cc ldrd r0, r1, [r0, 8] | __asm ("ldrd r0, r1, [r0, 8]");
0x0001d0d0 str r3, [r4, 0x28] | *((r4 + 0x28)) = r3;
0x0001d0d2 bl 0x4c6f4 | fcn_0004c6f4 (r0, r1, r2);
0x0001d0d6 b 0x1d018 | goto label_4;
| label_19:
0x0001d0d8 ldr r6, [r4, 0x1c] | r6 = *((r4 + 0x1c));
0x0001d0da ldrb r5, [r6] | r5 = *(r6);
0x0001d0dc cmp r5, 0 |
0x0001d0de it ne |
| if (r5 != 0) {
0x0001d0e0 cmpne r5, 0xd | __asm ("cmpne r5, 0xd");
| }
| if (r5 != 0) {
0x0001d0e2 bne 0x1d0f2 | goto label_29;
| }
0x0001d0e4 b 0x1d0f6 | goto label_30;
| do {
0x0001d0e6 ldrb r5, [r6, 1]! | r5 = *((r6 += 1));
0x0001d0ea cmp r5, 0 |
0x0001d0ec it ne |
| if (r5 != 0) {
0x0001d0ee cmpne r5, 0xd | __asm ("cmpne r5, 0xd");
| }
| if (r5 == 0) {
0x0001d0f0 beq 0x1d0f6 | goto label_30;
| }
| label_29:
0x0001d0f2 cmp r5, 0xa |
0x0001d0f4 bne 0x1d0e6 |
| } while (r5 != 0xa);
| label_30:
0x0001d0f6 movs r2, 0 | r2 = 0;
0x0001d0f8 ldr r0, [pc, 0x110] |
0x0001d0fa strb r2, [r6] | *(r6) = r2;
0x0001d0fc movw r1, 0x56e | r1 = 0x56e;
0x0001d100 ldr r3, [r4, 0x28] | r3 = *((r4 + 0x28));
0x0001d102 add r0, pc | r0 = 0x3a312;
0x0001d104 orr r3, r3, 4 | r3 |= 4;
0x0001d108 str r3, [r4, 0x28] | *((r4 + 0x28)) = r3;
0x0001d10a ldr r3, [r4, 0x1c] | r3 = *((r4 + 0x1c));
0x0001d10c bl 0x40ed8 | zbx_strdup2 ();
0x0001d110 str r0, [r4, 0x18] | *((r4 + 0x18)) = r0;
0x0001d112 strb r5, [r6] | *(r6) = r5;
0x0001d114 b 0x1cfe0 | goto label_5;
| label_15:
0x0001d116 orr r0, r1, 8 | r0 = r1 | 8;
0x0001d11a ldr r3, [r4, 0x18] | r3 = *((r4 + 0x18));
0x0001d11c str r0, [r4, 0x28] | *((r4 + 0x28)) = r0;
0x0001d11e movw r1, 0x58b | r1 = 0x58b;
0x0001d120 str r3, [r1, r6] | *((r1 + r6)) = r3;
0x0001d122 ldr r0, [pc, 0xec] |
0x0001d124 add r0, pc | r0 = 0x3a33a;
0x0001d126 bl 0x40ed8 | zbx_strdup2 ();
0x0001d12a b 0x1cf96 | goto label_6;
| label_16:
0x0001d12c orr r1, r1, 8 | r1 |= 8;
0x0001d130 ldrd r2, r3, [r4, 8] | __asm ("ldrd r2, r3, [r4, 8]");
0x0001d134 str r1, [r4, 0x28] | *((r4 + 0x28)) = r1;
0x0001d136 ldr r1, [pc, 0xdc] |
0x0001d138 add r1, pc | r1 = 0x3a352;
0x0001d13a bl 0x44820 | zbx_dsprintf ()
0x0001d13e b 0x1cf96 | goto label_6;
| label_25:
0x0001d140 ldr r3, [r4, 0x18] | r3 = *((r4 + 0x18));
0x0001d142 mov r2, r6 | r2 = r6;
0x0001d144 mov r0, r7 | r0 = r7;
0x0001d146 movw r1, 0x5a9 | r1 = 0x5a9;
0x0001d14a bl 0x40ed8 | zbx_strdup2 ();
0x0001d14e str r0, [r5] | *(r5) = r0;
0x0001d150 ldrd r5, r3, [r4, 0x24] | __asm ("ldrd r5, r3, [r4, 0x24]");
0x0001d154 b 0x1d0b0 | goto label_7;
| label_20:
0x0001d156 orr r1, r1, 4 | r1 |= 4;
0x0001d15a ldrd r2, r3, [r4, 8] | __asm ("ldrd r2, r3, [r4, 8]");
0x0001d15e str r1, [r4, 0x28] | *((r4 + 0x28)) = r1;
0x0001d160 ldr r1, [pc, 0xb4] |
0x0001d162 add r1, pc | r1 = 0x3a37e;
0x0001d164 bl 0x44820 | zbx_dsprintf ()
0x0001d168 str r0, [r4, 0x18] | *((r4 + 0x18)) = r0;
0x0001d16a b 0x1cfe0 | goto label_5;
| label_24:
0x0001d16c ldr r0, [r4, 0x18] | r0 = *((r4 + 0x18));
0x0001d16e bl 0x47e1c | zbx_trim_integer ();
0x0001d172 ldr r0, [r4, 0x18] | r0 = *((r4 + 0x18));
0x0001d174 bl 0x4448c | del_zeros ();
0x0001d178 ldr r0, [r4, 0x18] | r0 = *((r4 + 0x18));
0x0001d17a vmov.i8 d17, 0xff | __asm ("vmov.i8 d17, 0xff");
0x0001d17e vmov.i32 d16, 0 | __asm ("vmov.i32 d16, 0");
0x0001d180 movs r0, r2 | r0 = r2;
0x0001d182 b 0x1d042 | goto label_8;
| label_22:
0x0001d184 ldr r0, [r4, 0x18] | r0 = *((r4 + 0x18));
0x0001d186 bl 0x47e24 | zbx_trim_float ();
0x0001d18a ldr r0, [r4, 0x18] | r0 = *((r4 + 0x18));
0x0001d18c add r1, sp, 0x10 | r1 += var_10h;
0x0001d18e bl 0x41798 | r0 = is_double ();
0x0001d192 cmp r0, 0 |
| if (r0 == 0) {
0x0001d194 beq.w 0x1d00c | goto label_9;
| }
0x0001d198 b 0x1cf30 | goto label_1;
| label_26:
0x0001d19a ldr r3, [r4, 0x1c] | r3 = *((r4 + 0x1c));
0x0001d19c mov r0, r7 | r0 = r7;
0x0001d19e movw r1, 0x5ab | r1 = 0x5ab;
0x0001d1a2 bl 0x40ed8 | zbx_strdup2 ();
0x0001d1a6 str r0, [r5] | *(r5) = r0;
0x0001d1a8 ldrd r5, r3, [r4, 0x24] | __asm ("ldrd r5, r3, [r4, 0x24]");
0x0001d1ac b 0x1d0b0 | goto label_7;
| label_27:
0x0001d1ae ldr r1, [pc, 0x6c] |
0x0001d1b0 ldrd r2, r3, [r4, 8] | __asm ("ldrd r2, r3, [r4, 8]");
0x0001d1b4 add r1, pc | r1 = 0x3a3d6;
0x0001d1b6 bl 0x44820 | zbx_dsprintf ()
0x0001d1ba str r0, [r5] | *(r5) = r0;
0x0001d1bc ldrd r5, r3, [r4, 0x24] | __asm ("ldrd r5, r3, [r4, 0x24]");
0x0001d1c0 b 0x1d0b0 | goto label_7;
| label_28:
0x0001d1c2 mov r0, r1 | r0 = r1;
0x0001d1c4 ldr r1, [pc, 0x58] |
0x0001d1c6 ldrd r2, r3, [r4, 0x10] | __asm ("ldrd r2, r3, [r4, 0x10]");
0x0001d1ca add r1, pc | r1 = 0x3a3ee;
0x0001d1cc bl 0x44820 | zbx_dsprintf ()
0x0001d1d0 str r0, [r5] | *(r5) = r0;
0x0001d1d2 ldrd r5, r3, [r4, 0x24] | __asm ("ldrd r5, r3, [r4, 0x24]");
0x0001d1d6 b 0x1d0b0 | goto label_7;
| label_12:
0x0001d1d8 blx 0xe158 | fcn_0000e158 ();
| label_10:
0x0001d1dc ldr r3, [pc, 0x44] |
0x0001d1de movw r2, 0x5ce | r2 = 0x5ce;
0x0001d1e2 ldr r1, [pc, 0x44] |
0x0001d1e4 ldr r0, [pc, 0x44] |
0x0001d1e6 add r3, pc | r3 = 0x3a40e;
0x0001d1e8 add r1, pc | r1 = 0x3a416;
0x0001d1ea adds r3, 0x38 | r3 += 0x38;
0x0001d1ec add r0, pc | r0 = 0x3a41c;
0x0001d1ee blx 0xdde4 | shmdt ();
0x0001d1f2 nop |
0x0001d1f4 ldcl p0, c0, [r8], 0xc | __asm ("ldcl p0, c0, [r8], 0xc");
0x0001d1f8 lsls r4, r2, 0xe | r4 = r2 << 0xe;
0x0001d1fa movs r0, r0 |
0x0001d1fc stc p0, c0, [r2], 0xc | __asm ("stc p0, c0, [r2], 0xc");
0x0001d200 strb r0, [r0, 7] | *((r0 + 7)) = r0;
0x0001d202 movs r3, r0 | r3 = r0;
0x0001d204 strb r0, [r7, 5] | *((r7 + 5)) = r0;
0x0001d206 movs r3, r0 | r3 = r0;
0x0001d208 subs r0, 0x60 | r0 -= 0x60;
0x0001d20a movs r3, r0 | r3 = r0;
0x0001d20c adds r7, 0xd6 | r7 += 0xd6;
0x0001d20e movs r3, r0 | r3 = r0;
0x0001d210 adds r7, 0xb4 | r7 += 0xb4;
0x0001d212 movs r3, r0 | r3 = r0;
0x0001d214 strb r0, [r1, r1] | *((r1 + r1)) = r0;
0x0001d216 movs r3, r0 | r3 = r0;
0x0001d218 strb r6, [r3, r0] | *((r3 + r0)) = r6;
0x0001d21a movs r3, r0 | r3 = r0;
0x0001d21c strh r4, [r1, r7] | *((r1 + r7)) = r4;
0x0001d21e movs r3, r0 | r3 = r0;
0x0001d220 ldr r6, [r0, 0x78] | r6 = *(0x3a494);
0x0001d222 movs r3, r0 | r3 = r0;
0x0001d224 subs r3, 0xbe | r3 -= 0xbe;
0x0001d226 movs r3, r0 | r3 = r0;
0x0001d228 adds r6, 0xf0 | r6 += 0xf0;
0x0001d22a movs r3, r0 | r3 = r0;
0x0001d22c subs r1, 0xfc | r1 -= 0xfc;
0x0001d22e movs r3, r0 | r3 = r0;
| }
; assembly | /* r2dec pseudo code output */
| /* /logs/firmware/patool_extraction/rootfs.img_unblob_extracted/rootfs.img_extract/0-80367616.squashfs_v4_le_extract/usr/sbin/zabbix_agentd @ 0x12a08 */
| #include <stdint.h>
|
; (fcn) sym.init_collector_data () | void init_collector_data (int16_t arg1) {
| r0 = arg1;
0x00012a08 bmi 0x1265730 |
0x00012a0c push.w {r4, r5, r6, r7, r8, lr} |
0x00012a10 mov r6, r0 | r6 = r0;
0x00012a12 add r3, pc | r3 += pc;
0x00012a14 ldr r5, [r3, r2] | r5 = *((r3 + r2));
0x00012a16 ldr r3, [r5] | r3 = *(r5);
0x00012a18 cmp r3, 3 |
| if (r3 > 3) {
0x00012a1a bgt 0x12a9c | goto label_3;
| }
0x00012a1c movs r0, 0x53 | r0 = 0x53;
0x00012a1e blx 0xdbf8 | r0 = longjmp_chk ();
0x00012a22 adds r2, r0, 1 | r2 = r0 + 1;
0x00012a24 mov r7, r0 | r7 = r0;
| if (r2 == r0) {
0x00012a26 beq 0x12ab6 | goto label_4;
| }
| do {
0x00012a28 movw r3, 0x1d28 |
0x00012a2c movt r3, 1 | r3 = 0x11d28;
0x00012a30 mla r3, r0, r3, r3 | __asm ("mla r3, r0, r3, r3");
0x00012a34 add.w r0, r3, 0x20 | r0 = r3 + 0x20;
| label_0:
0x00012a38 ldr.w r8, [pc, 0xf8] |
0x00012a3c bl 0x35924 | r0 = zbx_shm_create ();
0x00012a40 adds r3, r0, 1 | r3 = r0 + 1;
0x00012a42 mov r4, r0 | r4 = r0;
0x00012a44 add r8, pc | r8 = 0x2557c;
0x00012a46 str.w r0, [r8] | __asm ("str.w r0, [r8]");
| if (r3 == r0) {
0x00012a4a beq 0x12ae8 | goto label_5;
| }
0x00012a4c movs r2, 0 | r2 = 0;
0x00012a4e mov r1, r2 | r1 = r2;
0x00012a50 blx 0xdd44 | fcn_0000dd44 ();
0x00012a54 str.w r0, [r8, 4] | __asm ("str.w r0, [r8, 4]");
0x00012a58 adds r0, 1 | r0++;
| if (r0 == 1) {
0x00012a5a beq 0x12b12 | goto label_6;
| }
0x00012a5c mov r0, r4 | r0 = r4;
0x00012a5e bl 0x35978 | zbx_shm_destroy ();
0x00012a62 adds r0, 1 | r0++;
| if (r0 == 1) {
0x00012a64 beq 0x12b00 | goto label_7;
| }
0x00012a66 ldr.w r3, [r8, 4] | r3 = *((r8 + 4));
0x00012a6a mov.w r2, -1 | r2 = -1;
0x00012a6e add.w r1, r3, 0x20 | r1 = r3 + 0x20;
0x00012a72 str r2, [r3, 8] | *((r3 + 8)) = r2;
0x00012a74 str r1, [r3] | *(r3) = r1;
0x00012a76 str r7, [r3, 4] | *((r3 + 4)) = r7;
0x00012a78 bl 0x147c4 | zbx_procstat_init ();
0x00012a7c ldr r0, [pc, 0xb8] |
0x00012a7e mov r2, r6 | r2 = r6;
0x00012a80 movs r1, 6 | r1 = 6;
0x00012a82 add r0, pc | r0 = 0x255be;
0x00012a84 bl 0x344e4 | r0 = zbx_mutex_create ();
0x00012a88 subs r4, r0, 0 | r4 = r0 - 0;
0x00012a8a it ne |
| if (r4 == r0) {
0x00012a8c movne r4, 1 | r4 = 1;
| }
0x00012a8e rsbs r4, r4, 0 | r4 -= ;
| label_1:
0x00012a90 ldr r3, [r5] | r3 = *(r5);
0x00012a92 cmp r3, 3 |
| if (r3 > 3) {
0x00012a94 bgt 0x12ac8 | goto label_8;
| }
0x00012a96 mov r0, r4 | r0 = r4;
0x00012a98 pop.w {r4, r5, r6, r7, r8, pc} |
| label_3:
0x00012a9c ldr r2, [pc, 0x9c] |
0x00012a9e movs r0, 4 | r0 = 4;
0x00012aa0 ldr r1, [pc, 0x9c] |
0x00012aa2 add r2, pc | r2 = 0x255e2;
0x00012aa4 add r1, pc | r1 = 0x255e8;
0x00012aa6 bl 0x30d1c | zbx_zabbix_log ();
0x00012aaa movs r0, 0x53 | r0 = 0x53;
0x00012aac blx 0xdbf8 | r0 = longjmp_chk ();
0x00012ab0 adds r2, r0, 1 | r2 = r0 + 1;
0x00012ab2 mov r7, r0 | r7 = r0;
0x00012ab4 bne 0x12a28 |
| } while (r2 != r0);
| label_4:
0x00012ab6 ldr r3, [r5] | r3 = *(r5);
0x00012ab8 cmp r3, 2 |
0x00012aba bgt 0x12adc |
| while (1) {
0x00012abc movw r0, 0x3a70 |
0x00012ac0 movs r7, 1 | r7 = 1;
0x00012ac2 movt r0, 2 | r0 = 0x23a70;
0x00012ac6 b 0x12a38 | goto label_0;
| label_8:
0x00012ac8 ldr r2, [pc, 0x78] |
0x00012aca movs r0, 4 | r0 = 4;
0x00012acc ldr r1, [pc, 0x78] |
0x00012ace add r2, pc | r2 = 0x25616;
0x00012ad0 add r1, pc | r1 = 0x2561c;
0x00012ad2 bl 0x30d1c | zbx_zabbix_log ();
0x00012ad6 mov r0, r4 | r0 = r4;
0x00012ad8 pop.w {r4, r5, r6, r7, r8, pc} |
0x00012adc ldr r1, [pc, 0x6c] |
0x00012ade movs r0, 3 | r0 = 3;
0x00012ae0 add r1, pc | r1 = 0x25630;
0x00012ae2 bl 0x30d1c | zbx_zabbix_log ();
0x00012ae6 b 0x12abc |
| }
| label_5:
0x00012ae8 ldr r3, [pc, 0x64] |
0x00012aea movs r1, 0x98 | r1 = 0x98;
0x00012aec ldr r0, [pc, 0x64] |
0x00012aee ldr r2, [r6] | r2 = *(r6);
0x00012af0 add r3, pc | r3 = 0x25644;
0x00012af2 add r0, pc | r0 = 0x2564a;
0x00012af4 bl 0x40ed8 | zbx_strdup2 ();
| do {
| label_2:
0x00012af8 mov.w r4, -1 | r4 = -1;
0x00012afc str r0, [r6] | *(r6) = r0;
0x00012afe b 0x12a90 | goto label_1;
| label_7:
0x00012b00 ldr r3, [pc, 0x54] |
0x00012b02 movs r1, 0xa5 | r1 = 0xa5;
0x00012b04 ldr r0, [pc, 0x54] |
0x00012b06 ldr r2, [r6] | r2 = *(r6);
0x00012b08 add r3, pc | r3 = 0x25664;
0x00012b0a add r0, pc | r0 = 0x2566a;
0x00012b0c bl 0x40ed8 | zbx_strdup2 ();
0x00012b10 b 0x12af8 |
| } while (1);
| label_6:
0x00012b12 blx 0xe3d4 | r0 = fcn_0000e3d4 ();
0x00012b16 ldr r0, [r0] | r0 = *(r0);
0x00012b18 ldr r4, [r6] | r4 = *(r6);
0x00012b1a bl 0x30b74 | zbx_strerror ();
0x00012b1e ldr r1, [pc, 0x40] |
0x00012b20 mov r2, r0 | r2 = r0;
0x00012b22 mov r0, r4 | r0 = r4;
0x00012b24 add r1, pc | r1 = 0x2568a;
0x00012b26 bl 0x44820 | zbx_dsprintf ()
0x00012b2a b 0x12af8 | goto label_2;
| }
; assembly | /* r2dec pseudo code output */
| /* /logs/firmware/patool_extraction/rootfs.img_unblob_extracted/rootfs.img_extract/0-80367616.squashfs_v4_le_extract/usr/sbin/zabbix_agentd @ 0x3b744 */
| #include <stdint.h>
|
; (fcn) sym.json_parse_value () | void json_parse_value (int16_t arg1, int16_t arg2) {
| int16_t var_4h;
| r0 = arg1;
| r1 = arg2;
0x0003b744 push.w {r4, r5, r6, r7, r8, sb, sl, fp, lr} |
0x0003b748 mov r8, r1 | r8 = r1;
0x0003b74a ldrb r4, [r0] | r4 = *(r0);
0x0003b74c sub sp, 0xc |
0x0003b74e cmp r4, 0 |
| if (r4 == 0) {
0x0003b750 beq.w 0x3b91a | goto label_3;
| }
0x0003b754 ldr r6, [pc, 0x2e8] |
0x0003b756 mov r7, r0 | r7 = r0;
0x0003b758 mov r5, r0 | r5 = r0;
0x0003b75a add r6, pc | r6 = 0x7719e;
0x0003b75c b 0x3b768 |
| while (r0 != 0) {
0x0003b75e ldrb r4, [r5, 1]! | r4 = *((r5 += 1));
0x0003b762 cmp r4, 0 |
| if (r4 == 0) {
0x0003b764 beq.w 0x3b91a | goto label_3;
| }
0x0003b768 mov r1, r4 | r1 = r4;
0x0003b76a mov r0, r6 | r0 = r6;
0x0003b76c blx 0xdcd4 | r0 = fcn_0000dcd4 ();
0x0003b770 cmp r0, 0 |
0x0003b772 bne 0x3b75e |
| }
0x0003b774 cmp r4, 0x7b |
| if (r4 <= 0x7b) {
0x0003b776 bhi 0x3b7c0 |
0x0003b778 cmp r4, 0x5a |
| if (r4 >= 0x5a) {
0x0003b77a bls 0x3b7aa |
0x0003b77c sub.w r3, r4, 0x5b | r3 = r4 - 0x5b;
0x0003b780 cmp r3, 0x20 |
| if (r3 > 0x20) {
0x0003b782 bhi 0x3b7c0 | goto label_4;
| }
| /* switch table (33 cases) at 0x3b788 */
0x0003b784 tbb [pc, r3] | __asm ("tbb [0x0003b78c]");
| }
0x0003b7aa cmp r4, 0x22 |
| if (r4 == 0x22) {
0x0003b7ac beq.w 0x3b93a | goto label_5;
| }
| if (r4 < 0x22) {
0x0003b7b0 bls 0x3b7c0 | goto label_4;
| }
0x0003b7b2 cmp r4, 0x2d |
| if (r4 == 0x2d) {
0x0003b7b4 beq 0x3b7e2 | goto label_6;
| }
0x0003b7b6 subs r4, 0x30 | r4 -= 0x30;
0x0003b7b8 cmp r4, 9 |
0x0003b7ba it ls |
| if (r4 > 9) {
0x0003b7bc movls r6, r5 | r6 = r5;
| }
| if (r4 < 9) {
0x0003b7be bls 0x3b7e4 | goto label_7;
| }
| }
| label_4:
0x0003b7c0 cmp.w r8, 0 |
| if (r8 != 0) {
0x0003b7c4 beq 0x3b7dc |
0x0003b7c6 ldr r2, [pc, 0x27c] |
0x0003b7c8 mov r3, r5 | r3 = r5;
0x0003b7ca ldr r1, [pc, 0x27c] |
0x0003b7cc ldr.w r0, [r8] | r0 = *(r8);
0x0003b7d0 add r2, pc | r2 = 0x7721a;
0x0003b7d2 add r1, pc | r1 = 0x77220;
0x0003b7d4 bl 0x44820 | zbx_dsprintf ()
0x0003b7d8 str.w r0, [r8] | __asm ("str.w r0, [r8]");
| }
| label_1:
0x0003b7dc movs r0, 0 | r0 = 0;
0x0003b7de mov r1, r0 | r1 = r0;
0x0003b7e0 b 0x3b854 | goto label_8;
| label_6:
0x0003b7e2 adds r6, r5, 1 | r6 = r5 + 1;
| label_7:
0x0003b7e4 ldrb r3, [r6] | r3 = *(r6);
0x0003b7e6 str r3, [sp, 4] | var_4h = r3;
0x0003b7e8 cmp r3, 0 |
| if (r3 == 0) {
0x0003b7ea beq.w 0x3b9c0 | goto label_9;
| }
0x0003b7ee mov.w sl, 0 | sl = 0;
0x0003b7f2 adds r6, 1 | r6++;
0x0003b7f4 mov sb, r3 | sb = r3;
0x0003b7f6 mov fp, sl |
0x0003b7f8 b 0x3b822 |
| while (sb != 0x2e) {
0x0003b7fa blx 0xe110 | r0 = fcn_0000e110 ();
0x0003b7fe ldr r2, [r0] | r2 = *(r0);
0x0003b800 ldrh.w r2, [r2, sb, lsl 1] | offset_0 = sb << 1;
| r2 = *((r2 + offset_0));
0x0003b804 lsls r0, r2, 0x14 | r0 = r2 << 0x14;
| if (r0 >= r2) {
0x0003b806 bpl.w 0x3b94c | goto label_10;
| }
0x0003b80a mov r4, r6 | r4 = r6;
0x0003b80c cmp.w fp, 0 |
| if (fp == 0) {
0x0003b810 bne 0x3b816 |
0x0003b812 add.w sl, sl, 1 | sl++;
| }
| label_0:
0x0003b816 ldrb sb, [r6], 1 | sb = *(r6);
| r6++;
0x0003b81a cmp.w sb, 0 |
| if (sb == 0) {
0x0003b81e beq.w 0x3b94c | goto label_10;
| }
0x0003b822 cmp.w sb, 0x2e |
0x0003b826 add.w r4, r6, -1 | r4 = r6 + -1;
0x0003b82a bne 0x3b7fa |
| }
0x0003b82c cmp.w fp, 0 |
| if (fp != 0) {
0x0003b830 bne.w 0x3b94c | goto label_10;
| }
0x0003b834 mov r4, r6 | r4 = r6;
0x0003b836 mov.w fp, 1 |
0x0003b83a b 0x3b816 | goto label_0;
0x0003b83c mov r1, r8 | r1 = r8;
0x0003b83e mov r0, r5 | r0 = r5;
0x0003b840 bl 0x3bc24 | r0 = fcn_0003bc24 (r0, r1);
0x0003b844 orrs.w r3, r0, r1 | r3 = r0 | r1;
0x0003b848 mov r4, r0 | r4 = r0;
| if (r3 == r0) {
0x0003b84a beq 0x3b7dc | goto label_1;
| }
| label_2:
0x0003b84c subs r5, r5, r7 | r5 -= r7;
0x0003b84e adds r0, r5, r4 | r0 = r5 + r4;
0x0003b850 adc.w r1, r1, r5, asr 31 | __asm ("adc.w r1, r1, r5, asr 31");
| label_8:
0x0003b854 add sp, 0xc |
0x0003b856 pop.w {r4, r5, r6, r7, r8, sb, sl, fp, pc} |
0x0003b85a ldr r1, [pc, 0x1f0] |
0x0003b85c mov r3, r5 | r3 = r5;
0x0003b85e add r1, pc | r1 = 0x772b0;
0x0003b860 b 0x3b86a |
| while (r2 == r4) {
0x0003b862 ldrb r4, [r1, 1]! | r4 = *((r1 += 1));
0x0003b866 cmp r4, 0 |
| if (r4 == 0) {
0x0003b868 beq 0x3b90c | goto label_11;
| }
0x0003b86a ldrb r2, [r3], 1 | r2 = *(r3);
| r3++;
0x0003b86e cmp r2, r4 |
0x0003b870 beq 0x3b862 |
| }
0x0003b872 cmp.w r8, 0 |
| if (r8 == 0) {
0x0003b876 beq 0x3b7dc | goto label_1;
| }
0x0003b878 ldr r2, [pc, 0x1d4] |
0x0003b87a mov r3, r5 | r3 = r5;
0x0003b87c ldr r1, [pc, 0x1d4] |
0x0003b87e ldr.w r0, [r8] | r0 = *(r8);
0x0003b882 add r2, pc | r2 = 0x772d6;
0x0003b884 add r1, pc | r1 = 0x772dc;
0x0003b886 bl 0x44820 | zbx_dsprintf ()
0x0003b88a str.w r0, [r8] | __asm ("str.w r0, [r8]");
0x0003b88e b 0x3b7dc | goto label_1;
0x0003b890 ldr r1, [pc, 0x1c4] |
0x0003b892 mov r3, r5 | r3 = r5;
0x0003b894 add r1, pc | r1 = 0x772f0;
0x0003b896 b 0x3b89e |
| while (r2 == r4) {
0x0003b898 ldrb r4, [r1, 1]! | r4 = *((r1 += 1));
| if (r4 == 0) {
0x0003b89c cbz r4, 0x3b90c | goto label_11;
| }
0x0003b89e ldrb r2, [r3], 1 | r2 = *(r3);
| r3++;
0x0003b8a2 cmp r2, r4 |
0x0003b8a4 beq 0x3b898 |
| }
0x0003b8a6 cmp.w r8, 0 |
| if (r8 == 0) {
0x0003b8aa beq 0x3b7dc | goto label_1;
| }
0x0003b8ac ldr r2, [pc, 0x1ac] |
0x0003b8ae mov r3, r5 | r3 = r5;
0x0003b8b0 ldr r1, [pc, 0x1ac] |
0x0003b8b2 ldr.w r0, [r8] | r0 = *(r8);
0x0003b8b6 add r2, pc | r2 = 0x77316;
0x0003b8b8 add r1, pc | r1 = 0x7731c;
0x0003b8ba bl 0x44820 | zbx_dsprintf ()
0x0003b8bc vtbx.8 d15, {d17}, d8 | __asm ("vtbx.8 d15, {d17}, d8");
0x0003b8c0 movs r0, r0 |
0x0003b8c2 b 0x3b7dc | goto label_1;
0x0003b8c4 mov r1, r8 | r1 = r8;
0x0003b8c6 mov r0, r5 | r0 = r5;
0x0003b8c8 bl 0x3ba98 | r0 = fcn_0003ba98 (r0, r1);
0x0003b8cc orrs.w r3, r0, r1 | r3 = r0 | r1;
0x0003b8d0 mov r4, r0 | r4 = r0;
| if (r3 != r0) {
0x0003b8d2 bne 0x3b84c | goto label_2;
| }
0x0003b8d4 b 0x3b7dc | goto label_1;
0x0003b8d6 ldr r1, [pc, 0x18c] |
0x0003b8d8 mov r3, r5 | r3 = r5;
0x0003b8da add r1, pc | r1 = 0x77344;
0x0003b8dc b 0x3b8e4 |
| while (r2 == r4) {
0x0003b8de ldrb r4, [r1, 1]! | r4 = *((r1 += 1));
| if (r4 == 0) {
0x0003b8e2 cbz r4, 0x3b90c | goto label_11;
| }
0x0003b8e4 ldrb r2, [r3], 1 | r2 = *(r3);
| r3++;
0x0003b8e8 cmp r2, r4 |
0x0003b8ea beq 0x3b8de |
| }
0x0003b8ec cmp.w r8, 0 |
| if (r8 == 0) {
0x0003b8f0 beq.w 0x3b7dc | goto label_1;
| }
0x0003b8f4 ldr r2, [pc, 0x170] |
0x0003b8f6 mov r3, r5 | r3 = r5;
0x0003b8f8 ldr r1, [pc, 0x170] |
0x0003b8fa ldr.w r0, [r8] | r0 = *(r8);
0x0003b8fe add r2, pc | r2 = 0x7736a;
0x0003b900 add r1, pc | r1 = 0x77370;
0x0003b902 bl 0x44820 | zbx_dsprintf ()
0x0003b906 str.w r0, [r8] | __asm ("str.w r0, [r8]");
0x0003b90a b 0x3b7dc | goto label_1;
| label_11:
0x0003b90c subs r4, r3, r5 | r4 = r3 - r5;
0x0003b90e orrs.w r3, r4, r4, asr 31 | r3 = r4 | (r4 >> 31);
0x0003b912 asr.w r1, r4, 0x1f | r1 = r4 >> 0x1f;
| if (r3 != r4) {
0x0003b916 bne 0x3b84c | goto label_2;
| }
0x0003b918 b 0x3b7dc | goto label_1;
| label_3:
0x0003b91a cmp.w r8, 0 |
| if (r8 == 0) {
0x0003b91e beq.w 0x3b7dc | goto label_1;
| }
0x0003b922 ldr r3, [pc, 0x14c] |
0x0003b924 movs r1, 0x2e | r1 = 0x2e;
0x0003b926 ldr r0, [pc, 0x14c] |
0x0003b928 ldr.w r2, [r8] | r2 = *(r8);
0x0003b92c add r3, pc | r3 = 0x773a2;
0x0003b92e add r0, pc | r0 = 0x773a8;
0x0003b930 bl 0x40ed8 | zbx_strdup2 ();
0x0003b934 str.w r0, [r8] | __asm ("str.w r0, [r8]");
0x0003b938 b 0x3b7dc | goto label_1;
| label_5:
0x0003b93a mov r1, r8 | r1 = r8;
0x0003b93c mov r0, r5 | r0 = r5;
0x0003b93e bl 0x3b604 | r0 = fcn_0003b604 (r0, r1);
0x0003b942 orrs.w r3, r0, r1 | r3 = r0 | r1;
0x0003b946 mov r4, r0 | r4 = r0;
| if (r3 != r0) {
0x0003b948 bne 0x3b84c | goto label_2;
| }
0x0003b94a b 0x3b7dc | goto label_1;
| label_10:
0x0003b94c cmp.w sl, 0 |
| if (sl == 0) {
0x0003b950 beq 0x3b9c0 | goto label_9;
| }
0x0003b952 ldr r3, [sp, 4] | r3 = var_4h;
0x0003b954 cmp.w sl, 1 |
0x0003b958 sub.w r3, r3, 0x30 | r3 -= 0x30;
0x0003b95c clz r3, r3 | r3 &= r3;
0x0003b960 lsr.w r3, r3, 5 | r3 >>= 5;
0x0003b964 it le |
| if (sl > 1) {
0x0003b966 movle r3, 0 | r3 = 0;
| }
0x0003b968 cmp r3, 0 |
| if (r3 != 0) {
0x0003b96a bne 0x3b9e0 | goto label_12;
| }
0x0003b96c and r3, sb, 0xdf | r3 = sb & 0xdf;
0x0003b970 cmp r3, 0x45 |
| if (r3 != 0x45) {
0x0003b972 bne 0x3b9b0 | goto label_13;
| }
0x0003b974 ldrb r6, [r4, 1] | r6 = *((r4 + 1));
0x0003b976 cmp r6, 0 |
| if (r6 == 0) {
0x0003b978 beq 0x3ba00 | goto label_14;
| }
0x0003b97a sub.w r3, r6, 0x2b | r3 = r6 - 0x2b;
0x0003b97e tst.w r3, 0xfd |
0x0003b982 it ne |
| if ((r3 & 0xfd) == 0) {
0x0003b984 addne r4, 1 | r4++;
| }
| if ((r3 & 0xfd) == 0) {
0x0003b986 bne 0x3b990 |
0x0003b988 ldrb r6, [r4, 2] | r6 = *((r4 + 2));
0x0003b98a cmp r6, 0 |
| if (r6 == 0) {
0x0003b98c beq 0x3ba00 | goto label_14;
| }
0x0003b98e adds r4, 2 | r4 += 2;
| }
0x0003b990 blx 0xe110 | r0 = fcn_0000e110 ();
0x0003b994 ldr r2, [r0] | r2 = *(r0);
0x0003b996 ldrh.w r3, [r2, r6, lsl 1] | offset_1 = r6 << 1;
| r3 = *((r2 + offset_1));
0x0003b99a lsls r1, r3, 0x14 | r1 = r3 << 0x14;
| if (r1 < r3) {
0x0003b99c bmi 0x3b9a8 | goto label_15;
| }
0x0003b99e b 0x3ba20 | goto label_16;
| do {
0x0003b9a0 ldrh.w r3, [r2, r3, lsl 1] | offset_2 = r3 << 1;
| r3 = *((r2 + offset_2));
0x0003b9a4 lsls r3, r3, 0x14 | r3 <<= 0x14;
| if (r3 >= r3) {
0x0003b9a6 bpl 0x3b9b0 | goto label_13;
| }
| label_15:
0x0003b9a8 ldrb r3, [r4, 1]! | r3 = *((r4 += 1));
0x0003b9ac cmp r3, 0 |
0x0003b9ae bne 0x3b9a0 |
| } while (r3 != 0);
| label_13:
0x0003b9b0 subs r4, r4, r5 | r4 -= r5;
0x0003b9b2 orrs.w r3, r4, r4, asr 31 | r3 = r4 | (r4 >> 31);
0x0003b9b6 asr.w r1, r4, 0x1f | r1 = r4 >> 0x1f;
| if (r3 != r4) {
0x0003b9ba bne.w 0x3b84c | goto label_2;
| }
0x0003b9be b 0x3b7dc | goto label_1;
| label_9:
0x0003b9c0 cmp.w r8, 0 |
| if (r8 == 0) {
0x0003b9c4 beq.w 0x3b7dc | goto label_1;
| }
0x0003b9c8 ldr r2, [pc, 0xac] |
0x0003b9ca mov r3, r5 | r3 = r5;
0x0003b9cc ldr r1, [pc, 0xac] |
0x0003b9ce ldr.w r0, [r8] | r0 = *(r8);
0x0003b9d2 add r2, pc | r2 = 0x7744e;
0x0003b9d4 add r1, pc | r1 = 0x77454;
0x0003b9d6 bl 0x44820 | zbx_dsprintf ()
0x0003b9da str.w r0, [r8] | __asm ("str.w r0, [r8]");
0x0003b9de b 0x3b7dc | goto label_1;
| label_12:
0x0003b9e0 cmp.w r8, 0 |
| if (r8 == 0) {
0x0003b9e4 beq.w 0x3b7dc | goto label_1;
| }
0x0003b9e8 ldr r2, [pc, 0x94] |
0x0003b9ea mov r3, r5 | r3 = r5;
0x0003b9ec ldr r1, [pc, 0x94] |
0x0003b9ee ldr.w r0, [r8] | r0 = *(r8);
0x0003b9f2 add r2, pc | r2 = 0x77476;
0x0003b9f4 add r1, pc | r1 = 0x7747c;
0x0003b9f6 bl 0x44820 | zbx_dsprintf ()
0x0003b9fa str.w r0, [r8] | __asm ("str.w r0, [r8]");
0x0003b9fe b 0x3b7dc | goto label_1;
| label_14:
0x0003ba00 cmp.w r8, 0 |
| if (r8 == 0) {
0x0003ba04 beq.w 0x3b7dc | goto label_1;
| }
0x0003ba08 ldr r3, [pc, 0x7c] |
0x0003ba0a movs r1, 0x2e | r1 = 0x2e;
0x0003ba0c ldr r0, [pc, 0x7c] |
0x0003ba0e ldr.w r2, [r8] | r2 = *(r8);
0x0003ba12 add r3, pc | r3 = 0x7749e;
0x0003ba14 add r0, pc | r0 = 0x774a4;
0x0003ba16 bl 0x40ed8 | zbx_strdup2 ();
0x0003ba1a str.w r0, [r8] | __asm ("str.w r0, [r8]");
0x0003ba1e b 0x3b7dc | goto label_1;
| label_16:
0x0003ba20 cmp.w r8, 0 |
| if (r8 == 0) {
0x0003ba24 beq.w 0x3b7dc | goto label_1;
| }
0x0003ba28 ldr r2, [pc, 0x64] |
0x0003ba2a mov r3, r4 | r3 = r4;
0x0003ba2c ldr r1, [pc, 0x64] |
0x0003ba2e ldr.w r0, [r8] | r0 = *(r8);
0x0003ba32 add r2, pc | r2 = 0x774c6;
0x0003ba34 add r1, pc | r1 = 0x774cc;
0x0003ba36 bl 0x44820 | zbx_dsprintf ()
0x0003ba3a str.w r0, [r8] | __asm ("str.w r0, [r8]");
0x0003ba3e b 0x3b7dc | goto label_1;
| }
; assembly | /* r2dec pseudo code output */
| /* /logs/firmware/patool_extraction/rootfs.img_unblob_extracted/rootfs.img_extract/0-80367616.squashfs_v4_le_extract/usr/sbin/zabbix_agentd @ 0x130d8 */
| #include <stdint.h>
|
; (fcn) sym.load_user_parameters () | void load_user_parameters (int16_t arg_804h_2, int16_t arg_804h, int16_t arg1, int16_t arg2) {
| int16_t var_4h_2;
| r0 = arg1;
| r1 = arg2;
0x000130d8 ldr r2, [pc, 0xb0] |
0x000130da ldr r3, [pc, 0xb4] | r3 = *(0x13192);
0x000130dc push.w {r4, r5, r6, r7, r8, sb, sl, lr} |
0x000130e0 subw sp, sp, 0x808 | __asm ("subw sp, sp, 0x808");
0x000130e4 add r2, pc | r2 = 0x26274;
0x000130e6 ldr r6, [r0] | r6 = *(r0);
0x000130e8 ldr r3, [r2, r3] |
0x000130ea ldr r3, [r3] | r3 = *(0x26274);
0x000130ec str.w r3, [sp, 0x804] | __asm ("str.w r3, [arg_804h_2]");
0x000130f0 mov.w r3, 0 | r3 = 0;
0x000130f4 cmp r6, 0 |
| if (r6 == 0) {
0x000130f6 beq 0x1316c | goto label_1;
| }
0x000130f8 mov r5, r0 | r5 = r0;
0x000130fa mov sl, r1 | sl = r1;
0x000130fc mov.w sb, 0x2c | sb = 0x2c;
0x00013100 mov.w r8, 0 | r8 = 0;
0x00013104 add r7, sp, 4 | r7 += var_4h_2;
0x00013106 b 0x13128 |
| while (r0 != 0) {
0x00013108 mov r1, r0 | r1 = r0;
0x0001310a mov.w r3, 0x800 | r3 = 0x800;
0x0001310e strb r8, [r1], 1 | *(r1) = r8;
| r1++;
0x00013112 mov r2, r7 | r2 = r7;
0x00013114 ldr r0, [r5] | r0 = *(r5);
0x00013116 bl 0x1c4ac | add_user_parameter ();
0x0001311a adds r0, 1 | r0++;
| if (r0 == 1) {
0x0001311c beq 0x13170 | goto label_2;
| }
0x0001311e strb.w sb, [r4] | *(r4) = sb;
0x00013122 ldr r6, [r5, 4]! | r6 = *((r5 += 4));
| if (r6 == 0) {
0x00013126 cbz r6, 0x1316c | goto label_1;
| }
0x00013128 movs r1, 0x2c | r1 = 0x2c;
0x0001312a mov r0, r6 | r0 = r6;
0x0001312c blx 0xdcd4 | r0 = fcn_0000dcd4 ();
0x00013130 mov r4, r0 | r4 = r0;
0x00013132 cmp r0, 0 |
0x00013134 bne 0x13108 |
| }
0x00013136 ldr r1, [pc, 0x5c] |
0x00013138 mov r2, r6 | r2 = r6;
0x0001313a ldr.w r0, [sl] | r0 = *(sl);
0x0001313e add r1, pc | r1 = 0x262d8;
0x00013140 bl 0x44820 | r0 = zbx_dsprintf ()
0x00013144 mov r3, r0 | r3 = r0;
| label_0:
0x00013146 mov.w r0, -1 | r0 = -1;
0x0001314a str.w r3, [sl] | __asm ("str.w r3, [sl]");
| do {
0x0001314e ldr r2, [pc, 0x48] |
0x00013150 ldr r3, [pc, 0x3c] | r3 = *(0x13190);
0x00013152 add r2, pc | r2 = 0x262f0;
0x00013154 ldr r3, [r2, r3] | r3 = *(0x262f0);
0x00013156 ldr r2, [r3] | r2 = *(0x262f0);
0x00013158 ldr.w r3, [sp, 0x804] | r3 = *(arg_804h);
0x0001315c eors r2, r3 | r2 ^= r3;
0x0001315e mov.w r3, 0 | r3 = 0;
| if (r2 != r3) {
0x00013162 bne 0x13188 | goto label_3;
| }
0x00013164 addw sp, sp, 0x808 | __asm ("addw sp, sp, 0x808");
0x00013168 pop.w {r4, r5, r6, r7, r8, sb, sl, pc} |
| label_1:
0x0001316c movs r0, 0 | r0 = 0;
0x0001316e b 0x1314e |
| } while (1);
| label_2:
0x00013170 ldr r1, [pc, 0x28] |
0x00013172 movs r2, 0x2c | r2 = 0x2c;
0x00013174 strb r2, [r4] | *(r4) = r2;
0x00013176 mov r3, r7 | r3 = r7;
0x00013178 ldr r2, [r5] | r2 = *(r5);
0x0001317a ldr.w r0, [sl] | r0 = *(sl);
0x0001317e add r1, pc | r1 = 0x2631e;
0x00013180 bl 0x44820 | r0 = zbx_dsprintf ()
0x00013184 mov r3, r0 | r3 = r0;
0x00013186 b 0x13146 | goto label_0;
| label_3:
0x00013188 blx 0xe158 | fcn_0000e158 ();
0x0001318c ldrh r4, [r6, 0x16] | r4 = *((r6 + 0x16));
0x0001318e movs r4, r0 | r4 = r0;
0x00013190 lsls r4, r2, 0xe | r4 = r2 << 0xe;
0x00013192 movs r0, r0 |
0x00013194 invalid |
| }
; assembly | /* r2dec pseudo code output */
| /* /logs/firmware/patool_extraction/rootfs.img_unblob_extracted/rootfs.img_extract/0-80367616.squashfs_v4_le_extract/usr/sbin/zabbix_agentd @ 0x16ba4 */
| #include <stdint.h>
|
; (fcn) sym.process_log_check () | void process_log_check (int16_t arg_0h_2, int16_t arg_8h_2, int16_t arg_ch, int16_t arg_10h, int16_t arg_18h, int16_t arg_1ch, int16_t arg_1dh_2, int16_t arg_20h, int16_t arg_2ch, int16_t arg_bp_48h, int16_t arg_0h, int16_t arg_8h, int16_t arg_1dh, int16_t arg_bp_40h, int16_t arg_30h, 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_50h, int16_t arg_58h, int16_t arg_5ch, int16_t arg_60h, int16_t arg_68h, int16_t arg_6ch, int16_t arg_70h, int16_t arg_74h, int16_t arg_78h, int16_t arg_7ch, int16_t arg_80h, int16_t arg_84h, int16_t arg_9ch, int16_t arg_b0h, int16_t arg_b4h, int16_t arg_b8h, int16_t arg_c0h, int16_t arg_c4h, int16_t arg_c8h, int16_t arg_cch, int16_t arg_d0h, int16_t arg_d8h, int16_t arg_e0h, int16_t arg_e4h, int16_t arg_ech, int16_t arg_100h, int16_t arg_104h, int16_t arg_108h, int16_t arg_114h, int16_t arg_118h, int16_t arg_11ch, int16_t arg_124h, int16_t arg_128h, int16_t arg_12ch, int16_t arg_130h, int16_t arg_134h, int16_t arg_138h, int16_t arg_13ch, int16_t arg_140h, int16_t arg_144h, int16_t arg_148h, int16_t arg_14ch, int16_t arg_150h, int16_t arg_158h, int16_t arg_178h, int16_t arg_264h, int16_t arg_a64h, int16_t arg_ac0h, int16_t arg_ac4h, int16_t arg_ac8h, int16_t arg_acch, int16_t arg_ad0h, int16_t arg1, int16_t arg2, int16_t arg3, int16_t arg4) {
| int16_t var_0h;
| int16_t var_4h;
| int16_t var_10h;
| r0 = arg1;
| r1 = arg2;
| r2 = arg3;
| r3 = arg4;
0x00016ba4 svcmi 0xf0e92d | __asm ("svcmi 0xf0e92d");
0x00016ba8 mov fp, r3 |
0x00016baa vpush {d8, d9, d10, d11, d12, d13} | __asm ("vpush {d8, d9, d10, d11, d12, d13}");
0x00016bae subw sp, sp, 0xa6c | __asm ("subw sp, sp, 0xa6c");
0x00016bb2 ldr.w r3, [sp, 0xac0] | r3 = *(arg_ac0h);
0x00016bb6 str r2, [sp, 0x68] | *(arg_68h) = r2;
0x00016bb8 ldr r2, [pc, 0x2e8] |
0x00016bba str r3, [sp, 0xc4] | *(arg_c4h) = r3;
0x00016bbc ldr r3, [pc, 0x2e8] | r3 = *(0x16ea8);
0x00016bbe add r2, pc | r2 = 0x2da66;
0x00016bc0 str r0, [sp, 0xb0] | *(arg_b0h) = r0;
0x00016bc2 str r1, [sp, 0xc0] | *(arg_c0h) = r1;
0x00016bc4 ldr r3, [r2, r3] |
0x00016bc6 add r2, sp, 0x130 | r2 += arg_130h;
0x00016bc8 ldrb.w r5, [fp, 0x1d] | r5 = *(arg_1dh);
0x00016bcc ldr r3, [r3] | r3 = *(0x2da66);
0x00016bce str.w r3, [sp, 0xa64] | __asm ("str.w r3, [arg_a64h]");
0x00016bd2 mov.w r3, 0 | r3 = 0;
0x00016bd6 add r3, sp, 0x158 | r3 += arg_158h;
0x00016bd8 mov r4, r3 | r4 = r3;
0x00016bda str r3, [sp, 0x48] | *(arg_48h) = r3;
0x00016bdc movs r3, 0 | r3 = 0;
0x00016bde ubfx sl, r5, 5, 1 | sl = (r5 >> 5) & ((1 << 1) - 1);
0x00016be2 str r3, [sp, 0x130] | *(arg_130h) = r3;
0x00016be4 mov r0, r4 | r0 = r4;
0x00016be6 str r3, [sp, 0x134] | *(arg_134h) = r3;
0x00016be8 ldr.w r3, [sp, 0xac4] | r3 = *(arg_ac4h);
0x00016bec str r2, [sp, 0xe0] | *(arg_e0h) = r2;
0x00016bee add r2, sp, 0x134 | r2 += arg_134h;
0x00016bf0 str r2, [sp, 0xe4] | *(arg_e4h) = r2;
0x00016bf2 str r3, [sp, 0xc8] | *(arg_c8h) = r3;
0x00016bf4 ldr.w r3, [sp, 0xac8] | r3 = *(arg_ac8h);
0x00016bf8 str r3, [sp, 0xcc] | *(arg_cch) = r3;
0x00016bfa ldr.w r3, [sp, 0xacc] | r3 = *(arg_acch);
0x00016bfe str r3, [sp, 0x7c] | *(arg_7ch) = r3;
0x00016c00 ldr.w r3, [sp, 0xad0] | r3 = *(arg_ad0h);
0x00016c04 str r3, [sp, 0x60] | *(arg_60h) = r3;
0x00016c06 and r3, r5, 0x20 | r3 = r5 & 0x20;
0x00016c0a ldr r5, [pc, 0x2a0] |
0x00016c0c str r3, [sp, 0x74] | *(arg_74h) = r3;
0x00016c0e bl 0x1c350 | init_request ();
0x00016c12 ldr.w r0, [fp] | r0 = *(fp);
0x00016c16 mov r1, r4 | r1 = r4;
0x00016c18 bl 0x1c384 | parse_item_key ();
0x00016c1c add r5, pc | r5 = 0x2dace;
0x00016c1e cmp r0, 0 |
| if (r0 != 0) {
0x00016c20 bne.w 0x18db4 | goto label_59;
| }
0x00016c24 ldr r3, [sp, 0x48] | r3 = *(arg_48h);
0x00016c26 ldrb.w r1, [fp, 0x1d] | r1 = *(arg_1dh_2);
0x00016c2a ldr r4, [r3, 4] | r4 = *((r3 + 4));
0x00016c2c cmp r4, 0 |
| if (r4 == 0) {
0x00016c2e beq.w 0x19116 | goto label_60;
| }
0x00016c32 tst.w r1, 0x20 |
0x00016c36 ite eq |
| if ((r1 & 0x20) != 0) {
0x00016c38 moveq r3, 9 | r3 = 9;
| }
| if ((r1 & 0x20) == 0) {
0x00016c3a movne r3, 8 | r3 = 8;
| }
0x00016c3c cmp r4, r3 |
| if (r4 > r3) {
0x00016c3e bgt.w 0x19130 | goto label_61;
| }
0x00016c42 cmp r4, 0 |
| if (r4 <= 0) {
0x00016c44 ble.w 0x18aa6 | goto label_62;
| }
0x00016c48 ldr r3, [sp, 0x48] | r3 = *(arg_48h);
0x00016c4a ldr r3, [r3, 8] | r3 = *((r3 + 8));
0x00016c4c ldr r6, [r3] | r6 = *(r3);
0x00016c4e cmp r6, 0 |
| if (r6 == 0) {
0x00016c50 beq.w 0x18aa6 | goto label_62;
| }
0x00016c54 ldrb r2, [r6] | r2 = *(r6);
0x00016c56 cmp r2, 0 |
| if (r2 == 0) {
0x00016c58 beq.w 0x18aa6 | goto label_62;
| }
0x00016c5c cmp r4, 1 |
| if (r4 == 1) {
0x00016c5e beq.w 0x16dc8 | goto label_63;
| }
0x00016c62 ldr r3, [r3, 4] | r3 = *((r3 + 4));
0x00016c64 str r3, [sp, 0x64] | *(arg_bp_40h) = r3;
0x00016c66 cmp r3, 0 |
| if (r3 == 0) {
0x00016c68 beq.w 0x16e1c | goto label_64;
| }
0x00016c6c ldrb r3, [r3] | r3 = *(r3);
0x00016c6e cmp r3, 0x40 |
| if (r3 == 0x40) {
0x00016c70 beq.w 0x17230 | goto label_65;
| }
| label_11:
0x00016c74 cmp r4, 2 |
| if (r4 <= 2) {
0x00016c76 ble.w 0x16e28 | goto label_66;
| }
| label_2:
0x00016c7a ldr r7, [sp, 0x48] | r7 = *(arg_48h);
0x00016c7c ldr r3, [r7, 8] | r3 = *((r7 + 8));
0x00016c7e ldr r3, [r3, 8] | r3 = *((r3 + 8));
0x00016c80 str r3, [sp, 0x9c] | *(arg_9ch) = r3;
0x00016c82 cmp r3, 0 |
| if (r3 == 0) {
0x00016c84 beq.w 0x16e14 | goto label_67;
| }
0x00016c88 ldr r0, [pc, 0x224] |
0x00016c8a movs r2, 0 | r2 = 0;
0x00016c8c movw r1, 0xf31 | r1 = 0xf31;
0x00016c90 add r0, pc | r0 = 0x2db44;
0x00016c92 bl 0x40ed8 | r0 = zbx_strdup2 ();
0x00016c96 mov r4, r0 | r4 = r0;
0x00016c98 str r0, [sp, 0x44] | *(arg_44h) = r0;
0x00016c9a bl 0x4585c | zbx_strupper ();
0x00016c9e str r4, [sp, 0x9c] | *(arg_9ch) = r4;
0x00016ca0 ldr r4, [r7, 4] | r4 = *((r7 + 4));
| label_1:
0x00016ca2 cmp r4, 3 |
| if (r4 <= 3) {
0x00016ca4 ble.w 0x16e32 | goto label_68;
| }
0x00016ca8 ldr r3, [sp, 0x48] | r3 = *(arg_48h);
0x00016caa ldr r3, [r3, 8] | r3 = *((r3 + 8));
0x00016cac ldr r0, [r3, 0xc] | r0 = *((r3 + 0xc));
0x00016cae cmp r0, 0 |
| if (r0 == 0) {
0x00016cb0 beq.w 0x16dfa | goto label_69;
| }
0x00016cb4 ldrb r3, [r0] | r3 = *(r0);
0x00016cb6 cmp r3, 0 |
| if (r3 == 0) {
0x00016cb8 beq.w 0x16dfa | goto label_69;
| }
0x00016cbc movs r2, 0xa | r2 = 0xa;
0x00016cbe movs r1, 0 | r1 = 0;
0x00016cc0 blx 0xdfe8 | r0 = waitpid ();
0x00016cc4 subs.w r8, r0, 0 | r8 = r0 - 0;
| if (r8 <= r0) {
0x00016cc8 ble.w 0x19076 | goto label_70;
| }
0x00016ccc ldr r2, [sp, 0x74] | r2 = *(arg_74h);
0x00016cce cmp.w r8, 0x3e8 |
0x00016cd2 ite le |
| if (r8 > 0x3e8) {
0x00016cd4 movle r3, 0 | r3 = 0;
| }
| if (r8 <= 0x3e8) {
0x00016cd6 movgt r3, 1 | r3 = 1;
| }
0x00016cd8 cmp r2, 0 |
0x00016cda it ne |
| if (r2 == 0) {
0x00016cdc movne r3, 0 | r3 = 0;
| }
0x00016cde cmp r3, 0 |
| if (r3 != 0) {
0x00016ce0 bne.w 0x19076 | goto label_70;
| }
0x00016ce4 movw r2, 0x2710 | r2 = 0x2710;
0x00016ce8 cmp r8, r2 |
0x00016cea ite le |
| if (r8 > r2) {
0x00016cec movle r3, 0 | r3 = 0;
| }
| if (r8 <= r2) {
0x00016cee andgt r3, sl, 1 | r3 = sl & 1;
| }
0x00016cf2 cmp r3, 0 |
| if (r3 != 0) {
0x00016cf4 bne.w 0x19076 | goto label_70;
| }
0x00016cf8 ldr r3, [sp, 0x48] | r3 = *(arg_48h);
0x00016cfa ldr r4, [r3, 4] | r4 = *((r3 + 4));
| label_0:
0x00016cfc cmp r4, 4 |
| if (r4 <= 4) {
0x00016cfe ble.w 0x16e42 | goto label_15;
| }
0x00016d02 ldr r3, [sp, 0x48] | r3 = *(arg_48h);
0x00016d04 ldr r7, [r3, 8] | r7 = *((r3 + 8));
0x00016d06 ldr.w sb, [r7, 0x10] | sb = *((r7 + 0x10));
0x00016d0a cmp.w sb, 0 |
0x00016d0c lsrs r0, r0, 0x1c | r0 >>= 0x1c;
| if (r0 != r0) {
0x00016d0e beq 0x16d1a |
0x00016d10 ldrb.w r3, [sb] | r3 = *(sb);
0x00016d14 cmp r3, 0 |
| if (r3 != 0) {
0x00016d16 bne.w 0x16e62 | goto label_71;
| }
| }
| label_5:
0x00016d1a movs r3, 0 | r3 = 0;
0x00016d1c strb.w r3, [fp, 0x1c] | *(arg_1ch) = r3;
| label_6:
0x00016d20 ldr r3, [sp, 0x74] | r3 = *(arg_74h);
0x00016d22 cmp r3, 0 |
| if (r3 != 0) {
0x00016d24 bne.w 0x16e56 | goto label_72;
| }
0x00016d28 cmp r4, 5 |
| if (r4 == 5) {
0x00016d2a beq.w 0x186fe | goto label_73;
| }
0x00016d2e ldr r3, [r7, 0x14] | r3 = *((r7 + 0x14));
0x00016d30 mov.w sb, 6 | sb = 6;
0x00016d34 str r3, [sp, 0x100] | *(arg_100h) = r3;
0x00016d36 cmp r3, 0 |
| if (r3 == 0) {
0x00016d38 beq.w 0x18200 | goto label_74;
| }
| label_4:
0x00016d3c cmp sb, r4 |
| if (sb >= r4) {
0x00016d3e bge.w 0x1937a | goto label_75;
| }
0x00016d42 ldr.w r0, [r7, sb, lsl 2] | offset_0 = sb << 2;
| r0 = *((r7 + offset_0));
| if (r0 != 0) {
0x00016d46 cbz r0, 0x16d50 |
0x00016d48 ldrb r3, [r0] | r3 = *(r0);
0x00016d4a cmp r3, 0 |
| if (r3 != 0) {
0x00016d4c bne.w 0x171d0 | goto label_76;
| }
| }
0x00016d50 vldr s20, [pc, 0x14c] | __asm ("vldr s20, [0x00016ea4]");
0x00016d54 ldrb.w r1, [fp, 0x1d] | r1 = *(arg_1dh_2);
| do {
| label_8:
0x00016d58 tst.w r1, 0x20 |
0x00016d5c mov r3, r1 | r3 = r1;
0x00016d5e ite eq |
| if ((r1 & 0x20) != 0) {
0x00016d60 moveq r3, 7 | r3 = 7;
| }
| if ((r1 & 0x20) == 0) {
0x00016d62 movne r3, 6 | r3 = 6;
| }
0x00016d64 cmp r3, r4 |
0x00016d66 and r2, r1, 8 | r2 = r1 & 8;
0x00016d6a str r1, [sp, 0xd0] | *(arg_d0h) = r1;
| if (r3 >= r4) {
0x00016d6c bge.w 0x16ee8 | goto label_77;
| }
0x00016d70 ldr r1, [sp, 0x48] | r1 = *(arg_48h);
0x00016d72 ldr.w sb, [r1, 8] | sb = *((r1 + 8));
0x00016d76 ldr.w r7, [sb, r3, lsl 2] | offset_1 = r3 << 2;
| r7 = *((sb + offset_1));
0x00016d7a cmp r7, 0 |
| if (r7 == 0) {
0x00016d7c beq.w 0x16ee8 | goto label_77;
| }
0x00016d80 ldrb r1, [r7] | r1 = *(r7);
0x00016d82 cmp r1, 0 |
| if (r1 == 0) {
0x00016d84 beq.w 0x16ee8 | goto label_77;
| }
0x00016d88 cmp r2, 0 |
| if (r2 == 0) {
0x00016d8a beq.w 0x171fe | goto label_78;
| }
0x00016d8e ldr r1, [pc, 0x124] |
0x00016d90 mov r0, r7 | r0 = r7;
0x00016d92 add r1, pc | r1 = 0x2dc4c;
0x00016d94 blx 0xe3b0 | r0 = fcn_0000e3b0 ();
0x00016d98 cmp r0, 0 |
| if (r0 != 0) {
0x00016d9a bne.w 0x18cb0 | goto label_79;
| }
0x00016d9e ldr r3, [sp, 0xb0] | r3 = *(arg_b0h);
0x00016da0 cmp r3, 0 |
| if (r3 == 0) {
0x00016da2 beq.w 0x16f8a | goto label_80;
| }
0x00016da6 ldr r3, [sp, 0xb0] | r3 = *(arg_b0h);
0x00016da8 rsb.w sl, sl, 8 | sl = 8 - sl;
0x00016dac ldr.w r2, [fp] | r2 = *(fp);
0x00016db0 cmp r4, sl |
0x00016db2 ldr r3, [r3] | r3 = *(r3);
0x00016db4 str r2, [sp, 0x2c] | *(arg_8h) = r2;
0x00016db6 ldr r3, [r3] | r3 = *(r3);
0x00016db8 ldr r1, [r3] | r1 = *(r3);
0x00016dba ldrh r7, [r3, 4] | r7 = *((r3 + 4));
0x00016dbc itt gt |
| if (r4 <= sl) {
0x00016dbe movgt r3, 1 | r3 = 1;
| }
| if (r4 <= sl) {
0x00016dc0 strgt r3, [sp, 0xec] | *(arg_ech) = r3;
| }
| if (r4 > sl) {
0x00016dc2 bgt.w 0x16f18 | goto label_81;
| }
0x00016dc6 b 0x16f8a | goto label_80;
| label_63:
0x00016dc8 ldr r3, [pc, 0xec] | r3 = *(0x16eb8);
0x00016dca ldr r3, [r5, r3] | r3 = *((r5 + r3));
0x00016dcc ldr.w r8, [r3] | r8 = *(0x16eb8);
0x00016dd0 ldr r3, [sp, 0x74] | r3 = *(arg_74h);
0x00016dd2 cmp r3, 0 |
| if (r3 == 0) {
0x00016dd4 beq 0x16e48 | goto label_82;
| }
0x00016dd6 add.w r8, r8, r8, lsl 2 | r8 += (r8 << 2);
0x00016dda ldr r3, [pc, 0xe0] |
0x00016ddc str r0, [sp, 0x9c] | *(arg_9ch) = r0;
0x00016dde lsl.w r8, r8, 1 | r8 <<= 1;
0x00016de2 add r3, pc | r3 = 0x2dca4;
0x00016de4 str r3, [sp, 0x64] | *(arg_bp_40h) = r3;
0x00016de6 str r3, [sp, 0x44] | *(arg_44h) = r3;
| label_3:
0x00016de8 movs r3, 0 | r3 = 0;
0x00016dea strb.w r3, [fp, 0x1c] | *(arg_1ch) = r3;
| label_19:
0x00016dee ldr r3, [pc, 0xd0] |
0x00016df0 add r3, pc | r3 = 0x2dcb6;
0x00016df2 str r3, [sp, 0x100] | *(arg_100h) = r3;
| label_48:
0x00016df4 vldr s20, [pc, 0xa8] | __asm ("vldr s20, [0x00016ea4]");
0x00016df8 b 0x16d58 |
| } while (1);
| label_69:
0x00016dfa ldr r3, [pc, 0xbc] | r3 = *(0x16eba);
0x00016dfc ldr r3, [r5, r3] | r3 = *((r5 + r3));
0x00016dfe ldr.w r8, [r3] | r8 = *(0x16eba);
0x00016e02 ldr r3, [sp, 0x74] | r3 = *(arg_74h);
0x00016e04 cmp r3, 0 |
| if (r3 == 0) {
0x00016e06 beq.w 0x16cfc | goto label_0;
| }
0x00016e0a add.w r8, r8, r8, lsl 2 | r8 += (r8 << 2);
0x00016e0e lsl.w r8, r8, 1 | r8 <<= 1;
0x00016e12 b 0x16cfc | goto label_0;
| label_67:
0x00016e14 ldr r3, [pc, 0xac] |
0x00016e16 add r3, pc | r3 = 0x2dcde;
0x00016e18 str r3, [sp, 0x44] | *(arg_44h) = r3;
0x00016e1a b 0x16ca2 | goto label_1;
| label_64:
0x00016e1c ldr r3, [pc, 0xa8] |
0x00016e1e cmp r4, 2 |
0x00016e20 add r3, pc | r3 = 0x2dcec;
0x00016e22 str r3, [sp, 0x64] | *(arg_bp_40h) = r3;
| if (r4 > 2) {
0x00016e24 bgt.w 0x16c7a | goto label_2;
| }
| label_66:
0x00016e28 ldr r3, [pc, 0xa0] |
0x00016e2a add r3, pc | r3 = 0x2dcfa;
0x00016e2c str r3, [sp, 0x44] | *(arg_44h) = r3;
0x00016e2e movs r3, 0 | r3 = 0;
0x00016e30 str r3, [sp, 0x9c] | *(arg_9ch) = r3;
| label_68:
0x00016e32 ldr r3, [pc, 0x84] | r3 = *(0x16eba);
0x00016e34 ldr r3, [r5, r3] | r3 = *((r5 + r3));
0x00016e36 ldr.w r8, [r3] | r8 = *(0x16eba);
0x00016e3a ldr r3, [sp, 0x74] | r3 = *(arg_74h);
0x00016e3c cmp r3, 0 |
| if (r3 != 0) {
0x00016e3e bne.w 0x17382 | goto label_83;
| }
| label_15:
0x00016e42 ldrb.w r1, [fp, 0x1d] | r1 = *(arg_1dh_2);
0x00016e46 b 0x16de8 | goto label_3;
| label_82:
0x00016e48 ldr r3, [pc, 0x84] |
0x00016e4a ldr r2, [sp, 0x74] | r2 = *(arg_74h);
0x00016e4c add r3, pc | r3 = 0x2dd20;
0x00016e4e str r3, [sp, 0x64] | *(arg_bp_40h) = r3;
0x00016e50 str r2, [sp, 0x9c] | *(arg_9ch) = r2;
0x00016e52 str r3, [sp, 0x44] | *(arg_44h) = r3;
0x00016e54 b 0x16de8 | goto label_3;
| label_72:
0x00016e56 ldr r3, [pc, 0x7c] |
0x00016e58 mov.w sb, 5 | sb = 5;
0x00016e5c add r3, pc | r3 = 0x2dd36;
0x00016e5e str r3, [sp, 0x100] | *(arg_100h) = r3;
0x00016e60 b 0x16d3c | goto label_4;
| label_71:
0x00016e62 ldr r1, [pc, 0x74] |
0x00016e64 mov r0, sb | r0 = sb;
0x00016e66 add r1, pc | r1 = 0x2dd44;
0x00016e68 blx 0xe3b0 | r0 = fcn_0000e3b0 ();
0x00016e6c cmp r0, 0 |
| if (r0 == 0) {
0x00016e6e beq.w 0x16d1a | goto label_5;
| }
0x00016e72 ldr r1, [pc, 0x68] |
0x00016e74 mov r0, sb | r0 = sb;
0x00016e76 add r1, pc | r1 = 0x2dd58;
0x00016e78 blx 0xe3b0 | r0 = fcn_0000e3b0 ();
0x00016e7c cmp r0, 0 |
| if (r0 == 0) {
0x00016e7e beq.w 0x16d20 | goto label_6;
| }
0x00016e82 ldr r4, [sp, 0x7c] | r4 = *(arg_7ch);
0x00016e84 movw r1, 0xf42 | r1 = 0xf42;
0x00016e88 ldr r3, [pc, 0x54] |
0x00016e8a ldr r0, [pc, 0x58] |
0x00016e8c ldr r2, [r4] | r2 = *(r4);
0x00016e8e add r3, pc | r3 = 0x2dd72;
0x00016e90 add r0, pc | r0 = 0x2dd7a;
0x00016e92 bl 0x40ed8 | zbx_strdup2 ();
0x00016e96 str r0, [r4] | *(r4) = r0;
| do {
| label_35:
0x00016e98 mov.w r3, -1 | r3 = -1;
0x00016e9c str r3, [sp, 0x38] | *(arg_38h) = r3;
0x00016e9e b 0x17320 | void (*0x17320)() ();
| label_77:
0x00016ee8 ldr r3, [sp, 0xb0] | r3 = *(arg_b0h);
0x00016eea cmp r2, 0 |
| if (r2 == 0) {
0x00016eec beq.w 0x17212 | goto label_84;
| }
0x00016ef0 cmp r3, 0 |
| if (r3 == 0) {
0x00016ef2 beq.w 0x17262 | goto label_31;
| }
0x00016ef6 movs r3, 0 | r3 = 0;
0x00016ef8 str r3, [sp, 0xec] | *(arg_ech) = r3;
| label_9:
0x00016efa ldr r3, [sp, 0xb0] | r3 = *(arg_b0h);
0x00016efc rsb.w sl, sl, 8 | sl = 8 - sl;
0x00016f00 ldr.w r2, [fp] | r2 = *(fp);
0x00016f04 cmp r4, sl |
0x00016f06 ldr r3, [r3] | r3 = *(r3);
0x00016f08 str r2, [sp, 0x2c] | *(arg_8h) = r2;
0x00016f0a ldr r3, [r3] | r3 = *(r3);
0x00016f0c ldr r1, [r3] | r1 = *(r3);
0x00016f0e ldrh r7, [r3, 4] | r7 = *((r3 + 4));
| if (r4 <= sl) {
0x00016f10 ble 0x16fa0 | goto label_13;
| }
0x00016f12 ldr r3, [sp, 0x48] | r3 = *(arg_48h);
0x00016f14 ldr.w sb, [r3, 8] | sb = *((r3 + 8));
| label_81:
0x00016f18 ldr.w r4, [sb, sl, lsl 2] | offset_2 = sl << 2;
| r4 = *((sb + offset_2));
| if (r4 == 0) {
0x00016f1c cbz r4, 0x16f7c | goto label_85;
| }
0x00016f1e ldrb r3, [r4] | r3 = *(r4);
| if (r3 == 0) {
0x00016f20 cbz r3, 0x16f7c | goto label_85;
| }
0x00016f22 ldr.w r3, [fp, 0x48] | r3 = *(arg_bp_48h);
| if (r3 != 0) {
0x00016f26 cbnz r3, 0x16f7c | goto label_85;
| }
0x00016f28 mov r0, r4 | r0 = r4;
0x00016f2a str r1, [sp, 0x38] | *(arg_38h) = r1;
0x00016f2c bl 0x45e80 | is_ascii_string ();
0x00016f30 ldr r1, [sp, 0x38] | r1 = *(arg_38h);
0x00016f32 cmp r0, 0 |
| if (r0 != 0) {
0x00016f34 bne.w 0x19502 | goto label_86;
| }
0x00016f38 mov r0, r4 | r0 = r4;
0x00016f3a ldr r3, [sp, 0x7c] | r3 = *(arg_7ch);
0x00016f3c mov r2, r7 | r2 = r7;
0x00016f3e bl 0x1a324 | r0 = zbx_create_persistent_server_directory ();
0x00016f42 mov r4, r0 | r4 = r0;
0x00016f44 cmp r0, 0 |
0x00016f46 beq 0x16e98 |
| } while (r0 == 0);
0x00016f48 ldr r1, [sp, 0x2c] | r1 = *(arg_8h);
0x00016f4a bl 0x1a504 | zbx_make_persistent_file_name ();
0x00016f4e str.w r0, [fp, 0x48] | __asm ("str.w r0, [arg_bp_48h]");
0x00016f52 mov r0, r4 | r0 = r4;
0x00016f54 blx 0xde30 | fcn_0000de30 ();
0x00016f58 ldr.w r3, [pc, 0xaac] |
0x00016f5c ldr r3, [r5, r3] | r3 = *((r5 + r3));
0x00016f5e ldr r3, [r3] | r3 = *(0x17a08);
0x00016f60 cmp r3, 3 |
| if (r3 > 3) {
0x00016f62 ble 0x16f7c |
0x00016f64 ldr.w r2, [pc, 0xaa4] | r2 = *(0x00017a0c);
0x00016f68 movs r0, 4 | r0 = 4;
0x00016f6a ldr.w r1, [pc, 0xaa4] | r1 = *(0x00017a10);
0x00016f6e ldr.w r3, [fp, 0x48] | r3 = *(arg_bp_48h);
0x00016f72 add r2, pc | r2 += pc;
0x00016f74 adds r2, 0x28 | r2 += 0x28;
0x00016f76 add r1, pc | r1 += pc;
0x00016f78 bl 0x30d1c | zbx_zabbix_log ();
| }
| label_85:
0x00016f7c ldr r3, [sp, 0xec] | r3 = *(arg_ech);
0x00016f7e cmp r3, 1 |
0x00016f80 itt ne |
| if (r3 == 1) {
0x00016f82 ldrbne r3, [fp, 0x1d] | r3 = *(arg_1dh_2);
| }
| if (r3 != 1) {
0x00016f86 str r3, [sp, 0xd0] | *(arg_d0h) = r3;
| }
| if (r3 == 1) {
0x00016f88 bne 0x16fa0 |
| label_80:
0x00016f8a vcmp.f32 s20, 0 | __asm ("vcmp.f32 s20, 0");
0x00016f8e vmrs apsr_nzcv, fpscr | __asm ("vmrs apsr_nzcv, fpscr");
| if (r3 != 1) {
0x00016f92 bne.w 0x18d62 | goto label_87;
| }
0x00016f96 ldrb.w r3, [fp, 0x1d] | r3 = *(arg_1dh_2);
0x00016f9a str r3, [sp, 0xd0] | *(arg_d0h) = r3;
0x00016f9c movs r3, 1 | r3 = 1;
0x00016f9e str r3, [sp, 0xec] | *(arg_ech) = r3;
| }
| label_13:
0x00016fa0 ldr.w r3, [fp, 0x10] | r3 = *(arg_10h);
0x00016fa4 ldr r2, [sp, 0x74] | r2 = *(arg_74h);
0x00016fa6 mul r3, r3, r8 | r3 *= r8;
0x00016faa str r3, [sp, 0x40] | *(arg_40h) = r3;
0x00016fac cmp r2, 0 |
| if (r2 != 0) {
0x00016fae bne.w 0x17248 | goto label_88;
| }
0x00016fb2 add.w r3, r3, r3, lsl 2 | r3 += (r3 << 2);
0x00016fb6 lsls r3, r3, 1 | r3 <<= 1;
0x00016fb8 str r3, [sp, 0x2c] | *(arg_8h) = r3;
| label_12:
0x00016fba ldr.w r3, [fp, 0x48] | r3 = *(arg_bp_48h);
0x00016fbe str r3, [sp, 0x6c] | *(arg_6ch) = r3;
0x00016fc0 ldr.w r3, [fp, 0x2c] | r3 = *(arg_2ch);
0x00016fc4 str r3, [sp, 0x4c] | *(arg_4ch) = r3;
0x00016fc6 add.w r3, fp, 0x30 | r3 = fp + 0x30;
0x00016fca str r3, [sp, 0x114] | *(arg_114h) = r3;
0x00016fcc ldr r3, [sp, 0xd0] | r3 = *(arg_d0h);
0x00016fce lsls r4, r3, 0x1e | r4 = r3 << 0x1e;
| if (r4 < r3) {
0x00016fd0 bpl 0x16fde |
0x00016fd2 ldr r3, [sp, 0x6c] | r3 = *(arg_6ch);
| if (r3 == 0) {
0x00016fd4 cbz r3, 0x16fde | goto label_89;
| }
0x00016fd6 ldr r3, [sp, 0x4c] | r3 = *(arg_4ch);
0x00016fd8 cmp r3, 0 |
| if (r3 == 0) {
0x00016fda beq.w 0x1738c | goto label_90;
| }
| }
| label_89:
0x00016fde ldr.w r3, [pc, 0xa28] | r3 = *(0x17a0a);
0x00016fe2 ldr.w r4, [fp, 0x18] | r4 = *(arg_18h);
0x00016fe6 ldr r3, [r5, r3] | r3 = *((r5 + r3));
0x00016fe8 str r3, [sp, 0x70] | *(arg_70h) = r3;
| label_16:
0x00016fea ldr.w r3, [pc, 0xa28] | r3 = *(0x17a16);
0x00016fee add r0, sp, 0x138 | r0 += arg_138h;
0x00016ff0 ldr r1, [r5, r3] | r1 = *((r5 + r3));
0x00016ff2 ldr r3, [sp, 0x70] | r3 = *(arg_70h);
0x00016ff4 str r0, [sp, 0x50] | *(arg_50h) = r0;
0x00016ff6 add r0, sp, 0x13c | r0 += arg_13ch;
0x00016ff8 str r0, [sp, 0x58] | *(arg_58h) = r0;
0x00016ffa add r0, sp, 0x140 | r0 += arg_140h;
0x00016ffc ldr r2, [r3] | r2 = *(0x17a16);
0x00016ffe movs r3, 0 | r3 = 0;
0x00017000 str r3, [sp, 0x138] | *(arg_138h) = r3;
0x00017002 str r3, [sp, 0x13c] | *(arg_13ch) = r3;
0x00017004 str r3, [sp, 0x140] | *(arg_140h) = r3;
0x00017006 cmp r2, 3 |
0x00017008 ldr r3, [r1] | r3 = *(r1);
0x0001700a str r1, [sp, 0x11c] | *(arg_11ch) = r1;
0x0001700c str r0, [sp, 0xb4] | *(arg_b4h) = r0;
0x0001700e str r3, [sp, 0x108] | *(arg_108h) = r3;
0x00017010 ldr.w r3, [fp, 4] | r3 = *(arg_158h);
0x00017014 str r3, [sp, 0xd8] | *(arg_d8h) = r3;
0x00017016 add.w r3, fp, 8 | r3 += arg_8h_2;
0x0001701a str r3, [sp, 0x118] | *(arg_118h) = r3;
0x0001701c add.w r3, fp, 0x18 | r3 += arg_18h;
0x00017020 str r3, [sp, 0x104] | *(arg_104h) = r3;
| if (r2 > 3) {
0x00017022 bgt.w 0x1735a | goto label_91;
| }
0x00017024 strh r2, [r3, 0xc] | *((r3 + 0xc)) = r2;
| label_14:
0x00017026 movs r0, 0 | r0 = 0;
0x00017028 blx 0xe104 | r0 = fcn_0000e104 ();
0x0001702c cmp r0, r4 |
0x0001702e str r0, [sp, 0x38] | *(arg_38h) = r0;
| if (r0 >= r4) {
0x00017030 bge.w 0x17228 | goto label_92;
| }
0x00017034 ldr r3, [sp, 0x70] | r3 = *(arg_70h);
0x00017036 ldr r1, [sp, 0x38] | r1 = *(arg_38h);
0x00017038 ldr.w r2, [fp, 0x18] | r2 = *(arg_18h);
0x0001703c ldr r3, [r3] | r3 = *(r3);
0x0001703e str.w r1, [fp, 0x18] | __asm ("str.w r1, [arg_18h]");
0x00017042 cmp r3, 2 |
| if (r3 > 2) {
0x00017044 bgt.w 0x1721a | goto label_93;
| }
| label_10:
0x00017048 ldr r3, [sp, 0xd0] | r3 = *(arg_d0h);
0x0001704a ands r3, r3, 4 | r3 &= 4;
0x0001704e str r3, [sp, 0x3c] | *(arg_3ch) = r3;
| if (r3 != r3) {
0x00017050 bne.w 0x1726c | goto label_94;
| }
0x00017054 ldr r3, [sp, 0xd0] | r3 = *(arg_d0h);
0x00017056 lsls r1, r3, 0x1c | r1 = r3 << 0x1c;
| if (r1 >= r3) {
0x00017058 bpl.w 0x19398 | goto label_95;
| }
0x0001705c ldr r3, [sp, 0x70] | r3 = *(arg_70h);
0x0001705e ldr r3, [r3] | r3 = *(r3);
0x00017060 cmp r3, 3 |
| if (r3 > 3) {
0x00017062 ble 0x1707a |
0x00017064 ldr.w r2, [pc, 0x9b0] |
0x00017068 mov r3, r6 | r3 = r6;
0x0001706a ldr.w r1, [pc, 0x9b0] |
0x0001706e movs r0, 4 | r0 = 4;
0x00017070 add r2, pc | r2 = 0x2ea8c;
0x00017072 adds r2, 0x6c | r2 += 0x6c;
0x00017074 add r1, pc | r1 = 0x2ea96;
0x00017076 bl 0x30d1c | zbx_zabbix_log ();
| }
0x0001707a ldrb r3, [r6] | r3 = *(r6);
0x0001707c cmp r3, 0 |
| if (r3 == 0) {
0x0001707e beq.w 0x19382 | goto label_96;
| }
0x00017082 movs r1, 0x2f | r1 = 0x2f;
0x00017084 mov r0, r6 | r0 = r6;
0x00017086 blx 0xdda8 | statvfs64 ();
0x0001708a ldr.w r1, [pc, 0x994] |
0x0001708e mov r4, r0 | r4 = r0;
0x00017090 add r1, pc | r1 = 0x2eab6;
0x00017092 cmp r0, 0 |
| if (r0 == 0) {
0x00017094 beq.w 0x185fe | goto label_97;
| }
0x00017098 ldr r3, [sp, 0x70] | r3 = *(arg_70h);
0x0001709a ldr r3, [r3] | r3 = *(r3);
0x0001709c cmp r3, 3 |
| if (r3 > 3) {
0x0001709e bgt.w 0x185aa | goto label_98;
| }
0x000170a2 mov r0, r6 | r0 = r6;
0x000170a4 blx 0xdf68 | fcn_0000df68 ();
0x000170a8 cmp r6, r4 |
| if (r6 > r4) {
0x000170aa bhi.w 0x192f4 | goto label_99;
| }
0x000170ae subs r3, r0, 1 | r3 = r0 - 1;
0x000170b0 add r3, r6 | r3 += r6;
0x000170b2 cmp r4, r3 |
| if (r4 >= r3) {
0x000170b4 bhs.w 0x192f4 | goto label_99;
| }
| label_17:
0x000170b8 subs r4, r4, r6 | r4 -= r6;
0x000170ba movs r2, 0 | r2 = 0;
0x000170bc subs r5, r0, r4 | r5 = r0 - r4;
0x000170be ldr.w r0, [pc, 0x964] | r0 = *(0x00017a24);
0x000170c2 add.w r8, r4, 2 | r8 = r4 + 2;
0x000170c6 movs r1, 0x55 | r1 = 0x55;
0x000170c8 mov r3, r8 | r3 = r8;
0x000170ca add r0, pc | r0 += pc;
0x000170cc mov r7, r0 | r7 = r0;
0x000170ce bl 0x40dd8 | zbx_malloc2 ();
0x000170d2 mov r2, r8 | r2 = r8;
0x000170d4 mov r1, r6 | r1 = r6;
0x000170d6 mov r8, r0 | r8 = r0;
0x000170d8 bl 0x4465c | zbx_strlcpy ();
0x000170dc mov r3, r5 | r3 = r5;
0x000170de movs r2, 0 | r2 = 0;
0x000170e0 movs r1, 0x58 | r1 = 0x58;
0x000170e2 mov r0, r7 | r0 = r7;
0x000170e4 bl 0x40dd8 | zbx_malloc2 ();
0x000170e8 adds r1, r4, 1 | r1 = r4 + 1;
0x000170ea mov r2, r5 | r2 = r5;
0x000170ec add r1, r6 | r1 += r6;
0x000170ee mov r6, r0 | r6 = r0;
0x000170f0 bl 0x4465c | zbx_strlcpy ();
0x000170f4 ldr r3, [sp, 0x70] | r3 = *(arg_70h);
0x000170f6 ldr r3, [r3] | r3 = *(r3);
0x000170f8 cmp r3, 3 |
| if (r3 > 3) {
0x000170fa bgt.w 0x186ce | goto label_100;
| }
| label_18:
0x000170fe add r3, sp, 0x178 | r3 += arg_178h;
0x00017100 mov r0, r8 | r0 = r8;
0x00017102 mov r1, r3 | r1 = r3;
0x00017104 str r3, [sp, 0x30] | *(arg_30h) = r3;
0x00017106 blx 0xdec0 | r0 = fcn_0000dec0 ();
0x0001710a mov r5, r0 | r5 = r0;
0x0001710c adds r5, 1 | r5++;
| if (r5 == 1) {
0x0001710e beq.w 0x19490 | goto label_101;
| }
0x00017112 ldr r3, [sp, 0x30] | r3 = *(arg_30h);
0x00017114 ldr r3, [r3, 0x10] | r3 = *((r3 + 0x10));
0x00017116 and r3, r3, 0xf000 | r3 &= 0xf000;
0x0001711a cmp.w r3, 0x4000 |
| if (r3 != 0x4000) {
0x0001711e bne.w 0x19328 | goto label_102;
| }
0x00017122 ldr r3, [sp, 0x70] | r3 = *(arg_70h);
0x00017124 ldr r3, [r3] | r3 = *(r3);
0x00017126 cmp r3, 3 |
| if (r3 > 3) {
0x00017128 bgt.w 0x18980 | goto label_103;
| }
0x0001712c add r4, sp, 0x154 | r4 += arg_0h_2;
0x0001712e ldr r2, [sp, 0x30] | r2 = *(arg_30h);
0x00017130 mov r1, r4 | r1 = r4;
0x00017132 mov r0, r6 | r0 = r6;
0x00017134 bl 0x31a30 | r0 = zbx_regexp_compile ();
0x00017138 cmp r0, 0 |
| if (r0 != 0) {
0x0001713a bne.w 0x18d2c | goto label_104;
| }
| label_26:
0x0001713e mov r0, r8 | r0 = r8;
0x00017140 ldr.w sl, [r4] | sl = *(r4);
0x00017144 blx 0xdbdc | r0 = fcn_0000dbdc ();
0x00017148 mov sb, r0 | sb = r0;
0x0001714a cmp r0, 0 |
| if (r0 == 0) {
0x0001714c beq.w 0x195a2 | goto label_105;
| }
0x00017150 movs r3, 1 | r3 = 1;
0x00017152 ldr.w r5, [pc, 0x8d4] | r5 = *(0x00017a28);
0x00017156 str.w r3, [fp, 0x24] | __asm ("str.w r3, [arg_178h]");
0x0001715a ldr.w r3, [pc, 0x8d0] | r3 = *(0x00017a2c);
0x0001715e str.w sl, [sp, 0x84] | __asm ("str.w sl, [arg_84h]");
0x00017162 add r5, pc | r5 += pc;
0x00017164 ldr r7, [sp, 0x30] | r7 = *(arg_30h);
0x00017166 add r3, pc | r3 += pc;
0x00017168 ldr.w sl, [sp, 0x70] | sl = *(arg_70h);
0x0001716c str r3, [sp, 0x5c] | *(arg_5ch) = r3;
0x0001716e str r6, [sp, 0x78] | *(arg_78h) = r6;
0x00017170 str r4, [sp, 0x80] | *(arg_80h) = r4;
0x00017172 b 0x17188 |
| while (r0 == 0) {
0x00017174 ldr r2, [r7, 0x10] | r2 = *((r7 + 0x10));
0x00017176 and r2, r2, 0xf000 | r2 &= 0xf000;
0x0001717a cmp.w r2, 0x8000 |
| if (r2 == fcn.00000004) {
0x0001717e beq.w 0x18580 | goto label_106;
| }
| label_7:
0x00017182 mov r0, r6 | r0 = r6;
0x00017184 blx 0xde30 | fcn_0000de30 ();
0x00017188 mov r0, sb | r0 = sb;
0x0001718a blx 0xe28c | r0 = fcn_0000e28c ();
0x0001718e cmp r0, 0 |
| if (r0 == 0) {
0x00017190 beq.w 0x187b0 | goto label_107;
| }
0x00017194 add.w r4, r0, 0x13 | r4 = r0 + 0x13;
0x00017198 mov r1, r5 | r1 = r5;
0x0001719a mov r2, r8 | r2 = r8;
0x0001719c mov r3, r4 | r3 = r4;
0x0001719e movs r0, 0 | r0 = 0;
0x000171a0 bl 0x44820 | zbx_dsprintf ()
0x000171a4 mov r1, r7 | r1 = r7;
0x000171a6 mov r6, r0 | r6 = r0;
0x000171a8 blx 0xdec0 | r0 = fcn_0000dec0 ();
0x000171ac cmp r0, 0 |
0x000171ae beq 0x17174 |
| }
0x000171b0 ldr.w r3, [sl] | r3 = *(sl);
0x000171b4 cmp r3, 3 |
| if (r3 <= 3) {
0x000171b6 ble 0x17182 | goto label_7;
| }
0x000171b8 blx 0xe3d4 | r0 = fcn_0000e3d4 ();
0x000171bc ldr r0, [r0] | r0 = *(r0);
0x000171be bl 0x30b74 | zbx_strerror ();
0x000171c2 ldr r1, [sp, 0x5c] | r1 = *(arg_5ch);
0x000171c4 mov r3, r0 | r3 = r0;
0x000171c6 mov r2, r6 | r2 = r6;
0x000171c8 movs r0, 4 | r0 = 4;
0x000171ca bl 0x30d1c | zbx_zabbix_log ();
0x000171ce b 0x17182 | goto label_7;
| label_76:
0x000171d0 add r3, sp, 0x178 | r3 += arg_178h;
0x000171d2 mov r1, r3 | r1 = r3;
0x000171d4 mov r4, r3 | r4 = r3;
0x000171d6 bl 0x41798 | r0 = is_double ();
0x000171da cmp r0, 0 |
| if (r0 != 0) {
0x000171dc bne.w 0x19210 | goto label_108;
| }
0x000171e0 vldr d10, [r4] | __asm ("vldr d10, [r4]");
0x000171e4 vcmpe.f64 d10, 0 | __asm ("vcmpe.f64 d10, 0");
0x000171e8 vmrs apsr_nzcv, fpscr | __asm ("vmrs apsr_nzcv, fpscr");
| if (r0 < 0) {
0x000171ec bmi.w 0x19210 | goto label_108;
| }
0x000171f0 ldr r3, [sp, 0x48] | r3 = *(arg_48h);
0x000171f2 vcvt.f32.f64 s20, d10 | __asm ("vcvt.f32.f64 s20, d10");
0x000171f6 ldrb.w r1, [fp, 0x1d] | r1 = *(arg_1dh_2);
0x000171fa ldr r4, [r3, 4] | r4 = *((r3 + 4));
0x000171fc b 0x16d58 | goto label_8;
| label_78:
0x000171fe ldr.w r1, [pc, 0x830] |
0x00017202 mov r0, r7 | r0 = r7;
0x00017204 add r1, pc | r1 = 0x2ec3a;
0x00017206 blx 0xe3b0 | r0 = fcn_0000e3b0 ();
0x0001720a cmp r0, 0 |
| if (r0 != 0) {
0x0001720c bne.w 0x18c8e | goto label_109;
| }
0x00017210 ldr r3, [sp, 0xb0] | r3 = *(arg_b0h);
| if (r3 != 0) {
| label_84:
0x00017212 cbz r3, 0x17266 |
0x00017214 movs r3, 2 | r3 = 2;
0x00017216 str r3, [sp, 0xec] | *(arg_ech) = r3;
0x00017218 b 0x16efa | goto label_9;
| label_93:
0x0001721a subs r2, r2, r1 | r2 -= r1;
0x0001721c ldr.w r1, [pc, 0x814] | r1 = *(0x00017a34);
0x00017220 movs r0, 3 | r0 = 3;
0x00017222 add r1, pc | r1 += pc;
0x00017224 bl 0x30d1c | zbx_zabbix_log ();
| label_92:
0x00017228 ldr.w r3, [fp, 0x18] | r3 = *(arg_18h);
0x0001722c str r3, [sp, 0x38] | *(arg_38h) = r3;
0x0001722e b 0x17048 | goto label_10;
| label_65:
0x00017230 ldr r3, [sp, 0x64] | r3 = *(arg_bp_40h);
0x00017232 ldr r1, [sp, 0x68] | r1 = *(arg_68h);
0x00017234 adds r4, r3, 1 | r4 = r3 + 1;
0x00017236 mov r0, r4 | r0 = r4;
0x00017238 bl 0x31f68 | r0 = zbx_global_regexp_exists ();
0x0001723c cmp r0, 0 |
| if (r0 != 0) {
0x0001723e bne.w 0x194f0 | goto label_110;
| }
0x00017242 ldr r3, [sp, 0x48] | r3 = *(arg_48h);
0x00017244 ldr r4, [r3, 4] | r4 = *((r3 + 4));
0x00017246 b 0x16c74 | goto label_11;
| label_88:
0x00017248 ldr.w r3, [fp, 0x18] | r3 = *(arg_18h);
0x0001724c vldr d9, [fp, 8] | __asm ("vldr d9, [fp, 8]");
0x00017250 str r3, [sp, 0x124] | *(arg_124h) = r3;
0x00017252 ldr.w r3, [fp, 0x20] | r3 = *(arg_20h);
0x00017256 str r3, [sp, 0x128] | *(arg_128h) = r3;
0x00017258 ldr r3, [sp, 0x40] | r3 = *(arg_40h);
0x0001725a str r3, [sp, 0x2c] | *(arg_8h) = r3;
0x0001725c str r3, [sp, 0x12c] | *(arg_12ch) = r3;
0x0001725e b 0x16fba | goto label_12;
| label_30:
0x00017260 movs r3, 3 | r3 = 3;
| label_31:
0x00017262 str r3, [sp, 0xec] | *(arg_ech) = r3;
0x00017264 b 0x16fa0 | goto label_13;
| }
0x00017266 movs r3, 2 | r3 = 2;
0x00017268 str r3, [sp, 0xec] | *(arg_ech) = r3;
0x0001726a b 0x16fa0 | goto label_13;
| label_94:
0x0001726c add r4, sp, 0x178 | r4 += arg_178h;
0x0001726e mov r0, r6 | r0 = r6;
0x00017270 mov r1, r4 | r1 = r4;
0x00017272 blx 0xdec0 | r0 = fcn_0000dec0 ();
0x00017276 cmp r0, 0 |
| if (r0 == 0) {
0x00017278 bne.w 0x174a0 |
0x0001727c ldr r3, [r4, 0x10] | r3 = *((r4 + 0x10));
0x0001727e and r3, r3, 0xf000 | r3 &= 0xf000;
0x00017282 cmp.w r3, 0x8000 |
| if (r3 == fcn.00000004) {
0x00017286 beq.w 0x18a72 | goto label_111;
| }
0x0001728a ldr r4, [sp, 0x7c] | r4 = *(arg_7ch);
0x0001728c mov r2, r6 | r2 = r6;
0x0001728e ldr.w r1, [pc, 0x7a8] |
0x00017292 ldr r0, [r4] | r0 = *(r4);
0x00017294 add r1, pc | r1 = 0x2ecd2;
0x00017296 bl 0x44820 | zbx_dsprintf ()
0x0001729a str r0, [r4] | *(r4) = r0;
| label_91:
0x0001735a ldr.w r2, [pc, 0x6ec] |
0x0001735e movs r0, 4 | r0 = 4;
0x00017360 str r4, [sp, 0x10] | var_10h = r4;
0x00017362 str r6, [sp] | *(sp) = r6;
0x00017364 ldr.w r1, [pc, 0x6e4] | r1 = *(0x00017a4c);
0x00017368 add r2, pc | r2 = 0x2edb6;
0x0001736a ldrd r4, r5, [fp, 8] | __asm ("ldrd r4, r5, [arg_8h_2]");
0x0001736e adds r2, 0x5c | r2 += 0x5c;
0x00017370 ldr r3, [sp, 0xd0] | r3 = *(arg_d0h);
0x00017372 add r1, pc | r1 += pc;
0x00017374 strd r4, r5, [sp, 8] | __asm ("strd r4, r5, [sp, 8]");
0x00017378 bl 0x30d1c | zbx_zabbix_log ();
0x0001737c ldr.w r4, [fp, 0x18] | r4 = *(arg_18h);
0x00017380 b 0x17026 | goto label_14;
| label_83:
0x00017382 add.w r8, r8, r8, lsl 2 | r8 += (r8 << 2);
0x00017386 lsl.w r8, r8, 1 | r8 <<= 1;
0x0001738a b 0x16e42 | goto label_15;
| label_90:
0x0001738c ldr r3, [sp, 0x4c] | r3 = *(arg_4ch);
0x0001738e add r4, sp, 0x144 | r4 += arg_144h;
0x00017390 add r7, sp, 0x264 | r7 += arg_264h;
0x00017392 ldr r0, [sp, 0x6c] | r0 = *(arg_6ch);
0x00017394 mov.w r2, 0x800 | r2 = 0x800;
0x00017398 mov r1, r7 | r1 = r7;
0x0001739a str r3, [r4] | *(r4) = r3;
0x0001739c mov r3, r4 | r3 = r4;
0x0001739e bl 0x1a530 | r0 = zbx_read_persistent_file ();
0x000173a2 cmp r0, 0 |
| if (r0 != 0) {
0x000173a4 bne.w 0x18e18 | goto label_112;
| }
0x000173a8 ldr.w r3, [pc, 0x65c] |
0x000173ac add r2, sp, 0x178 | r2 += arg_178h;
0x000173ae vmov.i32 d16, 0 | __asm ("vmov.i32 d16, 0");
0x000173b2 add.w r8, sp, 0x148 | r8 += arg_148h;
0x000173b6 str r2, [sp, 0x30] | *(arg_30h) = r2;
0x000173b8 str.w r0, [r8] | __asm ("str.w r0, [r8]");
0x000173bc vstr d16, [sp, 0x178] | __asm ("vstr d16, [sp, 0x178]");
0x000173c0 ldr r3, [r5, r3] | r3 = *((r5 + r3));
0x000173c2 str r3, [sp, 0x70] | *(arg_70h) = r3;
0x000173c4 ldr r3, [r3] | r3 = *(0x17a08);
0x000173c6 cmp r3, 3 |
| if (r3 > 3) {
0x000173c8 bgt.w 0x19234 | goto label_113;
| }
| label_45:
0x000173cc mov r0, r7 | r0 = r7;
0x000173ce ldr r7, [sp, 0x30] | r7 = *(arg_30h);
0x000173d0 ldr r1, [sp, 0x114] | r1 = *(arg_114h);
0x000173d2 add.w r2, fp, 0x2c | r2 += arg_2ch;
0x000173d6 strd r8, r4, [sp] | __asm ("strd r8, r4, [sp]");
0x000173da mov r3, r7 | r3 = r7;
0x000173dc bl 0x1aeb8 | r0 = zbx_restore_file_details ();
0x000173e0 cmp r0, 0 |
| if (r0 != 0) {
0x000173e2 bne.w 0x1915c | goto label_114;
| }
0x000173e4 strh r3, [r7, 0x34] | *((r7 + 0x34)) = r3;
0x000173e6 ldrd r0, r2, [fp, 8] | __asm ("ldrd r0, r2, [arg_8h_2]");
0x000173ea ldrd r1, r3, [r7] | __asm ("ldrd r1, r3, [r7]");
0x000173ee cmp r2, r3 |
0x000173f0 it eq |
| if (r2 == r3) {
0x000173f2 cmpeq r0, r1 | __asm ("cmpeq r0, r1");
| }
| if (r2 == r3) {
0x000173f4 bne 0x17402 |
0x000173f6 ldr.w r4, [fp, 0x18] | r4 = *(arg_18h);
0x000173fa ldr.w r3, [r8] | r3 = *(r8);
0x000173fe cmp r4, r3 |
| if (r4 >= r3) {
0x00017400 bge 0x1748c | goto label_115;
| }
| }
0x00017402 ldr.w r3, [pc, 0x64c] | r3 = *(0x00017a50);
0x00017406 add r7, sp, 0x14c | r7 += arg_14ch;
0x00017408 add r4, sp, 0x154 | r4 += arg_0h_2;
0x0001740a mov r0, r7 | r0 = r7;
0x0001740c mov r2, r4 | r2 = r4;
0x0001740e add r3, pc | r3 += pc;
0x00017410 adds r3, 0x48 | r3 += 0x48;
0x00017412 str r3, [sp] | *(sp) = r3;
0x00017414 ldr.w r3, [fp] | r3 = *(fp);
0x00017418 str r3, [sp, 4] | var_4h = r3;
0x0001741a add r3, sp, 0x150 | r3 += arg_150h;
0x0001741c mov r1, r3 | r1 = r3;
0x0001741e str r3, [sp, 0xb8] | *(arg_b8h) = r3;
0x00017420 movs r3, 0 | r3 = 0;
0x00017422 mov sb, r1 | sb = r1;
0x00017424 str r3, [r1] | *(r1) = r3;
0x00017426 str r3, [r7] | *(r7) = r3;
0x00017428 str r3, [r4] | *(r4) = r3;
0x0001742a ldr.w r3, [pc, 0x628] | r3 = *(0x00017a54);
0x0001742e add r3, pc | r3 += pc;
0x00017430 bl 0x43fb4 | zbx_snprintf_alloc ();
0x00017434 ldr r1, [sp, 0x30] | r1 = *(arg_30h);
0x00017436 ldrd r2, r3, [fp, 8] | __asm ("ldrd r2, r3, [arg_8h_2]");
0x0001743a ldr r0, [r1] | r0 = *(r1);
0x0001743c ldr r1, [r1, 4] | r1 = *((r1 + 4));
0x0001743e cmp r3, r1 |
0x00017440 it eq |
| if (r3 == r1) {
0x00017442 cmpeq r2, r0 | __asm ("cmpeq r2, r0");
| }
| if (r3 != r1) {
0x00017444 beq 0x17468 |
0x00017446 strd r2, r3, [sp] | __asm ("strd r2, r3, [sp]");
0x0001744a mov r2, r4 | r2 = r4;
0x0001744c ldr.w r3, [pc, 0x608] |
0x00017450 strd r0, r1, [sp, 8] | __asm ("strd r0, r1, [sp, 8]");
0x00017454 mov r1, sb | r1 = sb;
0x00017456 mov r0, r7 | r0 = r7;
0x00017458 add r3, pc | r3 = 0x2eeb4;
0x0001745a bl 0x43fb4 | zbx_snprintf_alloc ();
0x0001745e ldr r1, [sp, 0x30] | r1 = *(arg_30h);
0x00017460 ldrd r2, r3, [r1] | __asm ("ldrd r2, r3, [r1]");
0x00017464 strd r2, r3, [fp, 8] | __asm ("strd r2, r3, [fp, 8]");
| }
0x00017468 ldr.w r3, [fp, 0x18] | r3 = *(arg_18h);
0x0001746c ldr.w r2, [r8] | r2 = *(r8);
0x00017470 cmp r3, r2 |
| if (r3 < r2) {
0x00017472 blt.w 0x19426 | goto label_116;
| }
| label_52:
0x00017476 ldr r3, [sp, 0x70] | r3 = *(arg_70h);
0x00017478 ldr r3, [r3] | r3 = *(r3);
0x0001747a cmp r3, 2 |
| if (r3 > 2) {
0x0001747c bgt.w 0x19416 | goto label_117;
| }
| label_51:
0x00017480 ldr r0, [r7] | r0 = *(r7);
| if (r0 != 0) {
0x00017482 cbz r0, 0x17488 |
| label_38:
0x00017484 blx 0xde30 | fcn_0000de30 ();
| }
| label_39:
0x00017488 ldr.w r4, [fp, 0x18] | r4 = *(arg_18h);
| label_115:
0x0001748c ldrb.w r3, [fp, 0x1d] | r3 = *(arg_1dh_2);
0x00017490 str r3, [sp, 0xd0] | *(arg_d0h) = r3;
0x00017492 ldr.w r3, [fp, 0x2c] | r3 = *(arg_2ch);
0x00017496 str r3, [sp, 0x4c] | *(arg_4ch) = r3;
0x00017498 ldr.w r3, [fp, 0x48] | r3 = *(arg_bp_48h);
0x0001749c str r3, [sp, 0x6c] | *(arg_6ch) = r3;
0x0001749e b 0x16fea | goto label_16;
| }
0x000174a0 ldr r5, [sp, 0x7c] | r5 = *(arg_7ch);
0x000174a2 blx 0xe3d4 | r0 = fcn_0000e3d4 ();
0x000174a6 ldr r0, [r0] | r0 = *(r0);
0x000174a8 ldr r4, [r5] | r4 = *(r5);
0x000174aa bl 0x30b74 | zbx_strerror ();
0x000174ac invalid |
0x000174b0 asrs r4, r5, 0x16 | r4 = r5 >> 0x16;
0x000174b2 mov r3, r0 | r3 = r0;
0x000174b4 mov r2, r6 | r2 = r6;
0x000174b6 mov r0, r4 | r0 = r4;
0x000174b8 add r1, pc | r1 += pc;
0x000174ba bl 0x44820 | zbx_dsprintf ()
0x000174be str r0, [r5] | *(r5) = r0;
0x000174c0 ldrb.w r3, [fp, 0x1c] | r3 = *(arg_1ch);
0x000174c4 cmp r3, 1 |
| if (r3 == 1) {
0x000174c6 beq.w 0x18b50 | goto label_118;
| }
0x000174ca ldr r3, [sp, 0xd0] | r3 = *(arg_d0h);
0x000174cc lsls r0, r3, 0x1c | r0 = r3 << 0x1c;
| if (r0 >= r3) {
0x000174ce bpl.w 0x1729c | void (*0x1729c)() ();
| }
0x000174d0 add r6, sp, 0x394 | r6 = sp + 0x394;
| label_20:
0x00017558 adds r3, r5, 1 | r3 = r5 + 1;
0x0001755a ldr.w fp, [sp, 0x38] | fp = *(arg_38h);
0x0001755e bics r3, r3, 4 | __asm ("bics r3, r3, 4");
| if (r3 == r5) {
0x00017562 beq.w 0x18b34 | goto label_119;
| }
| if (r5 == 0) {
0x00017566 cbz r5, 0x17570 | void (*0x17570)() ();
| }
0x00017568 ldr r3, [sp, 0x3c] | r3 = *(arg_3ch);
0x0001756a cmp r3, 0 |
| if (r3 != 0) {
0x0001756c bne.w 0x1729c | void (*0x1729c)() ();
| }
| label_74:
0x00018200 ldr.w r3, [pc, 0x628] |
0x00018204 mov.w sb, 6 | sb = 6;
0x00018208 add r3, pc | r3 = 0x30a38;
0x0001820a str r3, [sp, 0x100] | *(arg_100h) = r3;
0x0001820c b.w 0x16d3c | goto label_4;
| label_106:
0x00018580 ldr r2, [r7, 0x50] | r2 = *((r7 + 0x50));
0x00018582 ldr r3, [sp, 0x38] | r3 = *(arg_38h);
0x00018584 cmp r2, r3 |
| if (r2 < r3) {
0x00018586 blt.w 0x17182 | goto label_7;
| }
0x0001858a ldr r1, [sp, 0x84] | r1 = *(arg_84h);
0x0001858c mov r0, r4 | r0 = r4;
0x0001858e bl 0x31a70 | r0 = zbx_regexp_match_precompiled ();
0x00018592 cmp r0, 0 |
| if (r0 != 0) {
0x00018594 bne.w 0x17182 | goto label_7;
| }
0x00018598 ldr r2, [sp, 0x50] | r2 = *(arg_50h);
0x0001859a mov r3, r6 | r3 = r6;
0x0001859c ldr r1, [sp, 0x58] | r1 = *(arg_58h);
0x0001859e ldr r0, [sp, 0xb4] | r0 = *(arg_b4h);
0x000185a0 str r7, [sp] | *(sp) = r7;
0x000185a2 bl 0x153fc | fcn_000153fc (r0, r1, r2, r3, r4);
0x000185a6 b.w 0x17182 | goto label_7;
| label_98:
0x000185aa ldr r2, [pc, 0x288] |
0x000185ac mov r3, r6 | r3 = r6;
0x000185ae ldr r1, [pc, 0x288] |
0x000185b0 str r0, [sp] | *(sp) = r0;
0x000185b2 movs r0, 4 | r0 = 4;
0x000185b4 add r2, pc | r2 = 0x30dee;
0x000185b6 adds r2, 0x7c | r2 += 0x7c;
0x000185b8 add r1, pc | r1 = 0x30df6;
0x000185ba bl 0x30d1c | zbx_zabbix_log ();
0x000185be mov r0, r6 | r0 = r6;
0x000185c0 blx 0xdf68 | fcn_0000df68 ();
0x000185c4 cmp r6, r4 |
| if (r6 > r4) {
0x000185c6 bhi 0x185d2 | goto label_120;
| }
0x000185c8 subs r3, r0, 1 | r3 = r0 - 1;
0x000185ca add r3, r6 | r3 += r6;
0x000185cc cmp r4, r3 |
| if (r4 <= r3) {
0x000185ce blo.w 0x170b8 | goto label_17;
| }
| label_120:
0x000185d2 ldr r3, [sp, 0x70] | r3 = *(arg_70h);
0x000185d4 ldr r3, [r3] | r3 = *(r3);
0x000185d6 cmp r3, 3 |
| if (r3 <= 3) {
0x000185d8 ble.w 0x192f4 | goto label_99;
| }
0x000185dc ldr r3, [pc, 0x25c] |
0x000185de movs r0, 4 | r0 = 4;
0x000185e0 ldr r1, [pc, 0x25c] |
0x000185e2 add r3, pc |
0x000185e4 add.w r4, r3, 0x7c | r4 = r3 + 0x7c;
0x000185e8 add r1, pc | r1 = 0x30e2c;
0x000185ea mov r2, r4 | r2 = r4;
0x000185ec bl 0x30d1c | zbx_zabbix_log ();
0x000185f0 ldr r3, [sp, 0x70] | r3 = *(arg_70h);
0x000185f2 ldr r3, [r3] | r3 = *(0x30e22);
0x000185f4 cmp r3, 3 |
| if (r3 > 3) {
0x000185f6 bgt.w 0x194cc | goto label_121;
| }
0x000185fa ldr r1, [pc, 0x248] |
0x000185fc add r1, pc | r1 = 0x30e46;
| label_97:
0x000185fe ldr r4, [sp, 0x7c] | r4 = *(arg_7ch);
0x00018600 movs r2, 0x2f | r2 = 0x2f;
0x00018602 ldr r0, [r4] | r0 = *(r4);
0x00018604 bl 0x44820 | zbx_dsprintf ()
| label_49:
0x00018608 str r0, [r4] | *(r4) = r0;
| label_47:
0x0001860a ldr r3, [sp, 0x70] | r3 = *(arg_70h);
0x0001860c ldr r3, [r3] | r3 = *(r3);
0x0001860e cmp r3, 3 |
| if (r3 > 3) {
0x00018610 bgt.w 0x19354 | goto label_122;
| }
| label_24:
0x00018614 ldr r3, [sp, 0x70] | r3 = *(arg_70h);
0x00018616 vcmp.f32 s20, 0 | __asm ("vcmp.f32 s20, 0");
0x0001861a vmrs apsr_nzcv, fpscr | __asm ("vmrs apsr_nzcv, fpscr");
0x0001861e ldr r3, [r3] | r3 = *(r3);
| if (r3 != 3) {
0x00018620 bne.w 0x19482 | void (*0x19482)() ();
| }
| label_100:
0x000186ce movs r0, 0 | r0 = 0;
0x000186d0 bl 0x45514 | r0 = zbx_result_string ();
0x000186d4 mov r3, r0 | r3 = r0;
0x000186d6 cmp.w r8, 0 |
| if (r8 == 0) {
0x000186da beq.w 0x18e0a | goto label_123;
| }
0x000186de mov r2, r8 | r2 = r8;
0x000186e0 cmp r6, 0 |
| if (r6 == 0) {
0x000186e2 beq.w 0x18de8 | goto label_124;
| }
0x000186e6 ldr r2, [pc, 0x170] |
0x000186e8 movs r0, 4 | r0 = 4;
0x000186ea ldr r1, [pc, 0x170] |
0x000186ec strd r8, r6, [sp] | __asm ("strd r8, r6, [sp]");
0x000186f0 add r2, pc | r2 = 0x30f4e;
0x000186f2 adds r2, 0x7c | r2 += 0x7c;
0x000186f4 add r1, pc | r1 = 0x30f56;
0x000186f6 bl 0x30d1c | zbx_zabbix_log ();
0x000186fa b.w 0x170fe | goto label_18;
| label_73:
0x000186fe ldrb.w r1, [fp, 0x1d] | r1 = *(arg_1dh_2);
0x00018702 b.w 0x16dee | goto label_19;
| label_107:
0x000187b0 mov r0, sb | r0 = sb;
0x000187b2 ldr r6, [sp, 0x78] | r6 = *(arg_78h);
0x000187b4 ldr r4, [sp, 0x80] | r4 = *(arg_80h);
0x000187b6 blx 0xe0d0 | fcn_0000e0d0 ();
0x000187ba adds r0, 1 | r0++;
| if (r0 == 1) {
0x000187bc beq.w 0x1954e | goto label_125;
| }
0x000187c0 ldr r3, [sp, 0x50] | r3 = *(arg_50h);
0x000187c2 ldr r3, [r3] | r3 = *(r3);
0x000187c4 cmp r3, 0 |
| if (r3 == 0) {
0x000187c6 beq.w 0x190c4 | goto label_126;
| }
| label_42:
0x000187ca ldr r0, [r4] | r0 = *(r4);
0x000187cc bl 0x31a44 | zbx_regexp_free ();
0x000187d0 mov r0, r8 | r0 = r8;
0x000187d2 blx 0xde30 | fcn_0000de30 ();
| if (r6 != 0) {
0x000187d6 cbz r6, 0x187de |
0x000187d8 mov r0, r6 | r0 = r6;
0x000187da blx 0xde30 | fcn_0000de30 ();
| }
| label_28:
0x000187de ldr r3, [sp, 0x50] | r3 = *(arg_50h);
0x000187e0 ldr r2, [sp, 0xb4] | r2 = *(arg_b4h);
0x000187e2 ldr r3, [r3] | r3 = *(r3);
0x000187e4 ldr r4, [r2] | r4 = *(r2);
0x000187e6 cmp r3, 0 |
0x000187e8 str r3, [sp, 0x84] | *(arg_84h) = r3;
| if (r3 <= 0) {
0x000187ea ble.w 0x174f0 | void (*0x174f0)() ();
| }
0x000187ee ldr r7, [sp, 0x7c] | r7 = *(arg_7ch);
0x000187f0 adds r4, 0x60 | r4 += 0x60;
0x000187f2 mov.w r8, 0 | r8 = 0;
0x000187f6 movw sb, 0x201 | sb = 0x201;
0x000187fa mov sl, r3 | sl = r3;
0x000187fc str.w fp, [sp, 0x38] | __asm ("str.w fp, [arg_38h]");
0x00018800 b 0x18896 | goto label_127;
| label_22:
0x00018864 str r7, [sp, 4] | var_4h = r7;
0x00018866 mov r0, r6 | r0 = r6;
0x00018868 ldr r3, [r4, -0x60] | r3 = *((r4 - 0x60));
0x0001886c str r3, [sp] | *(sp) = r3;
0x0001886e mov r3, r4 | r3 = r4;
0x00018870 bl 0x15710 | r0 = fcn_00015710 (r0, r1, r2, r3, r4, r5, r6);
0x00018874 mov r5, r0 | r5 = r0;
| label_21:
0x00018876 mov r0, r6 | r0 = r6;
0x00018878 ldr r6, [r4, -0x60] | r6 = *((r4 - 0x60));
0x0001887c blx 0xe0ac | r0 = fcn_0000e0ac ();
0x00018880 cmp r0, 0 |
| if (r0 != 0) {
0x00018882 bne 0x1891c | goto label_128;
| }
0x00018884 adds r3, r5, 1 | r3 = r5 + 1;
| if (r3 == r5) {
0x00018886 beq.w 0x19520 | goto label_129;
| }
| label_23:
0x0001888a add.w r8, r8, 1 | r8++;
0x0001888e adds r4, 0x70 | r4 += 0x70;
0x00018890 cmp sl, r8 |
| if (sl == r8) {
0x00018892 beq.w 0x17558 | goto label_20;
| }
| label_127:
0x00018896 ldr r5, [r4, -0x60] | r5 = *((r4 - 0x60));
0x0001889a movs r1, 0 | r1 = 0;
0x0001889c mov r0, r5 | r0 = r5;
0x0001889e blx 0xe030 | r0 = fcntl64 ();
0x000188a2 adds r2, r0, 1 | r2 = r0 + 1;
0x000188a4 mov r6, r0 | r6 = r0;
| if (r2 == r0) {
0x000188a6 beq 0x1895a | goto label_130;
| }
0x000188a8 ldrd r2, r3, [r4, -0x30] | __asm ("ldrd r2, r3, [r4, -0x30]");
0x000188ac sub.w fp, r4, 0x1c |
0x000188b0 movs r1, 0 | r1 = 0;
0x000188b2 cmp r2, sb |
0x000188b4 sbcs r3, r3, 0 | __asm ("sbcs r3, r3, 0");
0x000188b8 it hs |
| if (r2 < sb) {
0x000188ba movhs r2, 0x200 | r2 = 0x200;
| }
0x000188be str r2, [r4, -0x20] | *((r4 - 0x20)) = r2;
0x000188c2 str r7, [sp, 4] | var_4h = r7;
0x000188c4 ldr r3, [r4, -0x60] | r3 = *((r4 - 0x60));
0x000188c8 str r3, [sp] | *(sp) = r3;
0x000188ca mov r3, fp | r3 = fp;
0x000188cc bl 0x15710 | r0 = fcn_00015710 (r0, r1, r2, r3, r4, r5, r6);
0x000188d0 mov r5, r0 | r5 = r0;
0x000188d2 cmp r0, 0 |
| if (r0 != 0) {
0x000188d4 bne 0x18876 | goto label_21;
| }
0x000188d6 ldr r2, [r4, -0x20] | r2 = *((r4 - 0x20));
0x000188da ldr r1, [r4, -0x30] | r1 = *((r4 - 0x30));
0x000188de ldr r0, [r4, -0x2c] | r0 = *((r4 - 0x2c));
0x000188e2 subs r1, r1, r2 | r1 -= r2;
0x000188e4 sbc r0, r0, 0 | __asm ("sbc r0, r0, 0");
0x000188e8 str r1, [r4, -0x8] | *((r4 - 0x8)) = r1;
0x000188ec str r0, [r4, -0x4] | *((r4 - 0x4)) = r0;
0x000188f0 orrs r0, r1 | r0 |= r1;
| if (r0 != r1) {
0x000188f2 bne 0x18864 | goto label_22;
| }
0x000188f4 ldr.w r5, [fp] | r5 = *(fp);
0x000188f8 mov r0, r6 | r0 = r6;
0x000188fa ldr.w r1, [fp, 4] | r1 = *(arg_158h);
0x000188fe ldr.w r2, [fp, 8] | r2 = *(arg_8h_2);
0x00018902 ldr.w r3, [fp, 0xc] | r3 = *(arg_ch);
0x00018906 str r5, [r4] | *(r4) = r5;
0x00018908 str r1, [r4, 4] | *((r4 + 4)) = r1;
0x0001890a str r2, [r4, 8] | *((r4 + 8)) = r2;
0x0001890c str r3, [r4, 0xc] | *((r4 + 0xc)) = r3;
0x0001890e ldr r6, [r4, -0x60] | r6 = *((r4 - 0x60));
0x00018912 blx 0xe0ac | r0 = fcn_0000e0ac ();
0x00018916 mov r5, r0 | r5 = r0;
0x00018918 cmp r0, 0 |
| if (r0 == 0) {
0x0001891a beq 0x1888a | goto label_23;
| }
| label_128:
0x0001891c ldr r3, [sp, 0x7c] | r3 = *(arg_7ch);
0x0001891e ldr.w fp, [sp, 0x38] | fp = *(arg_38h);
0x00018922 ldr r4, [r3] | r4 = *(r3);
0x00018924 cmp r4, 0 |
| if (r4 == 0) {
0x00018926 beq.w 0x191ee | goto label_131;
| }
| label_25:
0x0001892a ldr r0, [sp, 0xb4] | r0 = *(arg_b4h);
0x0001892c ldr r3, [r0] | r3 = *(r0);
| if (r3 != 0) {
0x0001892e cbz r3, 0x18938 |
| label_33:
0x00018930 ldr r2, [sp, 0x50] | r2 = *(arg_50h);
0x00018932 ldr r1, [sp, 0x58] | r1 = *(arg_58h);
0x00018934 bl 0x16b54 | destroy_logfile_list ();
| }
| label_27:
0x00018938 mov.w r5, -1 | r5 = -1;
| label_29:
0x0001893c ldr r3, [sp, 0x3c] | r3 = *(arg_3ch);
0x0001893e cmp r3, 0 |
| if (r3 != 0) {
0x00018940 bne.w 0x1729c | void (*0x1729c)() ();
| }
| label_34:
0x00018944 ldr r3, [sp, 0xd0] | r3 = *(arg_d0h);
0x00018946 sub.w r5, r5, -1 | r5 -= -1;
0x0001894a clz r5, r5 | r5 &= r5;
0x0001894e lsrs r5, r5, 5 | r5 >>= 5;
0x00018950 ands.w r5, r5, r3, lsr 3 | r5 &= (r3 >> 3);
| if (r5 == r5) {
0x00018954 beq.w 0x174ea | void (*0x174ea)() ();
| }
0x00018958 b 0x18614 | goto label_24;
| label_130:
0x0001895a ldr r6, [sp, 0x7c] | r6 = *(arg_7ch);
0x0001895c blx 0xe3d4 | r0 = fcn_0000e3d4 ();
0x00018960 ldr r0, [r0] | r0 = *(r0);
0x00018962 ldr r4, [r6] | r4 = *(r6);
0x00018964 ldr.w fp, [sp, 0x38] | fp = *(arg_38h);
0x00018968 bl 0x30b74 | zbx_strerror ();
0x0001896c ldr.w r1, [pc, 0xc58] | r1 = *(0x000195c8);
0x00018970 mov r3, r0 | r3 = r0;
0x00018972 mov r2, r5 | r2 = r5;
0x00018974 mov r0, r4 | r0 = r4;
0x00018976 add r1, pc | r1 += pc;
0x00018978 bl 0x44820 | zbx_dsprintf ()
0x0001897c str r0, [r6] | *(r6) = r0;
0x0001897e b 0x1892a | goto label_25;
| label_103:
0x00018980 movs r0, 0 | r0 = 0;
0x00018982 mov r5, r8 | r5 = r8;
0x00018984 bl 0x45514 | r0 = zbx_result_string ();
0x00018988 mov r3, r0 | r3 = r0;
0x0001898a cmp r6, 0 |
| if (r6 != 0) {
0x0001898c bne.w 0x18fbe | goto label_132;
| }
| label_46:
0x00018990 ldr.w r1, [pc, 0xc38] | r1 = *(0x000195cc);
0x00018994 movs r0, 4 | r0 = 4;
0x00018996 ldr.w r2, [pc, 0xc38] | r2 = *(0x000195d0);
0x0001899a str.w r8, [sp] | __asm ("str.w r8, [sp]");
0x0001899e add r1, pc | r1 += pc;
0x000189a0 str r1, [sp, 4] | var_4h = r1;
0x000189a2 add r2, pc | r2 += pc;
0x000189a4 ldr.w r1, [pc, 0xc2c] | r1 = *(0x000195d4);
0x000189a8 adds r2, 0x6c | r2 += 0x6c;
0x000189aa add r1, pc | r1 += pc;
0x000189ac bl 0x30d1c | zbx_zabbix_log ();
0x000189b0 cmp r6, 0 |
| if (r6 != 0) {
0x000189b2 bne.w 0x18614 | goto label_24;
| }
0x000189b6 mov r8, r5 | r8 = r5;
0x000189b8 add r3, sp, 0x178 | r3 += arg_178h;
0x000189ba str r3, [sp, 0x30] | *(arg_30h) = r3;
| label_40:
0x000189bc add r4, sp, 0x154 | r4 += arg_0h_2;
0x000189be ldr r2, [sp, 0x30] | r2 = *(arg_30h);
0x000189c0 mov r1, r4 | r1 = r4;
0x000189c2 mov r0, r6 | r0 = r6;
0x000189c4 bl 0x31a30 | r0 = zbx_regexp_compile ();
0x000189c8 cmp r0, 0 |
| if (r0 == 0) {
0x000189ca beq.w 0x1713e | goto label_26;
| }
0x000189ce ldr r4, [sp, 0x30] | r4 = *(arg_30h);
0x000189d0 ldr r5, [sp, 0x7c] | r5 = *(arg_7ch);
0x000189d2 ldr.w r1, [pc, 0xc04] | r1 = *(0x000195d8);
0x000189d6 ldr r2, [r4] | r2 = *(r4);
0x000189d8 ldr r0, [r5] | r0 = *(r5);
0x000189da add r1, pc | r1 += pc;
0x000189dc bl 0x44820 | zbx_dsprintf ()
0x000189e0 str r0, [r5] | *(r5) = r0;
0x000189e2 ldr r0, [r4] | r0 = *(r4);
0x000189e4 bl 0x3211c | zbx_regexp_err_msg_free ();
0x000189e8 cmp.w r8, 0 |
| if (r8 != 0) {
0x000189ec bne.w 0x18d46 | goto label_133;
| }
0x000189f0 cmp r6, 0 |
| if (r6 == 0) {
0x000189f2 beq.w 0x18d52 | goto label_134;
| }
| label_32:
0x000189f6 mov r0, r6 | r0 = r6;
0x000189f8 blx 0xde30 | fcn_0000de30 ();
0x000189fc ldr r3, [sp, 0xb4] | r3 = *(arg_b4h);
0x000189fe ldr r3, [r3] | r3 = *(r3);
0x00018a00 cmp r3, 0 |
| if (r3 == 0) {
0x00018a02 beq 0x18938 | goto label_27;
| }
| label_56:
0x00018a04 ldr r2, [sp, 0x50] | r2 = *(arg_50h);
0x00018a06 ldr r1, [sp, 0x58] | r1 = *(arg_58h);
0x00018a08 ldr r0, [sp, 0xb4] | r0 = *(arg_b4h);
0x00018a0a bl 0x16b54 | destroy_logfile_list ();
0x00018a0e b 0x18938 | goto label_27;
| label_111:
0x00018a72 str r0, [r4, 0x50] | *((r4 + 0x50)) = r0;
0x00018a74 mov r3, r6 | r3 = r6;
0x00018a76 ldr r2, [sp, 0x50] | r2 = *(arg_50h);
0x00018a78 ldr r1, [sp, 0x58] | r1 = *(arg_58h);
0x00018a7a ldr r0, [sp, 0xb4] | r0 = *(arg_b4h);
0x00018a7c str r4, [sp] | *(sp) = r4;
0x00018a7e bl 0x153fc | fcn_000153fc (r0, r1, r2, r3, r4);
0x00018a82 movs r3, 1 | r3 = 1;
0x00018a84 str.w r3, [fp, 0x24] | __asm ("str.w r3, [arg_178h]");
0x00018a88 b 0x187de | goto label_28;
| label_62:
0x00018aa6 ldr.w r3, [pc, 0xb34] |
0x00018aaa movw r1, 0xf19 | r1 = 0xf19;
0x00018aae ldr r2, [sp, 0x7c] | r2 = *(arg_7ch);
0x00018ab0 ldr.w r0, [pc, 0xb2c] |
0x00018ab4 add r3, pc | r3 = 0x32096;
0x00018ab6 ldr r2, [r2] | r2 = *(r2);
0x00018ab8 add r0, pc | r0 = zbx_wildcard_match;
0x00018aba bl 0x40ed8 | zbx_strdup2 ();
| label_36:
0x00018abe mov.w r3, -1 | r3 = -1;
0x00018ac2 str r3, [sp, 0x38] | *(arg_38h) = r3;
0x00018ac4 ldr r3, [sp, 0x7c] | r3 = *(arg_7ch);
0x00018ac6 str r0, [r3] | *(r3) = r0;
0x00018ac8 b.w 0x1732a | void (*0x1732a)() ();
| label_41:
0x00018b18 cmp r3, 2 |
| if (r3 > 2) {
0x00018b1a bgt.w 0x193d0 | goto label_135;
| }
| label_50:
0x00018b1e movs r5, 3 | r5 = 3;
| label_57:
0x00018b20 ldr r0, [r4] | r0 = *(r4);
0x00018b22 bl 0x31a44 | zbx_regexp_free ();
0x00018b26 mov r0, r8 | r0 = r8;
0x00018b28 blx 0xde30 | fcn_0000de30 ();
| if (r6 != 0) {
0x00018b2c cbz r6, 0x18b34 |
0x00018b2e mov r0, r6 | r0 = r6;
0x00018b30 blx 0xde30 | fcn_0000de30 ();
| }
| label_119:
0x00018b34 ldr r0, [sp, 0xb4] | r0 = *(arg_b4h);
0x00018b36 ldr r3, [r0] | r3 = *(r0);
| if (r3 != 0) {
0x00018b38 cbz r3, 0x18b42 |
0x00018b3a ldr r2, [sp, 0x50] | r2 = *(arg_50h);
0x00018b3c ldr r1, [sp, 0x58] | r1 = *(arg_58h);
0x00018b3e bl 0x16b54 | destroy_logfile_list ();
| }
0x00018b42 cmp r5, 3 |
| if (r5 != 3) {
0x00018b44 bne.w 0x1893c | goto label_29;
| }
0x00018b48 ldrb.w r3, [fp, 0x1c] | r3 = *(arg_1ch);
0x00018b4c cmp r3, 1 |
| if (r3 != 1) {
0x00018b4e bne 0x18b60 | void (*0x18b60)() ();
| }
| label_118:
0x00018b50 ldr r3, [sp, 0x70] | r3 = *(arg_70h);
0x00018b52 movs r2, 0 | r2 = 0;
0x00018b54 strb.w r2, [fp, 0x1c] | *(arg_1ch) = r2;
0x00018b58 ldr r3, [r3] | r3 = *(r3);
0x00018b5a cmp r3, 3 |
| if (r3 > 3) {
0x00018b5c bgt.w 0x1927c | void (*0x1927c)() ();
| }
| label_109:
0x00018c8e ldr.w r1, [pc, 0x95c] |
0x00018c92 mov r0, r7 | r0 = r7;
0x00018c94 add r1, pc | r1 = 0x32286;
0x00018c96 blx 0xe3b0 | r0 = fcn_0000e3b0 ();
0x00018c9a cmp r0, 0 |
| if (r0 != 0) {
0x00018c9c bne.w 0x191d0 | goto label_136;
| }
| label_44:
0x00018ca0 ldr r3, [sp, 0xb0] | r3 = *(arg_b0h);
0x00018ca2 cmp r3, 0 |
| if (r3 == 0) {
0x00018ca4 beq.w 0x17260 | goto label_30;
| }
0x00018ca8 movs r3, 3 | r3 = 3;
0x00018caa str r3, [sp, 0xec] | *(arg_ech) = r3;
0x00018cac b.w 0x16efa | goto label_9;
| label_79:
0x00018cb0 ldr.w r1, [pc, 0x93c] | r1 = *(0x000195f0);
0x00018cb4 mov r0, r7 | r0 = r7;
0x00018cb6 add r1, pc | r1 += pc;
0x00018cb8 blx 0xe3b0 | r0 = fcn_0000e3b0 ();
0x00018cbc cmp r0, 0 |
| if (r0 != 0) {
0x00018cbe bne.w 0x19048 | goto label_137;
| }
0x00018cc2 ldr r3, [sp, 0xb0] | r3 = *(arg_b0h);
0x00018cc4 cmp r3, 0 |
| if (r3 == 0) {
0x00018cc6 beq.w 0x17262 | goto label_31;
| }
0x00018cca str r0, [sp, 0xec] | *(arg_ech) = r0;
0x00018ccc b.w 0x16efa | goto label_9;
| label_104:
0x00018d2c ldr r4, [sp, 0x30] | r4 = *(arg_30h);
0x00018d2e ldr r5, [sp, 0x7c] | r5 = *(arg_7ch);
0x00018d30 ldr.w r1, [pc, 0x8c0] |
0x00018d34 ldr r2, [r4] | r2 = *(r4);
0x00018d36 ldr r0, [r5] | r0 = *(r5);
0x00018d38 add r1, pc | r1 = 0x32330;
0x00018d3a bl 0x44820 | zbx_dsprintf ()
0x00018d3e str r0, [r5] | *(r5) = r0;
0x00018d40 ldr r0, [r4] | r0 = *(r4);
0x00018d42 bl 0x3211c | zbx_regexp_err_msg_free ();
| label_133:
0x00018d46 mov r0, r8 | r0 = r8;
0x00018d48 blx 0xde30 | fcn_0000de30 ();
0x00018d4c cmp r6, 0 |
| if (r6 != 0) {
0x00018d4e bne.w 0x189f6 | goto label_32;
| }
| label_134:
0x00018d52 ldr r0, [sp, 0xb4] | r0 = *(arg_b4h);
0x00018d54 ldr r3, [r0] | r3 = *(r0);
0x00018d56 cmp r3, 0 |
| if (r3 != 0) {
0x00018d58 bne.w 0x18930 | goto label_33;
| }
0x00018d5c mov.w r5, -1 | r5 = -1;
0x00018d60 b 0x18944 | goto label_34;
| label_87:
0x00018d62 ldr r4, [sp, 0x7c] | r4 = *(arg_7ch);
0x00018d64 movw r1, 0xf65 | r1 = 0xf65;
0x00018d68 ldr.w r3, [pc, 0x88c] | r3 = *(0x000195f8);
0x00018d6c ldr.w r0, [pc, 0x88c] |
0x00018d70 ldr r2, [r4] | r2 = *(r4);
0x00018d72 add r3, pc | r3 += pc;
0x00018d74 add r0, pc | r0 = 0x32374;
0x00018d76 bl 0x40ed8 | zbx_strdup2 ();
0x00018d7a str r0, [r4] | *(r4) = r0;
0x00018d7c b.w 0x16e98 | goto label_35;
| label_59:
0x00018db4 ldr r2, [sp, 0x7c] | r2 = *(arg_7ch);
0x00018db6 movw r1, 0xf0e | r1 = 0xf0e;
0x00018dba ldr.w r3, [pc, 0x844] |
0x00018dbe ldr.w r0, [pc, 0x844] | r0 = *(0x00019604);
0x00018dc2 ldr r2, [r2] | r2 = *(r2);
0x00018dc4 add r3, pc | r3 = 0x323ca;
0x00018dc6 add r0, pc | r0 += pc;
0x00018dc8 bl 0x40ed8 | zbx_strdup2 ();
0x00018dcc b 0x18abe | goto label_36;
| do {
0x00018de2 ldr.w r2, [pc, 0x828] | r2 = *(0x0001960c);
0x00018de6 add r2, pc | r2 += pc;
| label_124:
0x00018de8 ldr.w r1, [pc, 0x824] |
0x00018dec add r1, pc | r1 = 0x32400;
| label_37:
0x00018dee strd r2, r1, [sp] | __asm ("strd r2, r1, [sp]");
0x00018df2 movs r0, 4 | r0 = 4;
0x00018df4 ldr.w r2, [pc, 0x81c] |
0x00018df8 ldr.w r1, [pc, 0x81c] |
0x00018dfc add r2, pc | r2 = 0x32414;
0x00018dfe adds r2, 0x7c | r2 += 0x7c;
0x00018e00 add r1, pc | r1 = 0x3241c;
0x00018e02 bl 0x30d1c | zbx_zabbix_log ();
0x00018e06 b.w 0x170fe | goto label_18;
| label_123:
0x00018e0a cmp r6, 0 |
0x00018e0c beq 0x18de2 |
| } while (r6 == 0);
0x00018e0e ldr.w r2, [pc, 0x80c] |
0x00018e12 mov r1, r6 | r1 = r6;
0x00018e14 add r2, pc | r2 = 0x32436;
0x00018e16 b 0x18dee | goto label_37;
| label_112:
0x00018e18 ldr.w r3, [pc, 0x804] |
0x00018e1c ldr r3, [r5, r3] | r3 = *((r5 + r3));
0x00018e1e str r3, [sp, 0x70] | *(arg_70h) = r3;
0x00018e20 ldr r3, [r3] | r3 = *(0x19620);
0x00018e22 cmp r3, 3 |
| if (r3 > 3) {
0x00018e24 bgt.w 0x19258 | goto label_138;
| }
| label_43:
0x00018e28 ldr r0, [r4] | r0 = *(r4);
0x00018e2a cmp r0, 0 |
| if (r0 != 0) {
0x00018e2c bne.w 0x17484 | goto label_38;
| }
0x00018e30 b.w 0x17488 | goto label_39;
| label_132:
0x00018fbe ldr.w r2, [pc, 0x668] |
0x00018fc2 movs r0, 4 | r0 = 4;
0x00018fc4 ldr.w r1, [pc, 0x664] |
0x00018fc8 strd r8, r6, [sp] | __asm ("strd r8, r6, [sp]");
0x00018fcc add r2, pc | r2 = 0x325fa;
0x00018fce adds r2, 0x6c | r2 += 0x6c;
0x00018fd0 add r1, pc | r1 = 0x32600;
0x00018fd2 bl 0x30d1c | zbx_zabbix_log ();
0x00018fd6 b 0x189bc | goto label_40;
| label_137:
0x00019048 ldr.w r1, [pc, 0x5e8] | r1 = *(0x00019634);
0x0001904c mov r0, r7 | r0 = r7;
0x0001904e add r1, pc | r1 += pc;
0x00019050 blx 0xe3b0 | r0 = fcn_0000e3b0 ();
0x00019054 cmp r0, 0 |
| if (r0 != 0) {
0x00019056 bne.w 0x191be | goto label_139;
| }
0x0001905a ldr r3, [sp, 0xb0] | r3 = *(arg_b0h);
0x0001905c cmp r3, 0 |
| if (r3 == 0) {
0x0001905e beq.w 0x17262 | goto label_31;
| }
0x00019062 str r0, [sp, 0xec] | *(arg_ech) = r0;
0x00019064 b.w 0x16efa | goto label_9;
| label_70:
0x00019076 ldr r4, [sp, 0x7c] | r4 = *(arg_7ch);
0x00019078 movw r1, 0xe5e | r1 = 0xe5e;
0x0001907c ldr.w r3, [pc, 0x5b8] | r3 = *(0x00019638);
0x00019080 ldr.w r0, [pc, 0x5b8] |
0x00019084 ldr r2, [r4] | r2 = *(r4);
0x00019086 add r3, pc | r3 += pc;
0x00019088 add r0, pc | r0 = zbx_vector_uint64_remove;
0x0001908a bl 0x40ed8 | zbx_strdup2 ();
0x0001908e str r0, [r4] | *(r4) = r0;
0x00019090 b.w 0x16e98 | goto label_35;
| label_126:
0x000190c4 movs r1, 1 | r1 = 1;
0x000190c6 mov r0, r8 | r0 = r8;
0x000190c8 blx 0xde6c | fcn_0000de6c ();
0x000190cc ldr r3, [sp, 0x70] | r3 = *(arg_70h);
0x000190ce ldr r3, [r3] | r3 = *(r3);
0x000190d0 cmp r0, 0 |
| if (r0 == 0) {
0x000190d2 beq.w 0x18b18 | goto label_41;
| }
0x000190d6 cmp r3, 2 |
| if (r3 <= 2) {
0x000190d8 ble.w 0x187ca | goto label_42;
| }
0x000190dc blx 0xe3d4 | r0 = fcn_0000e3d4 ();
0x000190e0 ldr r0, [r0] | r0 = *(r0);
0x000190e2 bl 0x30b74 | zbx_strerror ();
0x000190e6 ldr.w r1, [pc, 0x55c] |
0x000190ea mov r3, r0 | r3 = r0;
0x000190ec mov r2, r8 | r2 = r8;
0x000190ee movs r0, 3 | r0 = 3;
0x000190f0 add r1, pc | r1 = 0x3273a;
0x000190f2 bl 0x30d1c | zbx_zabbix_log ();
0x000190f6 b.w 0x187ca | goto label_42;
| label_60:
0x00019116 ldr r2, [sp, 0x7c] | r2 = *(arg_7ch);
0x00019118 movw r1, 0xe32 | r1 = 0xe32;
0x0001911c ldr.w r3, [pc, 0x528] | r3 = *(0x00019648);
0x00019120 ldr.w r0, [pc, 0x528] |
0x00019124 ldr r2, [r2] | r2 = *(r2);
0x00019126 add r3, pc | r3 += pc;
0x00019128 add r0, pc | r0 = zbx_vector_uint64_nearestindex;
0x0001912a bl 0x40ed8 | zbx_strdup2 ();
0x0001912e b 0x18abe | goto label_36;
| label_61:
0x00019130 ldr r2, [sp, 0x7c] | r2 = *(arg_7ch);
0x00019132 movw r1, 0xe3d | r1 = 0xe3d;
0x00019136 ldr.w r3, [pc, 0x518] |
0x0001913a ldr.w r0, [pc, 0x518] | r0 = *(0x00019654);
0x0001913e ldr r2, [r2] | r2 = *(r2);
0x00019140 add r3, pc | r3 = 0x32796;
0x00019142 add r0, pc | r0 += pc;
0x00019144 bl 0x40ed8 | zbx_strdup2 ();
0x00019148 b 0x18abe | goto label_36;
| label_114:
0x0001915c ldr r3, [sp, 0x70] | r3 = *(arg_70h);
0x0001915e ldr r3, [r3] | r3 = *(r3);
0x00019160 cmp r3, 2 |
| if (r3 <= 2) {
0x00019162 ble.w 0x18e28 | goto label_43;
| }
0x00019166 ldr r3, [r4] | r3 = *(r4);
0x00019168 movs r0, 3 | r0 = 3;
0x0001916a ldr.w r2, [pc, 0x4ec] |
0x0001916e ldr.w r1, [pc, 0x4ec] |
0x00019172 str r3, [sp, 4] | var_4h = r3;
0x00019174 ldr.w r3, [fp, 0x48] | r3 = *(arg_bp_48h);
0x00019178 add r2, pc | r2 = 0x327d6;
0x0001917a adds r2, 0x48 | r2 += 0x48;
0x0001917c add r1, pc | r1 = 0x327de;
0x0001917e str r3, [sp] | *(sp) = r3;
0x00019180 ldr.w r3, [fp] | r3 = *(fp);
0x00019184 bl 0x30d1c | zbx_zabbix_log ();
0x00019188 b 0x18e28 | goto label_43;
| label_139:
0x000191be ldr.w r1, [pc, 0x4a8] |
0x000191c2 mov r0, r7 | r0 = r7;
0x000191c4 add r1, pc | r1 = 0x32832;
0x000191c6 blx 0xe3b0 | r0 = fcn_0000e3b0 ();
0x000191ca cmp r0, 0 |
| if (r0 == 0) {
0x000191cc beq.w 0x18ca0 | goto label_44;
| }
| label_136:
0x000191d0 ldr r4, [sp, 0x7c] | r4 = *(arg_7ch);
0x000191d2 movw r1, 0xeb1 | r1 = 0xeb1;
0x000191d6 ldr.w r3, [pc, 0x494] |
0x000191da ldr.w r0, [pc, 0x494] | r0 = *(0x00019670);
0x000191de ldr r2, [r4] | r2 = *(r4);
0x000191e0 add r3, pc | r3 = 0x32852;
0x000191e2 add r0, pc | r0 += pc;
0x000191e4 bl 0x40ed8 | zbx_strdup2 ();
0x000191e8 str r0, [r4] | *(r4) = r0;
0x000191ea b.w 0x16e98 | goto label_35;
| label_131:
0x000191ee blx 0xe3d4 | r0 = fcn_0000e3d4 ();
0x000191f2 ldr r0, [r0] | r0 = *(r0);
0x000191f4 bl 0x30b74 | zbx_strerror ();
0x000191f8 ldr.w r1, [pc, 0x478] | r1 = *(0x00019674);
0x000191fc mov r3, r0 | r3 = r0;
0x000191fe mov r2, r6 | r2 = r6;
0x00019200 mov r0, r4 | r0 = r4;
0x00019202 add r1, pc | r1 += pc;
0x00019204 bl 0x44820 | zbx_dsprintf ()
0x00019208 ldr r3, [sp, 0x7c] | r3 = *(arg_7ch);
0x0001920a str r0, [r3] | *(r3) = r0;
0x0001920c b.w 0x1892a | goto label_25;
| label_108:
0x00019210 ldr r3, [sp, 0x7c] | r3 = *(arg_7ch);
0x00019212 cmp.w sb, 5 |
0x00019216 ldr r0, [r3] | r0 = *(r3);
| if (sb == 5) {
0x00019218 beq.w 0x19444 | goto label_140;
| }
0x0001921c ldr.w r2, [pc, 0x458] |
0x00019220 add r2, pc | r2 = 0x3289c;
| label_53:
0x00019222 ldr.w r1, [pc, 0x458] | r1 = *(0x0001967c);
0x00019226 add r1, pc | r1 += pc;
0x00019228 bl 0x44820 | zbx_dsprintf ()
0x0001922c ldr r3, [sp, 0x7c] | r3 = *(arg_7ch);
0x0001922e str r0, [r3] | *(r3) = r0;
0x00019230 b.w 0x16e98 | goto label_35;
| label_113:
0x00019234 ldr.w r2, [pc, 0x448] |
0x00019238 movs r0, 4 | r0 = 4;
0x0001923a str r7, [sp, 4] | var_4h = r7;
0x0001923c ldr.w r1, [pc, 0x444] |
0x00019240 ldr.w r3, [fp, 0x48] | r3 = *(arg_bp_48h);
0x00019244 add r2, pc | r2 = 0x328c8;
0x00019246 adds r2, 0x48 | r2 += 0x48;
0x00019248 add r1, pc | r1 = 0x328d0;
0x0001924a str r3, [sp] | *(sp) = r3;
0x0001924c ldr.w r3, [fp] | r3 = *(fp);
0x00019250 bl 0x30d1c | zbx_zabbix_log ();
0x00019254 b.w 0x173cc | goto label_45;
| label_138:
0x00019258 ldr r3, [r4] | r3 = *(r4);
0x0001925a movs r0, 4 | r0 = 4;
0x0001925c ldr.w r2, [pc, 0x428] | r2 = *(0x00019688);
0x00019260 ldr.w r1, [pc, 0x428] | r1 = *(0x0001968c);
0x00019264 str r3, [sp, 4] | var_4h = r3;
0x00019266 ldr.w r3, [fp, 0x48] | r3 = *(arg_bp_48h);
0x0001926a add r2, pc | r2 += pc;
0x0001926c adds r2, 0x48 | r2 += 0x48;
0x0001926e add r1, pc | r1 += pc;
0x00019270 str r3, [sp] | *(sp) = r3;
0x00019272 ldr.w r3, [fp] | r3 = *(fp);
0x00019276 bl 0x30d1c | zbx_zabbix_log ();
0x0001927a b 0x18e28 | goto label_43;
| label_99:
0x000192f4 ldr r1, [pc, 0x3a4] |
0x000192f6 add r1, pc | r1 = 0x32996;
| label_55:
0x000192f8 ldr r4, [sp, 0x7c] | r4 = *(arg_7ch);
0x000192fa movs r2, 0x2f | r2 = 0x2f;
0x000192fc ldr r0, [r4] | r0 = *(r4);
0x000192fe bl 0x44820 | zbx_dsprintf ()
0x00019302 ldr r3, [sp, 0x70] | r3 = *(arg_70h);
0x00019304 str r0, [r4] | *(r4) = r0;
0x00019306 ldr r3, [r3] | r3 = *(r3);
0x00019308 cmp r3, 3 |
| if (r3 <= 3) {
0x0001930a ble.w 0x18614 | goto label_24;
| }
0x0001930e ldr.w r8, [pc, 0x390] | r8 = *(0x000196a0);
0x00019312 mov.w r0, -1 | r0 = -1;
0x00019316 bl 0x45514 | zbx_result_string ();
0x0001931a movs r5, 0 | r5 = 0;
0x0001931c mov r3, r0 | r3 = r0;
0x0001931e add r8, pc | r8 += pc;
0x00019320 mov.w r6, -1 | r6 = -1;
0x00019324 b.w 0x18990 | goto label_46;
| label_102:
0x00019328 ldr r4, [sp, 0x7c] | r4 = *(arg_7ch);
0x0001932a mov r2, r8 | r2 = r8;
0x0001932c ldr r1, [pc, 0x374] |
0x0001932e ldr r0, [r4] | r0 = *(r4);
0x00019330 add r1, pc | r1 = zbx_vector_str_destroy;
0x00019332 bl 0x44820 | zbx_dsprintf ()
0x00019336 str r0, [r4] | *(r4) = r0;
0x00019338 mov r0, r8 | r0 = r8;
0x0001933a blx 0xde30 | fcn_0000de30 ();
0x0001933e cmp r6, 0 |
| if (r6 == 0) {
0x00019340 beq.w 0x1860a | goto label_47;
| }
| label_54:
0x00019344 mov r0, r6 | r0 = r6;
0x00019346 blx 0xde30 | fcn_0000de30 ();
0x0001934a ldr r3, [sp, 0x70] | r3 = *(arg_70h);
0x0001934c ldr r3, [r3] | r3 = *(r3);
0x0001934e cmp r3, 3 |
| if (r3 <= 3) {
0x00019350 ble.w 0x18614 | goto label_24;
| }
| label_122:
0x00019354 mov.w r0, -1 | r0 = -1;
0x00019358 bl 0x45514 | zbx_result_string ();
0x0001935c ldr r2, [pc, 0x348] |
0x0001935e mov r3, r0 | r3 = r0;
0x00019360 ldr r1, [pc, 0x348] |
0x00019362 movs r0, 4 | r0 = 4;
0x00019364 add r2, pc | r2 = 0x32a10;
0x00019366 strd r2, r2, [sp] | __asm ("strd r2, r2, [sp]");
0x0001936a add r1, pc | r1 = 0x32a1a;
0x0001936c ldr r2, [pc, 0x340] |
0x0001936e add r2, pc | r2 = 0x32a22;
0x00019370 adds r2, 0x6c | r2 += 0x6c;
0x00019372 bl 0x30d1c | zbx_zabbix_log ();
0x00019376 b.w 0x18614 | goto label_24;
| label_75:
0x0001937a ldrb.w r1, [fp, 0x1d] | r1 = *(arg_1dh_2);
0x0001937e b.w 0x16df4 | goto label_48;
| label_96:
0x00019382 ldr r4, [sp, 0x7c] | r4 = *(arg_7ch);
0x00019384 movs r1, 0x86 | r1 = 0x86;
0x00019386 ldr r3, [pc, 0x32c] |
0x00019388 ldr r0, [pc, 0x32c] |
0x0001938a ldr r2, [r4] | r2 = *(r4);
0x0001938c add r3, pc | r3 = 0x32a46;
0x0001938e add r0, pc | r0 = 0x32a4a;
0x00019390 bl 0x40ed8 | zbx_strdup2 ();
0x00019394 b.w 0x18608 | goto label_49;
| label_95:
0x00019398 ldr r4, [pc, 0x320] |
0x0001939a movw r3, 0x777 | r3 = 0x777;
0x0001939e str r3, [sp] | *(sp) = r3;
0x000193a0 ldr r1, [pc, 0x31c] |
0x000193a2 ldr r0, [pc, 0x320] |
0x000193a4 add r4, pc | r4 = 0x32a64;
0x000193a6 ldr r3, [pc, 0x320] |
0x000193a8 adds r4, 0x8c | r4 += 0x8c;
0x000193aa mov r2, r4 | r2 = r4;
0x000193ac add r1, pc | r1 = zbx_vector_str_append_ptr;
0x000193ae add r0, pc | r0 = 0x32a78;
0x000193b0 add r3, pc | r3 = 0x32a7e;
0x000193b2 bl 0x43cd4 | zbx_error ();
0x000193b6 bl 0x356ac | zbx_backtrace ();
0x000193ba mov r2, r4 | r2 = r4;
0x000193bc ldr r1, [pc, 0x30c] |
0x000193be ldr r4, [sp, 0x7c] | r4 = *(arg_7ch);
0x000193c0 ldr r3, [sp, 0xd0] | r3 = *(arg_d0h);
0x000193c2 add r1, pc | r1 = 0x32a92;
0x000193c4 ldr r0, [r4] | r0 = *(0x32a64);
0x000193c6 bl 0x44820 | zbx_dsprintf ()
0x000193ca str r0, [r4] | *(r4) = r0;
0x000193cc b.w 0x174ea | void (*0x174ea)() ();
| label_135:
0x000193d0 ldr r1, [pc, 0x2fc] |
0x000193d2 mov r3, r8 | r3 = r8;
0x000193d4 mov r2, r6 | r2 = r6;
0x000193d6 movs r0, 3 | r0 = 3;
0x000193d8 add r1, pc | r1 = 0x32aac;
0x000193da bl 0x30d1c | zbx_zabbix_log ();
0x000193de b.w 0x18b1e | goto label_50;
| label_117:
0x00019416 ldr r1, [pc, 0x2c0] |
0x00019418 movs r0, 3 | r0 = 3;
0x0001941a ldr r2, [r7] | r2 = *(r7);
0x0001941c add r1, pc | r1 = 0x32afa;
0x0001941e bl 0x30d1c | zbx_zabbix_log ();
0x00019422 b.w 0x17480 | goto label_51;
| label_116:
0x00019426 strd r3, r2, [sp] | __asm ("strd r3, r2, [sp]");
0x0001942a mov r0, r7 | r0 = r7;
0x0001942c ldr r3, [pc, 0x2ac] |
0x0001942e mov r2, r4 | r2 = r4;
0x00019430 ldr r1, [sp, 0xb8] | r1 = *(arg_b8h);
0x00019432 add r3, pc | r3 = 0x32b12;
0x00019434 bl 0x43fb4 | zbx_snprintf_alloc ();
0x00019438 ldr.w r3, [r8] | r3 = *(r8);
0x0001943c str.w r3, [fp, 0x18] | __asm ("str.w r3, [arg_18h]");
0x00019440 b.w 0x17476 | goto label_52;
| label_140:
0x00019444 ldr r2, [pc, 0x298] |
0x00019446 add r2, pc | r2 = 0x32b2a;
0x00019448 b 0x19222 | goto label_53;
| label_101:
0x00019490 ldr r7, [sp, 0x7c] | r7 = *(arg_7ch);
0x00019492 blx 0xe3d4 | r0 = fcn_0000e3d4 ();
0x00019496 ldr r0, [r0] | r0 = *(r0);
0x00019498 ldr r4, [r7] | r4 = *(r7);
0x0001949a bl 0x30b74 | zbx_strerror ();
0x0001949e ldr r1, [pc, 0x244] |
0x000194a0 mov r2, r0 | r2 = r0;
0x000194a2 mov r0, r4 | r0 = r4;
0x000194a4 add r1, pc | r1 = 0x32b8e;
0x000194a6 bl 0x44820 | zbx_dsprintf ()
0x000194aa str r0, [r7] | *(r7) = r0;
0x000194ac mov r0, r8 | r0 = r8;
0x000194ae blx 0xde30 | fcn_0000de30 ();
0x000194b2 cmp r6, 0 |
| if (r6 != 0) {
0x000194b4 bne.w 0x19344 | goto label_54;
| }
0x000194b8 b.w 0x1860a | goto label_47;
| label_121:
0x000194cc mov.w r0, -1 | r0 = -1;
0x000194d0 bl 0x45514 | zbx_result_string ();
0x000194d4 ldr r1, [pc, 0x210] |
0x000194d6 mov r3, r0 | r3 = r0;
0x000194d8 mov r2, r4 | r2 = r4;
0x000194da movs r0, 4 | r0 = 4;
0x000194dc add r1, pc | r1 = 0x32bc8;
0x000194de strd r1, r1, [sp] | __asm ("strd r1, r1, [sp]");
0x000194e2 ldr r1, [pc, 0x208] |
0x000194e4 add r1, pc | r1 = 0x32bd6;
0x000194e6 bl 0x30d1c | zbx_zabbix_log ();
0x000194ea ldr r1, [pc, 0x204] |
0x000194ec add r1, pc | r1 = 0x32be2;
0x000194ee b 0x192f8 | goto label_55;
| label_110:
0x000194f0 ldr r3, [sp, 0x7c] | r3 = *(arg_7ch);
0x000194f2 mov r2, r4 | r2 = r4;
0x000194f4 ldr r1, [pc, 0x1fc] |
0x000194f6 ldr r0, [r3] | r0 = *(r3);
0x000194f8 add r1, pc | r1 = 0x32bf0;
0x000194fa bl 0x44820 | zbx_dsprintf ()
0x000194fe b.w 0x18abe | goto label_36;
| label_86:
0x00019502 ldr r3, [sp, 0x7c] | r3 = *(arg_7ch);
0x00019504 cmp.w sl, 8 |
0x00019508 ldr r0, [r3] | r0 = *(r3);
| if (sl == 8) {
0x0001950a beq 0x195c0 | goto label_141;
| }
0x0001950c ldr r2, [pc, 0x1e8] |
0x0001950e add r2, pc | r2 = 0x32c0a;
| label_58:
0x00019510 ldr r1, [pc, 0x1e8] |
0x00019512 add r1, pc | r1 = 0x32c12;
0x00019514 bl 0x44820 | zbx_dsprintf ()
0x00019518 ldr r3, [sp, 0x7c] | r3 = *(arg_7ch);
0x0001951a str r0, [r3] | *(r3) = r0;
0x0001951c b.w 0x16e98 | goto label_35;
| label_129:
0x00019520 ldr r3, [sp, 0xb4] | r3 = *(arg_b4h);
0x00019522 ldr.w fp, [sp, 0x38] | fp = *(arg_38h);
0x00019526 ldr r3, [r3] | r3 = *(r3);
0x00019528 cmp r3, 0 |
| if (r3 != 0) {
0x0001952a bne.w 0x18a04 | goto label_56;
| }
0x0001952e b.w 0x18938 | goto label_27;
| label_125:
0x0001954e ldr r3, [sp, 0x7c] | r3 = *(arg_7ch);
0x00019550 ldr r5, [r3] | r5 = *(r3);
0x00019552 blx 0xe3d4 | r0 = fcn_0000e3d4 ();
0x00019556 ldr r0, [r0] | r0 = *(r0);
0x00019558 bl 0x30b74 | zbx_strerror ();
0x0001955c ldr r1, [pc, 0x1a0] |
0x0001955e mov r3, r0 | r3 = r0;
0x00019560 mov r2, r8 | r2 = r8;
0x00019562 mov r0, r5 | r0 = r5;
0x00019564 add r1, pc | r1 = 0x32c68;
0x00019566 bl 0x44820 | zbx_dsprintf ()
| do {
0x0001956a ldr r3, [sp, 0x7c] | r3 = *(arg_7ch);
0x0001956c mov.w r5, -1 | r5 = -1;
0x00019570 str r0, [r3] | *(r3) = r0;
0x00019572 b.w 0x18b20 | goto label_57;
| label_105:
0x000195a2 ldr r3, [sp, 0x7c] | r3 = *(arg_7ch);
0x000195a4 ldr r5, [r3] | r5 = *(r3);
0x000195a6 blx 0xe3d4 | r0 = fcn_0000e3d4 ();
0x000195aa ldr r0, [r0] | r0 = *(r0);
0x000195ac bl 0x30b74 | zbx_strerror ();
0x000195b0 ldr r1, [pc, 0x150] |
0x000195b2 mov r3, r0 | r3 = r0;
0x000195b4 mov r2, r8 | r2 = r8;
0x000195b6 mov r0, r5 | r0 = r5;
0x000195b8 add r1, pc | r1 = 0x32cc0;
0x000195ba bl 0x44820 | zbx_dsprintf ()
0x000195be b 0x1956a |
| } while (1);
| label_141:
0x000195c0 ldr r2, [pc, 0x144] |
0x000195c2 add r2, pc | r2 = 0x32cce;
0x000195c4 b 0x19510 | goto label_58;
| }
; assembly | /* r2dec pseudo code output */
| /* /logs/firmware/patool_extraction/rootfs.img_unblob_extracted/rootfs.img_extract/0-80367616.squashfs_v4_le_extract/usr/sbin/zabbix_agentd @ 0x30ba4 */
| #include <stdint.h>
|
; (fcn) sym.zabbix_open_log () | void zabbix_open_log (uint32_t arg1, int16_t arg2, int16_t arg3, int16_t arg4) {
| int16_t var_0h;
| int16_t var_ch;
| r0 = arg1;
| r1 = arg2;
| r2 = arg3;
| r3 = arg4;
0x00030ba4 push.w {r4, r5, r6, r7, r8, lr} |
0x00030ba8 cmp r0, 1 |
0x00030baa ldr r7, [pc, 0x134] |
0x00030bac sub sp, 0x10 |
0x00030bae ldr r4, [pc, 0x134] |
0x00030bb0 ldr r5, [pc, 0x134] |
0x00030bb2 add r7, pc | r7 = 0x61898;
0x00030bb4 str.w r0, [r7, 0xc90] | __asm ("str.w r0, [r7, 0xc90]");
0x00030bb8 add r4, pc | r4 = 0x618a2;
0x00030bba add r5, pc | r5 = 0x618a6;
0x00030bbc str r1, [r4, 4] | *((r4 + 4)) = r1;
| if (r0 == 1) {
0x00030bbe beq 0x30c3c | goto label_3;
| }
0x00030bc0 cmp r0, 2 |
0x00030bc2 mov r6, r3 | r6 = r3;
| if (r0 == 2) {
0x00030bc4 beq 0x30bfa | goto label_4;
| }
0x00030bc6 cmp r0, 0 |
0x00030bc8 it ne |
| if (r0 != 0) {
0x00030bca cmpne r0, 3 | __asm ("cmpne r0, 3");
| }
| if (r0 != 0) {
0x00030bcc bne 0x30c7a | goto label_5;
| }
0x00030bce mov r2, r3 | r2 = r3;
0x00030bd0 mov r0, r4 | r0 = r4;
0x00030bd2 movs r1, 0 | r1 = 0;
0x00030bd4 bl 0x344e4 | r0 = zbx_mutex_create ();
0x00030bd8 cmp r0, 0 |
| if (r0 != 0) {
0x00030bda bne 0x30c94 | goto label_6;
| }
0x00030bdc ldr r3, [pc, 0x10c] | r3 = *(0x30cec);
0x00030bde ldr r3, [r5, r3] | r3 = *((r5 + r3));
0x00030be0 ldr r0, [r3] | r0 = *(0x30cec);
0x00030be2 blx 0xdf20 | fcn_0000df20 ();
0x00030be6 movs r1, 2 | r1 = 2;
0x00030be8 movs r0, 1 | r0 = 1;
0x00030bea blx 0xe1f8 | closelog ();
0x00030bee adds r0, 1 | r0++;
| if (r0 == 1) {
0x00030bf0 beq 0x30c4e | goto label_7;
| }
| do {
| label_0:
0x00030bf2 movs r0, 0 | r0 = 0;
| label_1:
0x00030bf4 add sp, 0x10 |
0x00030bf6 pop.w {r4, r5, r6, r7, r8, pc} |
| label_4:
0x00030bfa mov r0, r2 | r0 = r2;
0x00030bfc mov r8, r2 | r8 = r2;
0x00030bfe blx 0xdf68 | r0 = fcn_0000df68 ();
0x00030c02 cmp.w r0, 0x800 |
| if (r0 >= 0x800) {
0x00030c06 bhs 0x30caa | goto label_8;
| }
0x00030c08 mov r2, r6 | r2 = r6;
0x00030c0a mov r0, r4 | r0 = r4;
0x00030c0c movs r1, 0 | r1 = 0;
0x00030c0e bl 0x344e4 | r0 = zbx_mutex_create ();
0x00030c12 cmp r0, 0 |
| if (r0 != 0) {
0x00030c14 bne 0x30c8e | goto label_2;
| }
0x00030c16 ldr r1, [pc, 0xd8] |
0x00030c18 mov r0, r8 | r0 = r8;
0x00030c1a add r1, pc | r1 = 0x61910;
0x00030c1c blx 0xdf90 | r0 = fcn_0000df90 ();
0x00030c20 mov r4, r0 | r4 = r0;
0x00030c22 cmp r0, 0 |
| if (r0 == 0) {
0x00030c24 beq 0x30cc0 | goto label_9;
| }
0x00030c26 mov.w r2, 0x800 | r2 = 0x800;
0x00030c2a mov r1, r8 | r1 = r8;
0x00030c2c add.w r0, r7, 0x480 | r0 = r7 + 0x480;
0x00030c30 bl 0x4465c | zbx_strlcpy ();
0x00030c34 mov r0, r4 | r0 = r4;
0x00030c36 blx 0xdc8c | fcn_0000dc8c ();
0x00030c3a b 0x30bf2 |
| } while (1);
| label_3:
0x00030c3c ldr r3, [pc, 0xb4] | r3 = *(0x30cf4);
0x00030c3e mov r1, r0 | r1 = r0;
0x00030c40 movs r2, 0x18 | r2 = 0x18;
0x00030c42 ldr r3, [r5, r3] | r3 = *((r5 + r3));
0x00030c44 mov r0, r3 | r0 = r3;
0x00030c46 str r3, [sp, 0xc] | var_ch = r3;
0x00030c48 blx 0xde78 | fcn_0000de78 ();
0x00030c4c b 0x30bf2 | goto label_0;
| label_7:
0x00030c4e blx 0xe3d4 | r0 = fcn_0000e3d4 ();
0x00030c52 ldr r5, [r0] | r5 = *(r0);
0x00030c54 adds r7, 0x80 | r7 += 0x80;
0x00030c56 mov r0, r5 | r0 = r5;
0x00030c58 blx 0xdb48 | fcn_0000db48 ();
0x00030c5c ldr r2, [pc, 0x98] |
0x00030c5e mov r3, r5 | r3 = r5;
0x00030c60 str r0, [sp] | *(sp) = r0;
0x00030c62 mov.w r1, 0x400 | r1 = 0x400;
0x00030c66 mov r0, r7 | r0 = r7;
0x00030c68 add r2, pc | r2 = 0x61964;
0x00030c6a bl 0x43f38 | zbx_snprintf ();
0x00030c6e ldr r0, [pc, 0x8c] |
0x00030c70 mov r1, r7 | r1 = r7;
0x00030c72 add r0, pc | r0 = 0x61974;
0x00030c74 bl 0x43cd4 | zbx_error ();
0x00030c78 b 0x30bf2 | goto label_0;
| label_5:
0x00030c7a ldr r3, [pc, 0x84] |
0x00030c7c movw r1, 0x159 | r1 = 0x159;
0x00030c80 ldr r0, [pc, 0x80] |
0x00030c82 ldr r2, [r6] | r2 = *(r6);
0x00030c84 add r3, pc | r3 = 0x6198a;
0x00030c86 add r0, pc | r0 = 0x6198e;
0x00030c88 bl 0x40ed8 | zbx_strdup2 ();
0x00030c8c str r0, [r6] | *(r6) = r0;
| do {
| label_2:
0x00030c8e mov.w r0, -1 | r0 = -1;
0x00030c92 b 0x30bf4 | goto label_1;
| label_6:
0x00030c94 ldr r3, [pc, 0x70] |
0x00030c96 movw r1, 0x14f | r1 = 0x14f;
0x00030c9a ldr r0, [pc, 0x70] |
0x00030c9c ldr r2, [r6] | r2 = *(r6);
0x00030c9e add r3, pc | r3 = 0x619aa;
0x00030ca0 add r0, pc | r0 = 0x619b2;
0x00030ca2 bl 0x40ed8 | zbx_strdup2 ();
0x00030ca6 str r0, [r6] | *(r6) = r0;
0x00030ca8 b 0x30c8e |
| } while (1);
| label_8:
0x00030caa ldr r3, [pc, 0x64] |
0x00030cac movw r1, 0x13b | r1 = 0x13b;
0x00030cb0 ldr r0, [pc, 0x60] |
0x00030cb2 ldr r2, [r6] | r2 = *(r6);
0x00030cb4 add r3, pc | r3 = 0x619ca;
0x00030cb6 add r0, pc | r0 = 0x619ce;
0x00030cb8 bl 0x40ed8 | zbx_strdup2 ();
0x00030cbc str r0, [r6] | *(r6) = r0;
0x00030cbe b 0x30c8e | goto label_2;
| label_9:
0x00030cc0 blx 0xe3d4 | r0 = fcn_0000e3d4 ();
0x00030cc4 ldr r0, [r0] | r0 = *(r0);
0x00030cc6 ldr r4, [r6] | r4 = *(r6);
0x00030cc8 bl 0x30b74 | zbx_strerror ();
0x00030ccc ldr r1, [pc, 0x48] |
0x00030cce mov r3, r0 | r3 = r0;
0x00030cd0 mov r2, r8 | r2 = r8;
0x00030cd2 mov r0, r4 | r0 = r4;
0x00030cd4 add r1, pc | r1 = 0x619f0;
0x00030cd6 bl 0x44820 | zbx_dsprintf ()
0x00030cda str r0, [r6] | *(r6) = r0;
0x00030cdc b 0x30c8e | goto label_2;
| }
; assembly | /* r2dec pseudo code output */
| /* /logs/firmware/patool_extraction/rootfs.img_unblob_extracted/rootfs.img_extract/0-80367616.squashfs_v4_le_extract/usr/sbin/zabbix_agentd @ 0x4494c */
| #include <stdint.h>
|
; (fcn) sym.zbx_check_hostname () | void zbx_check_hostname (int16_t arg1, uint32_t arg2) {
| r0 = arg1;
| r1 = arg2;
0x0004494c push {r3, r4, r5, r6, r7, lr} |
0x0004494e mov r7, r1 | r7 = r1;
0x00044950 ldrb r4, [r0] | r4 = *(r0);
| if (r4 == 0) {
0x00044952 cbz r4, 0x44990 | goto label_1;
| }
0x00044954 mov r6, r0 | r6 = r0;
0x00044956 mov r5, r0 | r5 = r0;
0x00044958 b 0x44960 |
| while (r0 != 1) {
0x0004495a ldrb r4, [r5, 1]! | r4 = *((r5 += 1));
| if (r4 == 0) {
0x0004495e cbz r4, 0x44982 | goto label_2;
| }
0x00044960 mov r0, r4 | r0 = r4;
0x00044962 bl 0x42cc0 | is_hostname_char ();
0x00044966 adds r0, 1 | r0++;
0x00044968 mov r3, r5 | r3 = r5;
0x0004496a bne 0x4495a |
| }
| if (r7 == 0) {
0x0004496c cbz r7, 0x4497c | goto label_0;
| }
0x0004496e ldr r1, [pc, 0x50] |
0x00044970 movs r0, 0 | r0 = 0;
0x00044972 ldrb r2, [r5] | r2 = *(r5);
0x00044974 add r1, pc | r1 = 0x8933a;
0x00044976 bl 0x44820 | zbx_dsprintf ()
0x0004497a str r0, [r7] | *(r7) = r0;
| do {
| label_0:
0x0004497c mov.w r0, -1 | r0 = -1;
0x00044980 pop {r3, r4, r5, r6, r7, pc} |
| label_2:
0x00044982 rsb.w r6, r6, 1 | r6 = 1 - r6;
0x00044986 add r6, r3 | r6 += r3;
0x00044988 cmp r6, 0x80 |
| if (r6 > 0x80) {
0x0004498a bgt 0x449aa | goto label_3;
| }
0x0004498c mov r0, r4 | r0 = r4;
0x0004498e pop {r3, r4, r5, r6, r7, pc} |
| label_1:
0x00044990 cmp r1, 0 |
0x00044992 beq 0x4497c |
| } while (r1 == 0);
0x00044994 ldr r3, [pc, 0x2c] |
0x00044996 mov r2, r4 | r2 = r4;
0x00044998 ldr r0, [pc, 0x2c] |
0x0004499a movw r1, 0x351 | r1 = 0x351;
0x0004499e add r3, pc | r3 = 0x89366;
0x000449a0 add r0, pc | r0 = 0x8936c;
0x000449a2 bl 0x40ed8 | zbx_strdup2 ();
0x000449a6 str r0, [r7] | *(r7) = r0;
0x000449a8 b 0x4497c | goto label_0;
| label_3:
0x000449aa cmp r7, 0 |
| if (r7 == 0) {
0x000449ac beq 0x4497c | goto label_0;
| }
0x000449ae ldr r1, [pc, 0x1c] |
0x000449b0 movs r2, 0x80 | r2 = 0x80;
0x000449b2 mov r0, r4 | r0 = r4;
0x000449b4 add r1, pc | r1 = 0x89386;
0x000449b6 bl 0x44820 | zbx_dsprintf ()
0x000449ba str r0, [r7] | *(r7) = r0;
0x000449bc b 0x4497c | goto label_0;
| }
; assembly | /* r2dec pseudo code output */
| /* /logs/firmware/patool_extraction/rootfs.img_unblob_extracted/rootfs.img_extract/0-80367616.squashfs_v4_le_extract/usr/sbin/zabbix_agentd @ 0x1a324 */
| #include <stdint.h>
|
; (fcn) sym.zbx_create_persistent_server_directory () | void zbx_create_persistent_server_directory (int16_t arg1, int16_t arg2, int16_t arg3, int16_t arg4) {
| int16_t var_4h;
| int16_t var_8h;
| int16_t var_ch;
| r0 = arg1;
| r1 = arg2;
| r2 = arg3;
| r3 = arg4;
0x0001a324 push.w {r4, r5, r6, r7, r8, sb, sl, fp, lr} |
0x0001a328 mov sl, r2 | sl = r2;
0x0001a32a ldr r6, [pc, 0x194] |
0x0001a32c sub sp, 0x14 |
0x0001a32e mov r8, r0 | r8 = r0;
0x0001a330 ldr r5, [pc, 0x190] | r5 = *(0x1a4c4);
0x0001a332 add r6, pc | r6 = 0x347f8;
0x0001a334 ldr r4, [pc, 0x190] |
0x0001a336 ldr r2, [pc, 0x194] | r2 = *(0x1a4ce);
0x0001a338 ldr r5, [r6, r5] |
0x0001a33a mov r6, r3 | r6 = r3;
0x0001a33c add r4, pc | r4 = 0x34808;
0x0001a33e mov r3, r4 | r3 = r4;
0x0001a340 ldr r5, [r5] | r5 = *(0x347f8);
0x0001a342 str r5, [sp, 0xc] | var_ch = r5;
0x0001a344 mov.w r5, 0 | r5 = 0;
0x0001a348 str r1, [sp, 4] | var_4h = r1;
0x0001a34a movs r1, 0 | r1 = 0;
0x0001a34c str r1, [sp, 8] | var_8h = r1;
0x0001a34e ldr r7, [r4, r2] | r7 = *(0x34808);
0x0001a350 ldr r3, [r7] | r3 = *(0x34808);
0x0001a352 cmp r3, 3 |
| if (r3 > 3) {
0x0001a354 bgt.w 0x1a466 | goto label_6;
| }
| label_3:
0x0001a358 ldrb.w r3, [r8] | r3 = *(r8);
0x0001a35c cmp r3, 0x2f |
| if (r3 != 0x2f) {
0x0001a35e bne.w 0x1a4ae | goto label_7;
| }
0x0001a362 ldr r0, [pc, 0x16c] |
0x0001a364 mov r3, r8 | r3 = r8;
0x0001a366 ldr.w sb, [pc, 0x16c] |
0x0001a36a movs r2, 0 | r2 = 0;
0x0001a36c ldr.w fp, [pc, 0x168] |
0x0001a370 movs r1, 0xf5 | r1 = 0xf5;
0x0001a372 add r0, pc | r0 = 0x34848;
0x0001a374 add sb, pc |
0x0001a376 bl 0x40ed8 | zbx_strdup2 ();
0x0001a37a add.w sb, sb, 0x1c | sb = 0x3486a;
0x0001a37e mov r5, r0 | r5 = r0;
0x0001a380 add fp, pc | fp = 0x3485c;
0x0001a382 mov r4, r0 | r4 = r0;
| do {
| label_0:
0x0001a384 ldrb r1, [r4, 1]! | r1 = *((r4 += 1));
0x0001a388 cmp r1, 0x2f |
| if (r1 == 0x2f) {
0x0001a38a beq 0x1a414 | goto label_8;
| }
0x0001a38c cmp r1, 0 |
0x0001a38e bne 0x1a384 |
| } while (r1 != 0);
0x0001a390 ldr r3, [r7] | r3 = *(r7);
0x0001a392 cmp r3, 3 |
| if (r3 > 3) {
0x0001a394 bgt 0x1a452 | goto label_9;
| }
| label_2:
0x0001a396 mov r1, r6 | r1 = r6;
0x0001a398 mov r0, r5 | r0 = r5;
0x0001a39a bl 0x197f0 | r0 = fcn_000197f0 (r0, r1);
0x0001a39e cmp r0, 0 |
| if (r0 != 0) {
0x0001a3a0 bne 0x1a446 | goto label_4;
| }
| if (r5 != 0) {
0x0001a3a2 cbz r5, 0x1a3aa |
0x0001a3a4 mov r0, r5 | r0 = r5;
0x0001a3a6 blx 0xde30 | fcn_0000de30 ();
| }
0x0001a3aa ldr r1, [pc, 0x130] |
0x0001a3ac mov r3, sl | r3 = sl;
0x0001a3ae ldr r2, [sp, 4] | r2 = var_4h;
0x0001a3b0 movs r0, 0 | r0 = 0;
0x0001a3b2 add r1, pc | r1 = 0x34894;
0x0001a3b4 bl 0x44820 | r0 = zbx_dsprintf ()
0x0001a3b8 mov r4, r0 | r4 = r0;
0x0001a3ba bl 0x19748 | r0 = fcn_00019748 (r0);
0x0001a3be mov r5, r0 | r5 = r0;
| if (r4 != 0) {
0x0001a3c0 cbz r4, 0x1a3c8 |
0x0001a3c2 mov r0, r4 | r0 = r4;
0x0001a3c4 blx 0xde30 | fcn_0000de30 ();
| }
0x0001a3c8 ldr r1, [pc, 0x114] |
0x0001a3ca mov r3, r5 | r3 = r5;
0x0001a3cc mov r2, r8 | r2 = r8;
0x0001a3ce movs r0, 0 | r0 = 0;
0x0001a3d0 add r1, pc | r1 = 0x348b4;
0x0001a3d2 bl 0x44820 | r0 = zbx_dsprintf ()
0x0001a3d6 mov r4, r0 | r4 = r0;
| if (r5 != 0) {
0x0001a3d8 cbz r5, 0x1a3e0 |
0x0001a3da mov r0, r5 | r0 = r5;
0x0001a3dc blx 0xde30 | fcn_0000de30 ();
| }
0x0001a3e0 add r1, sp, 8 | r1 += var_8h;
0x0001a3e2 mov r0, r4 | r0 = r4;
0x0001a3e4 bl 0x197f0 | r0 = fcn_000197f0 (r0, r1);
0x0001a3e8 cmp r0, 0 |
| if (r0 != 0) {
0x0001a3ea bne 0x1a47a | goto label_10;
| }
0x0001a3ec movs r1, 7 | r1 = 7;
0x0001a3ee mov r0, r4 | r0 = r4;
0x0001a3f0 blx 0xde6c | r0 = fcn_0000de6c ();
0x0001a3f4 cmp r0, 0 |
| if (r0 != 0) {
0x0001a3f6 bne 0x1a498 | goto label_11;
| }
| label_1:
0x0001a3f8 ldr r2, [pc, 0xe8] |
0x0001a3fa ldr r3, [pc, 0xc8] | r3 = *(0x1a4c6);
0x0001a3fc add r2, pc | r2 = 0x348e4;
0x0001a3fe ldr r3, [r2, r3] | r3 = *(0x348e4);
0x0001a400 ldr r2, [r3] | r2 = *(0x348e4);
0x0001a402 ldr r3, [sp, 0xc] | r3 = var_ch;
0x0001a404 eors r2, r3 | r2 ^= r3;
0x0001a406 mov.w r3, 0 | r3 = 0;
| if (r2 != r3) {
0x0001a40a bne 0x1a4bc | goto label_12;
| }
0x0001a40c mov r0, r4 | r0 = r4;
0x0001a40e add sp, 0x14 |
0x0001a410 pop.w {r4, r5, r6, r7, r8, sb, sl, fp, pc} |
| label_8:
0x0001a414 movs r3, 0 | r3 = 0;
0x0001a416 strb r3, [r4] | *(r4) = r3;
0x0001a418 ldr r3, [r7] | r3 = *(r7);
0x0001a41a cmp r3, 3 |
| if (r3 > 3) {
0x0001a41c bgt 0x1a42e | goto label_13;
| }
0x0001a41e mov r1, r6 | r1 = r6;
0x0001a420 mov r0, r5 | r0 = r5;
0x0001a422 bl 0x197f0 | r0 = fcn_000197f0 (r0, r1);
| if (r0 != 0) {
0x0001a426 cbnz r0, 0x1a446 | goto label_4;
| }
| do {
0x0001a428 movs r3, 0x2f | r3 = 0x2f;
0x0001a42a strb r3, [r4] | *(r4) = r3;
0x0001a42c b 0x1a384 | goto label_0;
| label_13:
0x0001a42e mov r1, fp | r1 = fp;
0x0001a430 movs r0, 4 | r0 = 4;
0x0001a432 mov r3, r5 | r3 = r5;
0x0001a434 mov r2, sb | r2 = sb;
0x0001a436 bl 0x30d1c | zbx_zabbix_log ();
0x0001a43a mov r1, r6 | r1 = r6;
0x0001a43c mov r0, r5 | r0 = r5;
0x0001a43e bl 0x197f0 | r0 = fcn_000197f0 (r0, r1);
0x0001a442 cmp r0, 0 |
0x0001a444 beq 0x1a428 |
| } while (r0 == 0);
| do {
| if (r5 != 0) {
| label_4:
0x0001a446 cbz r5, 0x1a44e |
0x0001a448 mov r0, r5 | r0 = r5;
0x0001a44a blx 0xde30 | fcn_0000de30 ();
| }
| label_5:
0x0001a44e movs r4, 0 | r4 = 0;
0x0001a450 b 0x1a3f8 | goto label_1;
| label_9:
0x0001a452 ldr r2, [pc, 0x94] |
0x0001a454 mov r3, r5 | r3 = r5;
0x0001a456 ldr r1, [pc, 0x94] |
0x0001a458 movs r0, 4 | r0 = 4;
0x0001a45a add r2, pc | r2 = 0x34948;
0x0001a45c adds r2, 0x1c | r2 += 0x1c;
0x0001a45e add r1, pc | r1 = 0x34950;
0x0001a460 bl 0x30d1c | zbx_zabbix_log ();
0x0001a464 b 0x1a396 | goto label_2;
| label_6:
0x0001a466 ldr r2, [pc, 0x88] |
0x0001a468 mov r3, r0 | r3 = r0;
0x0001a46a ldr r1, [pc, 0x88] |
0x0001a46c movs r0, 4 | r0 = 4;
0x0001a46e add r2, pc | r2 = 0x34964;
0x0001a470 adds r2, 0x1c | r2 += 0x1c;
0x0001a472 add r1, pc | r1 = 0x3496c;
0x0001a474 bl 0x30d1c | zbx_zabbix_log ();
0x0001a478 b 0x1a358 | goto label_3;
| label_10:
0x0001a47a ldr r5, [sp, 8] | r5 = var_8h;
0x0001a47c mov r2, r4 | r2 = r4;
0x0001a47e ldr r1, [pc, 0x78] |
0x0001a480 ldr r0, [r6] | r0 = *(r6);
0x0001a482 mov r3, r5 | r3 = r5;
0x0001a484 add r1, pc | r1 = 0x34982;
0x0001a486 bl 0x44820 | zbx_dsprintf ()
0x0001a48a str r0, [r6] | *(r6) = r0;
0x0001a48c cmp r4, 0 |
0x0001a48e beq 0x1a446 |
| } while (r4 == 0);
0x0001a490 mov r0, r4 | r0 = r4;
0x0001a492 blx 0xde30 | fcn_0000de30 ();
0x0001a496 b 0x1a446 | goto label_4;
| label_11:
0x0001a498 ldr r1, [pc, 0x60] |
0x0001a49a mov r2, r4 | r2 = r4;
0x0001a49c ldr r0, [r6] | r0 = *(r6);
0x0001a49e add r1, pc | r1 = 0x3499e;
0x0001a4a0 bl 0x44820 | zbx_dsprintf ()
0x0001a4a4 str r0, [r6] | *(r6) = r0;
0x0001a4a6 mov r0, r4 | r0 = r4;
0x0001a4a8 blx 0xde30 | fcn_0000de30 ();
0x0001a4ac b 0x1a44e | goto label_5;
| label_7:
0x0001a4ae ldr r1, [pc, 0x50] |
0x0001a4b0 ldr r0, [r6] | r0 = *(r6);
0x0001a4b2 add r1, pc | r1 = 0x349b8;
0x0001a4b4 bl 0x44820 | zbx_dsprintf ()
0x0001a4b8 str r0, [r6] | *(r6) = r0;
0x0001a4ba b 0x1a44e | goto label_5;
| label_12:
0x0001a4bc blx 0xe158 | fcn_0000e158 ();
0x0001a4c0 adds r6, r4, r2 | r6 = r4 + r2;
0x0001a4c2 movs r4, r0 | r4 = r0;
0x0001a4c4 lsls r4, r2, 0xe | r4 = r2 << 0xe;
0x0001a4c6 movs r0, r0 |
0x0001a4c8 adds r4, r3, r2 | r4 = r3 + r2;
0x0001a4ca movs r4, r0 | r4 = r0;
0x0001a4cc lsls r4, r7, 0xe | r4 = r7 << 0xe;
0x0001a4ce movs r0, r0 |
0x0001a4d0 ldrsh r6, [r4, r2] | r6 = *((r4 + r2));
0x0001a4d2 movs r3, r0 | r3 = r0;
0x0001a4d4 str r0, [r4, 0x40] | *((r4 + 0x40)) = r0;
0x0001a4d6 movs r3, r0 | r3 = r0;
0x0001a4d8 ldrsh r0, [r2, r7] | r0 = *((r2 + r7));
0x0001a4da movs r3, r0 | r3 = r0;
0x0001a4dc ldrsh r6, [r7, r6] | r6 = *((r7 + r6));
0x0001a4de movs r3, r0 | r3 = r0;
0x0001a4e0 ldrsh r0, [r5, r6] | r0 = *((r5 + r6));
0x0001a4e2 movs r3, r0 | r3 = r0;
0x0001a4e4 asrs r4, r3, 0x1f | r4 = r3 >> 0x1f;
0x0001a4e6 movs r4, r0 | r4 = r0;
0x0001a4e8 str r2, [r7, 0x30] | *((r7 + 0x30)) = r2;
0x0001a4ea movs r3, r0 | r3 = r0;
0x0001a4ec ldrsh r2, [r6, r3] | r2 = *((r6 + r3));
0x0001a4ee movs r3, r0 | r3 = r0;
0x0001a4f0 str r6, [r4, 0x30] | *((r4 + 0x30)) = r6;
0x0001a4f2 movs r3, r0 | r3 = r0;
0x0001a4f4 ldrsh r2, [r7, r1] | r2 = *((r7 + r1));
0x0001a4f6 movs r3, r0 | r3 = r0;
0x0001a4f8 ldrsh r4, [r7, r3] | r4 = *((r7 + r3));
0x0001a4fa movs r3, r0 | r3 = r0;
0x0001a4fc ldrsh r6, [r0, r4] | r6 = *((r0 + r4));
0x0001a4fe movs r3, r0 | r3 = r0;
0x0001a500 ldrsh r6, [r1, r1] | r6 = *((r1 + r1));
0x0001a502 movs r3, r0 | r3 = r0;
| }
; assembly | /* r2dec pseudo code output */
| /* /logs/firmware/patool_extraction/rootfs.img_unblob_extracted/rootfs.img_extract/0-80367616.squashfs_v4_le_extract/usr/sbin/zabbix_agentd @ 0x352bc */
| #include <stdint.h>
|
; (fcn) sym.zbx_dshm_destroy () | void zbx_dshm_destroy (int16_t arg1, int16_t arg2) {
| r0 = arg1;
| r1 = arg2;
0x000352bc invalid |
0x000352c0 ldr r3, [pc, 0x88] |
0x000352c2 mov r6, r1 | r6 = r1;
0x000352c4 ldr r2, [pc, 0x88] | r2 = *(0x35350);
0x000352c6 add r3, pc | r3 = 0x6a616;
0x000352c8 ldr r7, [r3, r2] | r7 = *(0x6a616);
0x000352ca ldr r3, [r7] | r3 = *(0x6a616);
0x000352cc cmp r3, 3 |
| if (r3 > 3) {
0x000352ce bgt 0x3531c | goto label_1;
| }
| label_0:
0x000352d0 add.w r0, r4, 0xc | r0 = r4 + 0xc;
0x000352d4 bl 0x34628 | zbx_mutex_destroy ();
0x000352d8 ldr r0, [r4] | r0 = *(r4);
0x000352da adds r2, r0, 1 | r2 = r0 + 1;
0x000352dc bne 0x352ea |
| while (r3 != r0) {
0x000352de movs r5, 0 | r5 = 0;
0x000352ea movs r2, 0 | r2 = 0;
0x000352ec mov r1, r2 | r1 = r2;
0x000352ee blx 0xe268 | r0 = fcn_0000e268 ();
0x000352f2 adds r3, r0, 1 | r3 = r0 + 1;
0x000352f4 mov r5, r0 | r5 = r0;
0x000352f6 itt ne |
| if (r3 == r0) {
0x000352f8 movne r3, -1 | r3 = -1;
| }
| if (r3 != r0) {
0x000352fc str r3, [r4] | *(r4) = r3;
| }
0x000352fe bne 0x352de |
| }
0x00035300 blx 0xe3d4 | r0 = fcn_0000e3d4 ();
0x00035304 ldr r0, [r0] | r0 = *(r0);
0x00035306 ldr r4, [r6] | r4 = *(r6);
0x00035308 bl 0x30b74 | zbx_strerror ();
0x0003530c ldr r1, [pc, 0x44] |
0x0003530e mov r2, r0 | r2 = r0;
0x00035310 mov r0, r4 | r0 = r4;
0x00035312 add r1, pc | r1 = 0x6a66a;
0x00035314 bl 0x44820 | zbx_dsprintf ()
0x00035318 str r0, [r6] | *(r6) = r0;
0x0003531a b 0x352e0 | void (*0x352e0)() ();
| label_1:
0x0003531c ldr r2, [pc, 0x38] |
0x0003531e ldr r1, [pc, 0x3c] |
0x00035320 ldr r3, [r0] | r3 = *(r0);
0x00035322 movs r0, 4 | r0 = 4;
0x00035324 add r2, pc | r2 = 0x6a680;
0x00035326 adds r2, 0x10 | r2 += 0x10;
0x00035328 add r1, pc | r1 = 0x6a68a;
0x0003532a bl 0x30d1c | zbx_zabbix_log ();
0x0003532e b 0x352d0 | goto label_0;
| }
; assembly | /* r2dec pseudo code output */
| /* /logs/firmware/patool_extraction/rootfs.img_unblob_extracted/rootfs.img_extract/0-80367616.squashfs_v4_le_extract/usr/sbin/zabbix_agentd @ 0x3548c */
| #include <stdint.h>
|
| #define BIT_MASK(t,v) ((t)(-((v)!= 0)))&(((t)-1)>>((sizeof(t)*CHAR_BIT)-(v)))
|
; (fcn) sym.zbx_dshm_realloc () | void zbx_dshm_realloc (int16_t arg1, int16_t arg2, int16_t arg3) {
| int16_t var_0h;
| int16_t var_4h;
| r0 = arg1;
| r1 = arg2;
| r2 = arg3;
0x0003548c ldr r3, [pc, 0x148] |
0x0003548e push.w {r4, r5, r6, r7, r8, sb, sl, lr} |
0x00035492 mov r5, r0 | r5 = r0;
0x00035494 ldr r6, [pc, 0x144] | r6 = *(0x355dc);
0x00035496 sub sp, 8 |
0x00035498 add r3, pc | r3 = 0x6aa74;
0x0003549a mov r4, r1 | r4 = r1;
0x0003549c mov r8, r2 | r8 = r2;
0x0003549e ldr.w sb, [r3, r6] | sb = *(0x6aa74);
0x000354a2 ldr.w r3, [sb] | r3 = *(0x6aa74);
0x000354a6 cmp r3, 3 |
| if (r3 > 3) {
0x000354a8 bgt 0x35518 | goto label_3;
| }
| label_0:
0x000354aa ldr r0, [r5] | r0 = *(r5);
0x000354ac adds r4, 7 | r4 += 7;
0x000354ae bic r4, r4, 7 | r4 = BIT_MASK (r4, 7);
0x000354b2 adds r1, r0, 1 | r1 = r0 + 1;
| if (r1 == r0) {
0x000354b4 beq 0x35514 | goto label_4;
| }
0x000354b6 movs r2, 0 | r2 = 0;
0x000354b8 mov r1, r2 | r1 = r2;
0x000354ba blx 0xdd44 | r0 = fcn_0000dd44 ();
0x000354be adds r2, r0, 1 | r2 = r0 + 1;
0x000354c0 mov r7, r0 | r7 = r0;
| if (r2 == r0) {
0x000354c2 beq 0x355a8 | goto label_5;
| }
| do {
0x000354c4 mov r0, r4 | r0 = r4;
0x000354c6 bl 0x35924 | zbx_shm_create ();
0x000354c8 invalid |
0x000354cc mov r6, r0 | r6 = r0;
| if (r2 == r0) {
0x000354ce beq 0x35556 | goto label_6;
| }
0x000354d0 movs r2, 0 | r2 = 0;
0x000354d2 mov r1, r2 | r1 = r2;
0x000354d4 blx 0xdd44 | r0 = fcn_0000dd44 ();
0x000354d8 cmp.w r0, -1 |
0x000354dc mov sl, r0 | sl = r0;
| if (r0 == -1) {
0x000354de beq 0x35570 | goto label_7;
| }
0x000354e0 ldr r3, [r5, 8] | r3 = *((r5 + 8));
0x000354e2 mov r2, r7 | r2 = r7;
0x000354e4 mov r1, r4 | r1 = r4;
0x000354e6 blx r3 | uint32_t (*r3)(uint32_t, uint32_t, uint32_t) (r1, r2, r3);
0x000354e8 mov r0, sl | r0 = sl;
0x000354ea blx 0xddfc | getuid ();
0x000354ee adds r0, 1 | r0++;
| if (r0 == 1) {
0x000354f0 beq 0x35594 | goto label_8;
| }
| if (r7 != 0) {
0x000354f2 cbz r7, 0x354fe |
0x000354f4 ldr r0, [r5] | r0 = *(r5);
0x000354f6 bl 0x35978 | zbx_shm_destroy ();
0x000354fa adds r0, 1 | r0++;
| if (r0 == 1) {
0x000354fc beq 0x355c4 | goto label_9;
| }
| }
0x000354fe movs r7, 0 | r7 = 0;
0x00035500 strd r6, r4, [r5] | __asm ("strd r6, r4, [r5]");
| label_1:
0x00035504 ldr.w r3, [sb] | r3 = *(sb);
0x00035508 cmp r3, 3 |
| if (r3 > 3) {
0x0003550a bgt 0x35532 | goto label_10;
| }
0x0003550c mov r0, r7 | r0 = r7;
0x0003550e add sp, 8 |
0x00035510 pop.w {r4, r5, r6, r7, r8, sb, sl, pc} |
| label_4:
0x00035514 movs r7, 0 | r7 = 0;
0x00035516 b 0x354c4 |
| } while (1);
| label_3:
0x00035518 ldr r2, [pc, 0xc4] |
0x0003551a movs r3, 0 | r3 = 0;
0x0003551c str r1, [sp] | *(sp) = r1;
0x0003551e ldr r1, [pc, 0xc4] |
0x00035520 add r2, pc | r2 = 0x6ab04;
0x00035522 str r3, [sp, 4] | var_4h = r3;
0x00035524 adds r2, 0x3c | r2 += 0x3c;
0x00035526 ldr r3, [r0] | r3 = *(r0);
0x00035528 add r1, pc | r1 = 0x6ab12;
0x0003552a movs r0, 4 | r0 = 4;
0x0003552c bl 0x30d1c | zbx_zabbix_log ();
0x00035530 b 0x354aa | goto label_0;
| label_10:
0x00035532 mov r0, r7 | r0 = r7;
0x00035534 bl 0x45514 | zbx_result_string ();
0x00035538 ldr r2, [pc, 0xac] |
0x0003553a mov r3, r0 | r3 = r0;
0x0003553c ldr r4, [r5] | r4 = *(r5);
0x0003553e movs r0, 4 | r0 = 4;
0x00035540 ldr r1, [pc, 0xa8] |
0x00035542 add r2, pc | r2 = 0x6ab2e;
0x00035544 adds r2, 0x3c | r2 += 0x3c;
0x00035546 str r4, [sp] | *(sp) = r4;
0x00035548 add r1, pc | r1 = 0x6ab38;
0x0003554a bl 0x30d1c | zbx_zabbix_log ();
0x0003554e mov r0, r7 | r0 = r7;
0x00035550 add sp, 8 |
0x00035552 pop.w {r4, r5, r6, r7, r8, sb, sl, pc} |
| label_6:
0x00035556 ldr r3, [pc, 0x98] |
0x00035558 movs r2, 0 | r2 = 0;
0x0003555a ldr r0, [pc, 0x98] |
0x0003555c movs r1, 0xd9 | r1 = 0xd9;
0x0003555e add r3, pc | r3 = 0x6ab54;
0x00035560 add r0, pc | r0 = 0x6ab5a;
0x00035562 bl 0x40ed8 | zbx_strdup2 ();
| do {
| label_2:
0x00035566 mov.w r7, -1 | r7 = -1;
0x0003556a str.w r0, [r8] | __asm ("str.w r0, [r8]");
0x0003556e b 0x35504 | goto label_1;
| if (r7 != 0) {
| label_7:
0x00035570 cbz r7, 0x35578 |
0x00035572 mov r0, r7 | r0 = r7;
0x00035574 blx 0xddfc | getuid ();
| }
0x00035578 blx 0xe3d4 | r0 = fcn_0000e3d4 ();
0x0003557c ldr r0, [r0] | r0 = *(r0);
0x0003557e ldr.w r4, [r8] | r4 = *(r8);
0x00035582 bl 0x30b74 | zbx_strerror ();
0x00035586 ldr r1, [pc, 0x70] |
0x00035588 mov r2, r0 | r2 = r0;
0x0003558a mov r0, r4 | r0 = r4;
0x0003558c add r1, pc | r1 = 0x6ab8a;
0x0003558e bl 0x44820 | zbx_dsprintf ()
0x00035592 b 0x35566 |
| } while (1);
| label_8:
0x00035594 ldr r3, [pc, 0x64] |
0x00035596 movs r1, 0xeb | r1 = 0xeb;
0x00035598 ldr r0, [pc, 0x64] |
0x0003559a ldr.w r2, [r8] | r2 = *(r8);
0x0003559e add r3, pc | r3 = 0x6ab9e;
0x000355a0 add r0, pc | r0 = 0x6aba4;
0x000355a2 bl 0x40ed8 | zbx_strdup2 ();
0x000355a6 b 0x35566 | goto label_2;
| label_5:
0x000355a8 blx 0xe3d4 | r0 = fcn_0000e3d4 ();
0x000355ac ldr r0, [r0] | r0 = *(r0);
0x000355ae ldr.w r4, [r8] | r4 = *(r8);
0x000355b2 bl 0x30b74 | zbx_strerror ();
0x000355b6 ldr r1, [pc, 0x4c] |
0x000355b8 mov r2, r0 | r2 = r0;
0x000355ba mov r0, r4 | r0 = r4;
0x000355bc add r1, pc | r1 = 0x6abc6;
0x000355be bl 0x44820 | zbx_dsprintf ()
0x000355c2 b 0x35566 | goto label_2;
| label_9:
0x000355c4 ldr r3, [pc, 0x40] |
0x000355c6 movs r1, 0xf2 | r1 = 0xf2;
0x000355c8 ldr r0, [pc, 0x40] |
0x000355ca ldr.w r2, [r8] | r2 = *(r8);
0x000355ce add r3, pc | r3 = 0x6abda;
0x000355d0 add r0, pc | r0 = 0x6abe0;
0x000355d2 bl 0x40ed8 | zbx_strdup2 ();
0x000355d6 b 0x35566 | goto label_2;
| }
; assembly | /* r2dec pseudo code output */
| /* /logs/firmware/patool_extraction/rootfs.img_unblob_extracted/rootfs.img_extract/0-80367616.squashfs_v4_le_extract/usr/sbin/zabbix_agentd @ 0x35388 */
| #include <stdint.h>
|
; (fcn) sym.zbx_dshm_validate_ref () | void zbx_dshm_validate_ref (uint32_t arg1, int16_t arg2, int16_t arg3) {
| int16_t var_0h;
| r0 = arg1;
| r1 = arg2;
| r2 = arg3;
0x00035388 ldr r3, [pc, 0xe0] |
0x0003538a push {r4, r5, r6, r7, lr} |
0x0003538c mov r6, r2 | r6 = r2;
0x0003538e ldr r2, [pc, 0xe0] | r2 = *(0x35472);
0x00035390 mov r5, r0 | r5 = r0;
0x00035392 add r3, pc | r3 = 0x6a802;
0x00035394 mov r4, r1 | r4 = r1;
0x00035396 ldr r0, [r0] | r0 = *(r0);
0x00035398 sub sp, 0xc |
0x0003539a ldr r7, [r3, r2] | r7 = *(0x6a802);
0x0003539c ldr r1, [r1] | r1 = *(r1);
0x0003539e ldr r3, [r7] | r3 = *(0x6a802);
0x000353a0 cmp r3, 4 |
| if (r3 > 4) {
0x000353a2 bgt 0x3540a | goto label_3;
| }
0x000353a4 cmp r1, r0 |
| if (r1 == r0) {
0x000353a6 beq 0x35402 | goto label_4;
| }
0x000353a8 adds r1, 1 | r1++;
| if (r1 != 1) {
0x000353aa beq 0x353c2 |
| label_0:
0x000353ac ldr r0, [r4, 4] | r0 = *((r4 + 4));
0x000353ae blx 0xddfc | getuid ();
0x000353b2 adds r0, 1 | r0++;
| if (r0 == 1) {
0x000353b4 beq 0x35450 | goto label_5;
| }
0x000353b6 ldr r0, [r5] | r0 = *(r5);
0x000353b8 mov.w r3, -1 | r3 = -1;
0x000353bc movs r2, 0 | r2 = 0;
0x000353be strd r3, r2, [r4] | __asm ("strd r3, r2, [r4]");
| }
| label_1:
0x000353c2 movs r2, 0 | r2 = 0;
0x000353c4 mov r1, r2 | r1 = r2;
0x000353c6 blx 0xdd44 | fcn_0000dd44 ();
0x000353ca str r0, [r4, 4] | *((r4 + 4)) = r0;
0x000353cc adds r0, 1 | r0++;
0x000353ce itt ne |
| if (r0 == 1) {
0x000353d0 ldrne r3, [r5] | r3 = *(r5);
| }
| if (r0 == 1) {
0x000353d2 strne r3, [r4] | *(r4) = r3;
| }
| if (r0 == 1) {
0x000353d4 beq 0x3542c | goto label_6;
| }
| do {
0x000353d6 movs r4, 0 | r4 = 0;
| label_2:
0x000353d8 ldr r3, [r7] | r3 = *(r7);
0x000353da cmp r3, 4 |
| if (r3 <= 4) {
0x000353dc bgt 0x353e4 |
0x000353de mov r0, r4 | r0 = r4;
0x000353e0 add sp, 0xc |
0x000353e2 pop {r4, r5, r6, r7, pc} |
| }
0x000353e4 mov r0, r4 | r0 = r4;
0x000353e6 bl 0x45514 | zbx_result_string ();
0x000353ea ldr r2, [pc, 0x88] |
0x000353ec mov r3, r0 | r3 = r0;
0x000353ee ldr r1, [pc, 0x88] |
0x000353f0 movs r0, 5 | r0 = 5;
0x000353f2 add r2, pc | r2 = 0x6a86c;
0x000353f4 add r1, pc | r1 = 0x6a872;
0x000353f6 adds r2, 0x24 | r2 += 0x24;
0x000353f8 bl 0x30d1c | zbx_zabbix_log ();
0x000353fc mov r0, r4 | r0 = r4;
0x000353fe add sp, 0xc |
0x00035400 pop {r4, r5, r6, r7, pc} |
| label_4:
0x00035402 movs r4, 0 | r4 = 0;
0x00035404 mov r0, r4 | r0 = r4;
0x00035406 add sp, 0xc |
0x00035408 pop {r4, r5, r6, r7, pc} |
| label_3:
0x0003540a ldr r2, [pc, 0x70] |
0x0003540c mov r3, r0 | r3 = r0;
0x0003540e str r1, [sp] | *(sp) = r1;
0x00035410 movs r0, 5 | r0 = 5;
0x00035412 ldr r1, [pc, 0x6c] |
0x00035414 add r2, pc | r2 = 0x6a896;
0x00035416 adds r2, 0x24 | r2 += 0x24;
0x00035418 add r1, pc | r1 = 0x6a89e;
0x0003541a bl 0x30d1c | zbx_zabbix_log ();
0x0003541e ldr r1, [r4] | r1 = *(r4);
0x00035420 ldr r0, [r5] | r0 = *(r5);
0x00035422 cmp r0, r1 |
0x00035424 beq 0x353d6 |
| } while (r0 == r1);
0x00035426 adds r1, 1 | r1++;
| if (r1 != 1) {
0x00035428 bne 0x353ac | goto label_0;
| }
0x0003542a b 0x353c2 | goto label_1;
| label_6:
0x0003542c blx 0xe3d4 | r0 = fcn_0000e3d4 ();
0x00035430 ldr r0, [r0] | r0 = *(r0);
0x00035432 ldr r5, [r6] | r5 = *(r6);
0x00035434 bl 0x30b74 | zbx_strerror ();
0x00035438 ldr r1, [pc, 0x48] |
0x0003543a mov r2, r0 | r2 = r0;
0x0003543c mov r0, r5 | r0 = r5;
0x0003543e add r1, pc | r1 = 0x6a8c6;
0x00035440 bl 0x44820 | zbx_dsprintf ()
0x00035444 movs r3, 0 | r3 = 0;
0x00035446 str r0, [r6] | *(r6) = r0;
0x00035448 str r3, [r4, 4] | *((r4 + 4)) = r3;
| do {
0x0003544a mov.w r4, -1 | r4 = -1;
0x0003544e b 0x353d8 | goto label_2;
| label_5:
0x00035450 blx 0xe3d4 | r0 = fcn_0000e3d4 ();
0x00035454 ldr r0, [r0] | r0 = *(r0);
0x00035456 ldr r4, [r6] | r4 = *(r6);
0x00035458 bl 0x30b74 | zbx_strerror ();
0x0003545c ldr r1, [pc, 0x28] |
0x0003545e mov r2, r0 | r2 = r0;
0x00035460 mov r0, r4 | r0 = r4;
0x00035462 add r1, pc | r1 = 0x6a8ee;
0x00035464 bl 0x44820 | zbx_dsprintf ()
0x00035468 str r0, [r6] | *(r6) = r0;
0x0003546a b 0x3544a |
| } while (1);
| }
; assembly | /* r2dec pseudo code output */
| /* /logs/firmware/patool_extraction/rootfs.img_unblob_extracted/rootfs.img_extract/0-80367616.squashfs_v4_le_extract/usr/sbin/zabbix_agentd @ 0x1d378 */
| #include <stdint.h>
|
; (fcn) sym.zbx_execute_threaded_metric () | void zbx_execute_threaded_metric (int16_t arg_0h, int16_t arg1, int16_t arg2, int16_t arg3) {
| int16_t var_81ch;
| int16_t var_0h_2;
| int16_t var_ch;
| int16_t var_10h;
| int16_t var_14h;
| int16_t var_1ch;
| r0 = arg1;
| r1 = arg2;
| r2 = arg3;
0x0001d378 push.w {r4, r5, r6, r7, r8, sb, sl, fp, lr} |
0x0001d37c mov r7, r0 | r7 = r0;
0x0001d37e ldr r6, [pc, 0x3ac] |
0x0001d380 mov sl, r2 | sl = r2;
0x0001d382 ldr r5, [pc, 0x3ac] | r5 = *(0x1d732);
0x0001d384 add r6, pc | r6 = 0x3aab6;
0x0001d386 vpush {d8, d9} | __asm ("vpush {d8, d9}");
0x0001d38a ldr r4, [pc, 0x3a8] |
0x0001d38c subw sp, sp, 0x824 | __asm ("subw sp, sp, 0x824");
0x0001d390 ldr r5, [r6, r5] |
0x0001d392 ldr r3, [pc, 0x3a4] | r3 = *(0x1d73a);
0x0001d394 add r4, pc | r4 = 0x3aace;
0x0001d396 ldr r5, [r5] | r5 = *(0x3aab6);
0x0001d398 str.w r5, [sp, 0x81c] | __asm ("str.w r5, [var_81ch]");
0x0001d39c mov.w r5, 0 | r5 = 0;
0x0001d3a0 mov r5, r1 | r5 = r1;
0x0001d3a2 ldr.w fp, [r4, r3] | fp = *(0x3aace);
0x0001d3a6 ldr.w r3, [fp] | r3 = *(0x3aace);
0x0001d3aa cmp r3, 3 |
| if (r3 > 3) {
0x0001d3ac bgt.w 0x1d526 | goto label_14;
| }
0x0001d3b0 add.w sb, sp, 0x14 | sb += var_14h;
0x0001d3b4 mov r0, sb | r0 = sb;
0x0001d3b6 blx 0xe370 | fcn_0000e370 ();
0x0001d3ba adds r0, 1 | r0++;
| if (r0 == 1) {
0x0001d3bc beq.w 0x1d548 | goto label_15;
| }
| label_1:
0x0001d3c0 bl 0x340a8 | r0 = zbx_fork ();
0x0001d3c4 cmp.w r0, -1 |
0x0001d3c8 mov r8, r0 | r8 = r0;
| if (r0 == -1) {
0x0001d3ca beq.w 0x1d5f6 | goto label_16;
| }
0x0001d3ce ldr r0, [pc, 0x36c] |
0x0001d3d0 mov.w r3, 0x800 | r3 = 0x800;
0x0001d3d4 movs r2, 0 | r2 = 0;
0x0001d3d6 movw r1, 0x6fd | r1 = 0x6fd;
0x0001d3da add r0, pc | r0 = 0x3ab1c;
0x0001d3dc bl 0x40dd8 | r0 = zbx_malloc2 ();
0x0001d3e0 mov r6, r0 | r6 = r0;
0x0001d3e2 cmp.w r8, 0 |
| if (r8 == 0) {
0x0001d3e6 beq.w 0x1d7de | goto label_17;
| }
0x0001d3ea ldr.w r0, [sb, 4] | r0 = *((sb + 4));
0x0001d3ee movs r5, 0 | r5 = 0;
0x0001d3f0 blx 0xe0ac | fcn_0000e0ac ();
0x0001d3f4 ldr r3, [pc, 0x348] | r3 = *(0x1d740);
0x0001d3f6 add r7, sp, 0x1c | r7 += var_1ch;
0x0001d3f8 vldr s16, [pc, 0x32c] | __asm ("vldr s16, [0x0001d72c]");
0x0001d3fc vmov.f64 d9, 1.500000e+00 | __asm ("vmov.f64 d9, 1");
0x0001d400 ldr r3, [r4, r3] | r3 = *((r4 + r3));
0x0001d402 ldr r0, [r3] | r0 = *(0x1d740);
0x0001d404 bl 0x42fc4 | zbx_alarm_on ();
0x0001d408 ldr r3, [pc, 0x338] |
0x0001d40a add r3, pc | r3 = 0x3ab52;
0x0001d40c str r3, [sp, 0xc] | var_ch = r3;
0x0001d40e b 0x1d420 |
| while (r3 > r4) {
| label_0:
0x0001d410 adds r0, r6, r5 | r0 = r6 + r5;
0x0001d412 mov r2, r4 | r2 = r4;
0x0001d414 mov r1, r7 | r1 = r7;
0x0001d416 add r5, r4 | r5 += r4;
0x0001d418 blx 0xdf84 | fcn_0000df84 ();
0x0001d41c movs r3, 0 | r3 = 0;
0x0001d41e strb r3, [r6, r5] | *((r6 + r5)) = r3;
0x0001d420 ldr.w r0, [sb] | r0 = *(sb);
0x0001d424 mov.w r2, 0x800 | r2 = 0x800;
0x0001d428 mov r1, r7 | r1 = r7;
0x0001d42a blx 0xde54 | r0 = fcn_0000de54 ();
0x0001d42e mov r4, r0 | r4 = r0;
| if (r0 == 0) {
0x0001d430 cbz r0, 0x1d49e | goto label_6;
| }
0x0001d432 bl 0x42fec | r0 = zbx_alarm_timed_out ();
| if (r0 == 0) {
0x0001d436 cbz r0, 0x1d472 | goto label_18;
| }
0x0001d438 adds r0, r4, 1 | r0 = r4 + 1;
| if (r0 == r4) {
0x0001d43a beq.w 0x1d5be | goto label_19;
| }
0x0001d43e vmov r3, s16 | __asm ("vmov r3, s16");
0x0001d442 subs r3, r3, r5 | r3 -= r5;
0x0001d444 cmp r3, r4 |
0x0001d446 bgt 0x1d410 |
| }
| do {
0x0001d448 vcvt.f64.u32 d7, s16 | __asm ("vcvt.f64.u32 d7, s16");
0x0001d44c vmul.f64 d7, d7, d9 | __asm ("vmul.f64 d7, d7, d9");
0x0001d450 vcvt.u32.f64 s16, d7 | __asm ("vcvt.u32.f64 s16, d7");
0x0001d454 vmov r3, s16 | __asm ("vmov r3, s16");
0x0001d458 subs r3, r3, r5 | r3 -= r5;
0x0001d45a cmp r3, r4 |
0x0001d45c ble 0x1d448 |
| } while (r3 <= r4);
0x0001d45e mov r2, r6 | r2 = r6;
0x0001d460 ldr r0, [sp, 0xc] | r0 = var_ch;
0x0001d462 vmov r3, s16 | __asm ("vmov r3, s16");
0x0001d466 movw r1, 0x72f | r1 = 0x72f;
0x0001d46a bl 0x40e68 | r0 = zbx_realloc2 ();
0x0001d46e mov r6, r0 | r6 = r0;
0x0001d470 b 0x1d410 | goto label_0;
| label_18:
0x0001d472 ldr.w r3, [sl, 0x28] | r3 = *((sl + 0x28));
0x0001d476 mov r2, r0 | r2 = r0;
0x0001d478 ldr r0, [pc, 0x2cc] |
0x0001d47a movw r1, 0x71c | r1 = 0x71c;
0x0001d47e movs r4, 1 | r4 = 1;
0x0001d480 orr r3, r3, 0x20 | r3 |= 0x20;
0x0001d484 str.w r3, [sl, 0x28] | __asm ("str.w r3, [sl, 0x28]");
0x0001d488 add r0, pc | r0 = zbx_json_cleanarray;
0x0001d48a ldr r3, [pc, 0x2c0] |
0x0001d48c add r3, pc | r3 = 0x3abde;
0x0001d48e bl 0x40ed8 | zbx_strdup2 ();
0x0001d492 movs r1, 9 | r1 = 9;
0x0001d494 str.w r0, [sl, 0x20] | __asm ("str.w r0, [sl, 0x20]");
0x0001d498 mov r0, r8 | r0 = r8;
0x0001d49a blx 0xe2e0 | fcn_0000e2e0 ();
| label_6:
0x0001d49e bl 0x42fd4 | zbx_alarm_off ();
0x0001d4a2 ldr.w r0, [sb] | r0 = *(sb);
0x0001d4a6 add r5, sp, 0x10 | r5 += var_10h;
0x0001d4a8 blx 0xe0ac | fcn_0000e0ac ();
0x0001d4ac b 0x1d4b8 |
| while (r0 == 1) {
0x0001d4ae blx 0xe3d4 | r0 = fcn_0000e3d4 ();
0x0001d4b2 ldr r0, [r0] | r0 = *(r0);
0x0001d4b4 cmp r0, 4 |
| if (r0 != 4) {
0x0001d4b6 bne 0x1d598 | goto label_20;
| }
0x0001d4b8 movs r2, 0 | r2 = 0;
0x0001d4ba mov r1, r5 | r1 = r5;
0x0001d4bc mov r0, r8 | r0 = r8;
0x0001d4be blx 0xe00c | open64 ();
0x0001d4c2 adds r0, 1 | r0++;
0x0001d4c4 beq 0x1d4ae |
| }
| if (r4 == 0) {
0x0001d4c6 cbnz r4, 0x1d4f2 |
0x0001d4c8 ldr r2, [r5] | r2 = *(r5);
0x0001d4ca lsls r1, r2, 0x19 | r1 = r2 << 0x19;
| if (r1 != r2) {
0x0001d4cc bne.w 0x1d6a0 | goto label_21;
| }
0x0001d4d0 tst.w r2, 0xff00 |
| if ((r2 & 0xff00) == 0) {
0x0001d4d4 beq.w 0x1d62e | goto label_22;
| }
0x0001d4d8 ldr.w r3, [sl, 0x28] | r3 = *((sl + 0x28));
0x0001d4dc mov r0, r4 | r0 = r4;
0x0001d4de ldr r1, [pc, 0x270] |
0x0001d4e0 orr r3, r3, 0x20 | r3 |= 0x20;
0x0001d4e4 add r1, pc | r1 = 0x3ac3a;
0x0001d4e6 str.w r3, [sl, 0x28] | __asm ("str.w r3, [sl, 0x28]");
0x0001d4ea bl 0x44820 | zbx_dsprintf ()
0x0001d4ee str.w r0, [sl, 0x20] | __asm ("str.w r0, [sl, 0x20]");
| }
| label_4:
0x0001d4f2 cmp r6, 0 |
| if (r6 != 0) {
0x0001d4f4 bne 0x1d5b4 | goto label_23;
| }
| label_2:
0x0001d4f6 movs r4, 1 | r4 = 1;
| label_5:
0x0001d4f8 ldr.w r3, [fp] | r3 = *(fp);
0x0001d4fc cmp r3, 3 |
| if (r3 > 3) {
0x0001d4fe bgt 0x1d570 | goto label_24;
| }
| label_3:
0x0001d500 ldr r2, [pc, 0x250] |
0x0001d502 ldr r3, [pc, 0x22c] | r3 = *(0x1d732);
0x0001d504 add r2, pc | r2 = 0x3ac5c;
0x0001d506 ldr r3, [r2, r3] | r3 = *(0x3ac5c);
0x0001d508 ldr r2, [r3] | r2 = *(0x3ac5c);
0x0001d50a ldr.w r3, [sp, 0x81c] | r3 = var_81ch;
0x0001d50e eors r2, r3 | r2 ^= r3;
0x0001d510 mov.w r3, 0 | r3 = 0;
| if (r2 != r3) {
0x0001d514 bne.w 0x1d848 | goto label_25;
| }
0x0001d518 mov r0, r4 | r0 = r4;
0x0001d51a addw sp, sp, 0x824 | __asm ("addw sp, var_0h_2");
0x0001d51e vpop {d8, d9} | __asm ("vpop {d8, d9}");
0x0001d522 pop.w {r4, r5, r6, r7, r8, sb, sl, fp, pc} |
| label_14:
0x0001d526 ldr r2, [pc, 0x230] |
0x0001d528 movs r0, 4 | r0 = 4;
0x0001d52a ldr r3, [r1] | r3 = *(r1);
0x0001d52c add.w sb, sp, 0x14 | sb += var_14h;
0x0001d530 ldr r1, [pc, 0x228] |
0x0001d532 add r2, pc | r2 = 0x3ac90;
0x0001d534 adds r2, 0x54 | r2 += 0x54;
0x0001d536 add r1, pc | r1 = 0x3ac96;
0x0001d538 bl 0x30d1c | zbx_zabbix_log ();
0x0001d53c mov r0, sb | r0 = sb;
0x0001d53e blx 0xe370 | fcn_0000e370 ();
0x0001d542 adds r0, 1 | r0++;
| if (r0 != 1) {
0x0001d544 bne.w 0x1d3c0 | goto label_1;
| }
| label_15:
0x0001d548 ldr.w r3, [sl, 0x28] | r3 = *((sl + 0x28));
0x0001d54c orr r3, r3, 0x20 | r3 |= 0x20;
0x0001d550 str.w r3, [sl, 0x28] | __asm ("str.w r3, [sl, 0x28]");
0x0001d554 blx 0xe3d4 | r0 = fcn_0000e3d4 ();
0x0001d558 ldr r0, [r0] | r0 = *(r0);
0x0001d55a bl 0x31154 | strerror_from_system ();
0x0001d55e ldr r1, [pc, 0x200] |
0x0001d560 mov r2, r0 | r2 = r0;
0x0001d562 movs r0, 0 | r0 = 0;
0x0001d564 add r1, pc | r1 = 0x3acca;
0x0001d566 bl 0x44820 | zbx_dsprintf ()
0x0001d56a str.w r0, [sl, 0x20] | __asm ("str.w r0, [sl, 0x20]");
0x0001d56e b 0x1d4f6 | goto label_2;
| label_24:
0x0001d570 mov r0, r4 | r0 = r4;
0x0001d572 bl 0x454f0 | zbx_sysinfo_ret_string ();
0x0001d576 ldr.w r2, [sl, 0x28] | r2 = *((sl + 0x28));
0x0001d57a mov r3, r0 | r3 = r0;
0x0001d57c lsls r2, r2, 0x1a | r2 <<= 0x1a;
| if (r2 < r2) {
0x0001d57e bmi 0x1d5f0 | goto label_26;
| }
0x0001d580 ldr r0, [pc, 0x1e0] |
0x0001d582 add r0, pc | r0 = 0x3acea;
| label_7:
0x0001d584 ldr r2, [pc, 0x1e0] |
0x0001d586 ldr r1, [pc, 0x1e4] |
0x0001d588 str r0, [sp] | *(sp) = r0;
0x0001d58a movs r0, 4 | r0 = 4;
0x0001d58c add r2, pc | r2 = 0x3acf8;
0x0001d58e add r1, pc | r1 = 0x3ad00;
0x0001d590 adds r2, 0x54 | r2 += 0x54;
0x0001d592 bl 0x30d1c | zbx_zabbix_log ();
0x0001d596 b 0x1d500 | goto label_3;
| label_20:
0x0001d598 ldr.w r3, [fp] | r3 = *(fp);
0x0001d59c cmp r3, 1 |
| if (r3 <= 1) {
0x0001d59e ble 0x1d4f2 | goto label_4;
| }
0x0001d5a0 bl 0x30b74 | zbx_strerror ();
0x0001d5a4 ldr r1, [pc, 0x1c8] |
0x0001d5a6 mov r2, r0 | r2 = r0;
0x0001d5a8 movs r0, 2 | r0 = 2;
0x0001d5aa add r1, pc | r1 = 0x3ad1e;
0x0001d5ac bl 0x30d1c | zbx_zabbix_log ();
0x0001d5b0 cmp r6, 0 |
| if (r6 == 0) {
0x0001d5b2 beq 0x1d4f6 | goto label_2;
| }
| label_23:
0x0001d5b4 movs r4, 1 | r4 = 1;
| do {
| label_8:
0x0001d5b6 mov r0, r6 | r0 = r6;
0x0001d5b8 blx 0xde30 | fcn_0000de30 ();
0x0001d5bc b 0x1d4f8 | goto label_5;
| label_19:
0x0001d5be ldr.w r3, [sl, 0x28] | r3 = *((sl + 0x28));
0x0001d5c2 movs r4, 1 | r4 = 1;
0x0001d5c4 orr r3, r3, 0x20 | r3 |= 0x20;
0x0001d5c8 str.w r3, [sl, 0x28] | __asm ("str.w r3, [sl, 0x28]");
0x0001d5cc blx 0xe3d4 | r0 = fcn_0000e3d4 ();
0x0001d5d0 ldr r0, [r0] | r0 = *(r0);
0x0001d5d2 bl 0x30b74 | zbx_strerror ();
0x0001d5d6 ldr r1, [pc, 0x19c] |
0x0001d5d8 mov r2, r0 | r2 = r0;
0x0001d5da movs r0, 0 | r0 = 0;
0x0001d5dc add r1, pc | r1 = 0x3ad56;
0x0001d5de bl 0x44820 | zbx_dsprintf ()
0x0001d5e2 movs r1, 9 | r1 = 9;
0x0001d5e4 str.w r0, [sl, 0x20] | __asm ("str.w r0, [sl, 0x20]");
0x0001d5e8 mov r0, r8 | r0 = r8;
0x0001d5ea blx 0xe2e0 | fcn_0000e2e0 ();
0x0001d5ee b 0x1d49e | goto label_6;
| label_26:
0x0001d5f0 ldr.w r0, [sl, 0x20] | r0 = *((sl + 0x20));
0x0001d5f4 b 0x1d584 | goto label_7;
| label_16:
0x0001d5f6 ldr.w r0, [sb] | r0 = *(sb);
0x0001d5fa blx 0xe0ac | fcn_0000e0ac ();
0x0001d5fe ldr.w r0, [sb, 4] | r0 = *((sb + 4));
0x0001d602 blx 0xe0ac | fcn_0000e0ac ();
0x0001d606 ldr.w r3, [sl, 0x28] | r3 = *((sl + 0x28));
0x0001d60a orr r3, r3, 0x20 | r3 |= 0x20;
0x0001d60e str.w r3, [sl, 0x28] | __asm ("str.w r3, [sl, 0x28]");
0x0001d612 blx 0xe3d4 | r0 = fcn_0000e3d4 ();
0x0001d616 ldr r0, [r0] | r0 = *(r0);
0x0001d618 bl 0x31154 | strerror_from_system ();
0x0001d61c ldr r1, [pc, 0x158] |
0x0001d61e mov r2, r0 | r2 = r0;
0x0001d620 movs r0, 0 | r0 = 0;
0x0001d622 add r1, pc | r1 = 0x3ad9e;
0x0001d624 bl 0x44820 | zbx_dsprintf ()
0x0001d628 str.w r0, [sl, 0x20] | __asm ("str.w r0, [sl, 0x20]");
0x0001d62c b 0x1d4f6 | goto label_2;
| label_22:
0x0001d62e ldrb r7, [r6, 4] | r7 = *((r6 + 4));
0x0001d630 mov r5, r6 | r5 = r6;
0x0001d632 ldr r4, [r5], 5 | r4 = *(r5);
| r5 += 5;
0x0001d636 cmp r7, 0x6d |
| if (r7 == 0x6d) {
0x0001d638 beq 0x1d6c4 | goto label_27;
| }
0x0001d63a ldr r1, [pc, 0x140] |
0x0001d63c mov r0, r5 | r0 = r5;
0x0001d63e add r1, pc | r1 = 0x3adc0;
0x0001d640 blx 0xe3b0 | r0 = fcn_0000e3b0 ();
0x0001d644 cmp r0, 0 |
| if (r0 == 0) {
0x0001d646 beq 0x1d6c4 | goto label_27;
| }
0x0001d648 subs r7, 0x64 | r7 -= 0x64;
0x0001d64a cmp r7, 0x11 |
0x0001d64c bhi 0x1d5b6 |
| } while (r7 > 0x11);
0x0001d64e adr r3, 8 | r3 = 8;
0x0001d650 ldr.w r7, [r3, r7, lsl 2] | offset_0 = r7 << 2;
| r7 = *((r3 + offset_0));
0x0001d654 add r3, r7 | r3 += r7;
0x0001d656 bx r3 | return uint32_t (*r3)() ();
| label_21:
0x0001d6a0 ldr.w r3, [sl, 0x28] | r3 = *((sl + 0x28));
0x0001d6a4 mov r0, r4 | r0 = r4;
0x0001d6a6 ldr r1, [pc, 0xd8] |
0x0001d6a8 orr r3, r3, 0x20 | r3 |= 0x20;
0x0001d6ac add r1, pc | r1 = 0x3ae32;
0x0001d6ae str.w r3, [sl, 0x28] | __asm ("str.w r3, [sl, 0x28]");
0x0001d6b2 bl 0x44820 | zbx_dsprintf ()
0x0001d6b6 movs r1, 9 | r1 = 9;
0x0001d6b8 str.w r0, [sl, 0x20] | __asm ("str.w r0, [sl, 0x20]");
0x0001d6bc mov r0, r8 | r0 = r8;
0x0001d6be blx 0xe2e0 | fcn_0000e2e0 ();
0x0001d6c2 b 0x1d4f2 | goto label_4;
| label_27:
0x0001d6c4 ldr.w r2, [sl, 0x28] | r2 = *((sl + 0x28));
0x0001d6c8 mov r3, r5 | r3 = r5;
0x0001d6ca ldr r0, [pc, 0xb8] |
0x0001d6cc movw r1, 0x6bc | r1 = 0x6bc;
0x0001d6d0 orr r2, r2, 0x20 | r2 |= 0x20;
0x0001d6d4 str.w r2, [sl, 0x28] | __asm ("str.w r2, [sl, 0x28]");
0x0001d6d8 add r0, pc | r0 = 0x3ae62;
0x0001d6da movs r2, 0 | r2 = 0;
0x0001d6dc bl 0x40ed8 | zbx_strdup2 ();
0x0001d6e0 str.w r0, [sl, 0x20] | __asm ("str.w r0, [sl, 0x20]");
0x0001d6e4 b 0x1d5b6 | goto label_8;
| label_17:
0x0001d7de ldr.w r3, [fp] | r3 = *(fp);
0x0001d7e2 cmp r3, 3 |
| if (r3 > 3) {
0x0001d7e4 bgt 0x1d8e0 | goto label_28;
| }
| label_13:
0x0001d7e6 bl 0x361a8 | zbx_set_metric_thread_signal_handler ();
0x0001d7ea ldr.w r0, [sb] | r0 = *(sb);
0x0001d7ee blx 0xe0ac | fcn_0000e0ac ();
0x0001d7f2 mov r1, sl | r1 = sl;
0x0001d7f4 mov r0, r5 | r0 = r5;
0x0001d7f6 blx r7 | r0 = uint32_t (*r7)(uint32_t, uint32_t) (r0, r1);
0x0001d7f8 mov r4, r0 | r4 = r0;
| if (r0 != 0) {
0x0001d7fa cbnz r0, 0x1d84c | goto label_29;
| }
0x0001d7fc ldr.w r3, [sl, 0x28] | r3 = *((sl + 0x28));
0x0001d800 lsls r5, r3, 0x1c | r5 = r3 << 0x1c;
| if (r5 < r3) {
0x0001d802 bmi 0x1d8dc | goto label_30;
| }
0x0001d804 lsls r0, r3, 0x1d | r0 = r3 << 0x1d;
| if (r0 < r3) {
0x0001d806 bmi 0x1d8d8 | goto label_31;
| }
0x0001d808 lsls r1, r3, 0x1f | r1 = r3 << 0x1f;
| if (r1 < r3) {
0x0001d80a bmi 0x1d8d4 | goto label_32;
| }
0x0001d80c lsls r2, r3, 0x1e | r2 = r3 << 0x1e;
| if (r2 < r3) {
0x0001d80e bmi 0x1d8c2 | goto label_33;
| }
0x0001d810 lsls r7, r3, 0x1a | r7 = r3 << 0x1a;
| if (r7 < r3) {
0x0001d812 bmi 0x1d85a | goto label_34;
| }
| label_11:
0x0001d814 movs r4, 0 | r4 = 0;
| do {
0x0001d816 movs r3, 0x2d | r3 = 0x2d;
0x0001d818 str r4, [r6] | *(r6) = r4;
0x0001d81a strb r3, [r6, 4] | *((r6 + 4)) = r3;
0x0001d81c movs r2, 5 | r2 = 5;
0x0001d81e ldr.w r0, [sb, 4] | r0 = *((sb + 4));
0x0001d822 mov r1, r6 | r1 = r6;
0x0001d824 bl 0x3fc84 | r0 = zbx_write_all ();
0x0001d828 mov r4, r0 | r4 = r0;
| label_9:
0x0001d82a mov r0, r6 | r0 = r6;
0x0001d82c blx 0xde30 | fcn_0000de30 ();
0x0001d830 mov r0, sl | r0 = sl;
0x0001d832 bl 0x1c2c0 | free_result ();
0x0001d836 ldr.w r0, [sb, 4] | r0 = *((sb + 4));
0x0001d83a blx 0xe0ac | fcn_0000e0ac ();
0x0001d83e subs r0, r4, 0 | r0 = r4 - 0;
0x0001d840 it ne |
| if (r0 == r4) {
0x0001d842 movne r0, 1 | r0 = 1;
| }
0x0001d844 blx 0xe3bc | fcn_0000e3bc ();
| label_25:
0x0001d848 blx 0xe158 | fcn_0000e158 ();
| label_29:
0x0001d84c cmp.w sl, 0 |
| if (sl == 0) {
0x0001d850 beq 0x1d8ee | goto label_35;
| }
0x0001d852 ldr.w r3, [sl, 0x28] | r3 = *((sl + 0x28));
0x0001d856 lsls r5, r3, 0x1a | r5 = r3 << 0x1a;
0x0001d858 bpl 0x1d816 |
| } while (r5 >= r3);
| label_34:
0x0001d85a add.w r5, sl, 0x20 | r5 = sl + 0x20;
0x0001d85e movs r7, 0x6d | r7 = 0x6d;
| label_10:
0x0001d860 ldr r0, [r5] | r0 = *(r5);
0x0001d862 blx 0xdf68 | r0 = fcn_0000df68 ();
0x0001d866 add.w fp, r0, 6 |
0x0001d86a mov r8, r0 | r8 = r0;
0x0001d86c cmp.w fp, 0x800 |
| if (fp < 0x800) {
0x0001d870 bls 0x1d8a2 | goto label_36;
| }
0x0001d872 vmov.f64 d16, 1.500000e+00 | __asm ("vmov.f64 d16, 1");
0x0001d876 mov.w r3, 0x800 | r3 = 0x800;
| do {
0x0001d87a vmov s15, r3 | __asm ("vmov s15, r3");
0x0001d87e vcvt.f64.u32 d7, s15 | __asm ("vcvt.f64.u32 d7, s15");
0x0001d882 vmul.f64 d7, d7, d16 | __asm ("vmul.f64 d7, d7, d16");
0x0001d886 vcvt.u32.f64 s15, d7 | __asm ("vcvt.u32.f64 s15, d7");
0x0001d88a vmov r3, s15 | __asm ("vmov r3, s15");
0x0001d88e cmp fp, r3 |
0x0001d890 bhi 0x1d87a |
| } while (fp > r3);
0x0001d892 ldr r0, [pc, 0x80] |
0x0001d894 mov r2, r6 | r2 = r6;
0x0001d896 movw r1, 0x697 | r1 = 0x697;
0x0001d89a add r0, pc | r0 = 0x3b1b4;
0x0001d89c bl 0x40e68 | r0 = zbx_realloc2 ();
0x0001d8a0 mov r6, r0 | r6 = r0;
| label_36:
0x0001d8a2 str r4, [r6] | *(r6) = r4;
0x0001d8a4 add.w r2, r8, 1 | r2 = r8 + 1;
0x0001d8a8 strb r7, [r6, 4] | *((r6 + 4)) = r7;
0x0001d8aa adds r0, r6, 5 | r0 = r6 + 5;
0x0001d8ac ldr r1, [r5] | r1 = *(r5);
0x0001d8ae blx 0xdf84 | fcn_0000df84 ();
0x0001d8b2 ldr.w r0, [sb, 4] | r0 = *((sb + 4));
0x0001d8b6 mov r2, fp | r2 = fp;
0x0001d8b8 mov r1, r6 | r1 = r6;
0x0001d8ba bl 0x3fc84 | r0 = zbx_write_all ();
0x0001d8be mov r4, r0 | r4 = r0;
0x0001d8c0 b 0x1d82a | goto label_9;
| label_33:
0x0001d8c2 movs r7, 0x64 | r7 = 0x64;
| label_12:
0x0001d8c4 movs r1, 8 | r1 = 8;
0x0001d8c6 mov r0, sl | r0 = sl;
0x0001d8c8 bl 0x1ced8 | r0 = get_result_value_by_type ();
0x0001d8cc mov r5, r0 | r5 = r0;
0x0001d8ce cmp r0, 0 |
| if (r0 != 0) {
0x0001d8d0 bne 0x1d860 | goto label_10;
| }
0x0001d8d2 b 0x1d814 | goto label_11;
| label_32:
0x0001d8d4 movs r7, 0x75 | r7 = 0x75;
0x0001d8d6 b 0x1d8c4 | goto label_12;
| label_31:
0x0001d8d8 movs r7, 0x73 | r7 = 0x73;
0x0001d8da b 0x1d8c4 | goto label_12;
| label_30:
0x0001d8dc movs r7, 0x74 | r7 = 0x74;
0x0001d8de b 0x1d8c4 | goto label_12;
| label_28:
0x0001d8e0 ldr r1, [pc, 0x34] |
0x0001d8e2 movs r0, 4 | r0 = 4;
0x0001d8e4 ldr r2, [r5] | r2 = *(r5);
0x0001d8e6 add r1, pc | r1 = 0x3b202;
0x0001d8e8 bl 0x30d1c | zbx_zabbix_log ();
0x0001d8ec b 0x1d7e6 | goto label_13;
| label_35:
0x0001d8ee ldr r3, [pc, 0x2c] |
0x0001d8f0 movw r2, 0x5ce | r2 = 0x5ce;
0x0001d8f4 ldr r1, [pc, 0x28] |
0x0001d8f6 ldr r0, [pc, 0x2c] |
0x0001d8f8 add r3, pc | r3 = 0x3b21a;
0x0001d8fa add r1, pc | r1 = 0x3b21e;
0x0001d8fc adds r3, 0x38 | r3 += 0x38;
0x0001d8fe add r0, pc | r0 = 0x3b228;
0x0001d900 blx 0xdde4 | shmdt ();
0x0001d904 adds r1, 0x2c | r1 += 0x2c;
0x0001d906 movs r3, r0 | r3 = r0;
0x0001d908 adds r5, 0xd2 | r5 += 0xd2;
0x0001d90a movs r3, r0 | r3 = r0;
0x0001d90c adds r1, 4 | r1 += 4;
0x0001d90e movs r3, r0 | r3 = r0;
0x0001d910 adds r4, 0x10 | r4 += 0x10;
0x0001d912 movs r3, r0 | r3 = r0;
0x0001d914 adds r0, 0x3e | r0 += 0x3e;
0x0001d916 movs r3, r0 | r3 = r0;
0x0001d918 adds r3, 0x5a | r3 += 0x5a;
0x0001d91a movs r3, r0 | r3 = r0;
0x0001d91c adds r4, 0xac | r4 += 0xac;
0x0001d91e movs r3, r0 | r3 = r0;
0x0001d920 cmp r7, 0xde |
0x0001d922 movs r3, r0 | r3 = r0;
0x0001d924 adds r2, 0xea | r2 += 0xea;
0x0001d926 movs r3, r0 | r3 = r0;
| }
; assembly | /* r2dec pseudo code output */
| /* /logs/firmware/patool_extraction/rootfs.img_unblob_extracted/rootfs.img_extract/0-80367616.squashfs_v4_le_extract/usr/sbin/zabbix_agentd @ 0x2ea64 */
| #include <stdint.h>
|
; (fcn) sym.zbx_get_remote_zabbix_stats_queue () | void zbx_get_remote_zabbix_stats_queue (int16_t arg1, int16_t arg2, int16_t arg3, int16_t arg4) {
| int16_t var_0h_2;
| int16_t var_4h_3;
| int16_t var_14h;
| int16_t var_18h_2;
| int16_t var_1ch;
| int16_t var_26h;
| int16_t var_2ch;
| int16_t var_1000h_2;
| int16_t var_0h;
| r0 = arg1;
| r1 = arg2;
| r2 = arg3;
| r3 = arg4;
0x0002ea64 mvnsmi lr, 0xb4000 | __asm ("mvnsmi lr, 0xb4000");
0x0002ea68 sub.w sp, sp, 0x1020 |
0x0002ea6c sub sp, 4 |
0x0002ea6e mov r6, r2 | r6 = r2;
0x0002ea70 add.w r2, sp, 0x1040 | r2 += var_0h;
0x0002ea74 mov r5, r3 | r5 = r3;
0x0002ea76 ldr.w sb, [r2] | sb = *(r2);
0x0002ea7a mov r8, r1 | r8 = r1;
0x0002ea7c ldr r2, [pc, 0xc0] |
0x0002ea7e add.w r1, sp, 0x1000 | r1 += var_1000h_2;
0x0002ea82 ldr r3, [pc, 0xc0] | r3 = *(0x2eb46);
0x0002ea84 add r4, sp, 4 | r4 += var_4h_3;
0x0002ea86 adds r1, 0x1c | r1 += 0x1c;
0x0002ea88 mov r7, r0 | r7 = r0;
0x0002ea8a add r2, pc | r2 = 0x5d5ce;
0x0002ea8c mov r0, r4 | r0 = r4;
0x0002ea8e ldr r3, [r2, r3] |
0x0002ea90 ldr r3, [r3] | r3 = imp.__aeabi_unwind_cpp_pr0;
0x0002ea92 str r3, [r1] | *(r1) = r3;
0x0002ea94 mov.w r3, 0 | r3 = 0;
0x0002ea98 mov.w r1, 0x1000 | r1 = 0x1000;
0x0002ea9c bl 0x3aae4 | zbx_json_init ();
0x0002eaa0 ldr r2, [pc, 0xa4] |
0x0002eaa2 movs r3, 1 | r3 = 1;
0x0002eaa4 ldr r1, [pc, 0xa4] |
0x0002eaa6 mov r0, r4 | r0 = r4;
0x0002eaa8 add r2, pc | r2 = 0x5d5f4;
0x0002eaaa add r1, pc | r1 = 0x5d5fa;
0x0002eaac bl 0x3ac9c | zbx_json_addstring ();
0x0002eab0 ldr r1, [pc, 0x9c] |
0x0002eab2 mov r0, r4 | r0 = r4;
0x0002eab4 ldr r2, [pc, 0x9c] |
0x0002eab6 movs r3, 1 | r3 = 1;
0x0002eab8 add r1, pc | r1 = 0x5d60c;
0x0002eaba add r2, pc | r2 = 0x5d612;
0x0002eabc bl 0x3ac9c | zbx_json_addstring ();
0x0002eac0 ldr r1, [pc, 0x94] |
0x0002eac2 mov r0, r4 | r0 = r4;
0x0002eac4 add r1, pc | r1 = 0x5d620;
0x0002eac6 bl 0x3ac94 | zbx_json_addobject ();
| if (r6 != 0) {
0x0002eaca cbz r6, 0x2ead0 |
0x0002eacc ldrb r3, [r6] | r3 = *(r6);
| if (r3 != 0) {
0x0002eace cbnz r3, 0x2eb2a | goto label_18;
| }
| }
| if (r5 == 0) {
| label_0:
0x0002ead0 cbz r5, 0x2ead6 | goto label_19;
| }
0x0002ead2 ldrb r3, [r5] | r3 = *(r5);
0x0002ead4 cbnz r3, 0x2eb1a |
| while (1) {
| label_19:
0x0002ead6 mov r0, r4 | r0 = r4;
0x0002ead8 bl 0x3af6c | zbx_json_close ();
0x0002eadc mov r3, sb | r3 = sb;
0x0002eade mov r2, r8 | r2 = r8;
0x0002eae0 mov r1, r7 | r1 = r7;
0x0002eae2 mov r0, r4 | r0 = r4;
0x0002eae4 bl 0x2e780 | fcn_0002e780 (r0, r1, r2, r3);
0x0002eae8 mov r0, r4 | r0 = r4;
0x0002eaea bl 0x3ac14 | zbx_json_free ();
0x0002eaee ldr r2, [pc, 0x6c] |
0x0002eaf0 add.w r1, sp, 0x1000 | r1 += var_1000h_2;
0x0002eaf4 ldr r3, [pc, 0x4c] | r3 = *(0x2eb44);
0x0002eaf6 adds r1, 0x1c | r1 += 0x1c;
0x0002eaf8 ldr.w r0, [sb, 0x28] | r0 = *((sb + 0x28));
0x0002eafc add r2, pc | r2 = 0x5d65e;
0x0002eafe ldr r3, [r2, r3] | r3 = imp.__aeabi_unwind_cpp_pr0;
0x0002eb00 sbfx r0, r0, 5, 1 | __asm ("sbfx r0, r0, 5, 1");
0x0002eb04 ldr r2, [r3] | r2 = imp.__aeabi_unwind_cpp_pr0;
0x0002eb06 ldr r3, [r1] | r3 = *(r1);
0x0002eb08 eors r2, r3 | r2 ^= r3;
0x0002eb0a mov.w r3, 0 | r3 = 0;
| if (r2 != r3) {
0x0002eb0e bne 0x2eb3a | goto label_20;
| }
0x0002eb10 add.w sp, sp, 0x1020 |
0x0002eb14 add sp, 4 |
0x0002eb16 pop.w {r4, r5, r6, r7, r8, sb, pc} |
0x0002eb1a ldr r1, [pc, 0x44] |
0x0002eb1c mov r2, r5 | r2 = r5;
0x0002eb1e movs r3, 1 | r3 = 1;
0x0002eb20 mov r0, r4 | r0 = r4;
0x0002eb22 add r1, pc | r1 = 0x5d688;
0x0002eb24 bl 0x3ac9c | zbx_json_addstring ();
0x0002eb28 b 0x2ead6 |
| }
| label_18:
0x0002eb2a ldr r1, [pc, 0x38] |
0x0002eb2c mov r2, r6 | r2 = r6;
0x0002eb2e movs r3, 1 | r3 = 1;
0x0002eb30 mov r0, r4 | r0 = r4;
0x0002eb32 add r1, pc | r1 = 0x5d69c;
0x0002eb34 bl 0x3ac9c | zbx_json_addstring ();
0x0002eb38 b 0x2ead0 | goto label_0;
| label_20:
0x0002eb3a blx 0xe158 | fcn_0000e158 ();
0x0002eb3e nop |
| if (r3 == 1) {
0x0002eb40 bne 0x2ebe0 |
0x0002eb42 movs r2, r0 | r2 = r0;
0x0002eb44 lsls r4, r2, 0xe | r4 = r2 << 0xe;
0x0002eb46 movs r0, r0 |
0x0002eb48 cmp r8, sl |
0x0002eb4a movs r2, r0 | r2 = r0;
0x0002eb4c invalid |
| }
0x0002ebe0 mov r0, r7 | r0 = r7;
0x0002ebe2 str r5, [sp] | *(sp) = r5;
0x0002ebe4 bl 0x2ea64 | zbx_get_remote_zabbix_stats_queue ();
0x0002ebe8 subs r0, 0 |
0x0002ebea it ne |
| if (r0 == 0) {
0x0002ebec movne r0, 1 | r0 = 1;
| }
0x0002ebee b 0x2ec0e |
0x0002ec0e ldr r2, [pc, 0xb8] |
0x0002ec10 ldr r3, [pc, 0xa8] | r3 = *(0x2ecbc);
0x0002ec12 add r2, pc | r2 = 0x5d8e0;
0x0002ec14 ldr r3, [r2, r3] | r3 = imp.__aeabi_unwind_cpp_pr0;
0x0002ec16 ldr r2, [r3] | r2 = imp.__aeabi_unwind_cpp_pr0;
0x0002ec18 ldr r3, [sp, 0x14] | r3 = var_14h;
0x0002ec1a eors r2, r3 | r2 ^= r3;
0x0002ec1c mov.w r3, 0 | r3 = 0;
| if (r2 == r3) {
0x0002ec20 bne 0x2ecb4 |
0x0002ec22 add sp, 0x1c |
0x0002ec24 pop {r4, r5, r6, r7, pc} |
| }
0x0002ecb4 blx 0xe158 | fcn_0000e158 ();
| if (r2 != r3) {
0x0002ecb8 beq 0x2ed88 |
0x0002ecba movs r2, r0 | r2 = r0;
0x0002ecbc lsls r4, r2, 0xe | r4 = r2 << 0xe;
0x0002ecbe movs r0, r0 |
0x0002ecc0 ldr r7, [pc, 0x350] | r7 = *(0x2f014);
0x0002ecc2 movs r2, r0 | r2 = r0;
0x0002ecc4 ldr r6, [pc, 0x248] | r6 = *(0x2ef10);
0x0002ecc6 movs r2, r0 | r2 = r0;
0x0002ecc8 ldm r7, {r1, r2, r6, r7} | r1 = *(r7);
| r2 = *((r7 + 4));
| r6 = *((r7 + 8));
| r7 = *((r7 + 12));
0x0002ecca movs r2, r0 | r2 = r0;
0x0002eccc movs r2, 0xa0 | r2 = 0xa0;
0x0002ecce movs r2, r0 | r2 = r0;
0x0002ecd0 ldr r6, [pc, 0x3c0] | r6 = *(0x2f094);
0x0002ecd2 movs r2, r0 | r2 = r0;
0x0002ecd4 lsrs r4, r0, 8 | r4 = r0 >> 8;
0x0002ecd6 movs r2, r0 | r2 = r0;
0x0002ecd8 ldr r6, [pc, 0x340] | r6 = *(0x2f01c);
0x0002ecda movs r2, r0 | r2 = r0;
0x0002ecdc ldr r6, [pc, 0xa0] | r6 = *(0x2ed80);
0x0002ecde movs r2, r0 | r2 = r0;
0x0002ece0 ldr r6, [pc, 0x88] | r6 = *(0x2ed6c);
0x0002ece2 movs r2, r0 | r2 = r0;
0x0002ece4 movs r0, 0xe2 | r0 = 0xe2;
0x0002ece6 movs r2, r0 | r2 = r0;
0x0002ece8 ldr r6, [pc, 0x1f8] | r6 = *(0x2eee4);
0x0002ecea movs r2, r0 | r2 = r0;
0x0002ecec movs r0, r0 |
0x0002ecee movs r0, r0 |
| }
0x0002ed88 add.w r6, r0, r0, lsl 18 | r6 = r0 + (r0 << 18);
0x0002ed8c cmp r0, 0 |
| if (r0 == 0) {
0x0002ed8e beq 0x2ee46 | goto label_21;
| }
| if (r7 != 0) {
| label_2:
0x0002ed90 cbz r7, 0x2ed9a |
0x0002ed92 ldrb r3, [r7] | r3 = *(r7);
0x0002ed94 cmp r3, 0 |
| if (r3 != 0) {
0x0002ed96 bne.w 0x2f0f4 | goto label_22;
| }
| }
| if (r5 != 0) {
0x0002ed9a cbz r5, 0x2eda4 |
0x0002ed9c ldrb r3, [r5] | r3 = *(r5);
0x0002ed9e cmp r3, 0 |
| if (r3 != 0) {
0x0002eda0 bne.w 0x2f0f4 | goto label_22;
| }
| }
0x0002eda4 ldr.w r5, [pc, 0x480] |
0x0002eda8 movs r2, 7 | r2 = 7;
0x0002edaa mov r0, r4 | r0 = r4;
0x0002edac add r5, pc | r5 = 0x5dfd8;
0x0002edae mov r1, r5 | r1 = r5;
0x0002edb0 bl 0x44f30 | r0 = zbx_strncasecmp ();
0x0002edb4 cmp r0, 0 |
| if (r0 != 0) {
0x0002edb6 bne.w 0x2ef86 | goto label_23;
| }
0x0002edba movs r1, 0x23 | r1 = 0x23;
0x0002edbc mov r0, r4 | r0 = r4;
0x0002edbe blx 0xdcd4 | r0 = fcn_0000dcd4 ();
0x0002edc2 cmp r0, 0 |
| if (r0 == 0) {
0x0002edc4 beq.w 0x2f12a | goto label_24;
| }
0x0002edc8 ldr.w r2, [pc, 0x460] |
0x0002edcc add r2, pc | r2 = 0x5dffc;
| label_3:
0x0002edce ldr.w r1, [pc, 0x460] |
0x0002edd2 subs r3, r0, r4 | r3 = r0 - r4;
0x0002edd4 str r4, [sp] | *(sp) = r4;
0x0002edd6 movs r0, 0 | r0 = 0;
0x0002edd8 add r1, pc | r1 = 0x5e00e;
0x0002edda bl 0x44820 | r0 = zbx_dsprintf ()
0x0002edde mov r8, r0 | r8 = r0;
| label_4:
0x0002ede0 ldr.w r1, [pc, 0x450] | r1 = *(0x0002f234);
0x0002ede4 add.w r5, r8, 7 | r5 = r8 + 7;
0x0002ede8 mov r0, r5 | r0 = r5;
0x0002edea add r1, pc | r1 += pc;
0x0002edec blx 0xe2b0 | r0 = fcn_0000e2b0 ();
0x0002edf0 mov sb, r0 | sb = r0;
0x0002edf2 cmp r0, 0 |
| if (r0 == 0) {
0x0002edf4 beq.w 0x2f130 | goto label_25;
| }
0x0002edf8 mov r2, r0 | r2 = r0;
0x0002edfa movs r1, 0x40 | r1 = 0x40;
0x0002edfc mov r0, r5 | r0 = r5;
0x0002edfe blx 0xe394 | r0 = fcn_0000e394 ();
0x0002ee02 cmp r0, 0 |
| if (r0 != 0) {
0x0002ee04 bne.w 0x2f10c | goto label_26;
| }
0x0002ee08 add.w r2, sb, -1 | r2 = sb + -1;
0x0002ee0c add.w r7, sb, 7 | r7 = sb + 7;
0x0002ee10 add r2, r5 | r2 += r5;
0x0002ee12 add r7, r8 | r7 += r8;
0x0002ee14 mov r3, r5 | r3 = r5;
0x0002ee16 b 0x2ee32 |
| while (r0 == 0) {
0x0002ee18 ldrb r1, [r3, -0x1] | r1 = *((r3 - 0x1));
0x0002ee1c cmp r1, 0x3a |
| if (r1 == 0x3a) {
0x0002ee1e beq.w 0x2f090 | goto label_27;
| }
0x0002ee22 sub.w r0, r1, 0x5b | r0 = r1 - 0x5b;
0x0002ee26 clz r0, r0 | r0 &= r0;
0x0002ee2a lsrs r0, r0, 5 | r0 >>= 5;
| label_1:
0x0002ee2c cmp r3, r7 |
| if (r3 == r7) {
0x0002ee2e beq.w 0x2f19a | goto label_28;
| }
0x0002ee32 mov r4, r3 | r4 = r3;
0x0002ee34 ldrb r1, [r3], 1 | r1 = *(r3);
| r3++;
0x0002ee38 cmp r0, 0 |
0x0002ee3a beq 0x2ee18 |
| }
0x0002ee3c subs.w r0, r1, 0x5d | r0 = r1 - 0x5d;
0x0002ee40 it ne |
| if (r0 == r1) {
0x0002ee42 movne r0, 1 | r0 = 1;
| }
0x0002ee44 b 0x2ee2c | goto label_1;
| label_21:
0x0002ee46 movs r1, 0x3a | r1 = 0x3a;
0x0002ee48 mov r0, r4 | r0 = r4;
0x0002ee4a blx 0xdcd4 | r0 = fcn_0000dcd4 ();
| if (r0 == 0) {
0x0002ee4e cbz r0, 0x2ee5c | goto label_29;
| }
0x0002ee50 adds r0, 1 | r0++;
0x0002ee52 movs r1, 0x3a | r1 = 0x3a;
0x0002ee54 blx 0xdcd4 | r0 = fcn_0000dcd4 ();
0x0002ee58 cmp r0, 0 |
| if (r0 == 0) {
0x0002ee5a beq 0x2ed90 | goto label_2;
| }
| if (r7 != 0) {
| label_29:
0x0002ee5c cbz r7, 0x2ee66 |
0x0002ee5e ldrb r3, [r7] | r3 = *(r7);
0x0002ee60 cmp r3, 0 |
| if (r3 != 0) {
0x0002ee62 bne.w 0x2eff6 | goto label_30;
| }
| }
0x0002ee66 add.w r7, sp, 0x26 | r7 += var_26h;
0x0002ee6a movs r3, 0x50 | r3 = 0x50;
0x0002ee6c strh r3, [r7] | *(r7) = r3;
| label_8:
0x0002ee6e cmp r5, 0 |
| if (r5 == 0) {
0x0002ee70 beq.w 0x2eff0 | goto label_31;
| }
| label_7:
0x0002ee74 ldr.w sb, [pc, 0x3c0] |
0x0002ee78 mov r3, r5 | r3 = r5;
0x0002ee7a movs r2, 0 | r2 = 0;
0x0002ee7c mov.w r1, 0x172 | r1 = 0x172;
0x0002ee80 add sb, pc | sb = 0x5e0bc;
0x0002ee82 mov r0, sb | r0 = sb;
0x0002ee84 bl 0x40ed8 | zbx_strdup2 ();
0x0002ee88 mov r3, r4 | r3 = r4;
0x0002ee8a ldr r2, [r6] | r2 = *(r6);
0x0002ee8c movw r1, 0x173 | r1 = 0x173;
0x0002ee90 mov r5, r0 | r5 = r0;
0x0002ee92 mov r0, sb | r0 = sb;
0x0002ee94 bl 0x40ed8 | zbx_strdup2 ();
0x0002ee98 movs r1, 0x3a | r1 = 0x3a;
0x0002ee9a str r0, [r6] | *(r6) = r0;
0x0002ee9c blx 0xdcd4 | r0 = fcn_0000dcd4 ();
0x0002eea0 subs r4, r0, 0 | r4 = r0 - 0;
0x0002eea2 it ne |
| if (r4 == r0) {
0x0002eea4 movne r4, 1 | r4 = 1;
| }
| label_16:
0x0002eea6 mov r0, r6 | r0 = r6;
0x0002eea8 bl 0x4bc70 | r0 = zbx_http_punycode_encode_url ();
0x0002eeac cmp r0, 0 |
| if (r0 != 0) {
0x0002eeae bne.w 0x2efda | goto label_32;
| }
0x0002eeb0 strh r4, [r2, 4] | *((r2 + 4)) = r4;
0x0002eeb2 ldr r2, [pc, 0x388] | r2 = *(0x2f23e);
0x0002eeb4 ldrh r3, [r7] | r3 = *(r7);
0x0002eeb6 add r7, sp, 0x2c | r7 += var_2ch;
0x0002eeb8 ldr.w r2, [sl, r2] | r2 = *((sl + r2));
0x0002eebc strd r0, r0, [sp, 8] | __asm ("strd r0, r0, [sp, 8]");
0x0002eec0 movs r0, 1 | r0 = 1;
0x0002eec2 ldr r1, [r2] | r1 = *(0x2f23e);
0x0002eec4 ldr r2, [pc, 0x378] |
0x0002eec6 str r0, [sp, 4] | var_4h_3 = r0;
0x0002eec8 mov r0, r7 | r0 = r7;
0x0002eeca ldr.w r2, [sl, r2] | r2 = *((sl + r2));
0x0002eece ldr r2, [r2] | r2 = *(0x2f240);
0x0002eed0 str r2, [sp] | *(sp) = r2;
0x0002eed2 ldr r2, [r6] | r2 = *(r6);
0x0002eed4 bl 0x369e4 | r0 = zbx_tcp_connect ();
| if (r0 == 0) {
0x0002eed8 cbnz r0, 0x2ef2e |
0x0002eeda ldrb r3, [r5] | r3 = *(r5);
0x0002eedc cmp r3, 0x2f |
| if (r3 == 0x2f) {
0x0002eede beq 0x2efd4 | goto label_33;
| }
0x0002eee0 ldr r2, [pc, 0x360] |
0x0002eee2 add r2, pc | r2 = 0x5e12a;
| label_5:
0x0002eee4 ldr r1, [r6] | r1 = *(r6);
0x0002eee6 cmp r4, 0 |
| if (r4 != 0) {
0x0002eee8 bne.w 0x2f036 | goto label_34;
| }
0x0002eeec ldr r3, [pc, 0x358] |
0x0002eeee add r3, pc | r3 = 0x5e13a;
0x0002eef0 mov r0, r3 | r0 = r3;
| label_9:
0x0002eef2 strd r1, r0, [sp, 4] | __asm ("strd r1, r0, [sp, 4]");
0x0002eef6 movs r0, 0 | r0 = 0;
0x0002eef8 ldr r1, [pc, 0x350] |
0x0002eefa str r3, [sp] | *(sp) = r3;
0x0002eefc mov r3, r5 | r3 = r5;
0x0002eefe add r1, pc | r1 = 0x5e14e;
0x0002ef00 bl 0x44820 | r0 = zbx_dsprintf ()
0x0002ef04 mov sb, r0 | sb = r0;
0x0002ef06 blx 0xdf68 | fcn_0000df68 ();
0x0002ef0a movs r3, 0 | r3 = 0;
0x0002ef0c mov r2, r0 | r2 = r0;
0x0002ef0e mov r1, sb | r1 = sb;
0x0002ef10 mov r0, r7 | r0 = r7;
0x0002ef12 strd r3, r3, [sp] | __asm ("strd r3, r3, [sp]");
0x0002ef16 bl 0x36a4c | r0 = zbx_tcp_send_ext ();
0x0002ef1a mov r4, r0 | r4 = r0;
0x0002ef1c cmp r0, 0 |
| if (r0 == 0) {
0x0002ef1e beq.w 0x2f040 | goto label_35;
| }
| label_10:
0x0002ef22 mov r0, sb | r0 = sb;
0x0002ef24 blx 0xde30 | fcn_0000de30 ();
0x0002ef28 mov r0, r7 | r0 = r7;
0x0002ef2a bl 0x3681c | zbx_tcp_close ();
| }
0x0002ef2e bl 0x36860 | zbx_socket_strerror ();
0x0002ef32 ldr r1, [pc, 0x31c] |
0x0002ef34 mov r2, r0 | r2 = r0;
0x0002ef36 movs r0, 0 | r0 = 0;
0x0002ef38 add r1, pc | r1 = 0x5e18e;
0x0002ef3a bl 0x44820 | zbx_dsprintf ()
| label_6:
0x0002ef3e ldr r3, [sp, 0x14] | r3 = var_14h;
0x0002ef40 str r0, [r3] | *(r3) = r0;
0x0002ef42 cmp.w r8, 0 |
| if (r8 != 0) {
0x0002ef46 beq 0x2ef4e |
0x0002ef48 mov r0, r8 | r0 = r8;
0x0002ef4a blx 0xde30 | fcn_0000de30 ();
| }
0x0002ef4e cmp r5, 0 |
| if (r5 == 0) {
0x0002ef50 beq.w 0x2f0f0 | goto label_13;
| }
0x0002ef54 movs r4, 1 | r4 = 1;
| label_11:
0x0002ef56 mov r0, r5 | r0 = r5;
0x0002ef58 blx 0xde30 | fcn_0000de30 ();
| label_12:
0x0002ef5c ldr r0, [r6] | r0 = *(r6);
| if (r0 == 0) {
0x0002ef5e cbz r0, 0x2ef64 | void (*0x2ef64)() ();
| }
0x0002ef60 blx 0xde30 | fcn_0000de30 ();
| label_23:
0x0002ef86 ldr r1, [pc, 0x2d0] |
0x0002ef88 mov r0, r4 | r0 = r4;
0x0002ef8a add r1, pc | r1 = 0x5e1e8;
0x0002ef8c blx 0xe090 | r0 = res_ninit ();
0x0002ef90 mov r7, r0 | r7 = r0;
| if (r0 != 0) {
0x0002ef92 cbz r0, 0x2efb4 |
0x0002ef94 ldr r1, [pc, 0x2c4] |
0x0002ef96 mov r0, r4 | r0 = r4;
0x0002ef98 add r1, pc | r1 = 0x5e1f8;
0x0002ef9a blx 0xe388 | fcn_0000e388 ();
0x0002ef9c ldrd r4, r2, [r6, 0x21c]! | __asm ("ldrd r4, r2, [r6, 0x21c]!");
0x0002efa0 ite hs |
| if (r0 < 0) {
0x0002efa2 movhs r3, 0 | r3 = 0;
| }
| if (r0 >= 0) {
0x0002efa4 movlo r3, 1 | r3 = 1;
| }
0x0002efa6 cmp r0, 0 |
0x0002efa8 it eq |
| if (r0 != 0) {
0x0002efaa orreq r3, r3, 1 | r3 |= 1;
| }
0x0002efae cmp r3, 0 |
| if (r3 != 0) {
0x0002efb0 bne.w 0x2f1fa | goto label_36;
| }
| }
0x0002efb4 movs r1, 0x23 | r1 = 0x23;
0x0002efb6 mov r0, r4 | r0 = r4;
0x0002efb8 blx 0xdcd4 | fcn_0000dcd4 ();
0x0002efbc mov r2, r5 | r2 = r5;
0x0002efbe cmp r0, 0 |
| if (r0 != 0) {
0x0002efc0 bne.w 0x2edce | goto label_3;
| }
| label_14:
0x0002efc4 ldr r1, [pc, 0x298] |
0x0002efc6 mov r3, r4 | r3 = r4;
0x0002efc8 movs r0, 0 | r0 = 0;
0x0002efca add r1, pc | r1 = 0x5e22e;
0x0002efcc bl 0x44820 | r0 = zbx_dsprintf ()
0x0002efd0 mov r8, r0 | r8 = r0;
0x0002efd2 b 0x2ede0 | goto label_4;
| label_33:
0x0002efd4 ldr r2, [pc, 0x28c] |
0x0002efd6 add r2, pc | r2 = 0x5e23e;
0x0002efd8 b 0x2eee4 | goto label_5;
| label_32:
0x0002efda ldr r2, [sp, 0x14] | r2 = var_14h;
0x0002efdc movw r1, 0x17b | r1 = 0x17b;
0x0002efe0 ldr r3, [pc, 0x284] |
0x0002efe2 ldr r0, [pc, 0x288] |
0x0002efe4 ldr r2, [r2] | r2 = *(r2);
0x0002efe6 add r3, pc | r3 = 0x5e252;
0x0002efe8 add r0, pc | r0 = 0x5e25a;
0x0002efea bl 0x40ed8 | zbx_strdup2 ();
0x0002efee b 0x2ef3e | goto label_6;
| label_31:
0x0002eff0 ldr r5, [pc, 0x27c] |
0x0002eff2 add r5, pc | r5 = 0x5e266;
0x0002eff4 b 0x2ee74 | goto label_7;
| label_30:
0x0002eff6 vmov.i64 d17, 0xffff | __asm ("vmov.i64 d17, 0xffff");
0x0002effa mov r0, r7 | r0 = r7;
0x0002effc vmov.i32 d16, 0 | __asm ("vmov.i32 d16, 0");
0x0002f000 add.w r7, sp, 0x26 | r7 += var_26h;
0x0002f004 movs r3, 2 | r3 = 2;
0x0002f006 mov r2, r7 | r2 = r7;
0x0002f008 mov.w r1, -1 | r1 = -1;
0x0002f00c vstr d17, [sp, 8] | __asm ("vstr d17, [sp, 8]");
0x0002f010 vstr d16, [sp] | __asm ("vstr d16, [sp]");
0x0002f014 bl 0x419a8 | is_uint_n_range ();
0x0002f018 adds r0, 1 | r0++;
| if (r0 != 1) {
0x0002f01a bne.w 0x2ee6e | goto label_8;
| }
0x0002f01e ldr r4, [sp, 0x14] | r4 = var_14h;
0x0002f020 movw r1, 0x16d | r1 = 0x16d;
0x0002f024 ldr r3, [pc, 0x24c] |
0x0002f026 ldr r0, [pc, 0x250] |
0x0002f028 ldr r2, [r4] | r2 = *(r4);
0x0002f02a add r3, pc | r3 = 0x5e2a2;
0x0002f02c add r0, pc | r0 = 0x5e2aa;
0x0002f02e bl 0x40ed8 | zbx_strdup2 ();
0x0002f032 str r0, [r4] | *(r4) = r0;
0x0002f034 b 0x2f0f0 | goto label_13;
| label_34:
0x0002f036 ldr r3, [pc, 0x244] |
0x0002f038 ldr r0, [pc, 0x244] |
0x0002f03a add r3, pc | r3 = 0x5e2bc;
0x0002f03c add r0, pc | r0 = 0x5e2c0;
0x0002f03e b 0x2eef2 | goto label_9;
| label_35:
0x0002f040 mov r1, r0 | r1 = r0;
0x0002f042 mov r0, r7 | r0 = r7;
0x0002f044 bl 0x37af8 | zbx_tcp_recv_raw_ext ();
0x0002f048 adds r0, 1 | r0++;
| if (r0 == 1) {
0x0002f04a beq.w 0x2ef22 | goto label_10;
| }
0x0002f04e ldr r3, [sp, 0x18] | r3 = var_18h_2;
| if (r3 != 0) {
0x0002f050 cbz r3, 0x2f074 |
0x0002f052 ldr r2, [sp, 0x18] | r2 = var_18h_2;
0x0002f054 movw r1, 0x193 | r1 = 0x193;
0x0002f058 ldr r0, [pc, 0x228] |
0x0002f05a mov.w r3, 0x100000 | r3 = 0x100000;
0x0002f05e ldr r2, [r2] | r2 = *(r2);
0x0002f060 add r0, pc | r0 = 0x5e2e8;
0x0002f062 bl 0x40dd8 | zbx_malloc2 ();
0x0002f066 ldr r2, [sp, 0x18] | r2 = var_18h_2;
0x0002f068 ldr r1, [r7, 0xc] | r1 = *((r7 + 0xc));
0x0002f06a str r0, [r2] | *(r2) = r0;
0x0002f06c mov.w r2, 0x100000 | r2 = 0x100000;
0x0002f070 bl 0x4465c | zbx_strlcpy ();
| }
0x0002f074 mov r0, sb | r0 = sb;
0x0002f076 blx 0xde30 | fcn_0000de30 ();
0x0002f07a mov r0, r7 | r0 = r7;
0x0002f07c bl 0x3681c | zbx_tcp_close ();
0x0002f080 cmp.w r8, 0 |
| if (r8 == 0) {
0x0002f084 beq.w 0x2ef56 | goto label_11;
| }
0x0002f088 mov r0, r8 | r0 = r8;
0x0002f08a blx 0xde30 | fcn_0000de30 ();
0x0002f08e b 0x2ef56 | goto label_11;
| label_27:
0x0002f090 subs r2, r2, r4 | r2 -= r4;
0x0002f092 cmp r2, 0 |
| if (r2 > 0) {
0x0002f094 ble 0x2f0d6 |
0x0002f096 ldr r3, [pc, 0x1f0] |
0x0002f098 add.w r7, sp, 0x26 | r7 += var_26h;
0x0002f09c add r3, pc | r3 = 0x5e32a;
0x0002f09e mov r1, r3 | r1 = r3;
0x0002f0a0 str r3, [sp, 0x1c] | var_1ch = r3;
0x0002f0a2 adds r3, r4, 1 | r3 = r4 + 1;
0x0002f0a4 bl 0x44820 | zbx_dsprintf ()
0x0002f0a8 vmov.i64 d17, 0xffff | __asm ("vmov.i64 d17, 0xffff");
0x0002f0ac movs r3, 2 | r3 = 2;
0x0002f0ae vmov.i32 d16, 0 | __asm ("vmov.i32 d16, 0");
0x0002f0b2 mov r2, r7 | r2 = r7;
0x0002f0b4 mov.w r1, -1 | r1 = -1;
0x0002f0b8 mov fp, r0 |
0x0002f0ba vstr d17, [sp, 8] | __asm ("vstr d17, [sp, 8]");
0x0002f0be vstr d16, [sp] | __asm ("vstr d16, [sp]");
0x0002f0c2 bl 0x419a8 | r0 = is_uint_n_range ();
0x0002f0c6 cmp r0, 0 |
| if (r0 == 0) {
0x0002f0c8 beq 0x2f136 | goto label_37;
| }
0x0002f0ca cmp.w fp, 0 |
| if (fp == 0) {
0x0002f0ce beq 0x2f0d6 | goto label_38;
| }
0x0002f0d0 mov r0, fp | r0 = fp;
0x0002f0d2 blx 0xde30 | fcn_0000de30 ();
| }
| label_38:
0x0002f0d6 ldr r1, [pc, 0x1b4] |
0x0002f0d8 add r1, pc | r1 = 0x5e36a;
| label_15:
0x0002f0da ldr r4, [sp, 0x14] | r4 = var_14h;
0x0002f0dc ldr r0, [r4] | r0 = *(r4);
0x0002f0de bl 0x44820 | zbx_dsprintf ()
0x0002f0e2 str r0, [r4] | *(r4) = r0;
0x0002f0e4 cmp.w r8, 0 |
0x0002f0e8 beq 0x2f0f0 |
| while (r8 != 0) {
0x0002f0ea mov r0, r8 | r0 = r8;
0x0002f0ec blx 0xde30 | fcn_0000de30 ();
| label_13:
0x0002f0f0 movs r4, 1 | r4 = 1;
0x0002f0f2 b 0x2ef5c | goto label_12;
| label_22:
0x0002f0f4 ldr r4, [sp, 0x14] | r4 = var_14h;
0x0002f0f6 movs r1, 0x47 | r1 = 0x47;
0x0002f0f8 ldr r3, [pc, 0x194] |
0x0002f0fa ldr r0, [pc, 0x198] |
0x0002f0fc ldr r2, [r4] | r2 = *(r4);
0x0002f0fe add r3, pc | r3 = 0x5e392;
0x0002f100 add r0, pc | r0 = 0x5e39a;
0x0002f102 bl 0x40ed8 | zbx_strdup2 ();
0x0002f106 str r0, [r4] | *(r4) = r0;
| label_26:
0x0002f10c ldr r4, [sp, 0x14] | r4 = var_14h;
0x0002f10e movw r1, 0x12d | r1 = 0x12d;
0x0002f112 ldr r3, [pc, 0x184] |
0x0002f114 ldr r0, [pc, 0x184] |
0x0002f116 ldr r2, [r4] | r2 = *(r4);
0x0002f118 add r3, pc | r3 = 0x5e3b6;
0x0002f11a add r0, pc | r0 = 0x5e3ba;
0x0002f11c bl 0x40ed8 | zbx_strdup2 ();
0x0002f120 str r0, [r4] | *(r4) = r0;
0x0002f122 cmp.w r8, 0 |
0x0002f126 bne 0x2f0ea |
| }
0x0002f128 b 0x2f0f0 | goto label_13;
| label_24:
0x0002f12a ldr r2, [pc, 0x174] |
0x0002f12c add r2, pc | r2 = 0x5e3d2;
0x0002f12e b 0x2efc4 | goto label_14;
| label_25:
0x0002f130 ldr r1, [pc, 0x170] |
0x0002f132 add r1, pc | r1 = 0x5e3da;
0x0002f134 b 0x2f0da | goto label_15;
| label_37:
0x0002f136 ldr r1, [sp, 0x1c] | r1 = var_1ch;
0x0002f138 subs r2, r4, r5 | r2 = r4 - r5;
0x0002f13a ldr r0, [r6] | r0 = *(r6);
0x0002f13c mov r3, r5 | r3 = r5;
0x0002f13e bl 0x44820 | zbx_dsprintf ()
0x0002f142 str r0, [r6] | *(r6) = r0;
0x0002f144 cmp.w fp, 0 |
| if (fp != 0) {
0x0002f148 beq 0x2f152 |
0x0002f14a mov r0, fp | r0 = fp;
0x0002f14c blx 0xde30 | fcn_0000de30 ();
0x0002f150 ldr r0, [r6] | r0 = *(r6);
| }
| label_17:
0x0002f152 ldrb r3, [r0] | r3 = *(r0);
0x0002f154 cmp r3, 0x5b |
0x0002f156 it ne |
| if (r3 == 0x5b) {
0x0002f158 movne r4, 0 | r4 = 0;
| }
0x0002f15a beq 0x2f180 |
| while (1) {
0x0002f15c cmp r3, 0 |
| if (r3 == 0) {
0x0002f15e beq 0x2f1e0 | goto label_39;
| }
0x0002f160 ldrb.w r2, [r5, sb] | r2 = *((r5 + sb));
0x0002f164 add.w r3, r5, sb | r3 = r5 + sb;
| if (r2 == 0) {
0x0002f168 cbnz r2, 0x2f16e |
0x0002f16a ldr r3, [pc, 0x13c] |
0x0002f16c add r3, pc | r3 = 0x5e41a;
| }
0x0002f16e ldr r0, [pc, 0x13c] |
0x0002f170 movs r2, 0 | r2 = 0;
0x0002f172 movw r1, 0x161 | r1 = 0x161;
0x0002f176 add r0, pc | r0 = 0x5e428;
0x0002f178 bl 0x40ed8 | r0 = zbx_strdup2 ();
0x0002f17c mov r5, r0 | r5 = r0;
0x0002f17e b 0x2eea6 | goto label_16;
0x0002f180 ldr r1, [pc, 0x12c] |
0x0002f182 movs r4, 1 | r4 = 1;
0x0002f184 add r1, pc | r1 = 0x5e438;
0x0002f186 bl 0x44534 | zbx_ltrim ();
0x0002f18a ldr r1, [pc, 0x128] |
0x0002f18c ldr r0, [r6] | r0 = *(r6);
0x0002f18e add r1, pc | r1 = 0x5e448;
0x0002f190 bl 0x444f4 | zbx_rtrim ();
0x0002f194 ldr r3, [r6] | r3 = *(r6);
0x0002f196 ldrb r3, [r3] | r3 = *(r3);
0x0002f198 b 0x2f15c |
| }
| label_28:
0x0002f19a ldr r1, [pc, 0x11c] |
0x0002f19c movs r3, 0x50 | r3 = 0x50;
0x0002f19e strh.w r3, [sp, 0x26] | var_26h = r3;
0x0002f1a2 mov r2, sb | r2 = sb;
0x0002f1a4 ldr r0, [r6] | r0 = *(r6);
0x0002f1a6 mov r3, r5 | r3 = r5;
0x0002f1a8 add r1, pc | r1 = 0x5e466;
0x0002f1aa add.w r7, sp, 0x26 | r7 += var_26h;
0x0002f1ae bl 0x44820 | zbx_dsprintf ()
0x0002f1b2 str r0, [r6] | *(r6) = r0;
0x0002f1b4 b 0x2f152 | goto label_17;
| label_39:
0x0002f1e0 ldr r1, [pc, 0xe4] |
0x0002f1e2 add r1, pc | r1 = 0x5e4ae;
0x0002f1e4 b 0x2f0da | goto label_15;
| label_36:
0x0002f1fa ldr r5, [sp, 0x14] | r5 = var_14h;
0x0002f1fc mov r3, r4 | r3 = r4;
0x0002f1fe ldr r1, [pc, 0xd0] |
0x0002f200 subs r2, r7, r4 | r2 = r7 - r4;
0x0002f202 ldr r0, [r5] | r0 = *(r5);
0x0002f204 add r1, pc | r1 = 0x5e4da;
0x0002f206 bl 0x44820 | zbx_dsprintf ()
0x0002f20a str r0, [r5] | *(r5) = r0;
0x0002f20c b 0x2f108 | return void (*0x2f108)() ();
| }
; assembly | /* r2dec pseudo code output */
| /* /logs/firmware/patool_extraction/rootfs.img_unblob_extracted/rootfs.img_extract/0-80367616.squashfs_v4_le_extract/usr/sbin/zabbix_agentd @ 0x4240c */
| #include <stdint.h>
|
; (fcn) sym.zbx_interval_preproc () | void zbx_interval_preproc (int16_t arg_10h, int16_t arg_14h, int16_t arg1, int16_t arg2, int16_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_20h;
| int32_t var_20h_2;
| r0 = arg1;
| r1 = arg2;
| r2 = arg3;
| r3 = arg4;
0x0004240c push.w {r4, r5, r6, r7, r8, sb, sl, fp, lr} |
0x00042410 sub sp, 0x2c |
0x00042412 mov r8, r0 | r8 = r0;
0x00042414 str r1, [sp, 0x10] | var_10h = r1;
0x00042416 movs r1, 0x3b | r1 = 0x3b;
0x00042418 mov r4, r2 | r4 = r2;
0x0004241a mov r7, r3 | r7 = r3;
0x0004241c blx 0xdcd4 | r0 = fcn_0000dcd4 ();
0x00042420 mov r6, r0 | r6 = r0;
0x00042422 sub.w r2, r0, r8 | r2 = r0 - r8;
0x00042426 cmp r0, 0 |
| if (r0 == 0) {
0x00042428 beq.w 0x42616 | goto label_15;
| }
| label_6:
0x0004242c ldr r1, [sp, 0x10] | r1 = var_10h;
0x0004242e mov r0, r8 | r0 = r8;
0x00042430 bl 0x4186c | r0 = is_time_suffix ();
0x00042434 mov r5, r0 | r5 = r0;
0x00042436 cmp r0, 0 |
| if (r0 != 0) {
0x00042438 bne.w 0x42650 | goto label_16;
| }
0x0004243c cmp r4, 0 |
| if (r4 == 0) {
0x0004243e beq 0x4253a | goto label_17;
| }
0x00042440 cmp r6, 0 |
| if (r6 == 0) {
0x00042442 beq.w 0x42620 | goto label_18;
| }
0x00042446 ldr r3, [pc, 0x22c] |
0x00042448 mov sb, r5 | sb = r5;
0x0004244a add r3, pc | r3 = 0x84ac4;
0x0004244c str r3, [sp, 0x14] | var_14h = r3;
0x0004244e ldr r3, [pc, 0x228] |
0x00042450 add r3, pc | r3 = 0x84ace;
0x00042452 str r3, [sp, 0x18] | var_18h = r3;
0x00042454 blx 0xe110 | r0 = fcn_0000e110 ();
0x00042458 mov sl, r0 | sl = r0;
0x0004245a str r5, [sp, 0xc] | var_ch = r5;
0x0004245c strd r5, r4, [sp, 0x20] | __asm ("strd r5, r4, [var_20h]");
0x00042460 str r7, [sp, 0x1c] | var_1ch = r7;
| label_0:
0x00042462 add.w r8, r6, 1 | r8 = r6 + 1;
0x00042466 movs r1, 0x3b | r1 = 0x3b;
0x00042468 mov r0, r8 | r0 = r8;
0x0004246a blx 0xdcd4 | fcn_0000dcd4 ();
0x0004246e ldrb r2, [r6, 1] | r2 = *((r6 + 1));
0x00042470 mov r6, r0 | r6 = r0;
0x00042472 ldr.w r3, [sl] | r3 = *(sl);
0x00042476 ldrh.w r5, [r3, r2, lsl 1] | offset_0 = r2 << 1;
| r5 = *((r3 + offset_0));
0x0004247a ands r5, r5, 0x800 | r5 &= 0x800;
| if (r5 == r5) {
0x0004247e beq 0x42542 | goto label_19;
| }
0x00042480 ldr r0, [sp, 0x18] | r0 = var_18h;
0x00042482 movs r3, 0x18 | r3 = 0x18;
0x00042484 movs r2, 0 | r2 = 0;
0x00042486 movw r1, 0x7eb | r1 = 0x7eb;
0x00042488 strb r3, [r5, 7] | *((r5 + 7)) = r3;
0x0004248a bl 0x40dd8 | zbx_malloc2 ();
0x0004248e sub.w r4, r6, r8 | r4 = r6 - r8;
0x00042492 mov fp, r0 |
0x00042494 cmp r6, 0 |
| if (r6 == 0) {
0x00042496 beq.w 0x425e0 | goto label_20;
| }
0x0004249a cmp r4, 0 |
| if (r4 <= 0) {
0x0004249c ble.w 0x425ee | goto label_21;
| }
| label_2:
0x000424a0 mov r2, r8 | r2 = r8;
0x000424a2 b 0x424a8 |
| while (r5 != 0x2f) {
0x000424a4 subs r4, 1 | r4--;
| if (r4 == 1) {
0x000424a6 beq 0x42582 | goto label_22;
| }
0x000424a8 mov r7, r2 | r7 = r2;
0x000424aa ldrb r5, [r2], 1 | r5 = *(r2);
| r2++;
0x000424ae cmp r5, 0x2f |
0x000424b0 it ne |
| if (r5 != 0x2f) {
0x000424b2 cmpne r5, 0 | __asm ("cmpne r5, 0");
| }
0x000424b4 bne 0x424a4 |
| }
0x000424b6 sub.w r2, r7, r8 | r2 = r7 - r8;
0x000424ba add.w r1, fp, 0x10 | r1 += arg_10h;
0x000424be mov r0, r8 | r0 = r8;
0x000424c0 bl 0x4186c | r0 = is_time_suffix ();
0x000424c4 cmp r0, 0 |
| if (r0 != 0) {
0x000424c6 bne.w 0x4261c | goto label_23;
| }
0x000424ca cmp r5, 0x2f |
0x000424cc add.w r2, r4, -1 | r2 = r4 + -1;
0x000424d0 add.w r1, r7, 1 | r1 = r7 + 1;
| if (r5 != 0x2f) {
0x000424d4 bne.w 0x4261c | goto label_23;
| }
0x000424d8 mov r0, fp | r0 = fp;
0x000424da bl 0x41c64 | r0 = fcn_00041c64 (r0, r1, r2, r3, r4);
0x000424de cmp r0, 0 |
| if (r0 != 0) {
0x000424e0 bne.w 0x4261c | goto label_23;
| }
0x000424e4 ldr r3, [sp, 0x10] | r3 = var_10h;
0x000424e6 ldr r2, [r3] | r2 = *(r3);
| if (r2 == 0) {
0x000424e8 cbnz r2, 0x424f4 |
0x000424ea ldr.w r2, [fp, 0x10] | r2 = *(arg_10h);
0x000424ee cmp r2, 0 |
| if (r2 == 0) {
0x000424f0 beq.w 0x4262e | goto label_24;
| }
| }
0x000424f4 str.w sb, [fp, 0x14] | __asm ("str.w sb, [arg_14h]");
0x000424f8 mov sb, fp | sb = fp;
0x000424fa cmp r6, 0 |
| if (r6 != 0) {
0x000424fc bne 0x42462 | goto label_0;
| }
| label_1:
0x000424fe ldr r3, [sp, 0x10] | r3 = var_10h;
0x00042500 ldrd r5, r4, [sp, 0x20] | __asm ("ldrd r5, r4, [var_20h]");
0x00042504 ldr r7, [sp, 0x1c] | r7 = var_1ch;
0x00042506 ldr r2, [r3] | r2 = *(r3);
0x00042508 ldr r3, [sp, 0xc] | r3 = var_ch;
0x0004250a orrs.w r3, r3, sb | r3 |= sb;
| if (r3 == r3) {
0x0004250e beq.w 0x42624 | goto label_25;
| }
| label_8:
0x00042512 mov.w r3, 0x5180 |
0x00042516 movt r3, 1 | r3 = 0x15180;
0x0004251a cmp r2, r3 |
| if (r2 > r3) {
0x0004251c bgt.w 0x42638 | goto label_26;
| }
0x00042520 ldr r0, [pc, 0x158] |
0x00042522 movs r3, 8 | r3 = 8;
0x00042524 movs r2, 0 | r2 = 0;
0x00042526 movw r1, 0x813 | r1 = 0x813;
0x0004252a add r0, pc | r0 = 0x84baa;
0x0004252c bl 0x40dd8 | zbx_malloc2 ();
0x00042530 ldr r3, [sp, 0xc] | r3 = var_ch;
0x00042532 str r0, [r4] | *(r4) = r0;
0x00042534 str.w sb, [r0] | __asm ("str.w sb, [r0]");
0x00042538 str r3, [r0, 4] | *((r0 + 4)) = r3;
| label_17:
0x0004253a mov r0, r5 | r0 = r5;
0x0004253c add sp, 0x2c |
0x0004253e pop.w {r4, r5, r6, r7, r8, sb, sl, fp, pc} |
| label_19:
0x00042542 mov r2, r5 | r2 = r5;
0x00042544 ldr r0, [sp, 0x14] | r0 = var_14h;
0x00042546 movs r3, 0x1c | r3 = 0x1c;
0x00042548 movw r1, 0x7fd | r1 = 0x7fd;
0x0004254c bl 0x40dd8 | zbx_malloc2 ();
0x00042550 sub.w r2, r6, r8 | r2 = r6 - r8;
0x00042554 mov r4, r0 | r4 = r0;
0x00042556 str r5, [r0] | *(r0) = r5;
0x00042558 str r5, [r0, 4] | *((r0 + 4)) = r5;
0x0004255a str r5, [r0, 8] | *((r0 + 8)) = r5;
0x0004255c str r5, [r0, 0xc] | *((r0 + 0xc)) = r5;
0x0004255e str r5, [r0, 0x10] | *((r0 + 0x10)) = r5;
0x00042560 str r5, [r0, 0x14] | *((r0 + 0x14)) = r5;
0x00042562 str r5, [r0, 0x18] | *((r0 + 0x18)) = r5;
0x00042564 cmp r6, 0 |
| if (r6 == 0) {
0x00042566 beq 0x425f4 | goto label_27;
| }
0x00042568 mov r1, r8 | r1 = r8;
0x0004256a mov r0, r4 | r0 = r4;
0x0004256c bl 0x42020 | r0 = fcn_00042020 (r0, r1, r2);
0x00042570 cmp r0, 0 |
| if (r0 != 0) {
0x00042572 bne 0x42608 | goto label_28;
| }
| label_4:
0x00042574 ldr r3, [sp, 0xc] | r3 = var_ch;
0x00042576 str r4, [sp, 0xc] | var_ch = r4;
0x00042578 str r3, [r4, 0x18] | *((r4 + 0x18)) = r3;
0x0004257a cmp r6, 0 |
| if (r6 != 0) {
0x0004257c bne.w 0x42462 | goto label_0;
| }
0x00042580 b 0x424fe | goto label_1;
| label_22:
0x00042582 ldr r7, [sp, 0x1c] | r7 = var_1ch;
0x00042584 sub.w r5, r2, r8 | r5 = r2 - r8;
| label_3:
0x00042588 mov r2, r5 | r2 = r5;
0x0004258a add.w r1, fp, 0x10 | r1 += arg_10h;
0x0004258e mov r0, r8 | r0 = r8;
0x00042590 bl 0x4186c | is_time_suffix ();
| label_7:
0x00042594 cmp.w fp, 0 |
| if (fp != 0) {
0x00042598 bne 0x42630 | goto label_29;
| }
| label_9:
0x0004259a ldr r2, [pc, 0xe4] |
0x0004259c add r2, pc | r2 = 0x84c22;
| if (r7 != 0) {
| label_5:
0x0004259e cbz r7, 0x425ba |
| label_12:
0x000425a0 ldr r4, [r7] | r4 = *(r7);
0x000425a2 sub.w r3, r6, r8 | r3 = r6 - r8;
0x000425a6 cmp r6, 0 |
| if (r6 == 0) {
0x000425a8 beq 0x42642 | goto label_14;
| }
| label_11:
0x000425aa ldr r1, [pc, 0xd8] |
0x000425ac mov r0, r4 | r0 = r4;
0x000425ae str.w r8, [sp] | __asm ("str.w r8, [sp]");
0x000425b2 add r1, pc | r1 = 0x84c3c;
0x000425b4 bl 0x44820 | zbx_dsprintf ()
0x000425b8 str r0, [r7] | *(r7) = r0;
| }
| label_10:
0x000425ba cmp.w sb, 0 |
| if (sb == 0) {
0x000425be beq 0x425ce | goto label_13;
| }
0x000425c0 mov r4, sb | r4 = sb;
| do {
0x000425c2 mov r0, r4 | r0 = r4;
0x000425c4 ldr r4, [r4, 0x14] | r4 = *((r4 + 0x14));
0x000425c6 blx 0xde30 | fcn_0000de30 ();
0x000425ca cmp r4, 0 |
0x000425cc bne 0x425c2 |
| } while (r4 != 0);
| label_13:
0x000425ce ldr r0, [sp, 0xc] | r0 = var_ch;
0x000425d0 mov.w r5, -1 | r5 = -1;
0x000425d4 bl 0x3fe60 | fcn_0003fe60 (r0);
0x000425d8 mov r0, r5 | r0 = r5;
0x000425da add sp, 0x2c |
0x000425dc pop.w {r4, r5, r6, r7, r8, sb, sl, fp, pc} |
| label_20:
0x000425e0 mov r0, r8 | r0 = r8;
0x000425e2 blx 0xdf68 | r0 = fcn_0000df68 ();
0x000425e6 mov r4, r0 | r4 = r0;
0x000425e8 cmp r4, 0 |
| if (r4 > 0) {
0x000425ea bgt.w 0x424a0 | goto label_2;
| }
| label_21:
0x000425ee ldrd r7, r5, [sp, 0x1c] | __asm ("ldrd r7, r5, [var_1ch]");
0x000425f2 b 0x42588 | goto label_3;
| label_27:
0x000425f4 mov r0, r8 | r0 = r8;
0x000425f6 blx 0xdf68 | fcn_0000df68 ();
0x000425fa mov r1, r8 | r1 = r8;
0x000425fc mov r2, r0 | r2 = r0;
0x000425fe mov r0, r4 | r0 = r4;
0x00042600 bl 0x42020 | r0 = fcn_00042020 (r0, r1, r2);
0x00042604 cmp r0, 0 |
| if (r0 == 0) {
0x00042606 beq 0x42574 | goto label_4;
| }
| label_28:
0x00042608 mov r0, r4 | r0 = r4;
0x0004260a ldr r7, [sp, 0x1c] | r7 = var_1ch;
0x0004260c bl 0x3fe60 | fcn_0003fe60 (r0);
0x00042610 ldr r2, [pc, 0x74] |
0x00042612 add r2, pc | r2 = 0x84c9e;
0x00042614 b 0x4259e | goto label_5;
| label_15:
0x00042616 mvn r2, 0x80000000 | r2 = ~0x80000000;
0x0004261a b 0x4242c | goto label_6;
| label_23:
0x0004261c ldr r7, [sp, 0x1c] | r7 = var_1ch;
0x0004261e b 0x42594 | goto label_7;
| label_18:
0x00042620 ldr r3, [sp, 0x10] | r3 = var_10h;
0x00042622 ldr r2, [r3] | r2 = *(r3);
| if (r2 == 0) {
| label_25:
0x00042624 cbz r2, 0x42664 | goto label_30;
| }
0x00042626 movs r3, 0 | r3 = 0;
0x00042628 mov sb, r3 | sb = r3;
0x0004262a str r3, [sp, 0xc] | var_ch = r3;
0x0004262c b 0x42512 | goto label_8;
| label_24:
0x0004262e ldr r7, [sp, 0x1c] | r7 = var_1ch;
| label_29:
0x00042630 mov r0, fp | r0 = fp;
0x00042632 blx 0xde30 | fcn_0000de30 ();
0x00042636 b 0x4259a | goto label_9;
| label_26:
0x00042638 cmp r7, 0 |
| if (r7 == 0) {
0x0004263a beq 0x425ba | goto label_10;
| }
0x0004263c ldr r2, [pc, 0x4c] |
0x0004263e ldr r4, [r7] | r4 = *(r7);
0x00042640 add r2, pc | r2 = 0x84cd0;
| label_14:
0x00042642 mov r0, r8 | r0 = r8;
0x00042644 str r2, [sp, 0x10] | var_10h = r2;
0x00042646 blx 0xdf68 | fcn_0000df68 ();
0x0004264a ldr r2, [sp, 0x10] | r2 = var_10h;
0x0004264c mov r3, r0 | r3 = r0;
0x0004264e b 0x425aa | goto label_11;
| if (r7 == 0) {
| label_16:
0x00042650 cbz r7, 0x4265e | goto label_31;
| }
0x00042652 ldr r2, [pc, 0x3c] |
0x00042654 movs r3, 0 | r3 = 0;
0x00042656 mov sb, r3 | sb = r3;
0x00042658 str r3, [sp, 0xc] | var_ch = r3;
0x0004265a add r2, pc | r2 = 0x84cf0;
0x0004265c b 0x425a0 | goto label_12;
| do {
| label_31:
0x0004265e movs r3, 0 | r3 = 0;
0x00042660 str r3, [sp, 0xc] | var_ch = r3;
0x00042662 b 0x425ce | goto label_13;
| label_30:
0x00042664 cmp r7, 0 |
0x00042666 beq 0x4265e |
| } while (r7 == 0);
0x00042668 mov sb, r2 | sb = r2;
0x0004266a str r2, [sp, 0xc] | var_ch = r2;
0x0004266c ldr r2, [pc, 0x24] |
0x0004266e ldr r4, [r7] | r4 = *(r7);
0x00042670 add r2, pc | r2 = 0x84d08;
0x00042672 b 0x42642 | goto label_14;
| }
; assembly | /* r2dec pseudo code output */
| /* /logs/firmware/patool_extraction/rootfs.img_unblob_extracted/rootfs.img_extract/0-80367616.squashfs_v4_le_extract/usr/sbin/zabbix_agentd @ 0x3bccc */
| #include <stdint.h>
|
; (fcn) sym.zbx_json_validate () | void zbx_json_validate (int16_t arg1, int16_t arg2) {
| r0 = arg1;
| r1 = arg2;
0x0003bccc push.w {r4, r5, r6, r7, r8, lr} |
0x0003bcd0 mov r5, r0 | r5 = r0;
0x0003bcd2 ldrb r4, [r0] | r4 = *(r0);
0x0003bcd4 mov r7, r1 | r7 = r1;
0x0003bcd6 cmp r4, 0 |
| if (r4 == 0) {
0x0003bcd8 beq 0x3bd5e | goto label_2;
| }
0x0003bcda ldr r6, [pc, 0x9c] |
0x0003bcdc add r6, pc | r6 = 0x77a5a;
0x0003bcde b 0x3bce8 |
| while (r0 != 0) {
0x0003bce0 ldrb r4, [r5, 1]! | r4 = *((r5 += 1));
0x0003bce4 cmp r4, 0 |
| if (r4 == 0) {
0x0003bce6 beq 0x3bd5e | goto label_2;
| }
0x0003bce8 mov r1, r4 | r1 = r4;
0x0003bcea mov r0, r6 | r0 = r6;
0x0003bcec blx 0xdcd4 | r0 = fcn_0000dcd4 ();
0x0003bcf0 cmp r0, 0 |
0x0003bcf2 bne 0x3bce0 |
| }
0x0003bcf4 cmp r4, 0x5b |
| if (r4 != 0x5b) {
0x0003bcf6 bne 0x3bd46 | goto label_3;
| }
0x0003bcf8 mov r1, r7 | r1 = r7;
0x0003bcfa mov r0, r5 | r0 = r5;
0x0003bcfc bl 0x3bc24 | r0 = fcn_0003bc24 (r0, r1);
0x0003bd00 orrs.w r3, r0, r1 | r3 = r0 | r1;
0x0003bd04 mov r6, r0 | r6 = r0;
0x0003bd06 mov r8, r1 | r8 = r1;
| if (r3 == r0) {
0x0003bd08 beq 0x3bd3a | goto label_1;
| }
| label_0:
0x0003bd0a ldrb r1, [r5, r6] | r1 = *((r5 + r6));
0x0003bd0c adds r4, r5, r6 | r4 = r5 + r6;
| if (r1 == 0) {
0x0003bd0e cbz r1, 0x3bd3e | goto label_4;
| }
0x0003bd10 ldr r5, [pc, 0x68] |
0x0003bd12 add r5, pc | r5 = 0x77a92;
0x0003bd14 b 0x3bd1c |
| while (r1 != 0) {
0x0003bd16 ldrb r1, [r4, 1]! | r1 = *((r4 += 1));
| if (r1 == 0) {
0x0003bd1a cbz r1, 0x3bd3e | goto label_4;
| }
0x0003bd1c mov r0, r5 | r0 = r5;
0x0003bd1e blx 0xdcd4 | fcn_0000dcd4 ();
0x0003bd20 vmlal.s16 q9, d10, d0 | __asm ("vmlal.s16 q9, d10, d0");
0x0003bd24 bne 0x3bd16 |
| }
| if (r7 != 0) {
0x0003bd26 cbz r7, 0x3bd3a |
0x0003bd28 ldr r2, [pc, 0x54] |
0x0003bd2a mov r3, r4 | r3 = r4;
0x0003bd2c ldr r1, [pc, 0x54] |
0x0003bd2e ldr r0, [r7] | r0 = *(r7);
0x0003bd30 add r2, pc | r2 = 0x77ab4;
0x0003bd32 add r1, pc | r1 = 0x77aba;
0x0003bd34 bl 0x44820 | zbx_dsprintf ()
0x0003bd38 str r0, [r7] | *(r7) = r0;
| }
| label_1:
0x0003bd3a movs r6, 0 | r6 = 0;
0x0003bd3c mov r8, r6 | r8 = r6;
| label_4:
0x0003bd3e mov r0, r6 | r0 = r6;
0x0003bd40 mov r1, r8 | r1 = r8;
0x0003bd42 pop.w {r4, r5, r6, r7, r8, pc} |
| label_3:
0x0003bd46 cmp r4, 0x7b |
| if (r4 != 0x7b) {
0x0003bd48 bne 0x3bd5e | goto label_2;
| }
0x0003bd4a mov r1, r7 | r1 = r7;
0x0003bd4c mov r0, r5 | r0 = r5;
0x0003bd4e bl 0x3ba98 | r0 = fcn_0003ba98 (r0, r1);
0x0003bd52 orrs.w r3, r0, r1 | r3 = r0 | r1;
0x0003bd56 mov r6, r0 | r6 = r0;
0x0003bd58 mov r8, r1 | r8 = r1;
| if (r3 != r0) {
0x0003bd5a bne 0x3bd0a | goto label_0;
| }
0x0003bd5c b 0x3bd3a | goto label_1;
| label_2:
0x0003bd5e cmp r7, 0 |
| if (r7 == 0) {
0x0003bd60 beq 0x3bd3a | goto label_1;
| }
0x0003bd62 ldr r2, [pc, 0x24] |
0x0003bd64 mov r3, r5 | r3 = r5;
0x0003bd66 ldr r1, [pc, 0x24] |
0x0003bd68 ldr r0, [r7] | r0 = *(r7);
0x0003bd6a add r2, pc | r2 = 0x77af8;
0x0003bd6c add r1, pc | r1 = 0x77afe;
0x0003bd6e bl 0x44820 | zbx_dsprintf ()
0x0003bd72 str r0, [r7] | *(r7) = r0;
0x0003bd74 b 0x3bd3a | goto label_1;
| }
; assembly | /* r2dec pseudo code output */
| /* /logs/firmware/patool_extraction/rootfs.img_unblob_extracted/rootfs.img_extract/0-80367616.squashfs_v4_le_extract/usr/sbin/zabbix_agentd @ 0x343e8 */
| #include <stdint.h>
|
; (fcn) sym.zbx_locks_create () | void zbx_locks_create (int16_t arg1) {
| r0 = arg1;
0x000343e8 push {r4, r5, r6, lr} |
0x000343ea mov.w r2, 0x180 | r2 = 0x180;
0x000343ee mov r6, r0 | r6 = r0;
0x000343f0 movs r1, 0x10 | r1 = 0x10;
0x000343f2 movs r0, 0 | r0 = 0;
0x000343f4 blx 0xe410 | fcn_0000e410 ();
0x000343f8 ldr r3, [pc, 0x9c] |
0x000343fa add r3, pc | r3 = 0x68896;
0x000343fc str r0, [r3] | *(r3) = r0;
0x000343fe adds r3, r0, 1 | r3 = r0 + 1;
0x00034400 itt ne |
| if (r3 == r0) {
0x00034402 movne r5, r0 | r5 = r0;
| }
| if (r3 == r0) {
0x00034404 movne r4, 0 | r4 = 0;
| }
| if (r3 == r0) {
0x00034406 beq 0x3447a | goto label_1;
| }
| do {
0x00034408 mov r1, r4 | r1 = r4;
0x0003440a movs r3, 1 | r3 = 1;
0x0003440c movs r2, 0x10 | r2 = 0x10;
0x0003440e mov r0, r5 | r0 = r5;
0x00034410 blx 0xe0e0 | fcn_0000e0e0 ();
0x00034414 adds r0, 1 | r0++;
0x00034416 add.w r4, r4, 1 | r4++;
| if (r0 == 1) {
0x0003441a beq 0x34424 | goto label_2;
| }
0x0003441c cmp r4, 0x10 |
0x0003441e bne 0x34408 |
| } while (r4 != 0x10);
0x00034420 movs r0, 0 | r0 = 0;
0x00034422 pop {r4, r5, r6, pc} |
| label_2:
0x00034424 blx 0xe3d4 | r0 = fcn_0000e3d4 ();
0x00034428 mov r4, r0 | r4 = r0;
0x0003442a ldr r0, [r0] | r0 = *(r0);
0x0003442c ldr r5, [r6] | r5 = *(r6);
0x0003442e bl 0x30b74 | zbx_strerror ();
0x00034432 ldr r1, [pc, 0x68] |
0x00034434 mov r2, r0 | r2 = r0;
0x00034436 mov r0, r5 | r0 = r5;
0x00034438 add r1, pc | r1 = 0x688da;
0x0003443a bl 0x44820 | zbx_dsprintf ()
0x0003443e ldr r2, [pc, 0x60] |
0x00034440 movs r3, 0 | r3 = 0;
0x00034442 str r0, [r6] | *(r6) = r0;
0x00034444 mov r1, r3 | r1 = r3;
0x00034446 add r2, pc | r2 = 0x688ec;
0x00034448 ldr r5, [r2] | r5 = *(0x688ec);
0x0003444a mov r2, r3 | r2 = r3;
0x0003444c mov r0, r5 | r0 = r5;
0x0003444e blx 0xe0e0 | fcn_0000e0e0 ();
0x00034452 adds r0, 1 | r0++;
0x00034454 beq 0x34466 |
| while (1) {
0x00034456 ldr r3, [pc, 0x4c] |
0x00034458 mov.w r2, -1 | r2 = -1;
0x0003445c add r3, pc | r3 = 0x68906;
0x0003445e str r2, [r3] | *(r3) = r2;
| label_0:
0x00034460 mov.w r0, -1 | r0 = -1;
0x00034464 pop {r4, r5, r6, pc} |
0x00034466 ldr r0, [r4] | r0 = *(r4);
0x00034468 bl 0x30b74 | r0 = zbx_strerror ();
0x0003446c mov r2, r0 | r2 = r0;
0x0003446e ldr r0, [pc, 0x38] |
0x00034470 mov r1, r5 | r1 = r5;
0x00034472 add r0, pc | r0 = 0x68920;
0x00034474 bl 0x43cd4 | zbx_error ();
0x00034478 b 0x34456 |
| }
| label_1:
0x0003447a blx 0xe3d4 | r0 = fcn_0000e3d4 ();
0x0003447e ldr r0, [r0] | r0 = *(r0);
0x00034480 ldr r4, [r6] | r4 = *(r6);
0x00034482 bl 0x30b74 | zbx_strerror ();
0x00034486 ldr r1, [pc, 0x24] |
0x00034488 mov r2, r0 | r2 = r0;
0x0003448a mov r0, r4 | r0 = r4;
0x0003448c add r1, pc | r1 = 0x6893e;
0x0003448e bl 0x44820 | zbx_dsprintf ()
0x00034492 str r0, [r6] | *(r6) = r0;
0x00034494 b 0x34460 | goto label_0;
| }
; assembly | /* r2dec pseudo code output */
| /* /logs/firmware/patool_extraction/rootfs.img_unblob_extracted/rootfs.img_extract/0-80367616.squashfs_v4_le_extract/usr/sbin/zabbix_agentd @ 0x1a504 */
| #include <stdint.h>
|
; (fcn) sym.zbx_make_persistent_file_name () | void zbx_make_persistent_file_name (int16_t arg1, int16_t arg2) {
| r0 = arg1;
| r1 = arg2;
0x0001a504 push {r3, r4, r5, lr} |
0x0001a506 mov r5, r0 | r5 = r0;
0x0001a508 mov r0, r1 | r0 = r1;
0x0001a50a bl 0x19748 | fcn_00019748 (r0);
0x0001a50e ldr r1, [pc, 0x1c] |
0x0001a510 mov r4, r0 | r4 = r0;
0x0001a512 mov r3, r0 | r3 = r0;
0x0001a514 mov r2, r5 | r2 = r5;
0x0001a516 movs r0, 0 | r0 = 0;
0x0001a518 add r1, pc | r1 = 0x34a4a;
0x0001a51a bl 0x44820 | r0 = zbx_dsprintf ()
0x0001a51e mov r5, r0 | r5 = r0;
| if (r4 != 0) {
0x0001a520 cbz r4, 0x1a528 |
0x0001a522 mov r0, r4 | r0 = r4;
0x0001a524 blx 0xde30 | fcn_0000de30 ();
| }
0x0001a528 mov r0, r5 | r0 = r5;
0x0001a52a pop {r3, r4, r5, pc} |
| }
; assembly | /* r2dec pseudo code output */
| /* /logs/firmware/patool_extraction/rootfs.img_unblob_extracted/rootfs.img_extract/0-80367616.squashfs_v4_le_extract/usr/sbin/zabbix_agentd @ 0x14908 */
| #include <stdint.h>
|
| #define BIT_MASK(t,v) ((t)(-((v)!= 0)))&(((t)-1)>>((sizeof(t)*CHAR_BIT)-(v)))
|
; (fcn) sym.zbx_procstat_get_util () | void zbx_procstat_get_util (int16_t arg_0h, int16_t arg_4h, int16_t arg_10h, int16_t arg_18h, int16_t arg_1ch, int16_t arg_20h, int16_t arg_28h, int16_t arg_2ch, int16_t arg_5480h, int16_t arg_60h, int16_t arg_64h, int16_t arg_3b8h, int16_t arg1, int16_t arg2, int16_t arg3) {
| int16_t var_0h_2;
| int16_t var_ch;
| int16_t var_10h;
| int16_t var_14h;
| int16_t var_18h;
| int16_t var_1ch;
| int16_t var_50h;
| r0 = arg1;
| r1 = arg2;
| r2 = arg3;
0x00014908 svcmi 0xf0e92d | __asm ("svcmi 0xf0e92d");
0x0001490c mov r6, r2 | r6 = r2;
0x0001490e ldr.w r4, [pc, 0x408] |
0x00014912 mov r5, r1 | r5 = r1;
0x00014914 ldr.w r3, [pc, 0x404] | r3 = *(0x14d1c);
0x00014918 add r4, pc | r4 = 0x29636;
0x0001491a vpush {d8} | __asm ("vpush {d8}");
0x0001491e ldr.w r8, [pc, 0x400] | r8 = *(0x00014d20);
0x00014922 sub sp, 0x24 |
0x00014924 ldr r3, [r4, r3] |
0x00014926 mov r4, r0 | r4 = r0;
0x00014928 ldr r2, [sp, 0x60] | r2 = *(arg_60h);
0x0001492a add r8, pc | r8 += pc;
0x0001492c ldrd sl, sb, [sp, 0x50] | __asm ("ldrd sl, sb, [var_50h]");
0x00014930 ldr r3, [r3] | r3 = *(0x29636);
0x00014932 str r3, [sp, 0x1c] | *(arg_1ch) = r3;
0x00014934 mov.w r3, 0 | r3 = 0;
0x00014938 ldr r3, [pc, 0x3e8] |
0x0001493a ldr.w r3, [r8, r3] | r3 = *((r8 + r3));
0x0001493e str r2, [sp, 0x10] | *(arg_10h) = r2;
0x00014940 ldr r2, [sp, 0x64] | r2 = *(arg_64h);
0x00014942 ldr r0, [r3] | r0 = *(0x14d24);
0x00014944 mov r7, r3 | r7 = r3;
0x00014946 str r3, [sp, 0xc] | var_ch = r3;
0x00014948 str r2, [sp, 0x14] | var_14h = r2;
0x0001494a adds r0, 0xc | r0 += 0xc;
0x0001494c bl 0x35368 | zbx_dshm_lock ();
0x00014950 bl 0x144e4 | fcn_000144e4 (r0);
0x00014954 ldr r3, [r7] | r3 = *(r7);
0x00014956 ldr r2, [pc, 0x3d0] |
0x00014958 ldr r3, [r3, 0xc] | r3 = *(0x14d30);
0x0001495a add r2, pc | r2 = 0x29688;
0x0001495c ldr r7, [r2, 4] | r7 = *(0x2968c);
0x0001495e adds r3, 1 | r3++;
| if (r3 == 1) {
0x00014960 beq 0x149b6 | goto label_4;
| }
0x00014962 ldr r3, [r7] | r3 = *(r7);
| if (r3 == 0) {
0x00014964 cbz r3, 0x149bc | goto label_3;
| }
| do {
0x00014966 add.w fp, r7, r3 |
0x0001496a ldr.w r1, [fp] | r1 = *(fp);
| if (r1 != 0) {
0x0001496e cbz r1, 0x14972 |
0x00014970 add r1, r7 | r1 += r7;
| }
0x00014972 mov r0, r4 | r0 = r4;
0x00014974 bl 0x4624c | r0 = zbx_strcmp_null ();
| if (r0 == 0) {
0x00014978 cbnz r0, 0x149a8 |
0x0001497a ldr.w r1, [fp, 4] | r1 = *(arg_4h);
| if (r1 != 0) {
0x0001497e cbz r1, 0x14982 |
0x00014980 add r1, r7 | r1 += r7;
| }
0x00014982 mov r0, r5 | r0 = r5;
0x00014984 bl 0x4624c | r0 = zbx_strcmp_null ();
| if (r0 != 0) {
0x00014988 cbnz r0, 0x149a8 | goto label_5;
| }
0x0001498a ldr.w r1, [fp, 8] | r1 = *(arg_60h);
| if (r1 != 0) {
0x0001498e cbz r1, 0x14992 |
0x00014990 add r1, r7 | r1 += r7;
| }
0x00014992 mov r0, r6 | r0 = r6;
0x00014994 bl 0x4624c | r0 = zbx_strcmp_null ();
| if (r0 != 0) {
0x00014998 cbnz r0, 0x149a8 | goto label_5;
| }
0x0001499a ldrd r2, r3, [fp, 0x10] | __asm ("ldrd r2, r3, [arg_10h]");
0x0001499e cmp sb, r3 |
0x000149a0 it eq |
| if (sb == r3) {
0x000149a2 cmpeq sl, r2 | __asm ("cmpeq sl, r2");
| }
| if (sb == r3) {
0x000149a4 beq.w 0x14ac4 | goto label_6;
| }
| }
| label_5:
0x000149a8 ldr.w r3, [fp, 0x2c] | r3 = *(arg_2ch);
0x000149ac cmp r3, 0 |
0x000149ae bne 0x14966 |
| } while (r3 != 0);
0x000149b0 ldr r3, [pc, 0x378] |
0x000149b2 add r3, pc | r3 = 0x296e2;
0x000149b4 ldr r7, [r3, 4] | r7 = *(0x296e6);
| label_4:
0x000149b6 cmp r7, 0 |
| if (r7 != 0) {
0x000149b8 bne.w 0x14ca6 | goto label_7;
| }
| label_3:
0x000149bc ldr r3, [pc, 0x370] |
0x000149be movs r2, 0 | r2 = 0;
0x000149c0 str r2, [sp, 0x18] | *(arg_18h) = r2;
0x000149c2 ldr.w r3, [r8, r3] | r3 = *((r8 + r3));
0x000149c6 str r3, [sp, 0x10] | *(arg_10h) = r3;
0x000149c8 ldr r3, [r3] | r3 = *(0x14d30);
0x000149ca cmp r3, 3 |
| if (r3 > 3) {
0x000149cc bgt.w 0x14c70 | goto label_8;
| }
| label_2:
0x000149d0 ldr r3, [sp, 0xc] | r3 = var_ch;
0x000149d2 ldr.w r8, [r3] | r8 = *(r3);
0x000149d6 ldr.w r3, [r8, 0x10] | r3 = *((r8 + 0x10));
0x000149da clz fp, r3 |
0x000149de lsr.w fp, fp, 5 |
0x000149e2 lsl.w fp, fp, 4 |
| if (r4 != 0) {
0x000149e6 cbz r4, 0x149f8 |
0x000149e8 mov r0, r4 | r0 = r4;
0x000149ea blx 0xdf68 | r0 = fcn_0000df68 ();
0x000149ee add.w r3, r0, 8 | r3 = r0 + 8;
0x000149f2 bic r3, r3, 7 | r3 = BIT_MASK (r3, 7);
0x000149f6 add fp, r3 |
| }
| if (r5 != 0) {
0x000149f8 cbz r5, 0x14a0a |
0x000149fa mov r0, r5 | r0 = r5;
0x000149fc blx 0xdf68 | r0 = fcn_0000df68 ();
0x00014a00 add.w r3, r0, 8 | r3 = r0 + 8;
0x00014a04 bic r3, r3, 7 | r3 = BIT_MASK (r3, 7);
0x00014a08 add fp, r3 |
| }
| if (r6 != 0) {
0x00014a0a cbz r6, 0x14a1c |
0x00014a0c mov r0, r6 | r0 = r6;
0x00014a0e blx 0xdf68 | fcn_0000df68 ();
0x00014a10 invalid |
0x00014a14 lsls r0, r1, 0xc | r0 = r1 << 0xc;
0x00014a16 bic r3, r3, 7 | r3 = BIT_MASK (r3, 7);
0x00014a1a add fp, r3 |
| }
0x00014a1c ldr r3, [pc, 0x314] |
0x00014a1e add.w r2, fp, 0x5480 | r2 += arg_5480h;
0x00014a22 adds r2, 0x28 | r2 += 0x28;
0x00014a24 add r3, pc | r3 = 0x2975c;
0x00014a26 ldr.w fp, [r3, 4] | fp = EXECUTE_STR;
0x00014a2a cmp.w fp, 0 |
| if (fp == 0) {
0x00014a2e beq.w 0x14c44 | goto label_9;
| }
0x00014a32 ldrd r7, r1, [fp, 4] | __asm ("ldrd r7, r1, [arg_4h]");
0x00014a36 adds r0, r2, r7 | r0 = r2 + r7;
0x00014a38 cmp r1, r0 |
| if (r1 <= r0) {
0x00014a3a blo.w 0x14c44 | goto label_9;
| }
| label_1:
0x00014a3e add.w r2, r7, 0x5480 | r2 = r7 + 0x5480;
0x00014a42 adds r2, 0x28 | r2 += 0x28;
0x00014a44 cmp r2, r1 |
| if (r2 > r1) {
0x00014a46 bhi.w 0x14c82 | goto label_10;
| }
0x00014a4a add.w r8, fp, r7 | r8 = fp + r7;
0x00014a4e str.w r2, [fp, 4] | __asm ("str.w r2, [arg_4h]");
| if (r7 == 0) {
0x00014a52 cbnz r7, 0x14a56 |
0x00014a54 mov r8, r7 | r8 = r7;
| }
0x00014a56 movw r2, 0x54a8 | r2 = 0x54a8;
0x00014a5a movs r1, 0 | r1 = 0;
0x00014a5c mov r0, r8 | r0 = r8;
0x00014a5e blx 0xdd6c | uname ();
0x00014a62 mov r0, fp | r0 = fp;
| if (r4 != 0) {
0x00014a64 cbz r4, 0x14a74 |
0x00014a66 mov r1, r4 | r1 = r4;
0x00014a68 bl 0x14594 | fcn_00014594 (r0, r1, r2, r3);
0x00014a6c ldr r2, [pc, 0x2c8] |
0x00014a6e mov r4, r0 | r4 = r0;
0x00014a70 add r2, pc | r2 = 0x297ac;
0x00014a72 ldr r0, [r2, 4] | r0 = *(0x297b0);
| }
0x00014a74 str.w r4, [r8] | __asm ("str.w r4, [r8]");
| if (r5 != 0) {
0x00014a78 cbz r5, 0x14a88 |
0x00014a7a mov r1, r5 | r1 = r5;
0x00014a7c bl 0x14594 | fcn_00014594 (r0, r1, r2, r3);
0x00014a80 ldr r2, [pc, 0x2b8] |
0x00014a82 mov r5, r0 | r5 = r0;
0x00014a84 add r2, pc | r2 = 0x297c4;
0x00014a86 ldr r0, [r2, 4] | r0 = *(0x297c8);
| }
0x00014a88 str.w r5, [r8, 4] | __asm ("str.w r5, [r8, 4]");
| if (r6 != 0) {
0x00014a8c cbz r6, 0x14a96 |
0x00014a8e mov r1, r6 | r1 = r6;
0x00014a90 bl 0x14594 | r0 = fcn_00014594 (r0, r1, r2, r3);
0x00014a94 mov r6, r0 | r6 = r0;
| }
0x00014a96 movs r0, 0 | r0 = 0;
0x00014a98 str.w r6, [r8, 8] | __asm ("str.w r6, [r8, 8]");
0x00014a9c strd sl, sb, [r8, 0x10] | __asm ("strd sl, sb, [r8, 0x10]");
0x00014aa0 blx 0xe104 | fcn_0000e104 ();
0x00014aa4 ldr r3, [sp, 0x10] | r3 = *(arg_10h);
0x00014aa6 ldr.w r1, [fp] | r1 = *(fp);
0x00014aaa str.w r0, [r8, 0x20] | __asm ("str.w r0, [r8, 0x20]");
0x00014aae ldr r2, [r3] | r2 = *(r3);
0x00014ab0 str.w r1, [r8, 0x2c] | __asm ("str.w r1, [r8, 0x2c]");
0x00014ab4 str.w r7, [fp] | __asm ("str.w r7, [fp]");
0x00014ab8 cmp r2, 3 |
| if (r2 > 3) {
0x00014aba bgt.w 0x14c32 | goto label_11;
| }
| do {
| label_0:
0x00014abe mov.w r4, -1 | r4 = -1;
0x00014ac2 b 0x14bc2 | goto label_12;
| label_6:
0x00014ac4 blx 0xe104 | fcn_0000e104 ();
0x00014ac8 ldr.w r4, [fp, 0x28] | r4 = *(arg_28h);
0x00014acc str.w r0, [fp, 0x20] | __asm ("str.w r0, [arg_20h]");
0x00014ad0 cmp r4, 0 |
| if (r4 != 0) {
0x00014ad2 bne.w 0x14c18 | goto label_13;
| }
0x00014ad6 ldr.w r2, [fp, 0x1c] | r2 = *(arg_1ch);
0x00014ada cmp r2, 1 |
0x00014adc ble 0x14abe |
| } while (r2 <= 1);
0x00014ade ldr r3, [sp, 0x58] | r3 = *(arg_0h);
0x00014ae0 ldr.w r1, [fp, 0x18] | r1 = *(arg_18h);
0x00014ae4 cmp r2, r3 |
0x00014ae6 it le |
| if (r2 > r3) {
0x00014ae8 addle r3, r2, -1 | r3 = r2 + -1;
| }
0x00014aec add r2, r1 | r2 += r1;
0x00014aee add.w r5, r2, -1 | r5 = r2 + -1;
0x00014af2 it le |
| if (r2 > r3) {
0x00014af4 strle r3, [sp, 0x58] | *(arg_0h) = r3;
| }
0x00014af6 ldr r3, [sp, 0x58] | r3 = *(arg_0h);
0x00014af8 cmp.w r5, 0x384 |
0x00014afc it gt |
| if (r5 > 0x384) {
0x00014afe subwgt r5, r2, 0x386 | __asm ("subwgt r5, r2, 0x386");
| }
0x00014b02 lsls r2, r5, 1 | r2 = r5 << 1;
0x00014b04 subs.w lr, r5, r3 | lr = r5 - r3;
0x00014b08 ldr r3, [sp, 0x5c] | r3 = *(arg_4h);
0x00014b0a it mi |
| if (lr < r5) {
0x00014b0c addwmi lr, lr, 0x385 | __asm ("addwmi lr, lr, 0x385");
| }
0x00014b10 lsl.w r6, lr, 1 | r6 = lr << 1;
0x00014b14 ands r0, r3, 1 | r0 = r3 & 1;
0x00014b18 it eq |
| if (r0 != r3) {
0x00014b1a moveq ip, r0 |
| }
| if (r0 != r3) {
0x00014b1c beq 0x14b3e |
0x00014b1e adds r1, r2, r5 | r1 = r2 + r5;
0x00014b20 add.w r8, r6, lr | r8 = r6 + lr;
0x00014b24 add.w r1, fp, r1, lsl 3 | r1 = fp + (r1 << 3);
0x00014b28 add.w r8, fp, r8, lsl 3 | r8 = fp + (r8 << 3);
0x00014b2c ldrd r0, r3, [r1, 0x30] | __asm ("ldrd r0, r3, [r1, 0x30]");
0x00014b30 ldr.w r1, [r8, 0x30] | r1 = *((r8 + 0x30));
0x00014b34 subs r0, r0, r1 | r0 -= r1;
0x00014b36 ldr.w r1, [r8, 0x34] | r1 = *((r8 + 0x34));
0x00014b3a sbc.w ip, r3, r1 | __asm ("sbc.w ip, r3, r1");
0x00014b3c lsrs r1, r0, 0x10 | r1 = r0 >> 0x10;
| }
0x00014b3e ldr r3, [sp, 0x5c] | r3 = *(arg_4h);
0x00014b40 lsls r3, r3, 0x1e | r3 <<= 0x1e;
0x00014b42 bmi 0x14bee |
| while (1) {
0x00014b44 add r6, lr | r6 += lr;
0x00014b46 add r2, r5 | r2 += r5;
0x00014b48 add.w r2, fp, r2, lsl 3 | r2 = fp + (r2 << 3);
0x00014b4c add.w r3, fp, r6, lsl 3 | r3 = fp + (r6 << 3);
0x00014b50 ldrd r2, r5, [r2, 0x40] | __asm ("ldrd r2, r5, [r2, 0x40]");
0x00014b54 movs r1, 0xe8 | r1 = 0xe8;
0x00014b56 ldrd r3, r6, [r3, 0x40] | __asm ("ldrd r3, r6, [r3, 0x40]");
0x00014b5a mul r1, r0, r1 | r1 = r0 * r1;
0x00014b5e subs r2, r2, r3 | r2 -= r3;
0x00014b60 mov.w r3, 0x1000 |
0x00014b64 movt r3, 0xd4a5 | r3 = 0x-2b5af000;
0x00014b68 mla r1, r3, ip, r1 | __asm ("mla r1, r3, ip, r1");
0x00014b6c umull r0, r3, r0, r3 | r0:r3 = r0 * r3;
0x00014b70 add r1, r3 | r1 += r3;
0x00014b72 asrs r3, r5, 0x1f | r3 = r5 >> 0x1f;
0x00014b74 subs r5, r5, r6 | r5 -= r6;
0x00014b76 sbc.w r6, r3, r6, asr 31 | __asm ("sbc.w r6, r3, r6, asr 31");
0x00014b7a mov.w r3, 0xca00 |
0x00014b7e movt r3, 0x3b9a | r3 = 0x3b9aca00;
0x00014b82 smlal r5, r6, r2, r3 | __asm ("smlal r5, r6, r2, r3");
0x00014b86 bl 0x4c6f4 | r0 = fcn_0004c6f4 (r0, r1, r2);
0x00014b8a vmov d8, r0, r1 | __asm ("vmov d8, r0, r1");
0x00014b8e movs r0, 2 | r0 = 2;
0x00014b90 blx 0xdbf8 | r0 = longjmp_chk ();
0x00014b94 mul r1, r0, r6 | r1 = r0 * r6;
0x00014b98 asrs r3, r0, 0x1f | r3 = r0 >> 0x1f;
0x00014b9a mla r1, r5, r3, r1 | __asm ("mla r1, r5, r3, r1");
0x00014b9e umull r0, r5, r0, r5 | r0:r5 = r0 * r5;
0x00014ba2 add r1, r5 | r1 += r5;
0x00014ba4 bl 0x4c6f4 | r0 = fcn_0004c6f4 (r0, r1, r2);
0x00014ba8 vmov d0, r0, r1 | __asm ("vmov d0, r0, r1");
0x00014bac vdiv.f64 d0, d8, d0 | __asm ("vdiv.f64 d0, d8, d0");
0x00014bb0 blx 0xdee4 | fcn_0000dee4 ();
0x00014bb4 vmov.f64 d17, 1.000000e+01 | __asm ("vmov.f64 d17, 1");
0x00014bb8 ldr r3, [sp, 0x10] | r3 = *(arg_10h);
0x00014bba vdiv.f64 d16, d0, d17 | __asm ("vdiv.f64 d16, d0, d17");
0x00014bbe vstr d16, [r3] | __asm ("vstr d16, [r3]");
| label_12:
0x00014bc2 ldr r3, [sp, 0xc] | r3 = var_ch;
0x00014bc4 ldr r0, [r3] | r0 = *(r3);
0x00014bc6 adds r0, 0xc | r0 += 0xc;
0x00014bc8 bl 0x35378 | zbx_dshm_unlock ();
0x00014bcc ldr r2, [pc, 0x170] |
0x00014bce ldr r3, [pc, 0x14c] | r3 = *(0x14d1e);
0x00014bd0 add r2, pc | r2 = 0x29914;
0x00014bd2 ldr r3, [r2, r3] | r3 = *(0x29914);
0x00014bd4 ldr r2, [r3] | r2 = *(0x29914);
0x00014bd6 ldr r3, [sp, 0x1c] | r3 = *(arg_1ch);
0x00014bd8 eors r2, r3 | r2 ^= r3;
0x00014bda mov.w r3, 0 | r3 = 0;
0x00014bdc lsls r0, r0, 0xc | r0 <<= 0xc;
| if (r0 != r0) {
0x00014bde bne.w 0x14ce4 | goto label_14;
| }
0x00014be2 mov r0, r4 | r0 = r4;
0x00014be4 add sp, 0x24 |
0x00014be6 vpop {d8} | __asm ("vpop {d8}");
0x00014bea pop.w {r4, r5, r6, r7, r8, sb, sl, fp, pc} |
0x00014bee adds r1, r2, r5 | r1 = r2 + r5;
0x00014bf0 add.w r8, r6, lr | r8 = r6 + lr;
0x00014bf4 add.w r1, fp, r1, lsl 3 | r1 = fp + (r1 << 3);
0x00014bf8 add.w r8, fp, r8, lsl 3 | r8 = fp + (r8 << 3);
0x00014bfc ldrd r3, sb, [r1, 0x38] | __asm ("ldrd r3, sb, [r1, 0x38]");
0x00014c00 ldr.w r1, [r8, 0x38] | r1 = *((r8 + 0x38));
0x00014c04 subs r1, r3, r1 | r1 = r3 - r1;
0x00014c06 ldr.w r3, [r8, 0x3c] | r3 = *((r8 + 0x3c));
0x00014c0a sbc.w sb, sb, r3 | __asm ("sbc.w sb, sb, r3");
0x00014c0e adds r1, r1, r0 | r1 += r0;
0x00014c10 adc.w ip, ip, sb | __asm ("adc.w ip, ip, sb");
0x00014c14 mov r0, r1 | r0 = r1;
0x00014c16 b 0x14b44 |
| }
| label_13:
0x00014c18 ldr r6, [sp, 0x14] | r6 = var_14h;
0x00014c1a rsbs r0, r4, 0 | r0 = r4 - ;
0x00014c1c ldr r5, [r6] | r5 = *(r6);
0x00014c1e bl 0x30b74 | zbx_strerror ();
0x00014c22 ldr r1, [pc, 0x120] |
0x00014c24 mov r2, r0 | r2 = r0;
0x00014c26 mov r0, r5 | r0 = r5;
0x00014c28 add r1, pc | r1 = 0x29972;
0x00014c2a bl 0x44820 | zbx_dsprintf ()
0x00014c2e str r0, [r6] | *(r6) = r0;
0x00014c30 b 0x14abe | goto label_0;
| label_11:
0x00014c32 ldr r2, [pc, 0x114] |
0x00014c34 movs r0, 4 | r0 = 4;
0x00014c36 ldr r1, [pc, 0x114] |
0x00014c38 add r2, pc | r2 = 0x29986;
0x00014c3a add r1, pc | r1 = 0x2998c;
0x00014c3c adds r2, 0x24 | r2 += 0x24;
0x00014c3e bl 0x30d1c | zbx_zabbix_log ();
0x00014c42 b 0x14abe | goto label_0;
| label_9:
0x00014c44 mov r0, fp | r0 = fp;
0x00014c46 str r2, [sp, 0x14] | var_14h = r2;
0x00014c48 bl 0x14488 | fcn_00014488 (r0);
0x00014c4c ldr r2, [sp, 0x14] | r2 = var_14h;
0x00014c4e adds r1, r2, r0 | r1 = r2 + r0;
0x00014c50 add.w r0, r8, 0xc | r0 = r8 + 0xc;
0x00014c54 add r2, sp, 0x18 | r2 += arg_18h;
0x00014c56 bl 0x3548c | zbx_dshm_realloc ();
0x00014c5a adds r0, 1 | r0++;
| if (r0 == 1) {
0x00014c5c beq 0x14ce8 | goto label_15;
| }
0x00014c5e bl 0x144e4 | fcn_000144e4 (r0);
0x00014c62 ldr r3, [pc, 0xec] |
0x00014c64 add r3, pc | r3 = 0x299ba;
0x00014c66 ldr.w fp, [r3, 4] | fp = *(0x299be);
0x00014c6a ldrd r7, r1, [fp, 4] | __asm ("ldrd r7, r1, [arg_4h]");
0x00014c6e b 0x14a3e | goto label_1;
| label_8:
0x00014c70 ldr r2, [pc, 0xe0] |
0x00014c72 movs r0, 4 | r0 = 4;
0x00014c74 ldr r1, [pc, 0xe0] |
0x00014c76 add r2, pc | r2 = 0x299ce;
0x00014c78 adds r2, 0x24 | r2 += 0x24;
0x00014c7a add r1, pc | r1 = 0x299d6;
0x00014c7c bl 0x30d1c | zbx_zabbix_log ();
0x00014c80 b 0x149d0 | goto label_2;
| label_10:
0x00014c82 ldr r0, [pc, 0xd8] |
0x00014c84 movw r4, 0x127 | r4 = 0x127;
0x00014c88 ldr r3, [pc, 0xd4] |
0x00014c8a ldr r2, [pc, 0xd8] |
0x00014c8c ldr r1, [pc, 0xd8] |
0x00014c8e add r0, pc | r0 = 0x299f0;
0x00014c90 add r3, pc | r3 = 0x299f4;
0x00014c92 str r4, [sp] | *(sp) = r4;
0x00014c94 add r2, pc | r2 = 0x299fe;
0x00014c96 add r1, pc | r1 = 0x29a02;
0x00014c98 bl 0x43cd4 | zbx_error ();
0x00014c9c bl 0x356ac | zbx_backtrace ();
0x00014ca0 movs r0, 1 | r0 = 1;
0x00014ca2 blx 0xe3bc | fcn_0000e3bc ();
| label_7:
0x00014ca6 ldr r3, [r7] | r3 = *(r7);
0x00014ca8 cmp r3, 0 |
| if (r3 == 0) {
0x00014caa beq.w 0x149bc | goto label_3;
| }
0x00014cae add r3, r7 | r3 += r7;
0x00014cb0 ldr r3, [r3, 0x2c] | r3 = *((r3 + 0x2c));
0x00014cb2 cmp r3, 0 |
| if (r3 == 0) {
0x00014cb4 beq.w 0x149bc | goto label_3;
| }
0x00014cb8 movs r2, 1 | r2 = 1;
| do {
0x00014cba add r3, r7 | r3 += r7;
0x00014cbc adds r2, 1 | r2++;
0x00014cbe ldr r3, [r3, 0x2c] | r3 = *((r3 + 0x2c));
0x00014cc0 cmp r3, 0 |
0x00014cc2 bne 0x14cba |
| } while (r3 != 0);
0x00014cc4 cmp.w r2, 0x400 |
| if (r2 != 0x400) {
0x00014cc8 bne.w 0x149bc | goto label_3;
| }
0x00014ccc ldr r4, [sp, 0x14] | r4 = var_14h;
0x00014cce movw r1, 0x3ef | r1 = 0x3ef;
0x00014cd2 ldr r3, [pc, 0x98] |
0x00014cd4 ldr r0, [pc, 0x98] |
0x00014cd6 ldr r2, [r4] | r2 = *(r4);
0x00014cd8 add r3, pc | r3 = 0x29a4a;
0x00014cda add r0, pc | r0 = 0x29a4e;
0x00014cdc bl 0x40ed8 | zbx_strdup2 ();
0x00014ce0 str r0, [r4] | *(r4) = r0;
0x00014ce2 b 0x14abe | goto label_0;
| label_14:
0x00014ce4 blx 0xe158 | fcn_0000e158 ();
| label_15:
0x00014ce8 ldr r3, [sp, 0x10] | r3 = *(arg_10h);
0x00014cea ldr r3, [r3] | r3 = *(r3);
0x00014cec cmp r3, 0 |
| if (r3 > 0) {
0x00014cee ble 0x14cfc |
0x00014cf0 ldr r1, [pc, 0x80] |
0x00014cf2 movs r0, 1 | r0 = 1;
0x00014cf4 ldr r2, [sp, 0x18] | r2 = *(arg_18h);
0x00014cf6 add r1, pc | r1 = 0x29a6e;
0x00014cf8 bl 0x30d1c | zbx_zabbix_log ();
| }
0x00014cfc ldr r0, [sp, 0x18] | r0 = *(arg_18h);
| if (r0 != 0) {
0x00014cfe cbz r0, 0x14d08 |
0x00014d00 blx 0xde30 | fcn_0000de30 ();
0x00014d04 movs r3, 0 | r3 = 0;
0x00014d06 str r3, [sp, 0x18] | *(arg_18h) = r3;
| }
0x00014d08 ldr r3, [sp, 0xc] | r3 = var_ch;
0x00014d0a ldr r0, [r3] | r0 = *(r3);
0x00014d0c adds r0, 0xc | r0 += 0xc;
0x00014d0e bl 0x35378 | zbx_dshm_unlock ();
0x00014d12 movs r0, 1 | r0 = 1;
0x00014d14 blx 0xe3bc | fcn_0000e3bc ();
0x00014d18 strb r0, [r0, 0xb] | *((r0 + 0xb)) = r0;
0x00014d1a movs r4, r0 | r4 = r0;
0x00014d1c lsls r4, r2, 0xe | r4 = r2 << 0xe;
0x00014d1e movs r0, r0 |
0x00014d20 strb r6, [r5, 0xa] | *((r5 + 0xa)) = r6;
0x00014d22 movs r4, r0 | r4 = r0;
0x00014d24 lsls r0, r5, 0xe | r0 = r5 << 0xe;
0x00014d26 movs r0, r0 |
0x00014d28 strh r2, [r4, 2] | *((r4 + 2)) = r2;
0x00014d2a movs r4, r0 | r4 = r0;
0x00014d2c strh r2, [r1] | *(r1) = r2;
0x00014d2e movs r4, r0 | r4 = r0;
0x00014d30 lsls r4, r7, 0xe | r4 = r7 << 0xe;
0x00014d32 movs r0, r0 |
0x00014d34 ldrb r0, [r3, 0x1e] | r0 = *((r3 + 0x1e));
0x00014d36 movs r4, r0 | r4 = r0;
0x00014d38 ldrb r4, [r1, 0x1d] | r4 = *((r1 + 0x1d));
0x00014d3a movs r4, r0 | r4 = r0;
0x00014d3c ldrb r0, [r7, 0x1c] | r0 = *((r7 + 0x1c));
0x00014d3e movs r4, r0 | r4 = r0;
0x00014d40 strb r0, [r1] | *(r1) = r0;
0x00014d42 movs r4, r0 | r4 = r0;
0x00014d44 adr r3, 0x290 | r3 = 0x290;
0x00014d46 movs r3, r0 | r3 = r0;
0x00014d48 adr r3, 0x2f0 | r3 = 0x2f0;
0x00014d4a movs r3, r0 | r3 = r0;
0x00014d4c str r5, [sp, 0x3b8] | *(arg_3b8h) = r5;
0x00014d4e movs r3, r0 | r3 = r0;
0x00014d50 ldrb r0, [r3, 0x15] | r0 = *((r3 + 0x15));
0x00014d52 movs r4, r0 | r4 = r0;
0x00014d54 adr r3, 0x1f8 | r3 = 0x1f8;
0x00014d56 movs r3, r0 | r3 = r0;
0x00014d58 ldrh r2, [r1, 0x36] | r2 = *((r1 + 0x36));
0x00014d5a movs r3, r0 | r3 = r0;
0x00014d5c strh r2, [r1, 0x3c] | *((r1 + 0x3c)) = r2;
0x00014d5e movs r3, r0 | r3 = r0;
0x00014d60 strh r4, [r4, 0x28] | *((r4 + 0x28)) = r4;
0x00014d62 movs r3, r0 | r3 = r0;
0x00014d64 adr r3, 0x180 | r3 = 0x180;
0x00014d66 movs r3, r0 | r3 = r0;
0x00014d68 adr r2, 0x178 | r2 = 0x178;
0x00014d6a movs r3, r0 | r3 = r0;
0x00014d6c adr r2, 0x260 | r2 = 0x260;
0x00014d6e movs r3, r0 | r3 = r0;
0x00014d70 adr r2, 0x68 | r2 = 0x68;
0x00014d72 movs r3, r0 | r3 = r0;
0x00014d74 adr r2, 0x278 | r2 = 0x278;
0x00014d76 movs r3, r0 | r3 = r0;
| }
; assembly | /* r2dec pseudo code output */
| /* /logs/firmware/patool_extraction/rootfs.img_unblob_extracted/rootfs.img_extract/0-80367616.squashfs_v4_le_extract/usr/sbin/zabbix_agentd @ 0x1a530 */
| #include <stdint.h>
|
; (fcn) sym.zbx_read_persistent_file () | void zbx_read_persistent_file (int16_t arg1, int16_t arg2, int16_t arg3, int16_t arg4) {
| r0 = arg1;
| r1 = arg2;
| r2 = arg3;
| r3 = arg4;
0x0001a530 invalid |
0x0001a534 mov r5, r1 | r5 = r1;
0x0001a536 ldr r1, [pc, 0xa4] |
0x0001a538 mov r7, r0 | r7 = r0;
0x0001a53a mov r6, r2 | r6 = r2;
0x0001a53c mov sb, r3 | sb = r3;
0x0001a53e ldr.w r8, [pc, 0xa0] |
0x0001a542 add r1, pc | r1 = 0x34b24;
0x0001a544 blx 0xdf90 | fcn_0000df90 ();
0x0001a548 add r8, pc | r8 = 0x34b2e;
| if (r0 == 0) {
0x0001a54a cbz r0, 0x1a5b4 | goto label_1;
| }
0x0001a54c mov r4, r0 | r4 = r0;
0x0001a54e mov r2, r0 | r2 = r0;
0x0001a550 mov r1, r6 | r1 = r6;
0x0001a552 mov r0, r5 | r0 = r5;
0x0001a554 blx 0xdc98 | r0 = fcn_0000dc98 ();
| if (r0 == 0) {
0x0001a558 cbz r0, 0x1a59c | goto label_2;
| }
0x0001a55a ldr r1, [pc, 0x88] |
0x0001a55c mov r0, r5 | r0 = r5;
0x0001a55e add r1, pc | r1 = 0x34b48;
0x0001a560 blx 0xe2b0 | fcn_0000e2b0 ();
0x0001a564 movs r3, 0 | r3 = 0;
0x0001a566 strb r3, [r5, r0] | *((r5 + r0)) = r3;
0x0001a568 mov r5, r3 | r5 = r3;
| do {
0x0001a56a mov r0, r4 | r0 = r4;
0x0001a56c blx 0xdc8c | r0 = fcn_0000dc8c ();
| if (r0 != 0) {
0x0001a570 cbz r0, 0x1a596 |
0x0001a572 ldr r3, [pc, 0x74] |
0x0001a574 ldr.w r3, [r8, r3] | r3 = *((r8 + r3));
0x0001a578 ldr r3, [r3] | r3 = *(0x1a5ea);
0x0001a57a cmp r3, 0 |
| if (r3 <= 0) {
0x0001a57c ble 0x1a596 | goto label_0;
| }
0x0001a57e blx 0xe3d4 | r0 = fcn_0000e3d4 ();
0x0001a582 ldr r0, [r0] | r0 = *(r0);
0x0001a584 bl 0x30b74 | zbx_strerror ();
0x0001a588 ldr r1, [pc, 0x60] |
0x0001a58a mov r3, r0 | r3 = r0;
0x0001a58c mov r2, r7 | r2 = r7;
0x0001a58e movs r0, 1 | r0 = 1;
0x0001a590 add r1, pc | r1 = 0x34b80;
0x0001a592 bl 0x30d1c | zbx_zabbix_log ();
| }
| label_0:
0x0001a596 mov r0, r5 | r0 = r5;
0x0001a598 pop.w {r3, r4, r5, r6, r7, r8, sb, pc} |
| label_2:
0x0001a59c ldr r1, [pc, 0x50] |
0x0001a59e mov r2, r7 | r2 = r7;
0x0001a5a0 ldr.w r0, [sb] | r0 = *(sb);
0x0001a5a4 mov.w r5, -1 | r5 = -1;
0x0001a5a8 add r1, pc | r1 = 0x34b9c;
0x0001a5aa bl 0x44820 | zbx_dsprintf ()
0x0001a5ae str.w r0, [sb] | __asm ("str.w r0, [sb]");
0x0001a5b2 b 0x1a56a |
| } while (1);
| label_1:
0x0001a5b4 blx 0xe3d4 | r0 = fcn_0000e3d4 ();
0x0001a5b8 ldr r0, [r0] | r0 = *(r0);
0x0001a5ba mov.w r5, -1 | r5 = -1;
0x0001a5be ldr.w r4, [sb] | r4 = *(sb);
0x0001a5c2 bl 0x30b74 | zbx_strerror ();
0x0001a5c6 ldr r1, [pc, 0x2c] |
0x0001a5c8 mov r3, r0 | r3 = r0;
0x0001a5ca mov r2, r7 | r2 = r7;
0x0001a5cc mov r0, r4 | r0 = r4;
0x0001a5ce add r1, pc | r1 = 0x34bc8;
0x0001a5d0 bl 0x44820 | zbx_dsprintf ()
0x0001a5d4 str.w r0, [sb] | __asm ("str.w r0, [sb]");
0x0001a5d8 b 0x1a596 | goto label_0;
| }
; assembly | /* r2dec pseudo code output */
| /* /logs/firmware/patool_extraction/rootfs.img_unblob_extracted/rootfs.img_extract/0-80367616.squashfs_v4_le_extract/usr/sbin/zabbix_agentd @ 0x39570 */
| #include <stdint.h>
|
; (fcn) sym.zbx_recv_response () | void zbx_recv_response (int16_t arg1, int16_t arg2, int16_t arg3) {
| int16_t var_20h;
| int16_t var_ch;
| int16_t var_10h;
| int16_t var_14h;
| int16_t var_1ch;
| int32_t var_4h;
| int16_t var_2ch;
| r0 = arg1;
| r1 = arg2;
| r2 = arg3;
0x00039570 push {r4, r5, r6, r7, lr} |
0x00039572 sub sp, 0x34 |
0x00039574 ldr r6, [pc, 0x190] |
0x00039576 mov r7, r1 | r7 = r1;
0x00039578 ldr r4, [pc, 0x190] | r4 = *(0x3970c);
0x0003957a add r6, pc | r6 = 0x72c86;
0x0003957c ldr r3, [pc, 0x190] |
0x0003957e ldr r5, [pc, 0x194] | r5 = *(0x39716);
0x00039580 ldr r4, [r6, r4] |
0x00039582 mov r6, r2 | r6 = r2;
0x00039584 add r3, pc | r3 = 0x72c98;
0x00039586 ldr r4, [r4] | r4 = *(0x72c86);
0x00039588 str r4, [sp, 0x2c] | var_2ch = r4;
0x0003958a mov.w r4, 0 | r4 = 0;
0x0003958c lsls r0, r0, 0x10 | r0 <<= 0x10;
0x0003958e mov r4, r0 | r4 = r0;
0x00039590 ldr r5, [r3, r5] | r5 = *(0x72c98);
0x00039592 ldr r3, [r5] | r3 = *(0x72c98);
0x00039594 cmp r3, 3 |
| if (r3 > 3) {
0x00039596 bgt 0x39650 | goto label_6;
| }
| label_1:
0x00039598 movs r2, 0 | r2 = 0;
0x0003959a mov r1, r7 | r1 = r7;
0x0003959c mov r0, r4 | r0 = r4;
0x0003959e bl 0x3760c | zbx_tcp_recv_ext ();
0x000395a2 adds r0, 1 | r0++;
| if (r0 == 1) {
0x000395a4 beq.w 0x396ea | goto label_7;
| }
0x000395a8 ldr r3, [r5] | r3 = *(r5);
0x000395aa cmp r3, 3 |
| if (r3 > 3) {
0x000395ac bgt 0x3967c | goto label_8;
| }
| label_3:
0x000395ae ldr r0, [r4, 0xc] | r0 = *((r4 + 0xc));
0x000395b0 ldrb r3, [r0] | r3 = *(r0);
0x000395b2 cmp r3, 0 |
| if (r3 == 0) {
0x000395b4 beq 0x396a4 | goto label_9;
| }
0x000395b6 add r4, sp, 0x14 | r4 += var_14h;
0x000395b8 mov r1, r4 | r1 = r4;
0x000395ba bl 0x3af9c | r0 = zbx_json_open ();
0x000395be cmp r0, 0 |
| if (r0 != 0) {
0x000395c0 bne 0x396ba | goto label_10;
| }
0x000395c2 ldr r1, [pc, 0x154] |
0x000395c4 add r7, sp, 0x1c | r7 += var_1ch;
0x000395c6 str r0, [sp] | *(sp) = r0;
0x000395c8 movs r3, 0x10 | r3 = 0x10;
0x000395ca mov r2, r7 | r2 = r7;
0x000395cc mov r0, r4 | r0 = r4;
0x000395ce add r1, pc | r1 = 0x72cec;
0x000395d0 bl 0x3b3dc | r0 = zbx_json_value_by_name ();
0x000395d4 cmp r0, 0 |
| if (r0 != 0) {
0x000395d6 bne 0x396d4 | goto label_11;
| }
0x000395d8 ldr r2, [sp, 0x1c] | r2 = var_1ch;
0x000395da movw r3, 0x7573 |
0x000395de movt r3, 0x6363 | r3 = 0x63637573;
0x000395e2 cmp r2, r3 |
0x000395e4 beq 0x3963c |
| while (r2 != r3) {
0x000395e6 ldr r1, [pc, 0x134] |
0x000395e8 movs r3, 0 | r3 = 0;
0x000395ea str r3, [sp] | *(sp) = r3;
0x000395ec mov r0, r4 | r0 = r4;
0x000395ee strd r3, r3, [sp, 0xc] | __asm ("strd r3, r3, [var_ch]");
0x000395f2 add r2, sp, 0xc | r2 += var_ch;
0x000395f4 add r3, sp, 0x10 | r3 += var_10h;
0x000395f6 add r1, pc | r1 = 0x72d18;
0x000395f8 bl 0x3b404 | r0 = zbx_json_value_by_name_dyn ();
0x000395fc cmp r0, 0 |
| if (r0 == 0) {
0x000395fe beq 0x39690 | goto label_12;
| }
0x00039600 ldr r1, [pc, 0x11c] |
0x00039602 mov r2, r7 | r2 = r7;
0x00039604 ldr r0, [r6] | r0 = *(r6);
0x00039606 add r1, pc | r1 = 0x72d2a;
0x00039608 bl 0x44820 | r0 = zbx_dsprintf ()
0x0003960c mov r3, r0 | r3 = r0;
| label_4:
0x0003960e ldr r0, [sp, 0xc] | r0 = var_ch;
0x00039610 str r3, [r6] | *(r6) = r3;
| if (r0 != 0) {
0x00039612 cbz r0, 0x39618 |
0x00039614 blx 0xde30 | fcn_0000de30 ();
| }
| label_5:
0x00039618 mov.w r4, -1 | r4 = -1;
| label_0:
0x0003961c ldr r3, [r5] | r3 = *(r5);
0x0003961e cmp r3, 3 |
| if (r3 > 3) {
0x00039620 bgt 0x39662 | goto label_13;
| }
| label_2:
0x00039622 ldr r2, [pc, 0x100] |
0x00039624 ldr r3, [pc, 0xe4] | r3 = *(0x3970c);
0x00039626 add r2, pc | r2 = 0x72d50;
0x00039628 ldr r3, [r2, r3] | r3 = *(0x72d50);
0x0003962a ldr r2, [r3] | r2 = *(0x72d50);
0x0003962c ldr r3, [sp, 0x2c] | r3 = var_2ch;
0x0003962e eors r2, r3 | r2 ^= r3;
0x00039630 mov.w r3, 0 | r3 = 0;
| if (r2 != r3) {
0x00039634 bne 0x39704 | goto label_14;
| }
0x00039636 mov r0, r4 | r0 = r4;
0x00039638 add sp, 0x34 |
0x0003963a pop {r4, r5, r6, r7, pc} |
0x0003963c ldr r2, [r7, 4] | r2 = var_4h;
0x0003963e movw r3, 0x7365 |
0x00039642 movt r3, 0x73 | r3 = 0x737365;
0x00039646 cmp r2, r3 |
0x00039648 it eq |
| if (r2 != r3) {
0x0003964a moveq r4, r0 | r4 = r0;
| }
0x0003964c bne 0x395e6 |
| }
0x0003964e b 0x3961c | goto label_0;
| label_6:
0x00039650 ldr r2, [pc, 0xd4] |
0x00039652 movs r0, 4 | r0 = 4;
0x00039654 ldr r1, [pc, 0xd4] |
0x00039656 add r2, pc | r2 = 0x72d82;
0x00039658 adds r2, 0x4c | r2 += 0x4c;
0x0003965a add r1, pc | r1 = 0x72d8a;
0x0003965c bl 0x30d1c | zbx_zabbix_log ();
0x00039660 b 0x39598 | goto label_1;
| label_13:
0x00039662 mov r0, r4 | r0 = r4;
0x00039664 bl 0x45514 | zbx_result_string ();
0x00039668 ldr r2, [pc, 0xc4] |
0x0003966a mov r3, r0 | r3 = r0;
0x0003966c ldr r1, [pc, 0xc4] |
0x0003966e movs r0, 4 | r0 = 4;
0x00039670 add r2, pc | r2 = 0x72da4;
0x00039672 add r1, pc | r1 = 0x72daa;
0x00039674 adds r2, 0x4c | r2 += 0x4c;
0x00039676 bl 0x30d1c | zbx_zabbix_log ();
0x0003967a b 0x39622 | goto label_2;
| label_8:
0x0003967c ldr r2, [pc, 0xb8] |
0x0003967e movs r0, 4 | r0 = 4;
0x00039680 ldr r1, [pc, 0xb8] |
0x00039682 ldr r3, [r4, 0xc] | r3 = *((r4 + 0xc));
0x00039684 add r2, pc | r2 = 0x72dc0;
0x00039686 adds r2, 0x4c | r2 += 0x4c;
0x00039688 add r1, pc | r1 = 0x72dc8;
0x0003968a bl 0x30d1c | zbx_zabbix_log ();
0x0003968e b 0x395ae | goto label_3;
| label_12:
0x00039690 ldr r0, [pc, 0xac] |
0x00039692 movw r1, 0x14b | r1 = 0x14b;
0x00039696 ldr r3, [sp, 0xc] | r3 = var_ch;
0x00039698 ldr r2, [r6] | r2 = *(r6);
0x0003969a add r0, pc | r0 = 0x72dde;
0x0003969c bl 0x40ed8 | r0 = zbx_strdup2 ();
0x000396a0 mov r3, r0 | r3 = r0;
0x000396a2 b 0x3960e | goto label_4;
| label_9:
0x000396a4 ldr r3, [pc, 0x9c] |
0x000396a6 movw r1, 0x135 | r1 = 0x135;
0x000396aa ldr r0, [pc, 0x9c] |
0x000396ac ldr r2, [r6] | r2 = *(r6);
0x000396ae add r3, pc | r3 = 0x72df6;
0x000396b0 add r0, pc | r0 = 0x72dfe;
0x000396b2 bl 0x40ed8 | zbx_strdup2 ();
0x000396b4 invalid |
0x000396b8 b 0x39618 | goto label_5;
| label_10:
0x000396ba ldr r4, [r6] | r4 = *(r6);
0x000396bc bl 0x3a984 | r0 = zbx_json_strerror ();
0x000396c0 mov r3, r0 | r3 = r0;
0x000396c2 ldr r0, [pc, 0x88] |
0x000396c4 mov r2, r4 | r2 = r4;
0x000396c6 movw r1, 0x13b | r1 = 0x13b;
0x000396ca add r0, pc | r0 = 0x72e1c;
0x000396cc bl 0x40ed8 | zbx_strdup2 ();
0x000396d0 str r0, [r6] | *(r6) = r0;
0x000396d2 b 0x39618 | goto label_5;
| label_11:
0x000396d4 ldr r3, [pc, 0x78] |
0x000396d6 movw r1, 0x141 | r1 = 0x141;
0x000396da ldr r0, [pc, 0x78] |
0x000396dc ldr r2, [r6] | r2 = *(r6);
0x000396de add r3, pc | r3 = 0x72e32;
0x000396e0 add r0, pc | r0 = 0x72e3a;
0x000396e2 bl 0x40ed8 | zbx_strdup2 ();
0x000396e6 str r0, [r6] | *(r6) = r0;
0x000396e8 b 0x39618 | goto label_5;
| label_7:
0x000396ea ldr r4, [r6] | r4 = *(r6);
0x000396ec bl 0x36860 | r0 = zbx_socket_strerror ();
0x000396f0 mov r3, r0 | r3 = r0;
0x000396f2 ldr r0, [pc, 0x64] |
0x000396f4 mov r2, r4 | r2 = r4;
0x000396f6 mov.w r1, 0x12c | r1 = 0x12c;
0x000396fa add r0, pc | r0 = 0x72e58;
0x000396fc bl 0x40ed8 | zbx_strdup2 ();
0x00039700 str r0, [r6] | *(r6) = r0;
0x00039702 b 0x39618 | goto label_5;
| label_14:
0x00039704 blx 0xe158 | fcn_0000e158 ();
0x00039708 movs r6, 0x5e | r6 = 0x5e;
0x0003970a movs r2, r0 | r2 = r0;
0x0003970c lsls r4, r2, 0xe | r4 = r2 << 0xe;
0x0003970e movs r0, r0 |
0x00039710 movs r6, 0x54 | r6 = 0x54;
0x00039712 movs r2, r0 | r2 = r0;
0x00039714 lsls r4, r7, 0xe | r4 = r7 << 0xe;
0x00039716 movs r0, r0 |
0x00039718 ldr r0, [pc, 0x238] | r0 = *(0x39954);
0x0003971a movs r1, r0 | r1 = r0;
0x0003971c ldr r0, [pc, 0x1e8] | r0 = *(0x39908);
0x0003971e movs r1, r0 | r1 = r0;
0x00039720 ldm r1, {r1, r2, r3, r4, r5, r6, r7} | r1 = *(r1);
| r2 = *((r1 + 4));
| r3 = *((r1 + 8));
| r4 = *((r1 + 12));
| r5 = *((r1 + 16));
| r6 = *((r1 + 20));
| r7 = *((r1 + 24));
0x00039722 movs r1, r0 | r1 = r0;
0x00039724 movs r5, 0xb2 | r5 = 0xb2;
0x00039726 movs r2, r0 | r2 = r0;
0x00039728 ldm r1, {r1, r2, r3, r4, r6, r7} | r1 = *(r1);
| r2 = *((r1 + 4));
| r3 = *((r1 + 8));
| r4 = *((r1 + 12));
| r6 = *((r1 + 16));
| r7 = *((r1 + 20));
0x0003972a movs r1, r0 | r1 = r0;
0x0003972c add sl, sp, sl | sl = sp + sl;
0x0003972e movs r1, r0 | r1 = r0;
0x00039730 ldm r1!, {r2, r6, r7} | r2 = *(r1!);
| r6 = *((r1! + 4));
| r7 = *((r1! + 8));
0x00039732 movs r1, r0 | r1 = r0;
0x00039734 ldr r0, [pc, 0x338] | r0 = *(0x39a70);
0x00039736 movs r1, r0 | r1 = r0;
0x00039738 ldm r1!, {r4, r5, r7} | r4 = *(r1!);
| r5 = *((r1! + 4));
| r7 = *((r1! + 8));
0x0003973a movs r1, r0 | r1 = r0;
0x0003973c ldm r1!, {r2, r5} | r2 = *(r1!);
| r5 = *((r1! + 4));
0x0003973e movs r1, r0 | r1 = r0;
0x00039740 ldm r0!, {r1, r3, r7} | r1 = *(r0!);
| r3 = *((r0! + 4));
| r7 = *((r0! + 8));
0x00039742 movs r1, r0 | r1 = r0;
0x00039744 ldm r1, {r1, r3, r5} | r1 = *(r1);
| r3 = *((r1 + 4));
| r5 = *((r1 + 8));
0x00039746 movs r1, r0 | r1 = r0;
0x00039748 ldm r0!, {r2, r4, r5, r6} | r2 = *(r0!);
| r4 = *((r0! + 4));
| r5 = *((r0! + 8));
| r6 = *((r0! + 12));
0x0003974a movs r1, r0 | r1 = r0;
0x0003974c ldm r0!, {r1, r3, r4, r6} | r1 = *(r0!);
| r3 = *((r0! + 4));
| r4 = *((r0! + 8));
| r6 = *((r0! + 12));
0x0003974e movs r1, r0 | r1 = r0;
0x00039750 ldm r1, {r1, r4} | r1 = *(r1);
| r4 = *((r1 + 4));
0x00039752 movs r1, r0 | r1 = r0;
0x00039754 ldm r0!, {r2, r6} | r2 = *(r0!);
| r6 = *((r0! + 4));
0x00039756 movs r1, r0 | r1 = r0;
0x00039758 ldm r0!, {r1, r3, r5} | r1 = *(r0!);
| r3 = *((r0! + 4));
| r5 = *((r0! + 8));
0x0003975a movs r1, r0 | r1 = r0;
| }
; assembly | /* r2dec pseudo code output */
| /* /logs/firmware/patool_extraction/rootfs.img_unblob_extracted/rootfs.img_extract/0-80367616.squashfs_v4_le_extract/usr/sbin/zabbix_agentd @ 0x1aeb8 */
| #include <stdint.h>
|
; (fcn) sym.zbx_restore_file_details () | void zbx_restore_file_details (int16_t arg_0h, int16_t arg1, int16_t arg2, int16_t arg3, int16_t arg4) {
| int16_t var_0h;
| int16_t var_4h;
| int16_t var_8h;
| int16_t var_ch;
| int16_t var_10h;
| int16_t var_14h;
| int32_t var_18h_3;
| int32_t var_18h_4;
| int32_t var_20h;
| int32_t var_20h_2;
| int16_t var_28h;
| int16_t var_2ch;
| int16_t var_30h;
| int16_t var_34h;
| int16_t var_38h;
| int16_t var_3ch;
| int16_t var_40h;
| int16_t var_44h;
| int16_t var_48h;
| int16_t var_4ch;
| int16_t var_50h;
| int16_t var_54h;
| int16_t var_58h;
| int16_t var_5ch;
| int16_t var_60h;
| int16_t var_64h;
| int16_t var_68h;
| int16_t var_6ch;
| int16_t var_70h;
| int16_t var_74h;
| int16_t var_78h;
| int16_t var_7ch;
| int16_t var_80h;
| int32_t var_80h_2;
| int16_t var_18h;
| int32_t var_18h_5;
| int16_t var_10h_3;
| int32_t var_10h_5;
| int16_t var_8h_2;
| int32_t var_8h_3;
| int16_t var_a0h;
| int32_t var_0h_4;
| int16_t var_18h_2;
| int16_t var_10h_2;
| int16_t var_ch_2;
| int16_t var_4h_2;
| int16_t var_c0h;
| int16_t var_dch;
| int16_t var_e0h;
| int16_t var_10h_4;
| int16_t var_8dch;
| int16_t var_10c0h;
| int32_t var_0h_2;
| int8_t var_0h_3;
| int16_t var_10e0h;
| int16_t var_1100h;
| r0 = arg1;
| r1 = arg2;
| r2 = arg3;
| r3 = arg4;
0x0001aeb8 svcmi 0xf0e92d | __asm ("svcmi 0xf0e92d");
0x0001aebc sub.w sp, sp, 0x10e0 |
0x0001aec0 sub sp, 4 |
0x0001aec2 mov r5, r2 | r5 = r2;
0x0001aec4 add.w r8, sp, 0xc0 | r8 += var_c0h;
0x0001aec8 mov fp, r1 |
0x0001aeca str r2, [sp, 0x5c] | var_5ch = r2;
0x0001aecc add.w r2, sp, 0x1100 | r2 += var_1100h;
0x0001aed0 ldr r4, [r2, 8] | r4 = *((r2 + 8));
0x0001aed2 adds r2, 8 | r2 += 8;
0x0001aed4 ldr.w r2, [pc, 0x574] | r2 = *(0x0001b44c);
0x0001aed8 add.w r1, sp, 0x10c0 | r1 += var_10c0h;
0x0001aedc str r3, [sp, 0x60] | var_60h = r3;
0x0001aede adds r1, 0x1c | r1 += 0x1c;
0x0001aee0 ldr.w r3, [pc, 0x56c] |
0x0001aee4 add r6, sp, 0xa0 | r6 += var_a0h;
0x0001aee6 add r2, pc | r2 += pc;
0x0001aee8 str r4, [sp, 0x30] | var_30h = r4;
0x0001aeea vmov.i32 d16, 0 | __asm ("vmov.i32 d16, 0");
0x0001aeee ldr r3, [r2, r3] | r3 = *((r2 + r3));
0x0001aef0 sub.w r2, r8, 0x10 | r2 -= var_10h_2;
0x0001aef4 ldr.w r4, [pc, 0x55c] | r4 = *(0x0001b454);
0x0001aef8 ldr r3, [r3] | r3 = *(0x1b450);
0x0001aefa str r3, [r1] | *(r1) = r3;
0x0001aefc mov.w r3, 0 | r3 = 0;
0x0001af00 str r2, [sp, 0x64] | var_64h = r2;
0x0001af02 add.w r2, sp, 0x1100 | r2 += var_1100h;
0x0001af06 ldr r3, [r5] | r3 = *(r5);
0x0001af08 adds r2, 0xc | r2 += 0xc;
0x0001af0a add r4, pc | r4 += pc;
0x0001af0c ldr r2, [r2] | r2 = *(r2);
0x0001af0e vstr d16, [r8, -0x18] | __asm ("vstr d16, [r8, -0x18]");
0x0001af12 vstr d16, [r6] | __asm ("vstr d16, [r6]");
0x0001af16 str r2, [sp, 0x7c] | var_7ch = r2;
0x0001af18 cmp r3, 0 |
| if (r3 != 0) {
0x0001af1a bne.w 0x1b392 | goto label_15;
| }
0x0001af1e ldr.w r3, [fp] | r3 = *(fp);
0x0001af22 cmp r3, 0 |
| if (r3 != 0) {
0x0001af24 bne.w 0x1b392 | goto label_15;
| }
0x0001af28 sub.w r5, r8, 0xc | r5 -= var_ch_2;
0x0001af2c mov r1, r5 | r1 = r5;
0x0001af2e bl 0x3af9c | r0 = zbx_json_open ();
0x0001af32 mov sl, r0 | sl = r0;
0x0001af34 cmp r0, 0 |
| if (r0 != 0) {
0x0001af36 bne.w 0x1b420 | goto label_16;
| }
0x0001af3a ldr.w r1, [pc, 0x51c] |
0x0001af3e add r3, sp, 0xe0 | r3 += var_e0h;
0x0001af40 str r3, [sp, 0x58] | var_58h = r3;
0x0001af42 add r3, sp, 0xdc | r3 += var_dch;
0x0001af44 mov r2, r3 | r2 = r3;
0x0001af46 str r0, [sp] | *(sp) = r0;
0x0001af48 add r1, pc | r1 = 0x363a6;
0x0001af4a str r3, [sp, 0x78] | var_78h = r3;
0x0001af4c mov r0, r5 | r0 = r5;
0x0001af4e mov.w r3, 0x800 | r3 = 0x800;
0x0001af52 bl 0x3b3dc | zbx_json_value_by_name ();
0x0001af56 ldr.w r1, [pc, 0x504] |
0x0001af5a clz r3, r0 | r3 &= r0;
0x0001af5e lsrs r3, r3, 5 | r3 >>= 5;
0x0001af60 addw r4, sp, 0x8dc | __asm ("addw r4, var_8dch");
0x0001af64 mov r2, r4 | r2 = r4;
0x0001af66 str.w sl, [sp] | __asm ("str.w sl, [sp]");
0x0001af6a str r3, [sp, 0x50] | var_50h = r3;
0x0001af6c add r1, pc | r1 = 0x363ce;
0x0001af6e mov.w r3, 0x800 | r3 = 0x800;
0x0001af72 mov r0, r5 | r0 = r5;
0x0001af74 bl 0x3b3dc | zbx_json_value_by_name ();
0x0001af78 str r0, [sp, 0x28] | var_28h = r0;
0x0001af7a cmp r0, 0 |
| if (r0 == 0) {
0x0001af7c beq.w 0x1b384 | goto label_17;
| }
0x0001af80 movs r3, 1 | r3 = 1;
0x0001af82 str.w sl, [sp, 0x2c] | __asm ("str.w sl, [var_2ch]");
0x0001af86 str r3, [sp, 0x28] | var_28h = r3;
| label_12:
0x0001af88 ldr.w r1, [pc, 0x4d4] |
0x0001af8c movs r7, 0 | r7 = 0;
0x0001af8e mov.w r3, 0x800 | r3 = 0x800;
0x0001af92 mov r2, r4 | r2 = r4;
0x0001af94 mov r0, r5 | r0 = r5;
0x0001af96 str r7, [sp] | *(sp) = r7;
0x0001af98 add r1, pc | r1 = 0x363fc;
0x0001af9a bl 0x3b3dc | r0 = zbx_json_value_by_name ();
0x0001af9e cmp r0, 0 |
| if (r0 == 0) {
0x0001afa0 beq.w 0x1b372 | goto label_18;
| }
0x0001afa4 str r7, [sp, 0x44] | var_44h = r7;
0x0001afa6 str r7, [sp, 0x68] | var_68h = r7;
| label_11:
0x0001afa8 ldr.w r1, [pc, 0x4b8] |
0x0001afac movs r7, 0 | r7 = 0;
0x0001afae mov.w r3, 0x800 | r3 = 0x800;
0x0001afb2 mov r2, r4 | r2 = r4;
0x0001afb4 mov r0, r5 | r0 = r5;
0x0001afb6 str r7, [sp] | *(sp) = r7;
0x0001afb8 add r1, pc | r1 = 0x36420;
0x0001afba bl 0x3b3dc | zbx_json_value_by_name ();
0x0001afbc invalid |
| if (r7 == 0) {
0x0001afc0 beq.w 0x1b360 | goto label_19;
| }
0x0001afc4 str r7, [sp, 0x48] | var_48h = r7;
0x0001afc6 str r7, [sp, 0x6c] | var_6ch = r7;
| label_10:
0x0001afc8 ldr.w r1, [pc, 0x49c] |
0x0001afcc movs r7, 0 | r7 = 0;
0x0001afce mov.w r3, 0x800 | r3 = 0x800;
0x0001afd2 mov r2, r4 | r2 = r4;
0x0001afd4 mov r0, r5 | r0 = r5;
0x0001afd6 str r7, [sp] | *(sp) = r7;
0x0001afd8 add r1, pc | r1 = 0x36444;
0x0001afda bl 0x3b3dc | r0 = zbx_json_value_by_name ();
0x0001afde cmp r0, 0 |
| if (r0 == 0) {
0x0001afe0 beq.w 0x1b34e | goto label_20;
| }
0x0001afe4 str r7, [sp, 0x4c] | var_4ch = r7;
0x0001afe6 str r7, [sp, 0x70] | var_70h = r7;
| label_9:
0x0001afe8 ldr.w r1, [pc, 0x480] |
0x0001afec movs r7, 0 | r7 = 0;
0x0001afee mov.w r3, 0x800 | r3 = 0x800;
0x0001aff2 mov r2, r4 | r2 = r4;
0x0001aff4 mov r0, r5 | r0 = r5;
0x0001aff6 str r7, [sp] | *(sp) = r7;
0x0001aff8 add r1, pc | r1 = 0x36468;
0x0001affa bl 0x3b3dc | r0 = zbx_json_value_by_name ();
0x0001affe cmp r0, 0 |
| if (r0 == 0) {
0x0001b000 beq.w 0x1b326 | goto label_21;
| }
0x0001b004 str r7, [sp, 0x40] | var_40h = r7;
| label_8:
0x0001b006 ldr.w r1, [pc, 0x468] | r1 = *(0x0001b470);
0x0001b00a movs r7, 0 | r7 = 0;
0x0001b00c mov.w r3, 0x800 | r3 = 0x800;
0x0001b010 mov r2, r4 | r2 = r4;
0x0001b012 mov r0, r5 | r0 = r5;
0x0001b014 str r7, [sp] | *(sp) = r7;
0x0001b016 add r1, pc | r1 += pc;
0x0001b018 bl 0x3b3dc | r0 = zbx_json_value_by_name ();
0x0001b01c cmp r0, 0 |
| if (r0 == 0) {
0x0001b01e beq.w 0x1b2fc | goto label_22;
| }
0x0001b020 strh r5, [r5, 0xa] | *((r5 + 0xa)) = r5;
0x0001b022 str r7, [sp, 0x38] | var_38h = r7;
| label_7:
0x0001b024 ldr.w r1, [pc, 0x44c] |
0x0001b028 movs r7, 0 | r7 = 0;
0x0001b02a mov.w r3, 0x800 | r3 = 0x800;
0x0001b02e mov r2, r4 | r2 = r4;
0x0001b030 mov r0, r5 | r0 = r5;
0x0001b032 str r7, [sp] | *(sp) = r7;
0x0001b034 add r1, pc | r1 = 0x364ac;
0x0001b036 bl 0x3b3dc | r0 = zbx_json_value_by_name ();
0x0001b03a cmp r0, 0 |
| if (r0 == 0) {
0x0001b03c beq.w 0x1b2d2 | goto label_23;
| }
0x0001b040 str r7, [sp, 0x3c] | var_3ch = r7;
| label_6:
0x0001b042 ldr.w r1, [pc, 0x434] | r1 = *(0x0001b478);
0x0001b046 movs r7, 0 | r7 = 0;
0x0001b048 mov.w r3, 0x800 | r3 = 0x800;
0x0001b04c mov r2, r4 | r2 = r4;
0x0001b04e mov r0, r5 | r0 = r5;
0x0001b050 str r7, [sp] | *(sp) = r7;
0x0001b052 add r1, pc | r1 += pc;
0x0001b054 bl 0x3b3dc | r0 = zbx_json_value_by_name ();
0x0001b058 cmp r0, 0 |
| if (r0 == 0) {
0x0001b05a beq.w 0x1b2aa | goto label_24;
| }
| label_5:
0x0001b05e ldr.w r1, [pc, 0x41c] | r1 = *(0x0001b47c);
0x0001b062 movs r3, 0 | r3 = 0;
0x0001b064 str r3, [sp] | *(sp) = r3;
0x0001b066 mov r2, r4 | r2 = r4;
0x0001b068 mov.w r3, 0x800 | r3 = 0x800;
0x0001b06c mov r0, r5 | r0 = r5;
0x0001b06e add r1, pc | r1 += pc;
0x0001b070 bl 0x3b3dc | r0 = zbx_json_value_by_name ();
0x0001b074 cmp r0, 0 |
| if (r0 == 0) {
0x0001b076 beq.w 0x1b282 | goto label_25;
| }
0x0001b07a movs r3, 1 | r3 = 1;
0x0001b07c str r3, [sp, 0x54] | var_54h = r3;
| label_4:
0x0001b07e ldr.w r1, [pc, 0x400] | r1 = *(0x0001b480);
0x0001b082 mov.w sb, 0 | sb = 0;
0x0001b086 mov.w r3, 0x800 | r3 = 0x800;
0x0001b088 str r0, [r0, 0x30] | *((r0 + 0x30)) = r0;
0x0001b08a mov r2, r4 | r2 = r4;
0x0001b08c mov r0, r5 | r0 = r5;
0x0001b08e str.w sb, [sp] | __asm ("str.w sb, [sp]");
0x0001b092 add r1, pc | r1 += pc;
0x0001b094 bl 0x3b3dc | r0 = zbx_json_value_by_name ();
0x0001b098 cmp r0, 0 |
| if (r0 == 0) {
0x0001b09a beq.w 0x1b270 | goto label_26;
| }
0x0001b09e str.w sb, [sp, 0x74] | __asm ("str.w sb, [var_74h]");
| label_3:
0x0001b0a2 ldr r1, [pc, 0x3e0] |
0x0001b0a4 movs r3, 0 | r3 = 0;
0x0001b0a6 str r3, [sp] | *(sp) = r3;
0x0001b0a8 mov r2, r4 | r2 = r4;
0x0001b0aa mov.w r3, 0x800 | r3 = 0x800;
0x0001b0ae mov r0, r5 | r0 = r5;
0x0001b0b0 add r1, pc | r1 = 0x3653a;
0x0001b0b2 bl 0x3b3dc | r0 = zbx_json_value_by_name ();
0x0001b0b6 cmp r0, 0 |
| if (r0 == 0) {
0x0001b0b8 beq.w 0x1b256 | goto label_27;
| }
0x0001b0bc movs r3, 0 | r3 = 0;
0x0001b0be str r3, [sp, 0x34] | var_34h = r3;
| label_2:
0x0001b0c0 ldr r1, [pc, 0x3c4] |
0x0001b0c2 movs r3, 0 | r3 = 0;
0x0001b0c4 str r3, [sp] | *(sp) = r3;
0x0001b0c6 mov r2, r4 | r2 = r4;
0x0001b0c8 mov.w r3, 0x800 | r3 = 0x800;
0x0001b0cc mov r0, r5 | r0 = r5;
0x0001b0ce add r1, pc | r1 = 0x3655a;
0x0001b0d0 bl 0x3b3dc | r0 = zbx_json_value_by_name ();
0x0001b0d4 cmp r0, 0 |
| if (r0 == 0) {
0x0001b0d6 beq.w 0x1b22c | goto label_28;
| }
0x0001b0da mov.w r8, 0 | r8 = 0;
| label_1:
0x0001b0de ldr r1, [pc, 0x3ac] |
0x0001b0e0 movs r3, 0 | r3 = 0;
0x0001b0e2 str r3, [sp] | *(sp) = r3;
0x0001b0e4 mov r0, r5 | r0 = r5;
0x0001b0e6 mov.w r3, 0x800 | r3 = 0x800;
0x0001b0ea mov r2, r4 | r2 = r4;
0x0001b0ec add r1, pc | r1 = 0x3657e;
0x0001b0ee bl 0x3b3dc | r0 = zbx_json_value_by_name ();
0x0001b0f2 cmp r0, 0 |
| if (r0 == 0) {
0x0001b0f4 beq.w 0x1b210 | goto label_29;
| }
| label_0:
0x0001b0f8 ldr r4, [sp, 0x28] | r4 = var_28h;
0x0001b0fa ldr r3, [sp, 0x54] | r3 = var_54h;
0x0001b0fc orrs r4, r3 | r4 |= r3;
| if (r4 != r3) {
0x0001b0fe bne.w 0x1b438 | goto label_30;
| }
0x0001b102 ldr r2, [sp, 0x50] | r2 = var_50h;
0x0001b104 ldr r3, [sp, 0x44] | r3 = var_44h;
0x0001b106 add r3, r2 | r3 += r2;
0x0001b108 ldr r2, [sp, 0x48] | r2 = var_48h;
0x0001b10a add r3, r2 | r3 += r2;
0x0001b10c ldr r2, [sp, 0x4c] | r2 = var_4ch;
0x0001b10e add r3, r2 | r3 += r2;
0x0001b110 ldr r2, [sp, 0x40] | r2 = var_40h;
0x0001b112 add r3, r2 | r3 += r2;
0x0001b114 ldr r2, [sp, 0x38] | r2 = var_38h;
0x0001b116 add r3, r2 | r3 += r2;
0x0001b118 ldr r2, [sp, 0x3c] | r2 = var_3ch;
0x0001b11a add r3, r2 | r3 += r2;
0x0001b11c ldr r2, [sp, 0x34] | r2 = var_34h;
0x0001b11e add r3, r7 | r3 += r7;
0x0001b120 add r3, sb | r3 += sb;
0x0001b122 add r3, r2 | r3 += r2;
0x0001b124 add r3, r8 | r3 += r8;
0x0001b126 adds.w r3, r3, sl | r3 += sl;
| if (r3 == r3) {
0x0001b12a beq 0x1b204 | goto label_31;
| }
0x0001b12c cmp r3, 0xc |
| if (r3 != 0xc) {
0x0001b12e bne.w 0x1b3ec | goto label_32;
| }
0x0001b132 ldr r7, [pc, 0x35c] |
0x0001b134 movs r3, 0x70 | r3 = 0x70;
0x0001b136 mov r2, r4 | r2 = r4;
0x0001b138 movw r1, 0x381 | r1 = 0x381;
0x0001b13c add r7, pc | r7 = 0x365d2;
0x0001b13e mov r0, r7 | r0 = r7;
0x0001b140 bl 0x40dd8 | zbx_malloc2 ();
0x0001b144 ldr r1, [sp, 0x5c] | r1 = var_5ch;
0x0001b146 movs r2, 1 | r2 = 1;
0x0001b148 mov r5, r0 | r5 = r0;
0x0001b14a str.w r0, [fp] | __asm ("str.w r0, [fp]");
0x0001b14e ldr r3, [sp, 0x78] | r3 = var_78h;
0x0001b150 mov r0, r7 | r0 = r7;
0x0001b152 str r2, [r1] | *(r1) = r2;
0x0001b154 mov r2, r4 | r2 = r4;
0x0001b156 mov.w r1, 0x384 | r1 = 0x384;
0x0001b15a bl 0x40ed8 | zbx_strdup2 ();
0x0001b15e ldr r3, [sp, 0x68] | r3 = var_68h;
0x0001b160 str r0, [r5] | *(r5) = r0;
0x0001b162 ldr.w r5, [fp] | r5 = *(fp);
0x0001b166 ldrd r8, sb, [r6] | __asm ("ldrd r8, sb, [r6]");
0x0001b16a str r3, [r5, 8] | *((r5 + 8)) = r3;
0x0001b16c ldr r3, [sp, 0x6c] | r3 = var_6ch;
0x0001b16e str r4, [r5, 0xc] | *((r5 + 0xc)) = r4;
0x0001b170 strd r8, sb, [r5, 0x38] | __asm ("strd r8, sb, [r5, 0x38]");
0x0001b174 str r3, [r5, 0x10] | *((r5 + 0x10)) = r3;
0x0001b176 ldr r3, [sp, 0x70] | r3 = var_70h;
0x0001b178 str r3, [r5, 0x14] | *((r5 + 0x14)) = r3;
0x0001b17a ldr r3, [sp, 0x74] | r3 = var_74h;
0x0001b17c str r3, [r5, 0x40] | *((r5 + 0x40)) = r3;
0x0001b17e ldr r3, [sp, 0x2c] | r3 = var_2ch;
0x0001b180 str r3, [r5, 4] | *((r5 + 4)) = r3;
0x0001b182 ldrd r2, r3, [sp, 0x80] | __asm ("ldrd r2, r3, [var_80h]");
0x0001b186 strd r2, r3, [r5, 0x18] | __asm ("strd r2, r3, [r5, 0x18]");
0x0001b188 movs r3, 6 | r3 = 6;
0x0001b18a ldr r2, [sp, 0x58] | r2 = var_58h;
0x0001b18c sub.w r7, r2, 0x24 | r7 = r2 - 0x24;
0x0001b190 sub.w ip, r2, 0x14 |
0x0001b194 ldr r2, [sp, 0x64] | r2 = var_64h;
0x0001b196 vldr d16, [r2, -8] | __asm ("vldr d16, [r2, -8]");
0x0001b19a ldrd r2, r3, [r6, -0x18] | __asm ("ldrd r2, r3, [var_18h]");
0x0001b19e strd r2, r3, [r5, 0x20] | __asm ("strd r2, r3, [r5, 0x20]");
0x0001b1a2 ldrd r2, r3, [r6, -0x10] | __asm ("ldrd r2, r3, [var_10h_3]");
0x0001b1a6 strd r2, r3, [r5, 0x28] | __asm ("strd r2, r3, [r5, 0x28]");
0x0001b1aa ldrd r2, r3, [r6, -0x8] | __asm ("ldrd r2, r3, [r6, -0x8]");
0x0001b1ae strd r2, r3, [r5, 0x30] | __asm ("strd r2, r3, [r5, 0x30]");
0x0001b1b2 ldm r7!, {r0, r1, r2, r3} | r0 = *(r7!);
| r1 = *((r7! + 4));
| r2 = *((r7! + 8));
| r3 = *((r7! + 12));
0x0001b1b4 str r0, [r5, 0x44] | *((r5 + 0x44)) = r0;
0x0001b1b6 str r1, [r5, 0x48] | *((r5 + 0x48)) = r1;
0x0001b1b8 str r2, [r5, 0x4c] | *((r5 + 0x4c)) = r2;
0x0001b1ba str r3, [r5, 0x50] | *((r5 + 0x50)) = r3;
0x0001b1bc ldm.w ip!, {r0, r1, r2, r3} | r0 = *(ip!);
| r1 = *((ip! + 4));
| r2 = *((ip! + 8));
| r3 = *((ip! + 12));
0x0001b1c0 ldr.w r5, [fp] | r5 = *(fp);
0x0001b1c4 str r2, [r5, 0x68] | *((r5 + 0x68)) = r2;
0x0001b1c6 str r3, [r5, 0x6c] | *((r5 + 0x6c)) = r3;
0x0001b1c8 ldrd r3, r2, [sp, 0x2c] | __asm ("ldrd r3, r2, [var_30h]");
0x0001b1cc vstr d16, [r5, 0x58] | __asm ("vstr d16, [r5, 0x58]");
0x0001b1d0 str r0, [r5, 0x60] | *((r5 + 0x60)) = r0;
0x0001b1d2 str r1, [r5, 0x64] | *((r5 + 0x64)) = r1;
0x0001b1d4 str r3, [r2] | *(r2) = r3;
| do {
0x0001b1d6 ldr r3, [sp, 0x60] | r3 = var_60h;
0x0001b1d8 strd r8, sb, [r3] | __asm ("strd r8, sb, [r3]");
| label_13:
0x0001b1dc ldr r2, [pc, 0x2b4] |
0x0001b1de add.w r1, sp, 0x10c0 | r1 += var_10c0h;
0x0001b1e2 ldr r3, [pc, 0x26c] | r3 = *(0x1b452);
0x0001b1e4 adds r1, 0x1c | r1 += 0x1c;
0x0001b1e6 add r2, pc | r2 = 0x3667e;
0x0001b1e8 ldr r3, [r2, r3] | r3 = *(0x3667e);
0x0001b1ea ldr r2, [r3] | r2 = *(0x3667e);
0x0001b1ec ldr r3, [r1] | r3 = *(r1);
0x0001b1ee eors r2, r3 | r2 ^= r3;
0x0001b1f0 mov.w r3, 0 | r3 = 0;
| if (r2 != r3) {
0x0001b1f4 bne.w 0x1b448 | goto label_33;
| }
0x0001b1f8 mov r0, r4 | r0 = r4;
0x0001b1fa add.w sp, sp, 0x10e0 |
0x0001b1fe add sp, 4 |
0x0001b200 pop.w {r4, r5, r6, r7, r8, sb, sl, fp, pc} |
| label_31:
0x0001b204 ldrd r2, r3, [sp, 0x2c] | __asm ("ldrd r2, r3, [var_30h]");
0x0001b208 ldrd r8, sb, [r6] | __asm ("ldrd r8, sb, [r6]");
0x0001b20c str r2, [r3] | *(r3) = r2;
0x0001b20e b 0x1b1d6 |
| } while (1);
| label_29:
0x0001b210 ldr r3, [sp, 0x58] | r3 = var_58h;
0x0001b212 mov r0, r4 | r0 = r4;
0x0001b214 movs r2, 0x10 | r2 = 0x10;
0x0001b216 sub.w r1, r3, 0x14 | r1 = r3 - 0x14;
0x0001b21a bl 0x4a3e8 | zbx_hex2bin ();
0x0001b21e sub.w sl, r0, 0x10 | sl -= var_10h_4;
0x0001b222 clz sl, sl | sl &= sl;
0x0001b226 lsr.w sl, sl, 5 | sl >>= 5;
0x0001b228 subs r2, r3, r1 | r2 = r3 - r1;
0x0001b22a b 0x1b0f8 | goto label_0;
| label_28:
0x0001b22c vmov.i8 d17, 0xff | __asm ("vmov.i8 d17, 0xff");
0x0001b230 sub.w r2, r8, 0x18 | r2 -= var_18h_2;
0x0001b234 vmov.i32 d16, 0 | __asm ("vmov.i32 d16, 0");
0x0001b238 movs r3, 8 | r3 = 8;
0x0001b23a mov.w r1, -1 | r1 = -1;
0x0001b23e mov r0, r4 | r0 = r4;
0x0001b240 vstr d17, [sp, 8] | __asm ("vstr d17, [sp, 8]");
0x0001b244 vstr d16, [sp] | __asm ("vstr d16, [sp]");
0x0001b248 bl 0x419a8 | r0 = is_uint_n_range ();
0x0001b24c clz r8, r0 | r8 &= r0;
0x0001b250 lsr.w r8, r8, 5 | r8 >>= 5;
0x0001b254 b 0x1b0de | goto label_1;
| label_27:
0x0001b256 movs r2, 0x10 | r2 = 0x10;
0x0001b258 sub.w r1, r8, 4 | r1 -= var_4h_2;
0x0001b25c mov r0, r4 | r0 = r4;
0x0001b25e bl 0x4a3e8 | zbx_hex2bin ();
0x0001b262 sub.w r3, r0, 0x10 | r3 -= var_10h_4;
0x0001b266 clz r3, r3 | r3 &= r3;
0x0001b26a lsrs r3, r3, 5 | r3 >>= 5;
0x0001b26c str r3, [sp, 0x34] | var_34h = r3;
0x0001b26e b 0x1b0c0 | goto label_2;
| label_26:
0x0001b270 mov r1, r0 | r1 = r0;
0x0001b272 movs r2, 0xa | r2 = 0xa;
0x0001b274 mov r0, r4 | r0 = r4;
0x0001b276 mov.w sb, 1 | sb = 1;
0x0001b27a blx 0xdfe8 | waitpid ();
0x0001b27e str r0, [sp, 0x74] | var_74h = r0;
0x0001b280 b 0x1b0a2 | goto label_3;
| label_25:
0x0001b282 vmov.i8 d17, 0xff | __asm ("vmov.i8 d17, 0xff");
0x0001b286 movs r3, 8 | r3 = 8;
0x0001b288 vmov.i32 d16, 0 | __asm ("vmov.i32 d16, 0");
0x0001b28c mov r2, r6 | r2 = r6;
0x0001b28e mov.w r1, -1 | r1 = -1;
0x0001b292 mov r0, r4 | r0 = r4;
0x0001b294 vstr d17, [sp, 8] | __asm ("vstr d17, [sp, 8]");
0x0001b298 vstr d16, [sp] | __asm ("vstr d16, [sp]");
0x0001b29c bl 0x419a8 | is_uint_n_range ();
0x0001b2a0 subs r3, r0, 0 | r3 -= var_8dch;
0x0001b2a2 it ne |
| if (r3 == var_8dch) {
0x0001b2a4 movne r3, 1 | r3 = 1;
| }
0x0001b2a6 str r3, [sp, 0x54] | var_54h = r3;
0x0001b2a8 b 0x1b07e | goto label_4;
| label_24:
0x0001b2aa vmov.i8 d17, 0xff | __asm ("vmov.i8 d17, 0xff");
0x0001b2ae movs r3, 8 | r3 = 8;
0x0001b2b0 vmov.i32 d16, 0 | __asm ("vmov.i32 d16, 0");
0x0001b2b4 sub.w r2, r6, 8 | r2 -= var_8h_2;
0x0001b2b8 mov.w r1, -1 | r1 = -1;
0x0001b2bc mov r0, r4 | r0 = r4;
0x0001b2be vstr d17, [sp, 8] | __asm ("vstr d17, [sp, 8]");
0x0001b2c2 vstr d16, [sp] | __asm ("vstr d16, [sp]");
0x0001b2c6 bl 0x419a8 | r0 = is_uint_n_range ();
0x0001b2ca clz r7, r0 | r7 &= r0;
0x0001b2ce lsrs r7, r7, 5 | r7 >>= 5;
0x0001b2d0 b 0x1b05e | goto label_5;
| label_23:
0x0001b2d2 vmov.i8 d17, 0xff | __asm ("vmov.i8 d17, 0xff");
0x0001b2d6 movs r3, 8 | r3 = 8;
0x0001b2d8 vmov.i32 d16, 0 | __asm ("vmov.i32 d16, 0");
0x0001b2dc sub.w r2, r6, 0x10 | r2 -= var_10h_3;
0x0001b2e0 mov.w r1, -1 | r1 = -1;
0x0001b2e4 mov r0, r4 | r0 = r4;
0x0001b2e6 vstr d17, [sp, 8] | __asm ("vstr d17, [sp, 8]");
0x0001b2ea vstr d16, [sp] | __asm ("vstr d16, [sp]");
0x0001b2ee bl 0x419a8 | r0 = is_uint_n_range ();
0x0001b2f2 clz r3, r0 | r3 &= r0;
0x0001b2f6 lsrs r3, r3, 5 | r3 >>= 5;
0x0001b2f8 str r3, [sp, 0x3c] | var_3ch = r3;
0x0001b2fa b 0x1b042 | goto label_6;
| label_22:
0x0001b2fc vmov.i8 d17, 0xff | __asm ("vmov.i8 d17, 0xff");
0x0001b300 movs r3, 8 | r3 = 8;
0x0001b302 vmov.i32 d16, 0 | __asm ("vmov.i32 d16, 0");
0x0001b306 sub.w r2, r6, 0x18 | r2 -= var_18h;
0x0001b30a mov.w r1, -1 | r1 = -1;
0x0001b30e mov r0, r4 | r0 = r4;
0x0001b310 vstr d17, [sp, 8] | __asm ("vstr d17, [sp, 8]");
0x0001b314 vstr d16, [sp] | __asm ("vstr d16, [sp]");
0x0001b318 bl 0x419a8 | r0 = is_uint_n_range ();
0x0001b31c clz r3, r0 | r3 &= r0;
0x0001b320 lsrs r3, r3, 5 | r3 >>= 5;
0x0001b322 str r3, [sp, 0x38] | var_38h = r3;
0x0001b324 b 0x1b024 | goto label_7;
| label_21:
0x0001b326 vmov.i8 d17, 0xff | __asm ("vmov.i8 d17, 0xff");
0x0001b32a movs r3, 8 | r3 = 8;
0x0001b32c vmov.i32 d16, 0 | __asm ("vmov.i32 d16, 0");
0x0001b330 add r2, sp, 0x80 | r2 += var_80h;
0x0001b332 mov.w r1, -1 | r1 = -1;
0x0001b336 mov r0, r4 | r0 = r4;
0x0001b338 vstr d17, [sp, 8] | __asm ("vstr d17, [sp, 8]");
0x0001b33c vstr d16, [sp] | __asm ("vstr d16, [sp]");
0x0001b340 bl 0x419a8 | r0 = is_uint_n_range ();
0x0001b344 clz r3, r0 | r3 &= r0;
0x0001b348 lsrs r3, r3, 5 | r3 >>= 5;
0x0001b34a str r3, [sp, 0x40] | var_40h = r3;
0x0001b34c b 0x1b006 | goto label_8;
| label_20:
0x0001b34e mov r1, r0 | r1 = r0;
0x0001b350 movs r2, 0xa | r2 = 0xa;
0x0001b352 mov r0, r4 | r0 = r4;
0x0001b354 blx 0xdfe8 | waitpid ();
0x0001b358 movs r3, 1 | r3 = 1;
0x0001b35a str r0, [sp, 0x70] | var_70h = r0;
0x0001b35c str r3, [sp, 0x4c] | var_4ch = r3;
0x0001b35e b 0x1afe8 | goto label_9;
| label_19:
0x0001b360 mov r1, r0 | r1 = r0;
0x0001b362 movs r2, 0xa | r2 = 0xa;
0x0001b364 mov r0, r4 | r0 = r4;
0x0001b366 blx 0xdfe8 | waitpid ();
0x0001b36a movs r3, 1 | r3 = 1;
0x0001b36c str r0, [sp, 0x6c] | var_6ch = r0;
0x0001b36e str r3, [sp, 0x48] | var_48h = r3;
0x0001b370 b 0x1afc8 | goto label_10;
| label_18:
0x0001b372 mov r1, r0 | r1 = r0;
0x0001b374 movs r2, 0xa | r2 = 0xa;
0x0001b376 mov r0, r4 | r0 = r4;
0x0001b378 blx 0xdfe8 | waitpid ();
0x0001b37c movs r3, 1 | r3 = 1;
0x0001b37e str r0, [sp, 0x68] | var_68h = r0;
0x0001b380 str r3, [sp, 0x44] | var_44h = r3;
0x0001b382 b 0x1afa8 | goto label_11;
| label_17:
0x0001b384 mov r1, r0 | r1 = r0;
0x0001b386 movs r2, 0xa | r2 = 0xa;
0x0001b388 mov r0, r4 | r0 = r4;
0x0001b38a blx 0xdfe8 | waitpid ();
0x0001b38e str r0, [sp, 0x2c] | var_2ch = r0;
0x0001b390 b 0x1af88 | goto label_12;
| label_15:
0x0001b392 ldr r5, [pc, 0x104] |
0x0001b394 movw r3, 0x2fe | r3 = 0x2fe;
0x0001b398 str r3, [sp] | *(sp) = r3;
0x0001b39a ldr r1, [pc, 0x100] |
0x0001b39c ldr r3, [pc, 0x100] |
0x0001b39e add r5, pc |
0x0001b3a0 ldr r0, [pc, 0x100] |
0x0001b3a2 add.w r5, r5, 0x110 | r5 = 0x3694c;
0x0001b3a6 add r1, pc | r1 = 0x36848;
0x0001b3a8 mov r2, r5 | r2 = r5;
0x0001b3aa add r3, pc |
0x0001b3ac ldr r6, [pc, 0xf8] |
0x0001b3ae add r0, pc | r0 = 0x36856;
0x0001b3b0 bl 0x43cd4 | zbx_error ();
0x0001b3b4 bl 0x356ac | zbx_backtrace ();
0x0001b3b8 ldr r7, [sp, 0x7c] | r7 = var_7ch;
0x0001b3ba add r6, pc | r6 = 0x36866;
0x0001b3bc ldr r3, [sp, 0x5c] | r3 = var_5ch;
0x0001b3be mov r2, r5 | r2 = r5;
0x0001b3c0 mov r1, r6 | r1 = r6;
0x0001b3c2 ldr r0, [r7] | r0 = *(r7);
0x0001b3c4 ldr r3, [r3] | r3 = *(0x3684e);
0x0001b3c6 bl 0x44820 | zbx_dsprintf ()
0x0001b3ca ldr r3, [pc, 0xe0] |
0x0001b3cc str r0, [r7] | *(r7) = r0;
0x0001b3ce ldr r3, [r4, r3] | r3 = *((r4 + r3));
0x0001b3d0 ldr r3, [r3] | r3 = *(0x1b4ae);
0x0001b3d2 cmp r3, 2 |
0x0001b3d4 bgt 0x1b3dc |
| while (1) {
| label_14:
0x0001b3d6 mov.w r4, -1 | r4 = -1;
0x0001b3da b 0x1b1dc | goto label_13;
0x0001b3dc ldr r3, [sp, 0x5c] | r3 = var_5ch;
0x0001b3de mov r2, r5 | r2 = r5;
0x0001b3e0 mov r1, r6 | r1 = r6;
0x0001b3e2 movs r0, 3 | r0 = 3;
0x0001b3e4 ldr r3, [r3] | r3 = *(r3);
0x0001b3e6 bl 0x30d1c | zbx_zabbix_log ();
0x0001b3ea b 0x1b3d6 |
| }
| label_32:
0x0001b3ec ldr r3, [sp, 0x34] | r3 = var_34h;
0x0001b3ee ldrd r1, r2, [sp, 0x4c] | __asm ("ldrd r1, r2, [var_50h]");
0x0001b3f2 ldr r0, [sp, 0x48] | r0 = var_48h;
0x0001b3f4 strd sb, r3, [sp, 0x18] | __asm ("strd sb, r3, [var_18h_3]");
0x0001b3f8 ldr r3, [sp, 0x3c] | r3 = var_3ch;
0x0001b3fa ldr r4, [sp, 0x7c] | r4 = var_7ch;
0x0001b3fc str r1, [sp, 4] | var_4h = r1;
0x0001b3fe str r3, [sp, 0x10] | var_10h = r3;
0x0001b400 ldr r3, [sp, 0x38] | r3 = var_38h;
0x0001b402 ldr r1, [pc, 0xac] |
0x0001b404 strd r8, sl, [sp, 0x20] | __asm ("strd r8, sl, [var_20h]");
0x0001b408 str r3, [sp, 0xc] | var_ch = r3;
0x0001b40a ldr r3, [sp, 0x40] | r3 = var_40h;
0x0001b40c add r1, pc | r1 = 0x368c2;
0x0001b40e str r7, [sp, 0x14] | var_14h = r7;
0x0001b410 str r0, [sp] | *(sp) = r0;
0x0001b412 str r3, [sp, 8] | var_8h = r3;
0x0001b414 ldr r3, [sp, 0x44] | r3 = var_44h;
0x0001b416 ldr r0, [r4] | r0 = *(r4);
0x0001b418 bl 0x44820 | zbx_dsprintf ()
0x0001b41c str r0, [r4] | *(r4) = r0;
0x0001b41e b 0x1b3d6 | goto label_14;
| label_16:
0x0001b420 ldr r5, [sp, 0x7c] | r5 = var_7ch;
0x0001b422 ldr r4, [r5] | r4 = *(r5);
0x0001b424 bl 0x3a984 | zbx_json_strerror ();
0x0001b428 ldr r1, [pc, 0x88] |
0x0001b42a mov r2, r0 | r2 = r0;
0x0001b42c mov r0, r4 | r0 = r4;
0x0001b42e add r1, pc | r1 = 0x368e6;
0x0001b430 bl 0x44820 | zbx_dsprintf ()
0x0001b434 str r0, [r5] | *(r5) = r0;
0x0001b436 b 0x1b3d6 | goto label_14;
| label_30:
0x0001b438 ldr r4, [sp, 0x7c] | r4 = var_7ch;
0x0001b43a ldr r1, [pc, 0x7c] |
0x0001b43c ldr r0, [r4] | r0 = *(r4);
0x0001b43e add r1, pc | r1 = 0x368fc;
0x0001b440 bl 0x44820 | zbx_dsprintf ()
0x0001b444 str r0, [r4] | *(r4) = r0;
0x0001b446 b 0x1b3d6 | goto label_14;
| label_33:
0x0001b448 blx 0xe158 | fcn_0000e158 ();
0x0001b44c lsrs r2, r6, 0x13 | r2 = r6 >> 0x13;
0x0001b44e movs r4, r0 | r4 = r0;
0x0001b450 lsls r4, r2, 0xe | r4 = r2 << 0xe;
0x0001b452 movs r0, r0 |
0x0001b454 lsrs r6, r1, 0x13 | r6 = r1 >> 0x13;
0x0001b456 movs r4, r0 | r4 = r0;
0x0001b458 strb r0, [r3, r4] | *((r3 + r4)) = r0;
0x0001b45a movs r3, r0 | r3 = r0;
0x0001b45c cmp r6, 0x74 |
0x0001b45e movs r3, r0 | r3 = r0;
0x0001b460 strb r4, [r4, r3] | *((r4 + r3)) = r4;
0x0001b462 movs r3, r0 | r3 = r0;
0x0001b464 strb r0, [r1, r3] | *((r1 + r3)) = r0;
0x0001b466 movs r3, r0 | r3 = r0;
0x0001b468 strb r4, [r6, r2] | *((r6 + r2)) = r4;
0x0001b46a movs r3, r0 | r3 = r0;
0x0001b46c strb r4, [r3, r2] | *((r3 + r2)) = r4;
0x0001b46e movs r3, r0 | r3 = r0;
0x0001b470 strb r2, [r0, r2] | *((r0 + r2)) = r2;
0x0001b472 movs r3, r0 | r3 = r0;
0x0001b474 strb r4, [r5, r1] | *((r5 + r1)) = r4;
0x0001b476 movs r3, r0 | r3 = r0;
0x0001b478 str r2, [r0, 0x30] | *((r0 + 0x30)) = r2;
0x0001b47a movs r3, r0 | r3 = r0;
0x0001b47c strh r6, [r7, r7] | *((r7 + r7)) = r6;
0x0001b47e movs r3, r0 | r3 = r0;
0x0001b480 strb r6, [r2, r0] | *((r2 + r0)) = r6;
0x0001b482 movs r3, r0 | r3 = r0;
0x0001b484 strb r0, [r1, r0] | *((r1 + r0)) = r0;
0x0001b486 movs r3, r0 | r3 = r0;
0x0001b488 strh r2, [r7, r7] | *((r7 + r7)) = r2;
0x0001b48a movs r3, r0 | r3 = r0;
0x0001b48c strh r0, [r6, r7] | *((r6 + r7)) = r0;
0x0001b48e movs r3, r0 | r3 = r0;
0x0001b490 str r4, [r3, r3] | *((r3 + r3)) = r4;
0x0001b492 movs r3, r0 | r3 = r0;
0x0001b494 lsrs r2, r6, 7 | r2 = r6 >> 7;
0x0001b496 movs r4, r0 | r4 = r0;
0x0001b498 strh r6, [r6, r7] | *((r6 + r7)) = r6;
0x0001b49a movs r3, r0 | r3 = r0;
0x0001b49c ldr r6, [pc, 0x1c8] | r6 = *(0x1b668);
0x0001b49e movs r3, r0 | r3 = r0;
0x0001b4a0 subs r2, r1, 0 | r2 -= var_0h_2;
0x0001b4a2 movs r3, r0 | r3 = r0;
0x0001b4a4 movs r0, 0x6a | r0 = 0x6a;
0x0001b4a6 movs r3, r0 | r3 = r0;
0x0001b4a8 strh r6, [r1, r2] | *((r1 + r2)) = r6;
0x0001b4aa movs r3, r0 | r3 = r0;
0x0001b4ac lsls r4, r7, 0xe | r4 = r7 << 0xe;
0x0001b4ae movs r0, r0 |
0x0001b4b0 strh r0, [r2, r3] | *((r2 + r3)) = r0;
0x0001b4b2 movs r3, r0 | r3 = r0;
0x0001b4b4 strh r2, [r1, r1] | *((r1 + r1)) = r2;
0x0001b4b6 movs r3, r0 | r3 = r0;
0x0001b4b8 strh r6, [r3, r1] | *((r3 + r1)) = r6;
0x0001b4ba movs r3, r0 | r3 = r0;
0x0001b4bc ldr r2, [r0] | r2 = *(r0);
0x0001b4be push {r3, r4, r5, r6, r7, lr} |
0x0001b4c0 ldr r3, [r1] | r3 = *(r1);
0x0001b4c2 ldr r0, [r2, 0x20] | r0 = *((r2 + 0x20));
0x0001b4c4 ldr r1, [r3, 0x20] | r1 = *((r3 + 0x20));
0x0001b4c6 cmp r0, r1 |
| if (r0 != r1) {
0x0001b4c8 bne 0x1b4f8 | goto label_34;
| }
0x0001b4ca ldr r7, [r2, 8] | r7 = *((r2 + 8));
0x0001b4cc ldr r1, [r3, 8] | r1 = *((r3 + 8));
0x0001b4ce cmp r7, r1 |
| if (r7 != r1) {
0x0001b4d0 bne 0x1b4f8 | goto label_34;
| }
0x0001b4d2 cmp r7, 0 |
| if (r7 <= 0) {
0x0001b4d4 ble 0x1b4fc | goto label_35;
| }
0x0001b4d6 ldr r6, [r2, 4] | r6 = *((r2 + 4));
0x0001b4d8 movs r4, 0 | r4 = 0;
0x0001b4da ldr r5, [r3, 4] | r5 = *((r3 + 4));
0x0001b4dc subs r6, 4 | r6 -= 4;
0x0001b4de subs r5, 4 | r5 -= 4;
0x0001b4e0 b 0x1b4e6 |
| while (r0 == 0) {
0x0001b4e2 cmp r7, r4 |
| if (r7 == r4) {
0x0001b4e4 beq 0x1b4fa | goto label_36;
| }
0x0001b4e6 ldr r1, [r5, 4]! | r1 = *((r5 += 4));
0x0001b4ea adds r4, 1 | r4++;
0x0001b4ec ldr r0, [r6, 4]! | r0 = *((r6 += 4));
0x0001b4f0 blx 0xe3b0 | r0 = fcn_0000e3b0 ();
0x0001b4f4 cmp r0, 0 |
0x0001b4f6 beq 0x1b4e2 |
| }
| label_34:
0x0001b4f8 movs r0, 1 | r0 = 1;
| label_36:
0x0001b4fa pop {r3, r4, r5, r6, r7, pc} |
| label_35:
0x0001b4fc movs r0, 0 | r0 = 0;
0x0001b4fe pop {r3, r4, r5, r6, r7, pc} |
| }
; assembly | /* r2dec pseudo code output */
| /* /logs/firmware/patool_extraction/rootfs.img_unblob_extracted/rootfs.img_extract/0-80367616.squashfs_v4_le_extract/usr/sbin/zabbix_agentd @ 0x3a0e8 */
| #include <stdint.h>
|
; (fcn) sym.zbx_set_data_destination_hosts () | void zbx_set_data_destination_hosts (int16_t arg_80h, int16_t arg_84h, int16_t arg_88h, int16_t arg1, int16_t arg2, int16_t arg3, int16_t arg4) {
| 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_24h;
| int16_t var_3ch;
| int16_t var_40h;
| int16_t var_54h;
| r0 = arg1;
| r1 = arg2;
| r2 = arg3;
| r3 = arg4;
0x0003a0e8 push.w {r4, r5, r6, r7, r8, sb, sl, fp, lr} |
0x0003a0ec sub sp, 0x5c |
0x0003a0ee str r2, [sp, 4] | var_4h = r2;
0x0003a0f0 add.w r8, sp, 0x24 | r8 += var_24h;
0x0003a0f4 mov r6, r0 | r6 = r0;
0x0003a0f6 add.w sl, sp, 0x3c | sl += var_3ch;
0x0003a0fa ldr r2, [pc, 0x184] |
0x0003a0fc mov r0, r8 | r0 = r8;
0x0003a0fe str r3, [sp, 0xc] | var_ch = r3;
0x0003a100 mov fp, r1 |
0x0003a102 ldr r4, [sp, 0x80] | r4 = *(arg_80h);
0x0003a104 mov.w sb, 0 | sb = 0;
0x0003a108 ldr r3, [pc, 0x178] | r3 = *(0x3a284);
0x0003a10a add r2, pc | r2 = 0x74390;
0x0003a10c str r4, [sp, 0x10] | var_10h = r4;
0x0003a10e ldr r3, [r2, r3] |
0x0003a110 ldr r3, [r3] | r3 = *(0x74390);
0x0003a112 str r3, [sp, 0x54] | var_54h = r3;
0x0003a114 mov.w r3, 0 | r3 = 0;
0x0003a118 ldr r3, [pc, 0x16c] |
0x0003a11a add r3, pc | r3 = 0x743a6;
0x0003a11c str r3, [sp] | *(sp) = r3;
0x0003a11e ldr r3, [pc, 0x16c] |
0x0003a120 add r3, pc | r3 = 0x743b2;
0x0003a122 str r3, [sp, 8] | var_8h = r3;
0x0003a124 ldr r3, [sp, 0x84] | r3 = *(arg_84h);
0x0003a126 str r3, [sp, 0x14] | var_14h = r3;
0x0003a128 ldr r3, [sp, 0x88] | r3 = *(arg_88h);
0x0003a12a str r3, [sp, 0x1c] | var_1ch = r3;
0x0003a12c bl 0x32e10 | zbx_vector_ptr_create ();
0x0003a130 mov r0, sl | r0 = sl;
0x0003a132 bl 0x32e10 | zbx_vector_ptr_create ();
| label_5:
0x0003a136 movs r1, 0x2c | r1 = 0x2c;
0x0003a138 mov r0, r6 | r0 = r6;
0x0003a13a blx 0xdcd4 | r0 = fcn_0000dcd4 ();
0x0003a13e cmp r0, 0 |
| if (r0 == 0) {
0x0003a140 beq.w 0x3a24a | goto label_6;
| }
0x0003a144 strb.w sb, [r0] | *(r0) = sb;
0x0003a148 str r0, [sp, 0x18] | var_18h = r0;
| do {
| label_3:
0x0003a14a movs r1, 0x3b | r1 = 0x3b;
0x0003a14c mov r0, r6 | r0 = r6;
0x0003a14e blx 0xdcd4 | r0 = fcn_0000dcd4 ();
0x0003a152 mov r5, r0 | r5 = r0;
| if (r0 != 0) {
0x0003a154 cbz r0, 0x3a15a |
0x0003a156 strb.w sb, [r0] | *(r0) = sb;
| }
0x0003a15a movs r3, 8 | r3 = 8;
0x0003a15c movs r2, 0 | r2 = 0;
0x0003a15e movw r1, 0x293 | r1 = 0x293;
0x0003a162 ldr r0, [sp] | r0 = *(sp);
0x0003a164 bl 0x40dd8 | r0 = zbx_malloc2 ();
0x0003a168 mov r2, r0 | r2 = r0;
0x0003a16a mov r1, r0 | r1 = r0;
0x0003a16c mov r4, r0 | r4 = r0;
0x0003a16e mov r3, fp | r3 = fp;
0x0003a170 mov r0, r6 | r0 = r6;
0x0003a172 str sb, [r2], 4 | *(r2) = sb;
| r2 += 4;
0x0003a176 bl 0x42e88 | r0 = parse_serveractive_element ();
0x0003a17a mov r7, r0 | r7 = r0;
| if (r0 != 0) {
0x0003a17c cbz r0, 0x3a1da |
0x0003a17e ldr r1, [pc, 0x110] |
0x0003a180 mov r3, r6 | r3 = r6;
0x0003a182 ldr r2, [sp, 4] | r2 = var_4h;
0x0003a184 movs r0, 0 | r0 = 0;
0x0003a186 add r1, pc | r1 = 0x7441c;
0x0003a188 bl 0x44820 | zbx_dsprintf ()
| label_2:
0x0003a18c ldr r3, [sp, 0x1c] | r3 = var_1ch;
0x0003a18e str r0, [r3] | *(r3) = r0;
0x0003a190 cmp r5, 0 |
| if (r5 != 0) {
0x0003a192 bne 0x3a20c | goto label_7;
| }
0x0003a194 mov r1, r4 | r1 = r4;
0x0003a196 mov r0, sl | r0 = sl;
0x0003a198 bl 0x32ea0 | zbx_vector_ptr_append ();
0x0003a19c mov r1, r4 | r1 = r4;
0x0003a19e mov r0, r8 | r0 = r8;
0x0003a1a0 bl 0x32ea0 | zbx_vector_ptr_append ();
| label_0:
0x0003a1a4 mov.w r7, -1 | r7 = -1;
| label_4:
0x0003a1a8 mov r0, sl | r0 = sl;
0x0003a1aa bl 0x32e70 | zbx_vector_ptr_destroy ();
0x0003a1ae ldr r1, [pc, 0xe4] |
0x0003a1b0 mov r0, r8 | r0 = r8;
0x0003a1b2 add r1, pc | r1 = 0x7444c;
0x0003a1b4 bl 0x33280 | zbx_vector_ptr_clear_ext ();
0x0003a1b8 mov r0, r8 | r0 = r8;
0x0003a1ba bl 0x32e70 | zbx_vector_ptr_destroy ();
0x0003a1be ldr r2, [pc, 0xd8] |
0x0003a1c0 ldr r3, [pc, 0xc0] | r3 = *(0x3a284);
0x0003a1c2 add r2, pc | r2 = 0x74460;
0x0003a1c4 ldr r3, [r2, r3] | r3 = *(0x74460);
0x0003a1c6 ldr r2, [r3] | r2 = *(0x74460);
0x0003a1c8 ldr r3, [sp, 0x54] | r3 = var_54h;
0x0003a1ca eors r2, r3 | r2 ^= r3;
0x0003a1cc mov.w r3, 0 | r3 = 0;
| if (r2 != r3) {
0x0003a1d0 bne 0x3a24e | goto label_8;
| }
0x0003a1d2 mov r0, r7 | r0 = r7;
0x0003a1d4 add sp, 0x5c |
0x0003a1d6 pop.w {r4, r5, r6, r7, r8, sb, sl, fp, pc} |
| }
0x0003a1da ldr r0, [r4] | r0 = *(r4);
0x0003a1dc bl 0x413f0 | is_supported_ip ();
0x0003a1e0 adds r0, 1 | r0++;
| if (r0 == 1) {
0x0003a1e2 beq 0x3a222 | goto label_9;
| }
| label_1:
0x0003a1e4 ldr r2, [sp, 8] | r2 = var_8h;
0x0003a1e6 mov r1, r4 | r1 = r4;
0x0003a1e8 mov r0, r8 | r0 = r8;
0x0003a1ea bl 0x33174 | r0 = zbx_vector_ptr_search ();
| if (r0 == 0) {
0x0003a1ee cbz r0, 0x3a23c | goto label_10;
| }
| if (r5 == 0) {
0x0003a1f0 cbz r5, 0x3a252 | goto label_11;
| }
0x0003a1f2 movs r3, 0x3b | r3 = 0x3b;
0x0003a1f4 mov r6, r5 | r6 = r5;
0x0003a1f6 mov r1, r4 | r1 = r4;
0x0003a1f8 mov r0, sl | r0 = sl;
0x0003a1fa strb r3, [r6], 1 | *(r6) = r3;
| r6++;
0x0003a1fe bl 0x32ea0 | zbx_vector_ptr_append ();
0x0003a202 mov r1, r4 | r1 = r4;
0x0003a204 mov r0, r8 | r0 = r8;
0x0003a206 bl 0x32ea0 | zbx_vector_ptr_append ();
0x0003a20a b 0x3a14a |
| } while (1);
| label_7:
0x0003a20c movs r3, 0x3b | r3 = 0x3b;
0x0003a20e mov r1, r4 | r1 = r4;
0x0003a210 mov r0, sl | r0 = sl;
0x0003a212 strb r3, [r5] | *(r5) = r3;
0x0003a214 bl 0x32ea0 | zbx_vector_ptr_append ();
0x0003a218 mov r1, r4 | r1 = r4;
0x0003a21a mov r0, r8 | r0 = r8;
0x0003a21c bl 0x32ea0 | zbx_vector_ptr_append ();
0x0003a220 b 0x3a1a4 | goto label_0;
| label_9:
0x0003a222 ldr r0, [r4] | r0 = *(r4);
0x0003a224 bl 0x41424 | zbx_validate_hostname ();
0x0003a228 adds r0, 1 | r0++;
| if (r0 != 1) {
0x0003a22a bne 0x3a1e4 | goto label_1;
| }
0x0003a22c ldr r1, [pc, 0x6c] |
0x0003a22e mov r3, r6 | r3 = r6;
0x0003a230 ldr r2, [sp, 4] | r2 = var_4h;
0x0003a232 mov r0, r7 | r0 = r7;
0x0003a234 add r1, pc | r1 = 0x744d4;
0x0003a236 bl 0x44820 | zbx_dsprintf ()
0x0003a23a b 0x3a18c | goto label_2;
| label_10:
0x0003a23c ldr r1, [pc, 0x60] |
0x0003a23e mov r3, r6 | r3 = r6;
0x0003a240 ldr r2, [sp, 4] | r2 = var_4h;
0x0003a242 add r1, pc | r1 = 0x744e6;
0x0003a244 bl 0x44820 | zbx_dsprintf ()
0x0003a248 b 0x3a18c | goto label_2;
| label_6:
0x0003a24a str r0, [sp, 0x18] | var_18h = r0;
0x0003a24c b 0x3a14a | goto label_3;
| label_8:
0x0003a24e blx 0xe158 | fcn_0000e158 ();
| label_11:
0x0003a252 mov r1, r4 | r1 = r4;
0x0003a254 mov r0, sl | r0 = sl;
0x0003a256 bl 0x32ea0 | zbx_vector_ptr_append ();
0x0003a25a mov r1, r4 | r1 = r4;
0x0003a25c mov r0, r8 | r0 = r8;
0x0003a25e bl 0x32ea0 | zbx_vector_ptr_append ();
0x0003a262 ldr r3, [sp, 0xc] | r3 = var_ch;
0x0003a264 mov r0, sl | r0 = sl;
0x0003a266 ldrd r1, r2, [sp, 0x10] | __asm ("ldrd r1, r2, [var_10h]");
0x0003a26a blx r3 | uint32_t (*r3)(uint32_t, uint32_t, uint32_t) (r0, r1, r3);
0x0003a26c ldr r3, [sp, 0x18] | r3 = var_18h;
0x0003a26e str r5, [sp, 0x40] | var_40h = r5;
0x0003a270 cmp r3, 0 |
| if (r3 == 0) {
0x0003a272 beq 0x3a1a8 | goto label_4;
| }
0x0003a274 mov r6, r3 | r6 = r3;
0x0003a276 movs r3, 0x2c | r3 = 0x2c;
0x0003a278 strb r3, [r6], 1 | *(r6) = r3;
| r6++;
0x0003a27c b 0x3a136 | goto label_5;
| }
; assembly | /* r2dec pseudo code output */
| /* /logs/firmware/patool_extraction/rootfs.img_unblob_extracted/rootfs.img_extract/0-80367616.squashfs_v4_le_extract/usr/sbin/zabbix_agentd @ 0x38cc0 */
| #include <stdint.h>
|
; (fcn) sym.zbx_telnet_execute () | void zbx_telnet_execute (int16_t arg_10000h, int16_t arg1, int16_t arg2, int16_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_20h;
| int16_t var_24h;
| int16_t var_2ch;
| int16_t var_30h;
| r0 = arg1;
| r1 = arg2;
| r2 = arg3;
| r3 = arg4;
0x00038cc0 push.w {r4, r5, r6, r7, r8, sb, sl, fp, lr} |
0x00038cc4 sub.w sp, sp, 0x10000 |
0x00038cc8 ldr r6, [pc, 0x374] |
0x00038cca sub sp, 0x34 |
0x00038ccc add.w r7, sp, 0x10000 | r7 += arg_10000h;
0x00038cd0 mov r8, r0 | r8 = r0;
0x00038cd2 ldr r5, [pc, 0x370] | r5 = *(0x39046);
0x00038cd4 adds r7, 0x2c | r7 += 0x2c;
0x00038cd6 add r6, pc | r6 = 0x71d1a;
0x00038cd8 ldr r4, [pc, 0x36c] |
0x00038cda ldr r5, [r6, r5] |
0x00038cdc add r4, pc | r4 = 0x71d28;
0x00038cde ldr r5, [r5] | r5 = *(0x71d1a);
0x00038ce0 str r5, [r7] | *(r7) = r5;
0x00038ce2 mov.w r5, 0 | r5 = 0;
0x00038ce6 strd r2, r3, [sp, 0x18] | __asm ("strd r2, r3, [sp, 0x18]");
0x00038cea ldr r2, [pc, 0x360] | r2 = *(0x3904e);
0x00038cec mov r3, r4 | r3 = r4;
0x00038cee mov r5, r1 | r5 = r1;
0x00038cf0 ldr r3, [r4, r2] |
0x00038cf2 str r3, [sp, 0xc] | var_ch = r3;
0x00038cf4 ldr r3, [r3] | r3 = *(0x71d28);
0x00038cf6 cmp r3, 3 |
| if (r3 > 3) {
0x00038cf8 bgt.w 0x38fa2 | goto label_15;
| }
| label_8:
0x00038cfc ldr r4, [pc, 0x350] |
0x00038cfe mov r0, r5 | r0 = r5;
0x00038d00 add r6, sp, 0x30 | r6 += var_30h;
0x00038d02 blx 0xdf68 | fcn_0000df68 ();
0x00038d06 add r4, pc | r4 = 0x71d5a;
0x00038d08 add.w sb, r0, 1 | sb = r0 + 1;
0x00038d0c mov r7, r6 | r7 = r6;
0x00038d0e mov r3, sb | r3 = sb;
0x00038d10 str r0, [r7, -0x8]! | *((r7 -= 0x8)) = r0;
0x00038d14 movs r2, 0 | r2 = 0;
0x00038d16 mov.w r1, 0x1bc | r1 = 0x1bc;
0x00038d1a mov r0, r4 | r0 = r4;
0x00038d1c bl 0x40dd8 | zbx_malloc2 ();
0x00038d20 mov r2, sb | r2 = sb;
0x00038d22 mov r1, r5 | r1 = r5;
0x00038d24 mov sb, r0 | sb = r0;
0x00038d26 str r0, [sp, 0x10] | var_10h = r0;
0x00038d28 bl 0x4465c | zbx_strlcpy ();
0x00038d2c mov r0, sb | r0 = sb;
0x00038d2e mov r1, r7 | r1 = r7;
0x00038d30 bl 0x382e0 | fcn_000382e0 (r0, r1);
0x00038d34 mov r0, r4 | r0 = r4;
0x00038d36 ldr r4, [r6, -0x8] | r4 = *((r6 - 0x8));
0x00038d3a movs r2, 0 | r2 = 0;
0x00038d3c movw r1, 0x1c1 | r1 = 0x1c1;
0x00038d40 mov r5, sb | r5 = sb;
0x00038d42 str r4, [sp, 0x14] | var_14h = r4;
0x00038d44 lsls r3, r4, 1 | r3 = r4 << 1;
0x00038d46 adds r3, 1 | r3++;
0x00038d48 bl 0x40dd8 | r0 = zbx_malloc2 ();
0x00038d4c mov sb, r0 | sb = r0;
0x00038d4e cmp r4, 0 |
| if (r4 == 0) {
0x00038d50 beq.w 0x39002 | goto label_16;
| }
0x00038d54 subs r4, 1 | r4--;
0x00038d56 subs r3, r5, 1 | r3 = r5 - 1;
0x00038d58 add r4, r5 | r4 += r5;
0x00038d5a movs r2, 0 | r2 = 0;
0x00038d5c movw r5, 0xa0d | r5 = 0xa0d;
| do {
0x00038d60 ldrb r1, [r3, 1]! | r1 = *((r3 += 1));
0x00038d64 add.w r0, sb, r2 | r0 = sb + r2;
0x00038d68 cmp r1, 0xa |
0x00038d6a itete ne |
| if (r1 == 0xa) {
0x00038d6c addne r2, 1 | r2++;
| }
| if (r1 != 0xa) {
0x00038d6e addeq r2, 2 | r2 += 2;
| }
| if (r1 == 0xa) {
0x00038d70 strbne r1, [r0] | *(r0) = r1;
| }
| if (r1 == 0xa) {
0x00038d72 strheq r5, [r0] | __asm ("strheq r5, [r0]");
| }
0x00038d74 cmp r3, r4 |
0x00038d76 bne 0x38d60 |
| } while (r3 != r4);
| label_13:
0x00038d78 mov r1, sb | r1 = sb;
0x00038d7a mov r0, r8 | r0 = r8;
0x00038d7c bl 0x38554 | fcn_00038554 (r0, r1, r2);
0x00038d80 ldr.w fp, [pc, 0x2d0] |
0x00038d84 movs r2, 2 | r2 = 2;
0x00038d86 ldr r1, [pc, 0x2d0] |
0x00038d88 mov r0, r8 | r0 = r8;
0x00038d8a add r7, sp, 0x24 | r7 += var_24h;
0x00038d8c add.w sl, sp, 0x20 | sl += var_20h;
0x00038d90 add fp, pc | fp = 0x71de8;
0x00038d92 add r4, sp, 0x2c | r4 += var_2ch;
0x00038d94 add r1, pc | r1 = 0x71df2;
0x00038d96 bl 0x38554 | fcn_00038554 (r0, r1, r2);
0x00038d9a mov.w r2, 0x10000 | r2 = 0x10000;
0x00038d9e movs r3, 0 | r3 = 0;
0x00038da0 strd r2, r3, [r6, -0x10] | __asm ("strd r2, r3, [r6, -0x10]");
| label_0:
0x00038da4 mov r3, r7 | r3 = r7;
0x00038da6 mov r2, sl | r2 = sl;
0x00038da8 mov r1, r4 | r1 = r4;
0x00038daa mov r0, r8 | r0 = r8;
0x00038dac bl 0x38630 | r0 = fcn_00038630 (r0, r1, r2, r3, r4, r5);
0x00038db0 adds r3, r0, 1 | r3 = r0 + 1;
| if (r3 == r0) {
0x00038db2 beq.w 0x38f00 | goto label_17;
| }
0x00038db6 ldr r3, [r6, -0xc] | r3 = *((r6 - 0xc));
0x00038dba add r3, r4 | r3 += r4;
0x00038dbc b 0x38dc6 |
| while (r3 != r4) {
0x00038dbe ldrb r2, [r3, -0x1]! | r2 = *((r3 -= 0x1));
0x00038dc2 cmp r2, 0x20 |
| if (r2 != 0x20) {
0x00038dc4 bne 0x38dcc | goto label_18;
| }
0x00038dc6 cmp r3, r4 |
0x00038dc8 bne 0x38dbe |
| }
0x00038dca movs r2, 0 | r2 = 0;
| label_18:
0x00038dcc ldrb.w r3, [fp] | r3 = *(fp);
0x00038dd0 cmp r3, r2 |
| if (r3 != r2) {
0x00038dd2 bne 0x38da4 | goto label_0;
| }
0x00038dd4 mov r1, r7 | r1 = r7;
0x00038dd6 mov r0, r4 | r0 = r4;
0x00038dd8 bl 0x382e0 | fcn_000382e0 (r0, r1);
0x00038ddc ldr r3, [sp, 0xc] | r3 = var_ch;
0x00038dde ldr r3, [r3] | r3 = *(r3);
0x00038de0 cmp r3, 3 |
| if (r3 > 3) {
0x00038de2 bgt.w 0x39022 | goto label_19;
| }
| label_14:
0x00038de6 ldr r7, [sp, 0x14] | r7 = var_14h;
0x00038de8 mov r0, r4 | r0 = r4;
0x00038dea ldr r1, [sp, 0x10] | r1 = var_10h;
0x00038dec mov r2, r7 | r2 = r7;
0x00038dee blx 0xdbec | sysconf ();
0x00038df2 ldr r5, [r6, -0xc] | r5 = *((r6 - 0xc));
| if (r0 == 0) {
0x00038df6 cbnz r0, 0x38e0c |
0x00038df8 subs r5, r5, r7 | r5 -= r7;
0x00038dfa mov.w r3, 0x10000 | r3 = 0x10000;
0x00038dfe mov r2, r5 | r2 = r5;
0x00038e00 adds r1, r4, r7 | r1 = r4 + r7;
0x00038e02 mov r0, r4 | r0 = r4;
0x00038e04 str r5, [r6, -0xc] | *((r6 - 0xc)) = r5;
0x00038e08 blx 0xe31c | fcn_0000e31c ();
| }
0x00038e0c ldr r3, [sp, 0x14] | r3 = var_14h;
| if (r3 == 0) {
0x00038e0e cbz r3, 0x38e52 | goto label_12;
| }
0x00038e10 subs r7, r3, 1 | r7 = r3 - 1;
0x00038e12 ldr r3, [sp, 0x10] | r3 = var_10h;
0x00038e14 movw fp, 0x2024 | fp = 0x2024;
0x00038e18 sub.w sl, r6, 2 | sl = r6 - 2;
0x00038e1c add.w r8, r3, r7 | r8 = r3 + r7;
0x00038e20 subs r7, r3, 1 | r7 = r3 - 1;
0x00038e22 b 0x38e28 |
| while (r3 != 0xa) {
| label_4:
0x00038e24 cmp r7, r8 |
| if (r7 == r8) {
0x00038e26 beq 0x38e52 | goto label_12;
| }
| label_1:
0x00038e28 ldrb r3, [r7, 1]! | r3 = *((r7 += 1));
0x00038e2c cmp r3, 0xa |
0x00038e2e bne 0x38e24 |
| }
0x00038e30 ldrh r3, [r6, -0x4] | r3 = *((r6 - 0x4));
0x00038e34 cmp r3, fp |
| if (r3 != fp) {
0x00038e36 bne.w 0x38f52 | goto label_20;
| }
| label_3:
0x00038e3a subs r5, 2 | r5 -= 2;
0x00038e3c mov.w r3, 0x10000 | r3 = 0x10000;
0x00038e40 mov r2, r5 | r2 = r5;
0x00038e42 mov r1, sl | r1 = sl;
0x00038e44 mov r0, r4 | r0 = r4;
0x00038e46 str r5, [r6, -0xc] | *((r6 - 0xc)) = r5;
0x00038e4a blx 0xe31c | fcn_0000e31c ();
0x00038e4e cmp r7, r8 |
| if (r7 != r8) {
0x00038e50 bne 0x38e28 | goto label_1;
| }
| label_12:
0x00038e52 ldrb r3, [r6, -0x4] | r3 = *((r6 - 0x4));
0x00038e56 cmp r3, 0xa |
| if (r3 == 0xa) {
0x00038e58 bne 0x38e6e |
0x00038e5a subs r5, 1 | r5--;
0x00038e5c mov.w r3, 0x10000 | r3 = 0x10000;
0x00038e60 mov r2, r5 | r2 = r5;
0x00038e62 subs r1, r6, 3 | r1 = r6 - 3;
0x00038e64 mov r0, r4 | r0 = r4;
0x00038e66 str r5, [r6, -0xc] | *((r6 - 0xc)) = r5;
0x00038e6a blx 0xe31c | fcn_0000e31c ();
| }
0x00038e6e ldr r3, [sp, 0xc] | r3 = var_ch;
0x00038e70 ldr r7, [r3] | r7 = *(r3);
0x00038e72 cmp r5, 0 |
| if (r5 == 0) {
0x00038e74 beq.w 0x39006 | goto label_21;
| }
0x00038e78 ldr r3, [pc, 0x1e0] |
0x00038e7a movs r1, 0 | r1 = 0;
0x00038e7c add r3, pc | r3 = 0x71edc;
0x00038e7e ldrb r0, [r3] | r0 = *(r3);
0x00038e80 adds r3, r4, r5 | r3 = r4 + r5;
| do {
| label_5:
0x00038e82 ldrb r2, [r3, -0x1]! | r2 = *((r3 -= 0x1));
0x00038e86 subs r5, 1 | r5--;
0x00038e88 cmp r1, 0 |
| if (r1 != 0) {
0x00038e8a bne 0x38f7a | goto label_22;
| }
0x00038e8c cmp r0, r2 |
| if (r0 == r2) {
0x00038e8e beq 0x38f7a | goto label_22;
| }
0x00038e90 cmp r5, 0 |
0x00038e92 bne 0x38e82 |
| } while (r5 != 0);
| label_6:
0x00038e94 cmp r7, 3 |
0x00038e96 str r5, [r6, -0xc] | *((r6 - 0xc)) = r5;
| if (r7 > 3) {
0x00038e9a bgt.w 0x38fcc | goto label_23;
| }
| label_10:
0x00038e9e movs r5, 0 | r5 = 0;
| label_9:
0x00038ea0 mov r0, r4 | r0 = r4;
0x00038ea2 ldr r4, [sp, 0x18] | r4 = var_18h;
0x00038ea4 add r6, r5 | r6 += r5;
0x00038ea6 mov r1, r5 | r1 = r5;
0x00038ea8 ldr r2, [sp, 0x1c] | r2 = var_1ch;
0x00038eaa movs r5, 0 | r5 = 0;
0x00038eac ldr r3, [r4, 0x28] | r3 = *((r4 + 0x28));
0x00038eae strb r5, [r6, -0x4] | *((r6 - 0x4)) = r5;
0x00038eb2 orr r3, r3, 4 | r3 |= 4;
0x00038eb6 str r3, [r4, 0x28] | *((r4 + 0x28)) = r3;
0x00038eb8 bl 0x4587c | convert_to_utf8 ();
0x00038ebc str r0, [r4, 0x18] | *((r4 + 0x18)) = r0;
| label_2:
0x00038ebe ldr r0, [sp, 0x10] | r0 = var_10h;
0x00038ec0 blx 0xde30 | fcn_0000de30 ();
| do {
0x00038ec4 cmp.w sb, 0 |
| if (sb != 0) {
0x00038ec8 beq 0x38ed0 |
0x00038eca mov r0, sb | r0 = sb;
0x00038ecc blx 0xde30 | fcn_0000de30 ();
| }
0x00038ed0 ldr r3, [sp, 0xc] | r3 = var_ch;
0x00038ed2 ldr r3, [r3] | r3 = *(r3);
0x00038ed4 cmp r3, 3 |
| if (r3 > 3) {
0x00038ed6 bgt 0x38f88 | goto label_24;
| }
| label_7:
0x00038ed8 ldr r2, [pc, 0x184] |
0x00038eda add.w r1, sp, 0x10000 | r1 += arg_10000h;
0x00038ede ldr r3, [pc, 0x164] | r3 = *(0x39046);
0x00038ee0 adds r1, 0x2c | r1 += 0x2c;
0x00038ee2 add r2, pc | r2 = 0x71f46;
0x00038ee4 ldr r3, [r2, r3] | r3 = *(0x71f46);
0x00038ee6 ldr r2, [r3] | r2 = *(0x71f46);
0x00038ee8 ldr r3, [r1] | r3 = *(r1);
0x00038eea eors r2, r3 | r2 ^= r3;
0x00038eec mov.w r3, 0 | r3 = 0;
| if (r2 != r3) {
0x00038ef0 bne.w 0x3903a | goto label_25;
| }
0x00038ef4 mov r0, r5 | r0 = r5;
0x00038ef6 add.w sp, sp, 0x10000 |
0x00038efa add sp, 0x34 |
0x00038efc pop.w {r4, r5, r6, r7, r8, sb, sl, fp, pc} |
| label_17:
0x00038f00 mov r5, r0 | r5 = r0;
0x00038f02 mov r1, r7 | r1 = r7;
0x00038f04 mov r0, r4 | r0 = r4;
0x00038f06 bl 0x382e0 | fcn_000382e0 (r0, r1);
0x00038f0a ldr r3, [sp, 0xc] | r3 = var_ch;
0x00038f0c ldr r3, [r3] | r3 = *(r3);
0x00038f0e cmp r3, 3 |
| if (r3 > 3) {
0x00038f10 ble 0x38f28 |
0x00038f12 ldr r2, [pc, 0x150] |
0x00038f14 movs r0, 4 | r0 = 4;
0x00038f16 ldr r1, [pc, 0x150] |
0x00038f18 str r4, [sp] | *(sp) = r4;
0x00038f1a add r2, pc | r2 = 0x71f84;
0x00038f1c ldr r3, [r6, -0xc] | r3 = *((r6 - 0xc));
0x00038f20 adds r2, 0x74 | r2 += 0x74;
0x00038f22 add r1, pc | r1 = 0x71f90;
0x00038f24 bl 0x30d1c | zbx_zabbix_log ();
| }
0x00038f28 ldr r4, [sp, 0x18] | r4 = var_18h;
0x00038f2a ldr r3, [r4, 0x28] | r3 = *((r4 + 0x28));
0x00038f2c orr r3, r3, 0x20 | r3 |= 0x20;
0x00038f30 str r3, [r4, 0x28] | *((r4 + 0x28)) = r3;
0x00038f32 blx 0xe3d4 | r0 = fcn_0000e3d4 ();
0x00038f36 ldr r0, [r0] | r0 = *(r0);
0x00038f38 bl 0x31154 | strerror_from_system ();
0x00038f3c ldr r1, [pc, 0x12c] |
0x00038f3e mov r2, r0 | r2 = r0;
0x00038f40 movs r0, 0 | r0 = 0;
0x00038f42 add r1, pc | r1 = 0x71fb2;
0x00038f44 bl 0x44820 | zbx_dsprintf ()
0x00038f48 ldr r3, [sp, 0x10] | r3 = var_10h;
0x00038f4a str r0, [r4, 0x20] | *((r4 + 0x20)) = r0;
0x00038f4c cmp r3, 0 |
0x00038f4e beq 0x38ec4 |
| } while (r3 == 0);
0x00038f50 b 0x38ebe | goto label_2;
| label_20:
0x00038f52 movw r2, 0x2023 | r2 = 0x2023;
0x00038f56 cmp r3, r2 |
| if (r3 == r2) {
0x00038f58 beq.w 0x38e3a | goto label_3;
| }
0x00038f5c movw r2, 0x203e | r2 = 0x203e;
0x00038f60 cmp r3, r2 |
| if (r3 != r2) {
0x00038f62 bne 0x38ff8 | goto label_26;
| }
| label_11:
0x00038f64 subs r5, 2 | r5 -= 2;
0x00038f66 mov.w r3, 0x10000 | r3 = 0x10000;
0x00038f6a mov r2, r5 | r2 = r5;
0x00038f6c subs r1, r6, 2 | r1 = r6 - 2;
0x00038f6e mov r0, r4 | r0 = r4;
0x00038f70 str r5, [r6, -0xc] | *((r6 - 0xc)) = r5;
0x00038f74 blx 0xe31c | fcn_0000e31c ();
0x00038f78 b 0x38e24 | goto label_4;
| label_22:
0x00038f7a cmp r2, 0xa |
| if (r2 == 0xa) {
0x00038f7c beq 0x38fb4 | goto label_27;
| }
0x00038f7e movs r1, 1 | r1 = 1;
0x00038f80 cmp r5, 0 |
| if (r5 != 0) {
0x00038f82 bne.w 0x38e82 | goto label_5;
| }
0x00038f86 b 0x38e94 | goto label_6;
| label_24:
0x00038f88 mov r0, r5 | r0 = r5;
0x00038f8a bl 0x45514 | zbx_result_string ();
0x00038f8e ldr r2, [pc, 0xe0] |
0x00038f90 mov r3, r0 | r3 = r0;
0x00038f92 ldr r1, [pc, 0xe0] |
0x00038f94 movs r0, 4 | r0 = 4;
0x00038f96 add r2, pc | r2 = 0x7200c;
0x00038f98 add r1, pc | r1 = 0x72012;
0x00038f9a adds r2, 0x74 | r2 += 0x74;
0x00038f9c bl 0x30d1c | zbx_zabbix_log ();
0x00038fa0 b 0x38ed8 | goto label_7;
| label_15:
0x00038fa2 ldr r2, [pc, 0xd4] |
0x00038fa4 movs r0, 4 | r0 = 4;
0x00038fa6 ldr r1, [pc, 0xd4] |
0x00038fa8 add r2, pc | r2 = 0x72026;
0x00038faa adds r2, 0x74 | r2 += 0x74;
0x00038fac add r1, pc | r1 = 0x7202e;
0x00038fae bl 0x30d1c | zbx_zabbix_log ();
0x00038fb2 b 0x38cfc | goto label_8;
| label_27:
0x00038fb4 cmp r7, 3 |
0x00038fb6 str r5, [r6, -0xc] | *((r6 - 0xc)) = r5;
| if (r7 <= 3) {
0x00038fba bgt 0x38fe2 |
0x00038fbc cmp.w r5, 0x10000 |
0x00038fc0 itt eq |
| if (r5 == 0x10000) {
0x00038fc2 movweq r5, 0xffff | __asm ("movweq r5, 0xffff");
| }
| if (r5 == 0x10000) {
0x00038fc6 str r5, [r6, -0xc] | *((r6 - 0xc)) = r5;
| }
0x00038fca b 0x38ea0 | goto label_9;
| label_23:
0x00038fcc ldr r2, [pc, 0xb0] |
0x00038fce mov r3, r5 | r3 = r5;
0x00038fd0 ldr r1, [pc, 0xb0] |
0x00038fd2 movs r0, 4 | r0 = 4;
0x00038fd4 str r4, [sp] | *(sp) = r4;
0x00038fd6 add r2, pc | r2 = 0x7205a;
0x00038fd8 adds r2, 0x74 | r2 += 0x74;
0x00038fda add r1, pc | r1 = 0x72062;
0x00038fdc bl 0x30d1c | zbx_zabbix_log ();
0x00038fe0 b 0x38e9e | goto label_10;
| }
0x00038fe2 ldr r2, [pc, 0xa4] |
0x00038fe4 mov r3, r5 | r3 = r5;
0x00038fe6 ldr r1, [pc, 0xa4] |
0x00038fe8 movs r0, 4 | r0 = 4;
0x00038fea str r4, [sp] | *(sp) = r4;
0x00038fec add r2, pc | r2 = 0x7207a;
0x00038fee adds r2, 0x74 | r2 += 0x74;
0x00038ff0 add r1, pc | r1 = 0x72082;
0x00038ff2 bl 0x30d1c | zbx_zabbix_log ();
0x00038ff4 cdp2 p7, 9, c14, c3, c1, 7 | __asm ("cdp2 p7, 9, c14, c3, c1, 7");
| label_26:
0x00038ff8 movw r2, 0x2025 | r2 = 0x2025;
0x00038ffc cmp r3, r2 |
| if (r3 == r2) {
0x00038ffe beq 0x38f64 | goto label_11;
| }
0x00039000 b 0x38e52 | goto label_12;
| label_16:
0x00039002 ldr r2, [sp, 0x14] | r2 = var_14h;
0x00039004 b 0x38d78 | goto label_13;
| label_21:
0x00039006 cmp r7, 3 |
| if (r7 <= 3) {
0x00039008 ble.w 0x38e9e | goto label_10;
| }
0x0003900c ldr r2, [pc, 0x80] |
0x0003900e mov r3, r5 | r3 = r5;
0x00039010 ldr r1, [pc, 0x80] |
0x00039012 movs r0, 4 | r0 = 4;
0x00039014 str r4, [sp] | *(sp) = r4;
0x00039016 add r2, pc | r2 = 0x720aa;
0x00039018 adds r2, 0x74 | r2 += 0x74;
0x0003901a add r1, pc | r1 = 0x720b2;
0x0003901c bl 0x30d1c | zbx_zabbix_log ();
0x00039020 b 0x38e9e | goto label_10;
| label_19:
0x00039022 ldr r2, [pc, 0x74] |
0x00039024 movs r0, 4 | r0 = 4;
0x00039026 ldr r1, [pc, 0x74] |
0x00039028 str r4, [sp] | *(sp) = r4;
0x0003902a add r2, pc | r2 = 0x720c8;
0x0003902c ldr r3, [r6, -0xc] | r3 = *((r6 - 0xc));
0x00039030 adds r2, 0x74 | r2 += 0x74;
0x00039032 add r1, pc | r1 = 0x720d4;
0x00039034 bl 0x30d1c | zbx_zabbix_log ();
0x00039038 b 0x38de6 | goto label_14;
| label_25:
0x0003903a blx 0xe158 | fcn_0000e158 ();
0x0003903e nop |
0x00039040 cmp r7, 2 |
0x00039042 movs r2, r0 | r2 = r0;
0x00039044 lsls r4, r2, 0xe | r4 = r2 << 0xe;
0x00039046 movs r0, r0 |
0x00039048 cmp r6, 0xfc |
0x0003904a movs r2, r0 | r2 = r0;
0x0003904c lsls r4, r7, 0xe | r4 = r7 << 0xe;
0x0003904e movs r0, r0 |
| if (r0 == r0) {
0x00039050 beq 0x39130 | void (*0x39130)() ();
| }
0x00039052 movs r1, r0 | r1 = r0;
0x00039054 strb r4, [r4, r5] | *((r4 + r5)) = r4;
0x00039056 movs r2, r0 | r2 = r0;
0x00039058 stcl p0, c0, [r8, 4] | __asm ("stcl p0, c0, [r8, 4]");
0x0003905c strb r0, [r7, r1] | *((r7 + r1)) = r0;
0x0003905e movs r2, r0 | r2 = r0;
0x00039060 cmp r4, 0xf6 |
0x00039062 movs r2, r0 | r2 = r0;
0x00039064 ldm r7!, {r1, r3, r5} | r1 = *(r7!);
| r3 = *((r7! + 4));
| r5 = *((r7! + 8));
0x00039066 movs r1, r0 | r1 = r0;
0x00039068 ldm r6!, {r1, r4, r5, r7} | r1 = *(r6!);
| r4 = *((r6! + 4));
| r5 = *((r6! + 8));
| r7 = *((r6! + 12));
0x0003906a movs r1, r0 | r1 = r0;
0x0003906c ldm r6!, {r1, r2, r3, r5, r7} | r1 = *(r6!);
| r2 = *((r6! + 4));
| r3 = *((r6! + 8));
| r5 = *((r6! + 12));
| r7 = *((r6! + 16));
0x0003906e movs r1, r0 | r1 = r0;
0x00039070 ldm r6!, {r1, r2, r3, r5, r7} | r1 = *(r6!);
| r2 = *((r6! + 4));
| r3 = *((r6! + 8));
| r5 = *((r6! + 12));
| r7 = *((r6! + 16));
0x00039072 movs r1, r0 | r1 = r0;
0x00039074 ldr r7, [pc, 0x2a0] | r7 = *(0x39318);
0x00039076 movs r1, r0 | r1 = r0;
0x00039078 ldm r6!, {r2, r3, r4, r7} | r2 = *(r6!);
| r3 = *((r6! + 4));
| r4 = *((r6! + 8));
| r7 = *((r6! + 12));
0x0003907a movs r1, r0 | r1 = r0;
0x0003907c ldr r3, [pc, 0x260] | r3 = *(0x392e0);
0x0003907e movs r1, r0 | r1 = r0;
0x00039080 ldm r6, {r1, r2, r3, r5, r6} | r1 = *(r6);
| r2 = *((r6 + 4));
| r3 = *((r6 + 8));
| r5 = *((r6 + 12));
| r6 = *((r6 + 16));
0x00039082 movs r1, r0 | r1 = r0;
0x00039084 ldm r6, {r1, r2, r6} | r1 = *(r6);
| r2 = *((r6 + 4));
| r6 = *((r6 + 8));
0x00039086 movs r1, r0 | r1 = r0;
0x00039088 ldm r6, {r3, r4, r6} | r3 = *(r6);
| r4 = *((r6 + 4));
| r6 = *((r6 + 8));
0x0003908a movs r1, r0 | r1 = r0;
0x0003908c ldm r6!, {r4, r5} | r4 = *(r6!);
| r5 = *((r6! + 4));
0x0003908e movs r1, r0 | r1 = r0;
0x00039090 ldm r6!, {r1, r2, r3, r5} | r1 = *(r6!);
| r2 = *((r6! + 4));
| r3 = *((r6! + 8));
| r5 = *((r6! + 12));
0x00039092 movs r1, r0 | r1 = r0;
0x00039094 ldm r6!, {r1, r2} | r1 = *(r6!);
| r2 = *((r6! + 4));
0x00039096 movs r1, r0 | r1 = r0;
0x00039098 ldm r6!, {r1, r3, r4} | r1 = *(r6!);
| r3 = *((r6! + 4));
| r4 = *((r6! + 8));
0x0003909a movs r1, r0 | r1 = r0;
0x0003909c ldm r5, {r1, r5, r7} | r1 = *(r5);
| r5 = *((r5 + 4));
| r7 = *((r5 + 8));
0x0003909e movs r1, r0 | r1 = r0;
| }
; assembly | /* r2dec pseudo code output */
| /* /logs/firmware/patool_extraction/rootfs.img_unblob_extracted/rootfs.img_extract/0-80367616.squashfs_v4_le_extract/usr/sbin/zabbix_agentd @ 0x465e4 */
| #include <stdint.h>
|
; (fcn) sym.zbx_user_macro_quote_context_dyn () | void zbx_user_macro_quote_context_dyn (int16_t arg1, int16_t arg3) {
| r0 = arg1;
| r2 = arg3;
0x000465e4 push.w {r4, r5, r6, r7, r8, lr} |
0x000465e8 mov r6, r2 | r6 = r2;
0x000465ea ldrb r3, [r0] | r3 = *(r0);
0x000465ec mov r5, r0 | r5 = r0;
0x000465ee and r2, r3, 0xfd | r2 = r3 & 0xfd;
0x000465f2 cmp r2, 0x20 |
| if (r2 == 0x20) {
0x000465f4 beq 0x4666a | goto label_2;
| }
0x000465f6 cmp r3, 0 |
| if (r3 == 0) {
0x000465f8 beq 0x46682 | goto label_3;
| }
| label_0:
0x000465fa mov r4, r5 | r4 = r5;
0x000465fc movs r7, 0 | r7 = 0;
| do {
0x000465fe cmp r3, 0x7d |
0x00046600 it eq |
| if (r3 != 0x7d) {
0x00046602 moveq r1, 1 | r1 = 1;
| }
| if (r3 != 0x7d) {
0x00046604 beq 0x4660c |
0x00046606 cmp r3, 0x22 |
0x00046608 it eq |
| if (r3 == 0x22) {
0x0004660a addeq r7, 1 | r7++;
| goto label_4;
| }
| }
| label_4:
0x0004660c ldrb r3, [r4, 1]! | r3 = *((r4 += 1));
0x00046610 cmp r3, 0 |
0x00046612 bne 0x465fe |
| } while (r3 != 0);
| if (r1 == 0) {
| label_1:
0x00046614 cbz r1, 0x4666e | goto label_5;
| }
0x00046616 mov r0, r5 | r0 = r5;
0x00046618 blx 0xdf68 | r0 = fcn_0000df68 ();
0x0004661c adds r3, r7, r0 | r3 = r7 + r0;
0x0004661e ldr r0, [pc, 0x80] |
0x00046620 adds r3, 3 | r3 += 3;
0x00046622 movw r1, 0xb12 | r1 = 0xb12;
0x00046626 movs r2, 0 | r2 = 0;
0x00046628 add r0, pc | r0 = 0x8ccce;
0x0004662a bl 0x40dd8 | zbx_malloc2 ();
0x0004662e movs r3, 0x22 | r3 = 0x22;
0x00046630 mov r1, r0 | r1 = r0;
0x00046632 strb r3, [r1], 1 | *(r1) = r3;
| r1++;
0x00046636 mov r7, r0 | r7 = r0;
0x00046638 ldrb r4, [r5] | r4 = *(r5);
| if (r4 == 0) {
0x0004663a cbz r4, 0x46660 | goto label_6;
| }
0x0004663c mov ip, r5 |
0x0004663e movs r2, 0x5c | r2 = 0x5c;
| do {
0x00046640 cmp r4, 0x22 |
0x00046642 mov r4, r1 | r4 = r1;
0x00046644 it eq |
| if (r4 != 0x22) {
0x00046646 strbeq r2, [r4], 1 | *(r4) = r2;
| r4++;
| }
0x0004664a mov r1, r4 | r1 = r4;
0x0004664c ldrb r3, [ip], 1 | r3 = *(ip);
| ip++;
0x00046650 strb r3, [r1], 1 | *(r1) = r3;
| r1++;
0x00046654 ldrb.w r4, [ip] | r4 = *(ip);
0x00046658 cmp r4, 0 |
0x0004665a bne 0x46640 |
| } while (r4 != 0);
0x0004665c cmp r3, 0x5c |
| if (r3 == 0x5c) {
0x0004665e beq 0x46686 | goto label_7;
| }
| label_6:
0x00046660 movs r3, 0x22 | r3 = 0x22;
0x00046662 strh r3, [r1] | *(r1) = r3;
| do {
0x00046664 mov r0, r7 | r0 = r7;
0x00046666 pop.w {r4, r5, r6, r7, r8, pc} |
| label_2:
0x0004666a movs r1, 1 | r1 = 1;
0x0004666c b 0x465fa | goto label_0;
| label_5:
0x0004666e ldr r0, [pc, 0x34] |
0x00046670 mov r3, r5 | r3 = r5;
0x00046672 mov r2, r1 | r2 = r1;
0x00046674 pop.w {r4, r5, r6, r7, r8, lr} |
0x00046678 movw r1, 0xb0f | r1 = 0xb0f;
0x0004667c add r0, pc | r0 = 0x8cd26;
0x0004667e b.w 0x40ed8 | void (*0x40ed8)() ();
| label_3:
0x00046682 mov r7, r3 | r7 = r3;
0x00046684 b 0x46614 | goto label_1;
| label_7:
0x00046686 ldr r1, [pc, 0x20] |
0x00046688 mov r2, r5 | r2 = r5;
0x0004668a ldr r0, [r6] | r0 = *(r6);
0x0004668c add r1, pc | r1 = 0x8cd3a;
0x0004668e bl 0x44820 | zbx_dsprintf ()
0x00046692 str r0, [r6] | *(r6) = r0;
0x00046694 mov r0, r7 | r0 = r7;
0x00046696 blx 0xde30 | fcn_0000de30 ();
0x0004669a mov r7, r4 | r7 = r4;
0x0004669c b 0x46664 |
| } while (1);
| }
; assembly | /* r2dec pseudo code output */
| /* /logs/firmware/patool_extraction/rootfs.img_unblob_extracted/rootfs.img_extract/0-80367616.squashfs_v4_le_extract/usr/sbin/zabbix_agentd @ 0x42190 */
| #include <stdint.h>
|
; (fcn) sym.zbx_validate_interval () | void zbx_validate_interval (int16_t arg_f8h, int16_t arg1, int16_t arg2) {
| int16_t var_10h_2;
| int16_t var_0h;
| 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_2ch;
| r0 = arg1;
| r1 = arg2;
0x00042190 ldr r2, [pc, 0x254] |
0x00042192 ldr r3, [pc, 0x258] | r3 = *(0x423ee);
0x00042194 push.w {r4, r5, r6, r7, r8, sb, sl, lr} |
0x00042198 sub sp, 0x30 |
0x0004219a add r2, pc | r2 = 0x84586;
0x0004219c mov r5, r0 | r5 = r0;
0x0004219e mov r8, r1 | r8 = r1;
0x000421a0 ldr r3, [r2, r3] |
0x000421a2 ldr r3, [r3] | r3 = *(0x84586);
0x000421a4 str r3, [sp, 0x2c] | var_2ch = r3;
0x000421a6 mov.w r3, 0 | r3 = 0;
0x000421aa ldrb r3, [r0] | r3 = *(r0);
0x000421ac cmp r3, 0x7b |
| if (r3 == 0x7b) {
0x000421ae bne 0x421fa |
0x000421b0 ldrb r3, [r0, 1] | r3 = *((r0 + 1));
0x000421b2 cmp r3, 0x24 |
| if (r3 != 0x24) {
0x000421b4 bne 0x421fa | goto label_14;
| }
0x000421b6 movs r2, 0 | r2 = 0;
0x000421b8 add r3, sp, 0x1c | r3 += var_1ch;
0x000421ba str r2, [sp] | *(sp) = r2;
0x000421bc add r1, sp, 0x14 | r1 += var_14h;
0x000421be add r2, sp, 0x18 | r2 += var_18h;
0x000421c0 bl 0x46264 | r0 = zbx_user_macro_parse ();
| if (r0 != 0) {
0x000421c4 cbnz r0, 0x421fa | goto label_14;
| }
0x000421c6 ldr r3, [sp, 0x14] | r3 = var_14h;
0x000421c8 adds r3, 1 | r3++;
0x000421ca ldrb r2, [r5, r3] | r2 = *((r5 + r3));
0x000421cc adds r4, r5, r3 | r4 = r5 + r3;
0x000421ce str r3, [sp, 0x10] | var_10h = r3;
| if (r2 == 0) {
0x000421d0 cbnz r2, 0x421f0 |
| label_1:
0x000421d2 movs r0, 0 | r0 = 0;
| label_9:
0x000421d4 ldr r2, [pc, 0x218] |
0x000421d6 ldr r3, [pc, 0x214] | r3 = *(0x423ee);
0x000421d8 add r2, pc | r2 = 0x845cc;
0x000421da ldr r3, [r2, r3] | r3 = *(0x845cc);
0x000421dc ldr r2, [r3] | r2 = *(0x845cc);
0x000421de ldr r3, [sp, 0x2c] | r3 = var_2ch;
0x000421e0 eors r2, r3 | r2 ^= r3;
0x000421e2 mov.w r3, 0 | r3 = 0;
| if (r2 != r3) {
0x000421e6 bne.w 0x423e4 | goto label_15;
| }
0x000421ea add sp, 0x30 |
0x000421ec pop.w {r4, r5, r6, r7, r8, sb, sl, pc} |
| }
0x000421f0 cmp r2, 0x3b |
0x000421f2 itt eq |
| if (r2 != 0x3b) {
0x000421f4 moveq r3, 1 | r3 = 1;
| }
| if (r2 != 0x3b) {
0x000421f6 streq r3, [sp, 8] | var_8h = r3;
| }
| if (r2 == 0x3b) {
0x000421f8 beq 0x42218 | goto label_16;
| }
| }
| label_14:
0x000421fa add r3, sp, 8 | r3 += var_8h;
0x000421fc movs r2, 0x3b | r2 = 0x3b;
0x000421fe add r1, sp, 0x10 | r1 += var_10h;
0x00042200 mov r0, r5 | r0 = r5;
0x00042202 bl 0x41964 | r0 = fcn_00041964 (r0, r1, r2, r3);
0x00042206 cmp r0, 0 |
| if (r0 != 0) {
0x00042208 bne.w 0x423ae | goto label_17;
| }
0x0004220c ldr r4, [sp, 0x10] | r4 = var_10h;
0x0004220e ldrb r3, [r5, r4] | r3 = *((r5 + r4));
0x00042210 add r4, r5 | r4 += r5;
0x00042212 cmp r3, 0 |
| if (r3 == 0) {
0x00042214 beq.w 0x42358 | goto label_18;
| }
| label_16:
0x00042218 ldr.w sl, [pc, 0x1d8] | sl = *(0x000423f4);
0x0004221c add.w sb, sp, 0x18 | sb += var_18h;
0x00042220 add r7, sp, 0x14 | r7 += var_14h;
0x00042222 add sl, pc | sl += pc;
| do {
| label_0:
0x00042224 ldrb r3, [r4, 1] | r3 = *((r4 + 1));
0x00042226 adds r5, r4, 1 | r5 = r4 + 1;
0x00042228 cmp r3, 0x7b |
| if (r3 != 0x7b) {
0x0004222a bne 0x422b2 | goto label_19;
| }
0x0004222c ldrb r3, [r4, 2] | r3 = *((r4 + 2));
0x0004222e cmp r3, 0x24 |
| if (r3 != 0x24) {
0x00042230 bne 0x422b2 | goto label_19;
| }
0x00042232 add r6, sp, 0x1c | r6 += var_1ch;
0x00042234 movs r4, 0 | r4 = 0;
0x00042236 mov r3, r6 | r3 = r6;
0x00042238 mov r2, sb | r2 = sb;
0x0004223a mov r1, r7 | r1 = r7;
0x0004223c mov r0, r5 | r0 = r5;
0x0004223e str r4, [sp] | *(sp) = r4;
0x00042240 bl 0x46264 | r0 = zbx_user_macro_parse ();
0x00042244 cmp r0, 0 |
| if (r0 != 0) {
0x00042246 bne 0x422b2 | goto label_19;
| }
0x00042248 ldr r4, [sp, 0x14] | r4 = var_14h;
0x0004224a adds r4, 1 | r4++;
0x0004224c ldrb r3, [r5, r4] | r3 = *((r5 + r4));
0x0004224e str r4, [sp, 0x10] | var_10h = r4;
0x00042250 add r4, r5 | r4 += r5;
0x00042252 cmp r3, 0x2f |
| if (r3 == 0x2f) {
0x00042254 beq 0x4233e | goto label_20;
| }
| if (r3 == 0) {
0x00042256 cbz r3, 0x422a2 | goto label_3;
| }
0x00042258 cmp r3, 0x3b |
0x0004225a beq 0x42224 |
| } while (r3 == 0x3b);
| label_2:
0x0004225c movs r2, 0 | r2 = 0;
0x0004225e movs r3, 0x1c | r3 = 0x1c;
0x00042260 movw r1, 0x7a5 | r1 = 0x7a5;
0x00042264 mov r0, sl | r0 = sl;
0x00042266 bl 0x40dd8 | zbx_malloc2 ();
0x0004226a movs r3, 0 | r3 = 0;
0x0004226c mov r6, r0 | r6 = r0;
0x0004226e movs r1, 0x3b | r1 = 0x3b;
0x00042270 mov r0, r5 | r0 = r5;
0x00042272 str r3, [r6] | *(r6) = r3;
0x00042274 str r3, [r6, 4] | *((r6 + 4)) = r3;
0x00042276 str r3, [r6, 8] | *((r6 + 8)) = r3;
0x00042278 str r3, [r6, 0xc] | *((r6 + 0xc)) = r3;
0x0004227a str r3, [r6, 0x10] | *((r6 + 0x10)) = r3;
0x0004227c str r3, [r6, 0x14] | *((r6 + 0x14)) = r3;
0x0004227e str r3, [r6, 0x18] | *((r6 + 0x18)) = r3;
0x00042280 blx 0xdcd4 | r0 = fcn_0000dcd4 ();
0x00042284 mov r4, r0 | r4 = r0;
0x00042286 subs r2, r0, r5 | r2 = r0 - r5;
0x00042288 cmp r0, 0 |
| if (r0 == 0) {
0x0004228a beq 0x42344 | goto label_21;
| }
| label_6:
0x0004228c mov r1, r5 | r1 = r5;
0x0004228e mov r0, r6 | r0 = r6;
0x00042290 bl 0x42020 | r0 = fcn_00042020 (r0, r1, r2);
0x00042294 cmp r0, 0 |
| if (r0 != 0) {
0x00042296 bne 0x42374 | goto label_22;
| }
0x00042298 mov r0, r6 | r0 = r6;
0x0004229a bl 0x3fe60 | fcn_0003fe60 (r0);
| label_4:
0x0004229e cmp r4, 0 |
| if (r4 != 0) {
0x000422a0 bne 0x42224 | goto label_0;
| }
| label_3:
0x000422a2 ldr r2, [sp, 8] | r2 = var_8h;
| label_8:
0x000422a4 mov.w r3, 0x5180 |
0x000422a8 movt r3, 1 | r3 = 0x15180;
0x000422ac cmp r2, r3 |
| if (r2 <= r3) {
0x000422ae ble 0x421d2 | goto label_1;
| }
0x000422b0 b 0x4235e | goto label_23;
| label_19:
0x000422b2 add r3, sp, 0xc | r3 += var_ch;
0x000422b4 movs r2, 0x2f | r2 = 0x2f;
0x000422b6 add r1, sp, 0x10 | r1 += var_10h;
0x000422b8 mov r0, r5 | r0 = r5;
0x000422ba bl 0x41964 | r0 = fcn_00041964 (r0, r1, r2, r3);
0x000422be cmp r0, 0 |
| if (r0 != 0) {
0x000422c0 bne 0x4225c | goto label_2;
| }
0x000422c2 ldr r2, [sp, 0x10] | r2 = var_10h;
0x000422c4 ldrb r3, [r5, r2] | r3 = *((r5 + r2));
0x000422c6 adds r4, r5, r2 | r4 = r5 + r2;
0x000422c8 cmp r3, 0x2f |
| if (r3 != 0x2f) {
0x000422ca bne 0x4225c | goto label_2;
| }
0x000422cc ldrd r1, r3, [sp, 8] | __asm ("ldrd r1, r3, [var_8h]");
0x000422d0 orrs r3, r1 | r3 |= r1;
| if (r3 == r1) {
0x000422d2 beq 0x42394 | goto label_24;
| }
0x000422d4 add r6, sp, 0x1c | r6 += var_1ch;
| label_5:
0x000422d6 ldrb r3, [r4, 1] | r3 = *((r4 + 1));
0x000422d8 adds r5, r4, 1 | r5 = r4 + 1;
0x000422da cmp r3, 0x7b |
| if (r3 != 0x7b) {
0x000422dc bne 0x42308 | goto label_25;
| }
0x000422de ldrb r3, [r4, 2] | r3 = *((r4 + 2));
0x000422e0 cmp r3, 0x24 |
| if (r3 != 0x24) {
0x000422e2 bne 0x42308 | goto label_25;
| }
0x000422e4 movs r3, 0 | r3 = 0;
0x000422e6 mov r2, sb | r2 = sb;
0x000422e8 str r3, [sp] | *(sp) = r3;
0x000422ea mov r1, r7 | r1 = r7;
0x000422ec mov r3, r6 | r3 = r6;
0x000422ee mov r0, r5 | r0 = r5;
0x000422f0 bl 0x46264 | r0 = zbx_user_macro_parse ();
| if (r0 != 0) {
0x000422f4 cbnz r0, 0x42308 | goto label_25;
| }
0x000422f6 ldr r4, [sp, 0x14] | r4 = var_14h;
0x000422f8 adds r4, 1 | r4++;
0x000422fa ldrb r3, [r5, r4] | r3 = *((r5 + r4));
0x000422fc str r4, [sp, 0x10] | var_10h = r4;
0x000422fe add r4, r5 | r4 += r5;
0x00042300 cmp r3, 0 |
| if (r3 == 0) {
0x00042302 beq 0x422a2 | goto label_3;
| }
0x00042304 cmp r3, 0x3b |
| if (r3 == 0x3b) {
0x00042306 beq 0x42224 | goto label_0;
| }
| label_25:
0x00042308 movs r1, 0x3b | r1 = 0x3b;
0x0004230a mov r0, r5 | r0 = r5;
0x0004230c blx 0xdcd4 | r0 = fcn_0000dcd4 ();
0x00042310 mov r4, r0 | r4 = r0;
0x00042312 subs r2, r0, r5 | r2 = r0 - r5;
| if (r0 == 0) {
0x00042314 cbz r0, 0x4234e | goto label_26;
| }
| label_7:
0x00042316 mov r0, r6 | r0 = r6;
0x00042318 mov r1, r5 | r1 = r5;
0x0004231a bl 0x41c64 | r0 = fcn_00041c64 (r0, r1, r2, r3, r4);
0x0004231e cmp r0, 0 |
| if (r0 == 0) {
0x00042320 beq 0x4229e | goto label_4;
| }
0x00042322 ldr.w r6, [r8] | r6 = *(r8);
0x00042326 subs r2, r4, r5 | r2 = r4 - r5;
0x00042328 cmp r4, 0 |
| if (r4 == 0) {
0x0004232a beq 0x423d0 | goto label_27;
| }
| label_13:
0x0004232c ldr r1, [pc, 0xc8] |
0x0004232e mov r3, r5 | r3 = r5;
0x00042330 mov r0, r6 | r0 = r6;
0x00042332 add r1, pc | r1 = 0x8472e;
0x00042334 bl 0x44820 | zbx_dsprintf ()
| label_10:
0x00042338 str.w r0, [r8] | __asm ("str.w r0, [r8]");
0x0004233c b 0x4236e | goto label_12;
| label_20:
0x0004233e movs r3, 1 | r3 = 1;
0x00042340 str r3, [sp, 0xc] | var_ch = r3;
0x00042342 b 0x422d6 | goto label_5;
| label_21:
0x00042344 mov r0, r5 | r0 = r5;
0x00042346 blx 0xdf68 | r0 = fcn_0000df68 ();
0x0004234a mov r2, r0 | r2 = r0;
0x0004234c b 0x4228c | goto label_6;
| label_26:
0x0004234e mov r0, r5 | r0 = r5;
0x00042350 blx 0xdf68 | r0 = fcn_0000df68 ();
0x00042354 mov r2, r0 | r2 = r0;
0x00042356 b 0x42316 | goto label_7;
| label_18:
0x00042358 ldr r2, [sp, 8] | r2 = var_8h;
0x0004235a cmp r2, 0 |
| if (r2 != 0) {
0x0004235c bne 0x422a4 | goto label_8;
| }
| label_23:
0x0004235e ldr r1, [pc, 0x9c] |
0x00042360 ldr.w r0, [r8] | r0 = *(r8);
0x00042364 add r1, pc | r1 = 0x84766;
0x00042366 bl 0x44820 | zbx_dsprintf ()
0x0004236a str.w r0, [r8] | __asm ("str.w r0, [r8]");
| do {
| label_12:
0x0004236e mov.w r0, -1 | r0 = -1;
0x00042372 b 0x421d4 | goto label_9;
| label_22:
0x00042374 mov r0, r6 | r0 = r6;
0x00042376 bl 0x3fe60 | fcn_0003fe60 (r0);
0x0004237a ldr.w r6, [r8] | r6 = *(r8);
0x0004237e subs r2, r4, r5 | r2 = r4 - r5;
| if (r4 == 0) {
0x00042380 cbz r4, 0x423a4 | goto label_28;
| }
| label_11:
0x00042382 ldr r1, [pc, 0x7c] |
0x00042384 mov r3, r5 | r3 = r5;
0x00042386 mov r0, r6 | r0 = r6;
0x00042388 add r1, pc | r1 = 0x8478e;
0x0004238a bl 0x44820 | zbx_dsprintf ()
0x0004238e str.w r0, [r8] | __asm ("str.w r0, [r8]");
0x00042392 b 0x4236e |
| } while (1);
| label_24:
0x00042394 ldr r1, [pc, 0x6c] |
0x00042396 mov r3, r5 | r3 = r5;
0x00042398 ldr.w r0, [r8] | r0 = *(r8);
0x0004239c add r1, pc | r1 = 0x847a4;
0x0004239e bl 0x44820 | zbx_dsprintf ()
0x000423a2 b 0x42338 | goto label_10;
| label_28:
0x000423a4 mov r0, r5 | r0 = r5;
0x000423a6 blx 0xdf68 | r0 = fcn_0000df68 ();
0x000423aa mov r2, r0 | r2 = r0;
0x000423ac b 0x42382 | goto label_11;
| label_17:
0x000423ae movs r1, 0x3b | r1 = 0x3b;
0x000423b0 mov r0, r5 | r0 = r5;
0x000423b2 blx 0xdcd4 | fcn_0000dcd4 ();
0x000423b6 ldr.w r4, [r8] | r4 = *(r8);
| if (r0 == 0) {
0x000423ba cbz r0, 0x423da | goto label_29;
| }
0x000423bc subs r2, r0, r5 | r2 = r0 - r5;
| do {
0x000423be ldr r1, [pc, 0x48] |
0x000423c0 mov r3, r5 | r3 = r5;
0x000423c2 mov r0, r4 | r0 = r4;
0x000423c4 add r1, pc | r1 = 0x847d2;
0x000423c6 bl 0x44820 | zbx_dsprintf ()
0x000423ca str.w r0, [r8] | __asm ("str.w r0, [r8]");
0x000423ce b 0x4236e | goto label_12;
| label_27:
0x000423d0 mov r0, r5 | r0 = r5;
0x000423d2 blx 0xdf68 | r0 = fcn_0000df68 ();
0x000423d6 mov r2, r0 | r2 = r0;
0x000423d8 b 0x4232c | goto label_13;
| label_29:
0x000423da mov r0, r5 | r0 = r5;
0x000423dc blx 0xdf68 | r0 = fcn_0000df68 ();
0x000423e0 mov r2, r0 | r2 = r0;
0x000423e2 b 0x423be |
| } while (1);
| label_15:
0x000423e4 blx 0xe158 | fcn_0000e158 ();
0x000423e8 ldr r2, [sp, 0xf8] | r2 = *(arg_f8h);
0x000423ea movs r1, r0 | r1 = r0;
0x000423ec lsls r4, r2, 0xe | r4 = r2 << 0xe;
0x000423ee movs r0, r0 |
0x000423f0 ldr r2, [sp] | r2 = *(sp);
0x000423f2 movs r1, r0 | r1 = r0;
0x000423f4 ldr r4, [pc, 0xf8] | r4 = *(0x424f0);
0x000423f6 movs r1, r0 | r1 = r0;
0x000423f8 ldr r5, [pc, 0x348] | r5 = *(0x42744);
0x000423fa movs r1, r0 | r1 = r0;
0x000423fc ldr r5, [pc, 0x380] | r5 = *(0x42780);
0x000423fe movs r1, r0 | r1 = r0;
0x00042400 ldr r5, [pc, 0x270] | r5 = *(0x42674);
0x00042402 movs r1, r0 | r1 = r0;
0x00042404 ldr r5, [pc, 0x110] | r5 = *(0x42518);
0x00042406 movs r1, r0 | r1 = r0;
0x00042408 ldr r4, [pc, 0x3f0] | r4 = *(0x427fc);
0x0004240a movs r1, r0 | r1 = r0;
| }
; assembly | /* r2dec pseudo code output */
| /* /logs/firmware/patool_extraction/rootfs.img_unblob_extracted/rootfs.img_extract/0-80367616.squashfs_v4_le_extract/usr/sbin/zabbix_agentd @ 0x37e50 */
| #include <stdint.h>
|
; (fcn) sym.zbx_validate_peer_list () | void zbx_validate_peer_list (int16_t arg_18h, int16_t arg_1ch, int16_t arg_20h, 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_804h, int16_t arg_ff00h, int16_t arg1, int16_t arg2) {
| int32_t var_804h;
| int16_t var_0h;
| int16_t var_4h;
| int16_t var_8h;
| int16_t var_ch;
| int16_t var_14h;
| r0 = arg1;
| r1 = arg2;
0x00037680 bl 0x30fe88 | r0 = void (*0x30fe88)() ();
0x00037684 lsls r4, r0, 4 | r4 = r0 << 4;
0x00037686 mov r0, r5 | r0 = r5;
0x00037688 bl 0x364d4 | r0 = fcn_000364d4 (r0, r1, r2);
| if (r0 == 0) {
0x0003768c cbz r0, 0x376e2 | goto label_29;
| }
| label_0:
0x0003768e adds r1, r0, 1 | r1 = r0 + 1;
| if (r1 == r0) {
0x00037690 beq.w 0x37832 | goto label_7;
| }
0x00037694 ldr r3, [r5, 0x1c] | r3 = *((r5 + 0x1c));
0x00037696 cmp r3, 0 |
| if (r3 != 0) {
0x00037698 bne 0x37736 | goto label_30;
| }
0x0003769a add r4, r0 | r4 += r0;
| label_1:
0x0003769c adds r3, r7, r4 | r3 = r7 + r4;
0x0003769e cmp r3, r8 |
0x000376a0 mov.w r3, 0 | r3 = 0;
0x000376a4 sbcs.w r3, r3, sb | __asm ("sbcs.w r3, r3, sb");
| if (r3 >= r8) {
0x000376a8 bhs 0x376e2 | goto label_29;
| }
0x000376aa cmp r6, 1 |
| if (r6 == 1) {
0x000376ac beq.w 0x37808 | goto label_31;
| }
0x000376b0 cmp r6, 2 |
| if (r6 == 2) {
0x000376b2 beq 0x3776c | goto label_32;
| }
0x000376b4 cmp r6, 4 |
| if (r6 != 4) {
0x000376b6 bne 0x3767e | void (*0x3767e)() ();
| }
0x000376b8 ldr r3, [sp, 0x14] | r3 = var_14h;
0x000376ba mov r6, sl | r6 = sl;
0x000376bc ands r3, r3, 4 | r3 &= 4;
| if (r3 != r3) {
0x000376c0 bne 0x37794 | goto label_33;
| }
| label_2:
0x000376c2 add.w sl, r6, 8 | sl = r6 + 8;
0x000376c6 cmp sl, r4 |
| if (sl < r4) {
0x000376c8 bls.w 0x37850 | goto label_34;
| }
| label_3:
0x000376cc rsb.w r2, r4, 0x800 | r2 = 0x800 - r4;
0x000376d0 add.w r1, fp, r4 | r1 = fp + r4;
0x000376d4 mov r0, r5 | r0 = r5;
0x000376d6 mov sl, r6 | sl = r6;
0x000376d8 movs r6, 4 | r6 = 4;
0x000376da bl 0x364d4 | r0 = fcn_000364d4 (r0, r1, r2);
0x000376de cmp r0, 0 |
| if (r0 != 0) {
0x000376e0 bne 0x3768e | goto label_0;
| }
| label_29:
0x000376e2 cmp r6, 5 |
| if (r6 == 5) {
0x000376e4 beq.w 0x3786c | goto label_35;
| }
0x000376e8 cmp r6, 4 |
| if (r6 != 4) {
0x000376ea bne.w 0x378e6 | goto label_36;
| }
0x000376ee ldr r3, [pc, 0x3c0] |
0x000376f0 ldr r2, [sp, 0x30] | r2 = *(arg_30h);
0x000376f2 ldr r3, [r2, r3] | r3 = *((r2 + r3));
0x000376f4 ldr r3, [r3] | r3 = *(0x37ab2);
0x000376f6 cmp r3, 2 |
| if (r3 <= 2) {
0x000376f8 ble.w 0x37832 | goto label_7;
| }
0x000376fc ldr r1, [pc, 0x3b4] |
0x000376fe add r1, pc | r1 = 0x6f1b6;
| label_10:
0x00037700 addw r2, r5, 0xca8 | __asm ("addw r2, r5, 0xca8");
0x00037704 movs r0, 3 | r0 = 3;
0x00037706 bl 0x30d1c | zbx_zabbix_log ();
0x0003770a ldr r3, [sp, 0x1c] | r3 = *(arg_1ch);
| if (r3 != 0) {
0x0003770c cbz r3, 0x37716 |
| label_8:
0x0003770e ldr r3, [r5, 0x18] | r3 = *((r5 + 0x18));
0x00037710 cmp r3, 0 |
| if (r3 != 0) {
0x00037712 bne.w 0x37842 | goto label_37;
| }
| }
| label_5:
0x00037716 mov.w r0, -1 | r0 = -1;
| label_11:
0x0003771a ldr r2, [pc, 0x39c] |
0x0003771c ldr r3, [pc, 0x38c] | r3 = *(0x37aac);
0x0003771e add r2, pc | r2 = 0x6f1dc;
0x00037720 ldr r3, [r2, r3] | r3 = *(0x6f1dc);
0x00037722 ldr r2, [r3] | r2 = *(0x6f1dc);
0x00037724 ldr r3, [sp, 0x3c] | r3 = *(arg_3ch);
0x00037726 eors r2, r3 | r2 ^= r3;
0x00037728 mov.w r3, 0 | r3 = 0;
| if (r2 != r3) {
0x0003772c bne.w 0x37a9e | goto label_38;
| }
0x00037730 add sp, 0x44 |
0x00037732 pop.w {r4, r5, r6, r7, r8, sb, sl, fp, pc} |
| label_30:
0x00037736 adds r3, r7, r0 | r3 = r7 + r0;
0x00037738 cmp r8, r3 |
0x0003773a sbcs r2, sb, 0 | __asm ("sbcs r2, sb, 0");
| if (r8 < r3) {
0x0003773e bhs 0x37744 |
0x00037740 mov r7, r3 | r7 = r3;
0x00037742 b 0x3769c | goto label_1;
| }
0x00037744 mov r2, r0 | r2 = r0;
0x00037746 ldr r0, [r5, 0xc] | r0 = *((r5 + 0xc));
0x00037748 mov r1, fp | r1 = fp;
0x0003774a str r3, [sp, 0x34] | *(arg_34h) = r3;
0x0003774c add r0, r7 | r0 += r7;
0x0003774e blx 0xdf84 | fcn_0000df84 ();
0x00037752 ldr r3, [sp, 0x34] | r3 = *(arg_34h);
0x00037754 mov r7, r3 | r7 = r3;
0x00037756 b 0x3769c | goto label_1;
| label_4:
0x00037758 ldr r1, [pc, 0x360] |
0x0003775a movs r2, 4 | r2 = 4;
0x0003775c mov r0, fp | r0 = fp;
0x0003775e add r1, pc | r1 = 0x6f21e;
0x00037760 blx 0xe2c8 | r0 = fcn_0000e2c8 ();
0x00037764 cmp r0, 0 |
| if (r0 != 0) {
0x00037766 bne 0x37824 | goto label_39;
| }
0x00037768 add.w sl, sl, 4 | sl += 4;
| label_32:
0x0003776c add.w r6, sl, 1 | r6 = sl + 1;
0x00037770 cmp r6, r4 |
| if (r6 > r4) {
0x00037772 bhi 0x3784c | goto label_40;
| }
0x00037774 ldrb.w r3, [r5, 0x42c] | r3 = *((r5 + 0x42c));
0x00037778 lsls r2, r3, 0x1f | r2 = r3 << 0x1f;
0x0003777a str r3, [sp, 0x14] | var_14h = r3;
| if (r2 >= r3) {
0x0003777c bpl.w 0x37928 | goto label_41;
| }
0x00037780 ldr r2, [sp, 0x20] | r2 = *(arg_20h);
0x00037782 cmp r3, r2 |
| if (r3 > r2) {
0x00037784 bhi.w 0x37928 | goto label_41;
| }
0x00037788 str.w r3, [r5, 0xda8] | __asm ("str.w r3, [r5, 0xda8]");
0x0003778c ldr r3, [sp, 0x14] | r3 = var_14h;
0x0003778e ands r3, r3, 4 | r3 &= 4;
| if (r3 == r3) {
0x00037792 beq 0x376c2 | goto label_2;
| }
| label_33:
0x00037794 add.w sl, r6, 0x10 | sl = r6 + 0x10;
0x00037798 cmp sl, r4 |
| if (sl > r4) {
0x0003779a bhi 0x376cc | goto label_3;
| }
0x0003779c add.w r3, fp, r6 | r3 = fp + r6;
0x000377a0 ldr.w r0, [fp, r6] | r0 = *((fp + r6));
0x000377a4 ldr r1, [r3, 4] | r1 = *((r3 + 4));
0x000377a6 str r3, [sp, 0x18] | *(arg_18h) = r3;
0x000377a8 bl 0x3f874 | zbx_letoh_uint64 ();
0x000377ac ldr r3, [sp, 0x18] | r3 = *(arg_18h);
0x000377ae mov r8, r0 | r8 = r0;
0x000377b0 mov sb, r1 | sb = r1;
0x000377b2 ldr r0, [r3, 8] | r0 = *((r3 + 8));
0x000377b4 ldr r1, [r3, 0xc] | r1 = *((r3 + 0xc));
0x000377b6 bl 0x3f874 | zbx_letoh_uint64 ();
0x000377ba str r0, [sp, 0x18] | *(arg_18h) = r0;
0x000377bc str r1, [sp, 0x24] | *(arg_24h) = r1;
| label_6:
0x000377be ldr r3, [sp, 0x28] | r3 = *(arg_28h);
0x000377c0 cmp r3, r8 |
0x000377c2 ldr r3, [sp, 0x2c] | r3 = *(arg_2ch);
0x000377c4 sbcs.w r3, r3, sb | __asm ("sbcs.w r3, r3, sb");
| if (r3 <= r8) {
0x000377c8 blo.w 0x37a12 | goto label_42;
| }
0x000377cc ldr r3, [sp, 0x28] | r3 = *(arg_28h);
0x000377ce ldr r2, [sp, 0x18] | r2 = *(arg_18h);
0x000377d0 cmp r3, r2 |
0x000377d2 ldr r3, [sp, 0x2c] | r3 = *(arg_2ch);
0x000377d4 ldr r2, [sp, 0x24] | r2 = *(arg_24h);
0x000377d6 sbcs r3, r2 | __asm ("sbcs r3, r2");
| if (r3 <= r2) {
0x000377d8 blo.w 0x37a46 | goto label_43;
| }
0x000377dc cmp.w r8, 0x800 |
0x000377e0 sub.w r4, r4, sl | r4 -= sl;
0x000377e4 sbcs r3, sb, 0 | __asm ("sbcs r3, sb, 0");
0x000377e8 add.w r6, fp, sl | r6 = fp + sl;
| if (r8 >= 0x800) {
| label_20:
0x000377ec bhs 0x378c0 | goto label_44;
| }
0x000377ee mov r2, r4 | r2 = r4;
0x000377f0 mov r1, r6 | r1 = r6;
0x000377f2 mov r0, fp | r0 = fp;
0x000377f4 blx 0xe1ec | getpid ();
0x000377f8 adds r2, r7, r4 | r2 = r7 + r4;
| label_9:
0x000377fa movs r3, 0 | r3 = 0;
0x000377fc cmp r2, r8 |
0x000377fe sbcs.w r3, r3, sb | __asm ("sbcs.w r3, r3, sb");
| if (r2 >= r8) {
0x00037802 bhs 0x3786c | goto label_35;
| }
0x00037804 movs r6, 5 | r6 = 5;
0x00037806 b 0x3767e | void (*0x3767e)() ();
| label_31:
0x00037808 cmp r4, 3 |
| if (r4 > 3) {
0x0003780a bhi 0x37758 | goto label_4;
| }
0x0003780c ldr r1, [pc, 0x2b0] |
0x0003780e mov r2, r4 | r2 = r4;
0x00037810 mov r0, fp | r0 = fp;
0x00037812 add r1, pc | r1 = 0x6f2d6;
0x00037814 blx 0xe2c8 | r0 = fcn_0000e2c8 ();
0x00037818 cmp r0, 0 |
| if (r0 == 0) {
0x0003781a beq.w 0x3767e | void (*0x3767e)() ();
| }
| label_13:
0x0003781e cmp r4, 0 |
| if (r4 == 0) {
0x00037820 beq.w 0x37950 | goto label_45;
| }
| label_39:
0x00037824 ldr r3, [pc, 0x288] |
0x00037826 ldr r2, [sp, 0x30] | r2 = *(arg_30h);
0x00037828 ldr r3, [r2, r3] | r3 = *((r2 + r3));
0x0003782a ldr r3, [r3] | r3 = *(0x37ab0);
0x0003782c cmp r3, 2 |
| if (r3 > 2) {
0x0003782e bgt.w 0x3795e | goto label_46;
| }
| label_7:
0x00037832 ldr r3, [sp, 0x1c] | r3 = *(arg_1ch);
0x00037834 cmp r3, 0 |
| if (r3 == 0) {
0x00037836 beq.w 0x37716 | goto label_5;
| }
0x0003783a ldr r3, [r5, 0x18] | r3 = *((r5 + 0x18));
0x0003783c cmp r3, 0 |
| if (r3 == 0) {
0x0003783e beq.w 0x37716 | goto label_5;
| }
| label_37:
0x00037842 bl 0x42fd4 | zbx_alarm_off ();
0x00037846 movs r3, 0 | r3 = 0;
0x00037848 str r3, [r5, 0x18] | *((r5 + 0x18)) = r3;
0x0003784a b 0x37716 | goto label_5;
| label_40:
0x0003784c movs r6, 2 | r6 = 2;
0x0003784e b 0x3767e | void (*0x3767e)() ();
| label_34:
0x00037850 ldr.w r0, [fp, r6] | r0 = *((fp + r6));
0x00037854 add r6, fp | r6 += fp;
0x00037856 mov sb, r3 | sb = r3;
0x00037858 bl 0x3f87c | r0 = zbx_letoh_uint32 ();
0x0003785c mov r8, r0 | r8 = r0;
0x0003785e ldr r0, [r6, 4] | r0 = *((r6 + 4));
0x00037860 bl 0x3f87c | zbx_letoh_uint32 ();
0x00037864 str.w sb, [sp, 0x24] | __asm ("str.w sb, [arg_24h]");
0x00037868 str r0, [sp, 0x18] | *(arg_18h) = r0;
0x0003786a b 0x377be | goto label_6;
| label_35:
0x0003786c add r7, r4 | r7 += r4;
0x0003786e movs r4, 0 | r4 = 0;
0x00037870 cmp r4, sb |
0x00037872 it eq |
| if (r4 == sb) {
0x00037874 cmpeq r7, r8 | __asm ("cmpeq r7, r8");
| }
| if (r4 == sb) {
0x00037876 beq 0x378fc | goto label_47;
| }
0x00037878 ldr r3, [pc, 0x234] |
0x0003787a cmp r7, r8 |
0x0003787c ldr r2, [sp, 0x30] | r2 = *(arg_30h);
0x0003787e sbcs.w r4, r4, sb | __asm ("sbcs.w r4, r4, sb");
0x00037882 ldr r3, [r2, r3] | r3 = *((r2 + r3));
0x00037884 ldr r3, [r3] | r3 = *(0x37ab0);
| if (r7 >= r8) {
0x00037886 bhs 0x37918 | goto label_48;
| }
0x00037888 cmp r3, 2 |
| if (r3 <= 2) {
0x0003788a ble 0x37832 | goto label_7;
| }
0x0003788c ldr r1, [pc, 0x234] |
0x0003788e add r1, pc | r1 = 0x6f356;
| label_12:
0x00037890 addw r2, r5, 0xca8 | __asm ("addw r2, r5, 0xca8");
0x00037894 movs r0, 3 | r0 = 3;
0x00037896 strd r8, sb, [sp] | __asm ("strd r8, sb, [sp]");
0x0003789a bl 0x30d1c | zbx_zabbix_log ();
0x0003789e ldr r3, [sp, 0x1c] | r3 = *(arg_1ch);
0x000378a0 cmp r3, 0 |
| if (r3 == 0) {
0x000378a2 beq.w 0x37716 | goto label_5;
| }
0x000378a6 b 0x3770e | goto label_8;
| label_44:
0x000378c0 ldr r0, [pc, 0x204] |
0x000378c2 movs r3, 1 | r3 = 1;
0x000378c4 movs r2, 0 | r2 = 0;
0x000378c6 movw r1, 0x752 | r1 = 0x752;
0x000378ca str r3, [r5, 0x1c] | *((r5 + 0x1c)) = r3;
0x000378cc add r3, r8 | r3 += r8;
0x000378ce add r0, pc | r0 = 0x6f39a;
0x000378d0 mov r7, r4 | r7 = r4;
0x000378d2 bl 0x40dd8 | zbx_malloc2 ();
0x000378d6 mov r2, r4 | r2 = r4;
0x000378d8 mov r1, r6 | r1 = r6;
0x000378da str r0, [r5, 0xc] | *((r5 + 0xc)) = r0;
0x000378dc blx 0xdf84 | fcn_0000df84 ();
0x000378e0 mov r2, r4 | r2 = r4;
0x000378e2 movs r4, 0 | r4 = 0;
0x000378e4 b 0x377fa | goto label_9;
| label_36:
0x000378e6 cmp r6, 2 |
| if (r6 != 2) {
0x000378e8 bne 0x37922 | goto label_49;
| }
0x000378ea ldr r3, [pc, 0x1c4] |
0x000378ec ldr r2, [sp, 0x30] | r2 = *(arg_30h);
0x000378ee ldr r3, [r2, r3] | r3 = *((r2 + r3));
0x000378f0 ldr r3, [r3] | r3 = *(0x37ab2);
0x000378f2 cmp r3, 2 |
| if (r3 <= 2) {
0x000378f4 ble 0x37832 | goto label_7;
| }
0x000378f6 ldr r1, [pc, 0x1d4] |
0x000378f8 add r1, pc | r1 = 0x6f3ca;
0x000378fa b 0x37700 | goto label_10;
| label_47:
0x000378fc ldr r3, [sp, 0x14] | r3 = var_14h;
0x000378fe lsls r3, r3, 0x1e | r3 <<= 0x1e;
| if (r3 < r3) {
0x00037900 bmi 0x3796e | goto label_50;
| }
0x00037902 ldr r6, [r5, 0xc] | r6 = *((r5 + 0xc));
0x00037904 str r7, [r5, 8] | *((r5 + 8)) = r7;
| label_16:
0x00037906 movs r3, 0 | r3 = 0;
0x00037908 strb r3, [r6, r7] | *((r6 + r7)) = r3;
0x0003790a ldr r3, [sp, 0x1c] | r3 = *(arg_1ch);
| if (r3 != 0) {
0x0003790c cbz r3, 0x37912 |
| label_15:
0x0003790e ldr r3, [r5, 0x18] | r3 = *((r5 + 0x18));
| if (r3 != 0) {
0x00037910 cbnz r3, 0x37964 | goto label_51;
| }
| }
| label_14:
0x00037912 ldr r0, [r5, 8] | r0 = *((r5 + 8));
0x00037914 add r0, sl | r0 += sl;
0x00037916 b 0x3771a | goto label_11;
| label_48:
0x00037918 cmp r3, 2 |
| if (r3 <= 2) {
0x0003791a ble 0x37832 | goto label_7;
| }
0x0003791c ldr r1, [pc, 0x1b0] |
0x0003791e add r1, pc | r1 = 0x6f3f2;
0x00037920 b 0x37890 | goto label_12;
| label_49:
0x00037922 cmp r6, 3 |
| if (r6 != 3) {
0x00037924 bne.w 0x3781e | goto label_13;
| }
| label_41:
0x00037928 ldr r3, [pc, 0x184] |
0x0003792a ldr r2, [sp, 0x30] | r2 = *(arg_30h);
0x0003792c ldr r3, [r2, r3] | r3 = *((r2 + r3));
0x0003792e ldr r3, [r3] | r3 = *(0x37ab0);
0x00037930 cmp r3, 2 |
| if (r3 <= 2) {
0x00037932 ble.w 0x37832 | goto label_7;
| }
0x00037936 ldr r1, [pc, 0x19c] |
0x00037938 addw r2, r5, 0xca8 | __asm ("addw r2, r5, 0xca8");
0x0003793c ldr r3, [sp, 0x14] | r3 = var_14h;
0x0003793e movs r0, 3 | r0 = 3;
0x00037940 add r1, pc | r1 = 0x6f41a;
0x00037942 bl 0x30d1c | zbx_zabbix_log ();
0x00037946 ldr r3, [sp, 0x1c] | r3 = *(arg_1ch);
0x00037948 cmp r3, 0 |
| if (r3 == 0) {
0x0003794a beq.w 0x37716 | goto label_5;
| }
0x0003794e b 0x3770e | goto label_8;
| label_45:
0x00037950 ldr r3, [r5, 0xc] | r3 = *((r5 + 0xc));
0x00037952 str r4, [r5, 8] | *((r5 + 8)) = r4;
0x00037954 strb r4, [r3] | *(r3) = r4;
0x00037956 ldr r3, [sp, 0x1c] | r3 = *(arg_1ch);
0x00037958 cmp r3, 0 |
| if (r3 == 0) {
0x0003795a beq 0x37912 | goto label_14;
| }
0x0003795c b 0x3790e | goto label_15;
| label_46:
0x0003795e ldr r1, [pc, 0x178] |
0x00037960 add r1, pc | r1 = 0x6f43e;
0x00037962 b 0x37700 | goto label_10;
| label_51:
0x00037964 bl 0x42fd4 | zbx_alarm_off ();
0x00037968 movs r3, 0 | r3 = 0;
0x0003796a str r3, [r5, 0x18] | *((r5 + 0x18)) = r3;
0x0003796c b 0x37912 | goto label_14;
| label_50:
0x0003796e ldr r3, [sp, 0x18] | r3 = *(arg_18h);
0x00037970 mov r2, r4 | r2 = r4;
0x00037972 ldr r0, [pc, 0x168] |
0x00037974 mov.w r1, 0x768 | r1 = 0x768;
0x00037978 str r3, [sp, 0x38] | *(arg_38h) = r3;
0x0003797a adds r3, 1 | r3++;
0x0003797c add r0, pc | r0 = 0x6f45e;
0x0003797e bl 0x40dd8 | r0 = zbx_malloc2 ();
0x00037982 mov r6, r0 | r6 = r0;
0x00037984 add r3, sp, 0x38 | r3 += arg_38h;
0x00037986 ldr r0, [r5, 0xc] | r0 = *((r5 + 0xc));
0x00037988 mov r2, r6 | r2 = r6;
0x0003798a mov r1, r7 | r1 = r7;
0x0003798c bl 0x4b0bc | zbx_uncompress ();
0x00037990 adds r0, 1 | r0++;
0x00037992 ldr.w r8, [sp, 0x18] | r8 = *(arg_18h);
| if (r0 == 1) {
0x00037996 beq 0x37a7a | goto label_52;
| }
0x00037998 ldr r3, [sp, 0x38] | r3 = *(arg_38h);
0x0003799a ldr r2, [sp, 0x18] | r2 = *(arg_18h);
0x0003799c ldr r1, [sp, 0x24] | r1 = *(arg_24h);
0x0003799e cmp r4, r1 |
0x000379a0 it eq |
| if (r4 == r1) {
0x000379a2 cmpeq r3, r2 | __asm ("cmpeq r3, r2");
| }
| if (r4 != r1) {
0x000379a4 beq 0x379b8 |
| if (r6 != 0) {
0x000379a6 cbz r6, 0x379ae |
0x000379a8 mov r0, r6 | r0 = r6;
0x000379aa blx 0xde30 | fcn_0000de30 ();
| }
0x000379ae ldr r0, [pc, 0x130] |
0x000379b0 add r0, pc | r0 = 0x6f496;
0x000379b2 bl 0x363d0 | fcn_000363d0 ();
0x000379b6 b 0x37832 | goto label_7;
| }
0x000379b8 ldr r3, [r5, 0x1c] | r3 = *((r5 + 0x1c));
0x000379ba cmp r3, 1 |
| if (r3 == 1) {
0x000379bc beq 0x37a92 | goto label_53;
| }
| label_17:
0x000379be ldr r3, [sp, 0x18] | r3 = *(arg_18h);
0x000379c0 movs r2, 1 | r2 = 1;
0x000379c2 str r2, [r5, 0x1c] | *((r5 + 0x1c)) = r2;
0x000379c4 ldr r2, [sp, 0x30] | r2 = *(arg_30h);
0x000379c6 str r3, [r5, 8] | *((r5 + 8)) = r3;
0x000379c8 ldr r3, [pc, 0xe4] |
0x000379ca str r6, [r5, 0xc] | *((r5 + 0xc)) = r6;
0x000379cc ldr r3, [r2, r3] | r3 = *((r2 + r3));
0x000379ce ldr r3, [r3] | r3 = *(0x37ab0);
0x000379d0 cmp r3, 4 |
| if (r3 <= 4) {
0x000379d2 bgt 0x379d8 |
0x000379d4 mov r7, r8 | r7 = r8;
0x000379d6 b 0x37906 | goto label_16;
| }
0x000379d8 ldr r0, [sp, 0x18] | r0 = *(arg_18h);
0x000379da ldr r1, [sp, 0x24] | r1 = *(arg_24h);
0x000379dc bl 0x4c6f4 | fcn_0004c6f4 (r0, r1, r2);
0x000379e0 vmov s15, r7 | __asm ("vmov s15, r7");
0x000379e4 vcvt.f64.u32 d17, s15 | __asm ("vcvt.f64.u32 d17, s15");
0x000379e8 vmov d18, r0, r1 | __asm ("vmov d18, r0, r1");
0x000379ec movs r0, 5 | r0 = 5;
0x000379ee ldr r6, [pc, 0xf4] |
0x000379f0 ldr r1, [pc, 0xf4] |
0x000379f2 vdiv.f64 d16, d18, d17 | __asm ("vdiv.f64 d16, d18, d17");
0x000379f6 add r6, pc | r6 = 0x6f4e0;
0x000379f8 str r7, [sp] | *(sp) = r7;
0x000379fa adds r6, 0x4c | r6 += 0x4c;
0x000379fc add r1, pc | r1 = 0x6f4e8;
0x000379fe mov r2, r6 | r2 = r6;
0x00037a00 str r4, [sp, 4] | var_4h = r4;
0x00037a02 vstr d16, [sp, 8] | __asm ("vstr d16, [sp, 8]");
0x00037a06 bl 0x30d1c | zbx_zabbix_log ();
0x00037a0a ldrd r8, r6, [r5, 8] | __asm ("ldrd r8, r6, [r5, 8]");
0x00037a0e mov r7, r8 | r7 = r8;
0x00037a10 b 0x37906 | goto label_16;
| label_42:
0x00037a12 ldr r3, [pc, 0x9c] |
0x00037a14 ldr r2, [sp, 0x30] | r2 = *(arg_30h);
0x00037a16 ldr r3, [r2, r3] | r3 = *((r2 + r3));
0x00037a18 ldr r3, [r3] | r3 = *(0x37ab2);
0x00037a1a cmp r3, 2 |
| if (r3 <= 2) {
0x00037a1c ble.w 0x37832 | goto label_7;
| }
0x00037a20 ldr r1, [sp, 0x2c] | r1 = *(arg_2ch);
0x00037a22 mov r2, r8 | r2 = r8;
0x00037a24 ldr r3, [sp, 0x28] | r3 = *(arg_28h);
0x00037a26 movs r0, 3 | r0 = 3;
0x00037a28 str r1, [sp, 0xc] | var_ch = r1;
0x00037a2a addw r1, r5, 0xca8 | __asm ("addw r1, r5, 0xca8");
0x00037a2e str r1, [sp] | *(sp) = r1;
0x00037a30 ldr r1, [pc, 0xb8] |
0x00037a32 str r3, [sp, 8] | var_8h = r3;
0x00037a34 mov r3, sb | r3 = sb;
0x00037a36 add r1, pc | r1 = 0x6f526;
0x00037a38 bl 0x30d1c | zbx_zabbix_log ();
0x00037a3c ldr r3, [sp, 0x1c] | r3 = *(arg_1ch);
0x00037a3e cmp r3, 0 |
| if (r3 != 0) {
0x00037a40 bne.w 0x3770e | goto label_8;
| }
0x00037a44 b 0x37716 | goto label_5;
| label_43:
0x00037a46 ldr r3, [pc, 0x68] |
0x00037a48 ldr r2, [sp, 0x30] | r2 = *(arg_30h);
0x00037a4a ldr r3, [r2, r3] | r3 = *((r2 + r3));
0x00037a4c ldr r3, [r3] | r3 = *(0x37ab2);
0x00037a4e cmp r3, 2 |
| if (r3 <= 2) {
0x00037a50 ble.w 0x37832 | goto label_7;
| }
0x00037a54 ldr r1, [sp, 0x2c] | r1 = *(arg_2ch);
0x00037a56 movs r0, 3 | r0 = 3;
0x00037a58 ldr r3, [sp, 0x28] | r3 = *(arg_28h);
0x00037a5a ldr r2, [sp, 0x18] | r2 = *(arg_18h);
0x00037a5c str r1, [sp, 0xc] | var_ch = r1;
0x00037a5e addw r1, r5, 0xca8 | __asm ("addw r1, r5, 0xca8");
0x00037a62 str r1, [sp] | *(sp) = r1;
0x00037a64 ldr r1, [pc, 0x88] |
0x00037a66 str r3, [sp, 8] | var_8h = r3;
0x00037a68 ldr r3, [sp, 0x24] | r3 = *(arg_24h);
0x00037a6a add r1, pc | r1 = 0x6f55e;
0x00037a6c bl 0x30d1c | zbx_zabbix_log ();
0x00037a70 ldr r3, [sp, 0x1c] | r3 = *(arg_1ch);
0x00037a72 cmp r3, 0 |
| if (r3 != 0) {
0x00037a74 bne.w 0x3770e | goto label_8;
| }
0x00037a78 b 0x37716 | goto label_5;
| if (r6 != 0) {
| label_52:
0x00037a7a cbz r6, 0x37a82 |
0x00037a7c mov r0, r6 | r0 = r6;
0x00037a7e blx 0xde30 | fcn_0000de30 ();
| }
0x00037a82 bl 0x4b0c4 | r0 = zbx_compress_strerror ();
0x00037a86 mov r1, r0 | r1 = r0;
0x00037a88 ldr r0, [pc, 0x68] |
0x00037a8a add r0, pc | r0 = 0x6f582;
0x00037a8c bl 0x363d0 | fcn_000363d0 ();
0x00037a90 b 0x37832 | goto label_7;
| label_53:
0x00037a92 ldr r0, [r5, 0xc] | r0 = *((r5 + 0xc));
0x00037a94 cmp r0, 0 |
| if (r0 == 0) {
0x00037a96 beq 0x379be | goto label_17;
| }
0x00037a98 blx 0xde30 | fcn_0000de30 ();
0x00037a9c b 0x379be | goto label_17;
| label_38:
0x00037a9e blx 0xe158 | fcn_0000e158 ();
0x00037aa2 nop |
0x00037aa4 cmp sl, r6 |
0x00037aa6 movs r2, r0 | r2 = r0;
0x00037aa8 cmp sl, r4 |
0x00037aaa movs r2, r0 | r2 = r0;
0x00037aac lsls r4, r2, 0xe | r4 = r2 << 0xe;
0x00037aae movs r0, r0 |
0x00037ab0 lsls r4, r7, 0xe | r4 = r7 << 0xe;
0x00037ab2 movs r0, r0 |
0x00037ab4 b 0x381ac | goto label_54;
0x00037e50 push.w {r4, r5, r6, r7, r8, lr} |
0x00037e54 subw sp, sp, 0x808 | __asm ("subw sp, sp, 0x808");
0x00037e58 ldr r4, [pc, 0xc0] |
0x00037e5a add r6, sp, 4 | r6 += var_4h;
0x00037e5c mov r8, r1 | r8 = r1;
0x00037e5e mov.w r2, 0x800 | r2 = 0x800;
0x00037e62 ldr r3, [pc, 0xbc] | r3 = *(0x37f22);
0x00037e64 mov r1, r0 | r1 = r0;
0x00037e66 add r4, pc | r4 = 0x6fd86;
0x00037e68 mov r0, r6 | r0 = r6;
0x00037e6a ldr r3, [r4, r3] |
0x00037e6c ldr r3, [r3] | r3 = *(0x6fd86);
0x00037e6e str.w r3, [sp, 0x804] | __asm ("str.w r3, [arg_804h]");
0x00037e72 mov.w r3, 0 | r3 = 0;
0x00037e76 bl 0x4465c | zbx_strlcpy ();
0x00037e7a ldrb r3, [r6] | r3 = *(r6);
| if (r3 == 0) {
0x00037e7c cbz r3, 0x37eb6 | goto label_55;
| }
0x00037e7e movs r7, 0 | r7 = 0;
| do {
0x00037e80 movs r1, 0x2c | r1 = 0x2c;
0x00037e82 mov r0, r6 | r0 = r6;
0x00037e84 blx 0xdcd4 | r0 = fcn_0000dcd4 ();
0x00037e88 mov r4, r0 | r4 = r0;
| if (r0 != 0) {
0x00037e8a cbz r0, 0x37e8e |
0x00037e8c strb r7, [r0] | *(r0) = r7;
| }
0x00037e8e movs r1, 0x2f | r1 = 0x2f;
0x00037e90 mov r0, r6 | r0 = r6;
0x00037e92 blx 0xdcd4 | r0 = fcn_0000dcd4 ();
0x00037e96 mov r5, r0 | r5 = r0;
| if (r0 == 0) {
0x00037e98 cbz r0, 0x37ed6 | goto label_56;
| }
0x00037e9a mov r1, r0 | r1 = r0;
0x00037e9c movs r2, 0 | r2 = 0;
0x00037e9e mov r0, r6 | r0 = r6;
0x00037ea0 strb r7, [r1], 1 | *(r1) = r7;
| r1++;
0x00037ea4 bl 0x37df8 | validate_cidr ();
0x00037ea8 adds r0, 1 | r0++;
| if (r0 == 1) {
0x00037eaa beq 0x37efa | goto label_57;
| }
| if (r4 == 0) {
| label_18:
0x00037eac cbz r4, 0x37eb6 | goto label_55;
| }
0x00037eae ldrb r3, [r4, 1] | r3 = *((r4 + 1));
0x00037eb0 adds r6, r4, 1 | r6 = r4 + 1;
0x00037eb2 cmp r3, 0 |
0x00037eb4 bne 0x37e80 |
| } while (r3 != 0);
| label_55:
0x00037eb6 movs r0, 0 | r0 = 0;
| label_19:
0x00037eb8 ldr r2, [pc, 0x68] |
0x00037eba ldr r3, [pc, 0x64] | r3 = *(0x37f22);
0x00037ebc add r2, pc | r2 = 0x6fde4;
0x00037ebe ldr r3, [r2, r3] | r3 = *(0x6fde4);
0x00037ec0 ldr r2, [r3] | r2 = *(0x6fde4);
0x00037ec2 ldr.w r3, [sp, 0x804] | r3 = *(arg_804h);
0x00037ec6 eors r2, r3 | r2 ^= r3;
0x00037ec8 mov.w r3, 0 | r3 = 0;
| if (r2 != r3) {
0x00037ecc bne 0x37f16 | goto label_58;
| }
0x00037ece addw sp, sp, 0x808 | __asm ("addw sp, sp, 0x808");
0x00037ed2 pop.w {r4, r5, r6, r7, r8, pc} |
| label_56:
0x00037ed6 mov r0, r6 | r0 = r6;
0x00037ed8 bl 0x413f0 | is_supported_ip ();
0x00037edc adds r0, 1 | r0++;
| if (r0 != 1) {
0x00037ede bne 0x37eac | goto label_18;
| }
0x00037ee0 mov r0, r6 | r0 = r6;
0x00037ee2 bl 0x41424 | zbx_validate_hostname ();
0x00037ee6 adds r0, 1 | r0++;
| if (r0 != 1) {
0x00037ee8 bne 0x37eac | goto label_18;
| }
0x00037eea ldr r1, [pc, 0x3c] |
0x00037eec mov r2, r6 | r2 = r6;
0x00037eee mov r0, r5 | r0 = r5;
0x00037ef0 add r1, pc | r1 = 0x6fe1e;
0x00037ef2 bl 0x44820 | r0 = zbx_dsprintf ()
0x00037ef6 mov r3, r0 | r3 = r0;
0x00037ef8 b 0x37f0c | goto label_59;
| label_57:
0x00037efa ldr r1, [pc, 0x30] |
0x00037efc movs r3, 0x2f | r3 = 0x2f;
0x00037efe strb r3, [r5] | *(r5) = r3;
0x00037f00 mov r2, r6 | r2 = r6;
0x00037f02 movs r0, 0 | r0 = 0;
0x00037f04 add r1, pc | r1 = 0x6fe36;
0x00037f06 bl 0x44820 | r0 = zbx_dsprintf ()
0x00037f0a mov r3, r0 | r3 = r0;
| label_59:
0x00037f0c mov.w r0, -1 | r0 = -1;
0x00037f10 str.w r3, [r8] | __asm ("str.w r3, [r8]");
0x00037f14 b 0x37eb8 | goto label_19;
| label_58:
0x00037f16 blx 0xe158 | fcn_0000e158 ();
0x00037f1a nop |
0x00037f1c subs r5, 0x72 | r5 -= 0x72;
0x00037f1e movs r2, r0 | r2 = r0;
0x00037f20 lsls r4, r2, 0xe | r4 = r2 << 0xe;
0x00037f22 movs r0, r0 |
0x00037f24 subs r5, 0x1c | r5 -= 0x1c;
0x00037f26 movs r2, r0 | r2 = r0;
0x00037f28 b 0x377ec | goto label_20;
| label_54:
0x000381ac ldr r3, [r2, r3] | r3 = *((r2 + r3));
0x000381ae adds r0, 0xec | r0 += 0xec;
0x000381b0 mov r5, r1 | r5 = r1;
0x000381b2 ldr r3, [r3] | r3 = *(r3);
0x000381b4 str r3, [r0] | *(r0) = r3;
0x000381b6 mov.w r3, 0 | r3 = 0;
0x000381ba ldr r3, [r4, 0x1c] | r3 = *((r4 + 0x1c));
0x000381bc cmp r3, 1 |
0x000381be beq 0x38226 |
| while (r0 == 0) {
0x000381c0 cmp r5, 0 |
| if (r5 != 0) {
0x000381c2 bne 0x38238 | goto label_60;
| }
| label_21:
0x000381c4 add r6, sp, 8 | r6 += var_8h;
0x000381c6 mov r3, r5 | r3 = r5;
0x000381c8 strd r5, r5, [sp] | __asm ("strd r5, r5, [sp]");
0x000381cc movw r2, 0xffe3 | r2 = 0xffe3;
0x000381d0 ldr r0, [r4] | r0 = *(r4);
0x000381d2 mov r1, r6 | r1 = r6;
0x000381d4 blx 0xe34c | r0 = fcn_0000e34c ();
0x000381d8 adds r3, r0, 1 | r3 = r0 + 1;
0x000381da mov r5, r0 | r5 = r0;
| if (r3 == r0) {
0x000381dc beq 0x38288 | goto label_61;
| }
| label_22:
0x000381de cmp.w r5, 0x800 |
0x000381e2 add.w r7, r5, 1 | r7 = r5 + 1;
| if (r5 >= 0x800) {
0x000381e6 bhs 0x38272 | goto label_62;
| }
| label_23:
0x000381e8 add.w r0, r4, 0x428 | r0 = r4 + 0x428;
0x000381ec movs r3, 0 | r3 = 0;
0x000381ee str r3, [r4, 0x1c] | *((r4 + 0x1c)) = r3;
| label_24:
0x000381f0 mov r1, r6 | r1 = r6;
0x000381f2 add r3, sp, 8 | r3 += var_8h;
0x000381f4 movs r6, 0 | r6 = 0;
0x000381f6 mov r2, r7 | r2 = r7;
0x000381f8 str r0, [r4, 0xc] | *((r4 + 0xc)) = r0;
0x000381fa strb r6, [r3, r5] | *((r3 + r5)) = r6;
0x000381fc blx 0xdf84 | fcn_0000df84 ();
0x00038200 mov r0, r6 | r0 = r6;
0x00038202 str r5, [r4, 8] | *((r4 + 8)) = r5;
| label_25:
0x00038204 ldr r2, [pc, 0xc8] |
0x00038206 add.w r1, sp, 0xff00 | r1 += arg_ff00h;
0x0003820a ldr r3, [pc, 0xc0] | r3 = *(0x382ce);
0x0003820c adds r1, 0xec | r1 += 0xec;
0x0003820e add r2, pc | r2 = 0x704e2;
| label_28:
0x00038210 ldr r3, [r2, r3] | r3 = *((r2 + r3));
0x00038212 ldr r2, [r3] | r2 = *(r3);
0x00038214 ldr r3, [r1] | r3 = *(r1);
0x00038216 eors r2, r3 | r2 ^= r3;
0x00038218 mov.w r3, 0 | r3 = 0;
| if (r2 != r3) {
0x0003821c bne 0x382c4 | goto label_63;
| }
0x0003821e add.w sp, sp, 0xff00 |
0x00038222 add sp, 0xf4 |
0x00038224 pop {r4, r5, r6, r7, pc} |
0x00038226 ldr r0, [r4, 0xc] | r0 = *((r4 + 0xc));
0x00038228 cmp r0, 0 |
0x0003822a beq 0x381c0 |
| }
0x0003822c blx 0xde30 | fcn_0000de30 ();
0x00038230 movs r3, 0 | r3 = 0;
0x00038232 str r3, [r4, 0xc] | *((r4 + 0xc)) = r3;
0x00038234 cmp r5, 0 |
| if (r5 == 0) {
0x00038236 beq 0x381c4 | goto label_21;
| }
| label_60:
0x00038238 movs r7, 0 | r7 = 0;
0x0003823a mov r0, r5 | r0 = r5;
0x0003823c str r5, [r4, 0x18] | *((r4 + 0x18)) = r5;
0x0003823e add r6, sp, 8 | r6 += var_8h;
| label_27:
0x00038240 bl 0x42fc4 | zbx_alarm_on ();
0x00038244 movw r2, 0xffe3 | r2 = 0xffe3;
0x00038248 strd r7, r7, [sp] | __asm ("strd r7, r7, [sp]");
0x0003824c mov r3, r7 | r3 = r7;
0x0003824e ldr r0, [r4] | r0 = *(r4);
0x00038250 mov r1, r6 | r1 = r6;
0x00038252 blx 0xe34c | r0 = fcn_0000e34c ();
0x00038256 adds r2, r0, 1 | r2 = r0 + 1;
0x00038258 mov r5, r0 | r5 = r0;
| if (r2 == r0) {
0x0003825a beq 0x382a2 | goto label_64;
| }
0x0003825c ldr r3, [r4, 0x18] | r3 = *((r4 + 0x18));
0x0003825e cmp r3, 0 |
| if (r3 == 0) {
0x00038260 beq 0x381de | goto label_22;
| }
0x00038262 bl 0x42fd4 | zbx_alarm_off ();
0x00038266 cmp.w r5, 0x800 |
0x0003826a str r7, [r4, 0x18] | *((r4 + 0x18)) = r7;
0x0003826c add.w r7, r5, 1 | r7 = r5 + 1;
| if (r5 <= 0x800) {
0x00038270 blo 0x381e8 | goto label_23;
| }
| label_62:
0x00038272 ldr r0, [pc, 0x60] |
0x00038274 movs r3, 1 | r3 = 1;
0x00038276 str r3, [r4, 0x1c] | *((r4 + 0x1c)) = r3;
0x00038278 movw r1, 0x95b | r1 = 0x95b;
0x0003827c ldr r2, [r4, 0xc] | r2 = *((r4 + 0xc));
0x0003827e mov r3, r7 | r3 = r7;
0x00038280 add r0, pc | r0 = 0x7055a;
0x00038282 bl 0x40dd8 | zbx_malloc2 ();
0x00038286 b 0x381f0 | goto label_24;
| label_61:
0x00038288 blx 0xe3d4 | r0 = fcn_0000e3d4 ();
0x0003828c ldr r0, [r0] | r0 = *(r0);
0x0003828e bl 0x31154 | r0 = strerror_from_system ();
0x00038292 mov r1, r0 | r1 = r0;
0x00038294 ldr r0, [pc, 0x40] |
0x00038296 add r0, pc | r0 = 0x70572;
0x00038298 bl 0x363d0 | fcn_000363d0 ();
| do {
| label_26:
0x0003829c mov.w r0, -1 | r0 = -1;
0x000382a0 b 0x38204 | goto label_25;
| label_64:
0x000382a2 blx 0xe3d4 | r0 = fcn_0000e3d4 ();
0x000382a6 ldr r0, [r0] | r0 = *(r0);
0x000382a8 bl 0x31154 | r0 = strerror_from_system ();
0x000382ac mov r1, r0 | r1 = r0;
0x000382ae ldr r0, [pc, 0x2c] |
0x000382b0 add r0, pc | r0 = 0x70592;
0x000382b2 bl 0x363d0 | fcn_000363d0 ();
0x000382b6 ldr r3, [r4, 0x18] | r3 = *((r4 + 0x18));
0x000382b8 cmp r3, 0 |
0x000382ba beq 0x3829c |
| } while (r3 == 0);
0x000382bc bl 0x42fd4 | zbx_alarm_off ();
0x000382c0 str r7, [r4, 0x18] | *((r4 + 0x18)) = r7;
0x000382c2 b 0x3829c | goto label_26;
| label_63:
0x000382c4 blx 0xe158 | fcn_0000e158 ();
0x000382c8 subs r2, 0x36 | r2 -= 0x36;
0x000382ca movs r2, r0 | r2 = r0;
0x000382cc lsls r4, r2, 0xe | r4 = r2 << 0xe;
0x000382ce movs r0, r0 |
0x000382d0 subs r1, 0xca | r1 -= 0xca;
0x000382d2 movs r2, r0 | r2 = r0;
| if (r2 >= r0) {
0x000382d4 bhs 0x38300 | goto label_65;
| }
0x000382d6 movs r1, r0 | r1 = r0;
| if (r1 < r0) {
0x000382d8 bls 0x38240 | goto label_27;
| }
0x000382da movs r1, r0 | r1 = r0;
| if (r1 < r0) {
0x000382dc bls 0x38210 | goto label_28;
| }
0x000382de movs r1, r0 | r1 = r0;
| label_65:
0x00038300 movs r0, 0xe | r0 = 0xe;
0x00038302 mov r3, ip | r3 = ip;
0x00038304 add.w lr, lr, 1 | lr++;
| }
; assembly | /* r2dec pseudo code output */
| /* /logs/firmware/patool_extraction/rootfs.img_unblob_extracted/rootfs.img_extract/0-80367616.squashfs_v4_le_extract/usr/sbin/zabbix_agentd @ 0x3f0a4 */
| #include <stdint.h>
|
; (fcn) sym.zbx_variant_convert () | void zbx_variant_convert (int16_t arg_824h, int16_t arg1, uint32_t arg2) {
| int16_t var_10h;
| int16_t var_1ch_2;
| int16_t var_81ch;
| int16_t var_ch;
| int16_t var_80ch;
| int16_t var_0h;
| int16_t var_24h;
| int16_t var_1ch;
| r0 = arg1;
| r1 = arg2;
| label_6:
0x0003edf4 ldr r2, [pc, 0xa0] |
0x0003edf6 ldr r3, [pc, 0xa4] | r3 = *(0x3ee9e);
0x0003edf8 push {r4, r5, r6, lr} |
0x0003edfa sub.w sp, sp, 0x810 |
0x0003edfe add r2, pc | r2 = 0x7dc9a;
0x0003ee00 ldr r3, [r2, r3] |
0x0003ee02 ldr r3, [r3] | r3 = *(0x7dc9a);
0x0003ee04 str.w r3, [sp, 0x80c] | __asm ("str.w r3, [var_80ch]");
0x0003ee08 mov.w r3, 0 | r3 = 0;
0x0003ee0c ldrb r3, [r0] | r3 = *(r0);
0x0003ee0e cmp r3, 2 |
| if (r3 == 2) {
0x0003ee10 beq 0x3ee4c | goto label_8;
| }
0x0003ee12 cmp r3, 3 |
0x0003ee14 mov r4, r0 | r4 = r0;
| if (r3 == 3) {
0x0003ee16 beq 0x3ee3c | goto label_9;
| }
0x0003ee18 cmp r3, 1 |
| if (r3 == 1) {
0x0003ee1a beq 0x3ee50 | goto label_10;
| }
| label_0:
0x0003ee1c mov.w r0, -1 | r0 = -1;
| do {
| label_1:
0x0003ee20 ldr r2, [pc, 0x7c] |
0x0003ee22 ldr r3, [pc, 0x78] | r3 = *(0x3ee9e);
0x0003ee24 add r2, pc | r2 = 0x7dcc8;
0x0003ee26 ldr r3, [r2, r3] | r3 = *(0x7dcc8);
0x0003ee28 ldr r2, [r3] | r2 = *(0x7dcc8);
0x0003ee2a ldr.w r3, [sp, 0x80c] | r3 = var_80ch;
0x0003ee2e eors r2, r3 | r2 ^= r3;
0x0003ee30 mov.w r3, 0 | r3 = 0;
| if (r2 != r3) {
0x0003ee34 bne 0x3ee92 | goto label_11;
| }
0x0003ee36 add.w sp, sp, 0x810 |
0x0003ee3a pop {r4, r5, r6, pc} |
| label_9:
0x0003ee3c ldrd r0, r1, [r0, 8] | __asm ("ldrd r0, r1, [r0, 8]");
0x0003ee40 bl 0x4c6f4 | fcn_0004c6f4 (r0, r1, r2);
0x0003ee44 movs r3, 2 | r3 = 2;
0x0003ee46 strd r0, r1, [r4, 8] | __asm ("strd r0, r1, [r4, 8]");
0x0003ee4a strb r3, [r4] | *(r4) = r3;
| label_8:
0x0003ee4c movs r0, 0 | r0 = 0;
0x0003ee4e b 0x3ee20 |
| } while (1);
| label_10:
0x0003ee50 add r5, sp, 0xc | r5 += var_ch;
0x0003ee52 ldr r1, [r0, 8] | r1 = *((r0 + 8));
0x0003ee54 mov.w r2, 0x800 | r2 = 0x800;
0x0003ee58 mov r0, r5 | r0 = r5;
0x0003ee5a bl 0x4465c | zbx_strlcpy ();
0x0003ee5e ldr r1, [pc, 0x44] |
0x0003ee60 mov r0, r5 | r0 = r5;
0x0003ee62 mov r6, sp | r6 = sp;
0x0003ee64 add r1, pc | r1 = 0x7dd0e;
0x0003ee66 bl 0x444f4 | zbx_rtrim ();
0x0003ee6a mov r0, r5 | r0 = r5;
0x0003ee6c bl 0x47e24 | zbx_trim_float ();
0x0003ee70 mov r1, r6 | r1 = r6;
0x0003ee72 mov r0, r5 | r0 = r5;
0x0003ee74 bl 0x41798 | r0 = is_double ();
0x0003ee78 cmp r0, 0 |
| if (r0 != 0) {
0x0003ee7a bne 0x3ee1c | goto label_0;
| }
0x0003ee7c mov r0, r4 | r0 = r4;
0x0003ee7e bl 0x3edc4 | zbx_variant_clear ();
0x0003ee82 ldrd r2, r3, [r6] | __asm ("ldrd r2, r3, [r6]");
0x0003ee86 movs r1, 2 | r1 = 2;
0x0003ee88 movs r0, 0 | r0 = 0;
0x0003ee8a strb r1, [r4] | *(r4) = r1;
0x0003ee8c strd r2, r3, [r4, 8] | __asm ("strd r2, r3, [r4, 8]");
0x0003ee90 b 0x3ee20 | goto label_1;
| label_11:
0x0003ee92 blx 0xe158 | fcn_0000e158 ();
0x0003ee96 nop |
0x0003ee98 ldm r5!, {r1, r3, r4, r6, r7} | r1 = *(r5!);
| r3 = *((r5! + 4));
| r4 = *((r5! + 8));
| r6 = *((r5! + 12));
| r7 = *((r5! + 16));
0x0003ee9a movs r1, r0 | r1 = r0;
0x0003ee9c lsls r4, r2, 0xe | r4 = r2 << 0xe;
0x0003ee9e movs r0, r0 |
0x0003eea0 ldm r5, {r2, r4, r5, r7} | r2 = *(r5);
| r4 = *((r5 + 4));
| r5 = *((r5 + 8));
| r7 = *((r5 + 12));
0x0003eea2 movs r1, r0 | r1 = r0;
0x0003eea4 ldrb r0, [r1, 0x19] | r0 = *((r1 + 0x19));
0x0003eea6 movs r1, r0 | r1 = r0;
| label_5:
0x0003eea8 ldr r2, [pc, 0xdc] |
0x0003eeaa ldr r3, [pc, 0xe0] | r3 = *(0x3ef8e);
0x0003eeac push {r4, r5, r6, lr} |
0x0003eeae sub.w sp, sp, 0x820 |
0x0003eeb2 add r2, pc | r2 = 0x7de3e;
0x0003eeb4 mov r4, r0 | r4 = r0;
0x0003eeb6 ldr r3, [r2, r3] |
0x0003eeb8 ldr r3, [r3] | r3 = *(0x7de3e);
0x0003eeba str.w r3, [sp, 0x81c] | __asm ("str.w r3, [var_81ch]");
0x0003eebe mov.w r3, 0 | r3 = 0;
0x0003eec2 ldrb r3, [r0] | r3 = *(r0);
0x0003eec4 cmp r3, 2 |
| if (r3 == 2) {
0x0003eec6 beq 0x3eef0 | goto label_12;
| }
0x0003eec8 cmp r3, 3 |
| if (r3 == 3) {
0x0003eeca beq 0x3ef1c | goto label_4;
| }
0x0003eecc cmp r3, 1 |
| if (r3 == 1) {
0x0003eece beq 0x3ef20 | goto label_13;
| }
| do {
| label_2:
0x0003eed0 mov.w r0, -1 | r0 = -1;
| label_3:
0x0003eed4 ldr r2, [pc, 0xb8] |
0x0003eed6 ldr r3, [pc, 0xb4] | r3 = *(0x3ef8e);
0x0003eed8 add r2, pc | r2 = 0x7de6c;
0x0003eeda ldr r3, [r2, r3] | r3 = *(0x7de6c);
0x0003eedc ldr r2, [r3] | r2 = *(0x7de6c);
0x0003eede ldr.w r3, [sp, 0x81c] | r3 = var_81ch;
0x0003eee2 eors r2, r3 | r2 ^= r3;
0x0003eee4 mov.w r3, 0 | r3 = 0;
| if (r2 != r3) {
0x0003eee8 bne 0x3ef7c | goto label_14;
| }
0x0003eeea add.w sp, sp, 0x820 |
0x0003eeee pop {r4, r5, r6, pc} |
| label_12:
0x0003eef0 vldr d16, [r0, 8] | __asm ("vldr d16, [r0, 8]");
0x0003eef4 vcmpe.f64 d16, 0 | __asm ("vcmpe.f64 d16, 0");
0x0003eef8 vmrs apsr_nzcv, fpscr | __asm ("vmrs apsr_nzcv, fpscr");
0x0003eefc bmi 0x3eed0 |
| } while (r2 < r3);
0x0003eefe vldr d17, [pc, 0x80] | __asm ("vldr d17, [0x0003ef84]");
0x0003ef02 vcmpe.f64 d16, d17 | __asm ("vcmpe.f64 d16, d17");
0x0003ef06 vmrs apsr_nzcv, fpscr | __asm ("vmrs apsr_nzcv, fpscr");
| if (r2 >= r3) {
0x0003ef0a bge 0x3eed0 | goto label_2;
| }
0x0003ef0c vmov r0, r1, d16 | __asm ("vmov r0, r1, d16");
0x0003ef10 bl 0x4c7a0 | fcn_0004c7a0 (r0, r1);
0x0003ef14 movs r3, 3 | r3 = 3;
0x0003ef16 strd r0, r1, [r4, 8] | __asm ("strd r0, r1, [r4, 8]");
0x0003ef1a strb r3, [r4] | *(r4) = r3;
| label_4:
0x0003ef1c movs r0, 0 | r0 = 0;
0x0003ef1e b 0x3eed4 | goto label_3;
| label_13:
0x0003ef20 add r5, sp, 0x1c | r5 += var_1ch_2;
0x0003ef22 mov.w r2, 0x800 | r2 = 0x800;
0x0003ef26 ldr r1, [r0, 8] | r1 = *((r0 + 8));
0x0003ef28 mov r0, r5 | r0 = r5;
0x0003ef2a bl 0x4465c | zbx_strlcpy ();
0x0003ef2e ldr r1, [pc, 0x64] |
0x0003ef30 mov r0, r5 | r0 = r5;
0x0003ef32 add r6, sp, 0x10 | r6 += var_10h;
0x0003ef34 add r1, pc | r1 = 0x7dece;
0x0003ef36 bl 0x444f4 | zbx_rtrim ();
0x0003ef3a mov r0, r5 | r0 = r5;
0x0003ef3c bl 0x47e1c | zbx_trim_integer ();
0x0003ef40 mov r0, r5 | r0 = r5;
0x0003ef42 bl 0x4448c | del_zeros ();
0x0003ef46 vmov.i8 d17, 0xff | __asm ("vmov.i8 d17, 0xff");
0x0003ef4a movs r3, 8 | r3 = 8;
0x0003ef4c vmov.i32 d16, 0 | __asm ("vmov.i32 d16, 0");
0x0003ef50 mov r2, r6 | r2 = r6;
0x0003ef52 mov r0, r5 | r0 = r5;
0x0003ef54 mov.w r1, -1 | r1 = -1;
0x0003ef58 vstr d17, [sp, 8] | __asm ("vstr d17, [sp, 8]");
0x0003ef5c vstr d16, [sp] | __asm ("vstr d16, [sp]");
0x0003ef60 bl 0x419a8 | r0 = is_uint_n_range ();
0x0003ef64 cmp r0, 0 |
| if (r0 != 0) {
0x0003ef66 bne 0x3eed0 | goto label_2;
| }
0x0003ef68 mov r0, r4 | r0 = r4;
0x0003ef6a bl 0x3edc4 | zbx_variant_clear ();
0x0003ef6e ldrd r2, r3, [sp, 0x10] | __asm ("ldrd r2, r3, [var_10h]");
0x0003ef72 movs r1, 3 | r1 = 3;
0x0003ef74 strb r1, [r4] | *(r4) = r1;
0x0003ef76 strd r2, r3, [r4, 8] | __asm ("strd r2, r3, [r4, 8]");
0x0003ef7a b 0x3ef1c | goto label_4;
| label_14:
0x0003ef7c blx 0xe158 | r0 = fcn_0000e158 ();
0x0003ef80 movs r0, r0 |
0x0003ef82 movs r0, r0 |
0x0003ef84 movs r0, r0 |
0x0003ef86 mvns r0, r6 | r0 = ~r6;
0x0003ef88 ldm r5, {r1, r2, r5} | r1 = *(r5);
| r2 = *((r5 + 4));
| r5 = *((r5 + 8));
0x0003ef8a movs r1, r0 | r1 = r0;
0x0003ef8c lsls r4, r2, 0xe | r4 = r2 << 0xe;
0x0003ef8e movs r0, r0 |
0x0003ef90 invalid |
0x0003f0a4 ldr r2, [pc, 0xd4] |
0x0003f0a6 ldr r3, [pc, 0xd8] | r3 = *(0x3f182);
0x0003f0a8 push {r4, r5, lr} |
0x0003f0aa sub sp, 0x24 |
0x0003f0ac add r2, pc | r2 = 0x7e22c;
0x0003f0ae mov r5, r0 | r5 = r0;
0x0003f0b0 ldr r3, [r2, r3] |
0x0003f0b2 ldr r3, [r3] | r3 = *(0x7e22c);
0x0003f0b4 str r3, [sp, 0x1c] | var_1ch = r3;
0x0003f0b6 mov.w r3, 0 | r3 = 0;
0x0003f0ba cmp r1, 3 |
| if (r1 <= 3) {
0x0003f0bc bhi 0x3f10c |
| /* switch table (4 cases) at 0x3f0c2 */
0x0003f0be tbb [pc, r1] | __asm ("tbb [0x0003f0c4]");
0x0003f0c6 ldr r2, [pc, 0xbc] |
0x0003f0c8 ldr r3, [pc, 0xb4] | r3 = *(0x3f180);
0x0003f0ca add r2, pc | r2 = 0x7e254;
0x0003f0cc ldr r3, [r2, r3] | r3 = *(0x7e254);
0x0003f0ce ldr r2, [r3] | r2 = *(0x7e254);
0x0003f0d0 ldr r3, [sp, 0x1c] | r3 = var_1ch;
0x0003f0d2 eors r2, r3 | r2 ^= r3;
0x0003f0d4 mov.w r3, 0 | r3 = 0;
| if (r2 != r3) {
0x0003f0d8 bne 0x3f176 | goto label_15;
| }
0x0003f0da add sp, 0x24 |
0x0003f0dc pop.w {r4, r5, lr} |
0x0003f0e0 b 0x3eea8 | goto label_5;
0x0003f0e2 ldr r2, [pc, 0xa4] |
0x0003f0e4 ldr r3, [pc, 0x98] | r3 = *(0x3f180);
0x0003f0e6 add r2, pc | r2 = 0x7e274;
0x0003f0e8 ldr r3, [r2, r3] | r3 = *(0x7e274);
0x0003f0ea ldr r2, [r3] | r2 = *(0x7e274);
0x0003f0ec ldr r3, [sp, 0x1c] | r3 = var_1ch;
0x0003f0ee eors r2, r3 | r2 ^= r3;
0x0003f0f0 mov.w r3, 0 | r3 = 0;
| if (r2 != r3) {
0x0003f0f4 bne 0x3f176 | goto label_15;
| }
0x0003f0f6 add sp, 0x24 |
0x0003f0f8 pop.w {r4, r5, lr} |
0x0003f0fc b 0x3edf4 | goto label_6;
0x0003f0fe ldrb r3, [r0] | r3 = *(r0);
0x0003f100 cmp r3, 2 |
| if (r3 == 2) {
0x0003f102 beq 0x3f152 | goto label_16;
| }
0x0003f104 cmp r3, 3 |
| if (r3 == 3) {
0x0003f106 beq 0x3f132 | goto label_17;
| }
0x0003f108 cmp r3, 1 |
| if (r3 == 1) {
0x0003f10a beq 0x3f14e | goto label_18;
| }
| }
0x0003f10c mov.w r0, -1 | r0 = -1;
0x0003f110 b 0x3f11a | goto label_19;
0x0003f112 mov r4, r1 | r4 = r1;
0x0003f114 bl 0x3edc4 | zbx_variant_clear ();
0x0003f118 mov r0, r4 | r0 = r4;
| do {
| label_19:
0x0003f11a ldr r2, [pc, 0x70] |
0x0003f11c ldr r3, [pc, 0x60] | r3 = *(0x3f180);
0x0003f11e add r2, pc | r2 = 0x7e2b0;
0x0003f120 ldr r3, [r2, r3] | r3 = *(0x7e2b0);
0x0003f122 ldr r2, [r3] | r2 = *(0x7e2b0);
0x0003f124 ldr r3, [sp, 0x1c] | r3 = var_1ch;
0x0003f126 eors r2, r3 | r2 ^= r3;
0x0003f128 mov.w r3, 0 | r3 = 0;
| if (r2 != r3) {
0x0003f12c bne 0x3f176 | goto label_15;
| }
0x0003f12e add sp, 0x24 |
0x0003f130 pop {r4, r5, pc} |
| label_17:
0x0003f132 ldr r1, [pc, 0x5c] |
0x0003f134 ldrd r2, r3, [r0, 8] | __asm ("ldrd r2, r3, [r0, 8]");
0x0003f138 movs r0, 0 | r0 = 0;
0x0003f13a add r1, pc | r1 = 0x7e2d0;
0x0003f13c bl 0x44820 | r0 = zbx_dsprintf ()
0x0003f140 mov r4, r0 | r4 = r0;
| label_7:
0x0003f142 mov r0, r5 | r0 = r5;
0x0003f144 bl 0x3edc4 | zbx_variant_clear ();
0x0003f148 movs r3, 1 | r3 = 1;
0x0003f14a str r4, [r5, 8] | *((r5 + 8)) = r4;
0x0003f14c strb r3, [r5] | *(r5) = r3;
| label_18:
0x0003f14e movs r0, 0 | r0 = 0;
0x0003f150 b 0x3f11a |
| } while (1);
| label_16:
0x0003f152 vldr d0, [r0, 8] | __asm ("vldr d0, [r0, 8]");
0x0003f156 movs r1, 0x19 | r1 = 0x19;
0x0003f158 mov r0, sp | r0 = sp;
0x0003f15a bl 0x480d8 | r0 = zbx_print_double ();
0x0003f15e mov r3, r0 | r3 = r0;
0x0003f160 ldr r0, [pc, 0x30] |
0x0003f162 movs r2, 0 | r2 = 0;
0x0003f164 mov.w r1, 0x104 | r1 = 0x104;
0x0003f168 add r0, pc | r0 = 0x7e300;
0x0003f16a bl 0x40ed8 | r0 = zbx_strdup2 ();
0x0003f16e mov r4, r0 | r4 = r0;
0x0003f170 bl 0x4448c | del_zeros ();
0x0003f174 b 0x3f142 | goto label_7;
| label_15:
0x0003f176 blx 0xe158 | fcn_0000e158 ();
0x0003f17a nop |
0x0003f17c ldm r3, {r2, r3, r5} | r2 = *(r3);
| r3 = *((r3 + 4));
| r5 = *((r3 + 8));
0x0003f17e movs r1, r0 | r1 = r0;
0x0003f180 lsls r4, r2, 0xe | r4 = r2 << 0xe;
0x0003f182 movs r0, r0 |
0x0003f184 ldm r3, {r1, r2, r3} | r1 = *(r3);
| r2 = *((r3 + 4));
| r3 = *((r3 + 8));
0x0003f186 movs r1, r0 | r1 = r0;
0x0003f188 ldm r2!, {r1, r4, r5, r6, r7} | r1 = *(r2!);
| r4 = *((r2! + 4));
| r5 = *((r2! + 8));
| r6 = *((r2! + 12));
| r7 = *((r2! + 16));
0x0003f18a movs r1, r0 | r1 = r0;
0x0003f18c ldm r2!, {r1, r3, r4, r5, r7} | r1 = *(r2!);
| r3 = *((r2! + 4));
| r4 = *((r2! + 8));
| r5 = *((r2! + 12));
| r7 = *((r2! + 16));
0x0003f18e movs r1, r0 | r1 = r0;
0x0003f190 adds r4, 0x46 | r4 += 0x46;
0x0003f192 movs r1, r0 | r1 = r0;
0x0003f194 ldrb r0, [r7, 0xc] | r0 = *((r7 + 0xc));
0x0003f196 movs r1, r0 | r1 = r0;
| }
; assembly | /* r2dec pseudo code output */
| /* /logs/firmware/patool_extraction/rootfs.img_unblob_extracted/rootfs.img_extract/0-80367616.squashfs_v4_le_extract/usr/sbin/zabbix_agentd @ 0x2dc94 */
| #include <stdint.h>
|
; (fcn) sym.zbx_vfs_file_info () | void zbx_vfs_file_info (int16_t arg1, int16_t arg2, int16_t arg3, int16_t arg4) {
| int16_t var_0h;
| int16_t var_4h;
| int16_t var_ch;
| int16_t var_10h;
| int16_t var_14h;
| int16_t var_18h;
| int16_t var_20h;
| int16_t var_68h;
| int16_t var_78h;
| int16_t var_80h;
| int16_t var_84h;
| int16_t var_d4h;
| int16_t var_ech;
| r0 = arg1;
| r1 = arg2;
| r2 = arg3;
| r3 = arg4;
0x0002dc94 svcmi 0xf0e92d | __asm ("svcmi 0xf0e92d");
0x0002dc98 mov r7, r2 | r7 = r2;
0x0002dc9a sub sp, 0xf4 |
0x0002dc9c ldr.w r2, [pc, 0x4dc] |
0x0002dca0 movs r5, 0 | r5 = 0;
0x0002dca2 mov r4, r1 | r4 = r1;
0x0002dca4 str r3, [sp, 0xc] | var_ch = r3;
0x0002dca6 add r1, sp, 0x68 | r1 += var_68h;
0x0002dca8 ldr.w r3, [pc, 0x4d4] | r3 = *(0x2e180);
0x0002dcac add r2, pc | r2 = 0x5be2c;
0x0002dcae mov r6, r0 | r6 = r0;
0x0002dcb0 ldr r3, [r2, r3] |
0x0002dcb2 ldr r3, [r3] | r3 = *(0x5be2c);
0x0002dcb4 str r3, [sp, 0xec] | var_ech = r3;
0x0002dcb6 mov.w r3, 0 | r3 = 0;
0x0002dcba strd r5, r5, [sp, 0x10] | __asm ("strd r5, r5, [var_14h]");
0x0002dcbe str r5, [sp, 0x18] | var_18h = r5;
0x0002dcc0 blx 0xe1c4 | r0 = fcn_0000e1c4 ();
0x0002dcc4 cmp r0, 0 |
| if (r0 != 0) {
0x0002dcc6 bne.w 0x2e156 | goto label_3;
| }
0x0002dcca ldr r1, [sp, 0x78] | r1 = var_78h;
0x0002dccc mov r2, r0 | r2 = r0;
0x0002dcce and r1, r1, 0xf000 | r1 &= 0xf000;
0x0002dcd2 cmp.w r1, 0xa000 |
| if (r1 == 0xa000) {
0x0002dcd6 beq.w 0x2e058 | goto label_4;
| }
0x0002dcda invalid |
0x0002dcdc ldr r7, [pc, 0] | r7 = *(0x0002dce0);
| if (r1 == 0xa000) {
0x0002dcde beq.w 0x2e08a | goto label_5;
| }
0x0002dce2 cmp.w r1, 0x4000 |
| if (r1 == 0x4000) {
0x0002dce6 beq.w 0x2e106 | goto label_6;
| }
0x0002dcea cmp.w r1, 0xc000 |
| if (r1 == 0xc000) {
0x0002dcee beq.w 0x2e06c | goto label_7;
| }
0x0002dcf2 cmp.w r1, 0x6000 |
| if (r1 == 0x6000) {
0x0002dcf6 beq.w 0x2e11a | goto label_8;
| }
0x0002dcf8 strh r0, [r2, 0x10] | *((r2 + 0x10)) = r0;
0x0002dcfa cmp.w r1, 0x2000 |
| if (r1 == 0x2000) {
0x0002dcfe beq.w 0x2e12e | goto label_9;
| }
0x0002dd02 cmp.w r1, 0x1000 |
0x0002dd06 it ne |
| if (r1 == 0x1000) {
0x0002dd08 movne r5, r0 | r5 = r0;
| }
| if (r1 == 0x1000) {
0x0002dd0a beq.w 0x2e142 | goto label_10;
| }
| do {
| label_0:
0x0002dd0e add r3, sp, 0x18 | r3 += var_18h;
0x0002dd10 add r2, sp, 0x14 | r2 += var_14h;
0x0002dd12 add r1, sp, 0x10 | r1 += var_10h;
0x0002dd14 mov r0, r6 | r0 = r6;
0x0002dd16 bl 0x2c478 | r0 = fcn_0002c478 (r0, r1, r2, r3);
0x0002dd1a mov r8, r0 | r8 = r0;
0x0002dd1c cmp r0, 0 |
| if (r0 == 0) {
0x0002dd1e bne.w 0x2dfc4 |
0x0002dd22 mov r0, r6 | r0 = r6;
0x0002dd24 add r2, sp, 0x20 | r2 += var_20h;
0x0002dd26 movs r1, 1 | r1 = 1;
0x0002dd28 bl 0x3fbe0 | zbx_get_file_time ();
0x0002dd2c ldr.w fp, [sp, 0x10] | fp = var_10h;
0x0002dd30 mov r6, r0 | r6 = r0;
0x0002dd32 ldrd sl, sb, [sp, 0x14] | __asm ("ldrd sl, sb, [var_18h]");
0x0002dd36 cmp r0, 0 |
| if (r0 != 0) {
0x0002dd38 bne.w 0x2e0e6 | goto label_11;
| }
0x0002dd3c cmp r7, 0 |
| if (r7 != 0) {
0x0002dd3e bne.w 0x2e080 | goto label_12;
| }
| label_1:
0x0002dd42 ldr.w r1, [pc, 0x440] |
0x0002dd46 movs r3, 1 | r3 = 1;
0x0002dd48 mov r2, fp | r2 = fp;
0x0002dd4a mov r0, r4 | r0 = r4;
0x0002dd4c add r1, pc | r1 = 0x5bed6;
0x0002dd4e bl 0x3ac9c | zbx_json_addstring ();
0x0002dd52 ldr.w r1, [pc, 0x434] |
0x0002dd56 movs r3, 1 | r3 = 1;
0x0002dd58 mov r2, sb | r2 = sb;
0x0002dd5a mov r0, r4 | r0 = r4;
0x0002dd5c add r1, pc | r1 = 0x5beea;
0x0002dd5e bl 0x3ac9c | zbx_json_addstring ();
0x0002dd62 ldr.w r1, [pc, 0x428] |
0x0002dd66 movs r3, 1 | r3 = 1;
0x0002dd68 mov r2, sl | r2 = sl;
0x0002dd6a mov r0, r4 | r0 = r4;
0x0002dd6c add r1, pc | r1 = 0x5befe;
0x0002dd6e bl 0x3ac9c | zbx_json_addstring ();
0x0002dd72 ldr.w r1, [pc, 0x41c] |
0x0002dd76 mov r0, r4 | r0 = r4;
0x0002dd78 movs r3, 1 | r3 = 1;
0x0002dd7a mov r2, r5 | r2 = r5;
0x0002dd7c add r1, pc | r1 = 0x5bf12;
0x0002dd7e bl 0x3ac9c | zbx_json_addstring ();
0x0002dd82 ldr r0, [sp, 0x80] | r0 = var_80h;
0x0002dd84 blx 0xdf9c | r0 = fcn_0000df9c ();
0x0002dd88 cmp r0, 0 |
| if (r0 == 0) {
0x0002dd8a beq.w 0x2e0c2 | goto label_13;
| }
0x0002dd8e ldr.w r1, [pc, 0x404] |
0x0002dd92 movs r3, 1 | r3 = 1;
0x0002dd94 ldr r2, [r0] | r2 = *(r0);
0x0002dd96 mov r0, r4 | r0 = r4;
0x0002dd98 add r1, pc | r1 = 0x5bf32;
0x0002dd9a bl 0x3ac9c | zbx_json_addstring ();
| label_2:
0x0002dd9e ldr r0, [sp, 0x84] | r0 = var_84h;
0x0002dda0 blx 0xe1b8 | r0 = fcn_0000e1b8 ();
0x0002dda4 cmp r0, 0 |
| if (r0 == 0) {
0x0002dda6 beq.w 0x2e09e | goto label_14;
| }
0x0002ddaa ldr r1, [pc, 0x3ec] |
0x0002ddac movs r3, 1 | r3 = 1;
0x0002ddae ldr r2, [r0] | r2 = *(r0);
0x0002ddb0 mov r0, r4 | r0 = r4;
0x0002ddb2 add r1, pc | r1 = 0x5bf50;
0x0002ddb4 bl 0x3ac9c | zbx_json_addstring ();
| }
0x0002dfc4 ldr r3, [pc, 0x224] |
0x0002dfc6 movs r2, 0 | r2 = 0;
0x0002dfc8 ldr r0, [pc, 0x224] |
0x0002dfca mov.w r1, 0x648 | r1 = 0x648;
0x0002dfce mov.w r6, -1 | r6 = -1;
0x0002dfd2 add r3, pc | r3 = 0x5c1c2;
0x0002dfd4 add r0, pc | r0 = 0x5c1c8;
0x0002dfd6 bl 0x40ed8 | zbx_strdup2 ();
0x0002dfda ldr r3, [sp, 0xc] | r3 = var_ch;
0x0002dfdc ldr.w fp, [sp, 0x10] | fp = var_10h;
0x0002dfe0 ldr.w sb, [sp, 0x18] | sb = var_18h;
0x0002dfe4 ldr.w sl, [sp, 0x14] | sl = var_14h;
0x0002dfe8 str r0, [r3] | *(r3) = r0;
0x0002dfea b 0x2df7a | void (*0x2df7a)() ();
| label_4:
0x0002e058 ldr r3, [pc, 0x1b0] |
0x0002e05a mov.w r1, 0x638 | r1 = 0x638;
0x0002e05e ldr r0, [pc, 0x1b0] |
0x0002e060 add r3, pc | r3 = 0x5c270;
0x0002e062 add r0, pc | r0 = 0x5c278;
0x0002e064 bl 0x40ed8 | r0 = zbx_strdup2 ();
0x0002e068 mov r5, r0 | r5 = r0;
0x0002e06a b 0x2dd0e |
| } while (1);
| label_7:
0x0002e06c ldr r3, [pc, 0x1a4] |
0x0002e06e movw r1, 0x63e | r1 = 0x63e;
0x0002e072 ldr r0, [pc, 0x1a4] |
0x0002e074 add r3, pc | r3 = 0x5c28c;
0x0002e076 add r0, pc | r0 = 0x5c294;
0x0002e078 bl 0x40ed8 | r0 = zbx_strdup2 ();
0x0002e07c mov r5, r0 | r5 = r0;
0x0002e07e b 0x2dd0e | goto label_0;
| label_12:
0x0002e080 mov r1, r0 | r1 = r0;
0x0002e082 mov r0, r4 | r0 = r4;
0x0002e084 bl 0x3ac94 | zbx_json_addobject ();
0x0002e088 b 0x2dd42 | goto label_1;
| label_5:
0x0002e08a ldr r3, [pc, 0x190] |
0x0002e08c movw r1, 0x63a | r1 = 0x63a;
0x0002e090 ldr r0, [pc, 0x18c] |
0x0002e092 add r3, pc | r3 = 0x5c2b4;
0x0002e094 add r0, pc | r0 = 0x5c2b8;
0x0002e096 bl 0x40ed8 | r0 = zbx_strdup2 ();
0x0002e09a mov r5, r0 | r5 = r0;
0x0002e09c b 0x2dd0e | goto label_0;
| label_14:
0x0002e09e ldr r3, [sp, 0x84] | r3 = var_84h;
| label_13:
0x0002e0c2 ldr r3, [sp, 0x80] | r3 = var_80h;
0x0002e0c4 add r7, sp, 0xd4 | r7 += var_d4h;
0x0002e0c6 ldr r2, [pc, 0x164] |
0x0002e0c8 movs r1, 0x15 | r1 = 0x15;
0x0002e0ca str r0, [sp, 4] | var_4h = r0;
0x0002e0cc mov r0, r7 | r0 = r7;
0x0002e0ce str r3, [sp] | *(sp) = r3;
0x0002e0d0 add r2, pc | r2 = 0x5c302;
0x0002e0d2 bl 0x43f38 | zbx_snprintf ();
0x0002e0d6 ldr r1, [pc, 0x158] |
0x0002e0d8 mov r2, r7 | r2 = r7;
0x0002e0da movs r3, 1 | r3 = 1;
0x0002e0dc mov r0, r4 | r0 = r4;
0x0002e0de add r1, pc | r1 = 0x5c314;
0x0002e0e0 bl 0x3ac9c | zbx_json_addstring ();
0x0002e0e4 b 0x2dd9e | goto label_2;
| label_11:
0x0002e0e6 blx 0xe3d4 | r0 = fcn_0000e3d4 ();
0x0002e0ea ldr r0, [r0] | r0 = *(r0);
0x0002e0ec mov.w r6, -1 | r6 = -1;
0x0002e0f0 bl 0x30b74 | zbx_strerror ();
0x0002e0f4 ldr r1, [pc, 0x13c] |
0x0002e0f6 mov r2, r0 | r2 = r0;
0x0002e0f8 mov r0, r8 | r0 = r8;
0x0002e0fa add r1, pc | r1 = 0x5c332;
0x0002e0fc bl 0x44820 | zbx_dsprintf ()
0x0002e100 ldr r3, [sp, 0xc] | r3 = var_ch;
0x0002e102 str r0, [r3] | *(r3) = r0;
0x0002e104 b 0x2df7a | void (*0x2df7a)() ();
| label_6:
0x0002e106 ldr r3, [pc, 0x130] |
0x0002e108 movw r1, 0x63c | r1 = 0x63c;
0x0002e10c ldr r0, [pc, 0x12c] |
0x0002e10e add r3, pc | r3 = 0x5c34c;
0x0002e110 add r0, pc | r0 = 0x5c350;
0x0002e112 bl 0x40ed8 | r0 = zbx_strdup2 ();
0x0002e116 mov r5, r0 | r5 = r0;
0x0002e118 b 0x2dd0e | goto label_0;
| label_8:
0x0002e11a ldr r3, [pc, 0x124] |
0x0002e11c mov.w r1, 0x640 | r1 = 0x640;
0x0002e120 ldr r0, [pc, 0x120] |
0x0002e122 add r3, pc | r3 = 0x5c368;
0x0002e124 add r0, pc | r0 = 0x5c36c;
0x0002e126 bl 0x40ed8 | r0 = zbx_strdup2 ();
0x0002e12a mov r5, r0 | r5 = r0;
0x0002e12c b 0x2dd0e | goto label_0;
| label_9:
0x0002e12e ldr r3, [pc, 0x118] |
0x0002e130 movw r1, 0x642 | r1 = 0x642;
0x0002e134 ldr r0, [pc, 0x114] |
0x0002e136 add r3, pc | r3 = 0x5c384;
0x0002e138 add r0, pc | r0 = 0x5c388;
0x0002e13a bl 0x40ed8 | r0 = zbx_strdup2 ();
0x0002e13e mov r5, r0 | r5 = r0;
0x0002e140 b 0x2dd0e | goto label_0;
| label_10:
0x0002e142 ldr r3, [pc, 0x10c] |
0x0002e144 movw r1, 0x644 | r1 = 0x644;
0x0002e148 ldr r0, [pc, 0x108] |
0x0002e14a add r3, pc | r3 = 0x5c3a0;
0x0002e14c add r0, pc | r0 = 0x5c3a4;
0x0002e14e bl 0x40ed8 | zbx_strdup2 ();
0x0002e150 cdp2 p6, 0xc, c4, c3, c5, 0 | __asm ("cdp2 p6, 0xc, c4, c3, c5, 0");
0x0002e154 b 0x2dd0e | goto label_0;
| label_3:
0x0002e156 blx 0xe3d4 | r0 = fcn_0000e3d4 ();
0x0002e15a ldr r0, [r0] | r0 = *(r0);
0x0002e15c mov.w r6, -1 | r6 = -1;
0x0002e160 bl 0x30b74 | zbx_strerror ();
0x0002e164 ldr r1, [pc, 0xf0] |
0x0002e166 mov r2, r0 | r2 = r0;
0x0002e168 mov r0, r5 | r0 = r5;
0x0002e16a add r1, pc | r1 = 0x5c3c6;
0x0002e16c bl 0x44820 | zbx_dsprintf ()
0x0002e170 ldr r3, [sp, 0xc] | r3 = var_ch;
0x0002e172 str r0, [r3] | *(r3) = r0;
0x0002e174 b 0x2dfa6 | return void (*0x2dfa6)() ();
| }
[*] Function sprintf used 212 times zabbix_agentd