[*] Binary protection state of zabbix_agentd

  
  	Full RELRO     Canary found      NX enabled   PIE enabled  No RPATH     No RUNPATH   No Symbols


[*] Function system 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 @ 0x36438 */
                                                 | #include <stdint.h>
                                                 |  
    ; (fcn) fcn.00036438 ()                      | void fcn_00036438 (int16_t arg1, int16_t arg2, int16_t arg3) {
                                                 |     r0 = arg1;
                                                 |     r1 = arg2;
                                                 |     r2 = arg3;
    0x00036438 push {r3, r4, r5, r6, r7, lr}     |     
    0x0003643a mov r7, r0                        |     r7 = r0;
    0x0003643c mov r6, r1                        |     r6 = r1;
    0x0003643e mov r5, r2                        |     r5 = r2;
    0x00036440 b 0x36450                         |     
                                                 |     while (r0 != 0) {
    0x00036442 adds r3, r4, 1                    |         r3 = r4 + 1;
                                                 |         if (r3 != r4) {
    0x00036444 bne 0x36470                       |             goto label_0;
                                                 |         }
    0x00036446 blx 0xe3d4                        |         r0 = fcn_0000e3d4 ();
    0x0003644a ldr r0, [r0]                      |         r0 = *(r0);
    0x0003644c cmp r0, 4                         |         
                                                 |         if (r0 != 4) {
    0x0003644e bne 0x36474                       |             goto label_1;
                                                 |         }
    0x00036450 ldr r0, [r7]                      |         r0 = *(r7);
    0x00036452 mov r2, r5                        |         r2 = r5;
    0x00036454 mov r1, r6                        |         r1 = r6;
    0x00036456 blx 0xde60                        |         r0 = fcn_0000de60 ();
    0x0003645a mov r4, r0                        |         r4 = r0;
    0x0003645c bl 0x42fec                        |         r0 = zbx_alarm_timed_out ();
    0x00036460 cmp r0, 0                         |         
    0x00036462 bne 0x36442                       |         
                                                 |     }
    0x00036464 ldr r0, [pc, 0x20]                |     
    0x00036466 mov.w r4, -1                      |     r4 = -1;
    0x0003646a add r0, pc                        |     r0 = 0x6c8f6;
    0x0003646c bl 0x363d0                        |     fcn_000363d0 ();
                                                 | label_0:
    0x00036470 mov r0, r4                        |     r0 = r4;
    0x00036472 pop {r3, r4, r5, r6, r7, pc}      |     
                                                 | label_1:
    0x00036474 bl 0x31154                        |     r0 = strerror_from_system ()
    0x00036478 mov r1, r0                        |     r1 = r0;
    0x0003647a ldr r0, [pc, 0x10]                |     
    0x0003647c add r0, pc                        |     r0 = 0x6c90e;
    0x0003647e bl 0x363d0                        |     fcn_000363d0 ();
    0x00036482 mov r0, r4                        |     r0 = r4;
    0x00036484 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 @ 0x364d4 */
                                                 | #include <stdint.h>
                                                 |  
    ; (fcn) fcn.000364d4 ()                      | void fcn_000364d4 (int16_t arg1, int16_t arg2, int16_t arg3) {
                                                 |     r0 = arg1;
                                                 |     r1 = arg2;
                                                 |     r2 = arg3;
    0x000364d4 push {r3, r4, r5, r6, r7, lr}     |     
    0x000364d6 mov r7, r0                        |     r7 = r0;
    0x000364d8 mov r6, r1                        |     r6 = r1;
    0x000364da mov r5, r2                        |     r5 = r2;
    0x000364dc b 0x364ec                         |     
                                                 |     while (r0 != 0) {
    0x000364de adds r3, r4, 1                    |         r3 = r4 + 1;
                                                 |         if (r3 != r4) {
    0x000364e0 bne 0x3650c                       |             goto label_0;
                                                 |         }
    0x000364e2 blx 0xe3d4                        |         r0 = fcn_0000e3d4 ();
    0x000364e6 ldr r0, [r0]                      |         r0 = *(r0);
    0x000364e8 cmp r0, 4                         |         
                                                 |         if (r0 != 4) {
    0x000364ea bne 0x36510                       |             goto label_1;
                                                 |         }
    0x000364ec ldr r0, [r7]                      |         r0 = *(r7);
    0x000364ee mov r2, r5                        |         r2 = r5;
    0x000364f0 mov r1, r6                        |         r1 = r6;
    0x000364f2 blx 0xde54                        |         r0 = fcn_0000de54 ();
    0x000364f6 mov r4, r0                        |         r4 = r0;
    0x000364f8 bl 0x42fec                        |         r0 = zbx_alarm_timed_out ();
    0x000364fc cmp r0, 0                         |         
    0x000364fe bne 0x364de                       |         
                                                 |     }
    0x00036500 ldr r0, [pc, 0x20]                |     
    0x00036502 mov.w r4, -1                      |     r4 = -1;
    0x00036506 add r0, pc                        |     r0 = 0x6ca2e;
    0x00036508 bl 0x363d0                        |     fcn_000363d0 ();
                                                 | label_0:
    0x0003650c mov r0, r4                        |     r0 = r4;
    0x0003650e pop {r3, r4, r5, r6, r7, pc}      |     
                                                 | label_1:
    0x00036510 bl 0x31154                        |     r0 = strerror_from_system ()
    0x00036514 mov r1, r0                        |     r1 = r0;
    0x00036516 ldr r0, [pc, 0x10]                |     
    0x00036518 add r0, pc                        |     r0 = 0x6ca46;
    0x0003651a bl 0x363d0                        |     fcn_000363d0 ();
    0x0003651e mov r0, r4                        |     r0 = r4;
    0x00036520 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 @ 0x3652c */
                                                                 | #include <stdint.h>
                                                                 |  
                                                                 | #define BIT_MASK(t,v) ((t)(-((v)!= 0)))&(((t)-1)>>((sizeof(t)*CHAR_BIT)-(v)))
                                                                 |  
    ; (fcn) fcn.0003652c ()                                      | void fcn_0003652c (int16_t arg_10h, int16_t arg1, int16_t arg2, int16_t arg3, int16_t arg4) {
                                                                 |     int16_t var_1h;
                                                                 |     int16_t var_68h;
                                                                 |     int16_t var_6ch;
                                                                 |     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_30h;
                                                                 |     int16_t var_34h;
                                                                 |     int16_t var_3ch;
                                                                 |     r0 = arg1;
                                                                 |     r1 = arg2;
                                                                 |     r2 = arg3;
                                                                 |     r3 = arg4;
    0x0003652c push.w {r4, r5, r6, r7, r8, sb, sl, fp, lr}       |     
    0x00036530 mov r8, r2                                        |     r8 = r2;
    0x00036532 ldr r2, [pc, 0x228]                               |     
    0x00036534 mov r7, r3                                        |     r7 = r3;
    0x00036536 sub sp, 0x44                                      |     
    0x00036538 mov r5, r1                                        |     r5 = r1;
    0x0003653a ldr r3, [pc, 0x224]                               |     r3 = *(0x36762);
    0x0003653c movs r1, 0                                        |     r1 = 0;
    0x0003653e add r2, pc                                        |     r2 = 0x6cca0;
    0x00036540 ldr r4, [sp, 0x70]                                |     r4 = *(arg_10h);
    0x00036542 ldrh.w sb, [sp, 0x68]                             |     sb = var_68h;
    0x00036546 mov r6, r0                                        |     r6 = r0;
    0x00036548 ldr r3, [r2, r3]                                  |     
    0x0003654a movw r2, 0xdac                                    |     r2 = 0xdac;
    0x0003654e subs r4, 2                                        |     r4 -= 2;
    0x00036550 bic r4, r4, 2                                     |     r4 = BIT_MASK (r4, 2);
    0x00036554 ldr r3, [r3]                                      |     r3 = *(0x6cca0);
    0x00036556 str r3, [sp, 0x3c]                                |     var_3ch = r3;
    0x00036558 mov.w r3, 0                                       |     r3 = 0;
    0x0003655c strd r1, r1, [sp, 0xc]                            |     __asm ("strd r1, r1, [var_ch]");
    0x00036560 blx 0xdd6c                                        |     uname ();
    0x00036564 cmp r5, 2                                         |     
                                                                 |     if (r5 == 2) {
    0x00036566 beq 0x36666                                       |         goto label_8;
                                                                 |     }
    0x00036568 cmp r4, 0                                         |     
                                                                 |     if (r4 == 0) {
    0x0003656a beq.w 0x3674c                                     |         goto label_9;
                                                                 |     }
                                                                 |     do {
    0x0003656e ldr r2, [pc, 0x1f4]                               |         
    0x00036570 add r4, sp, 0x34                                  |         r4 += var_34h;
    0x00036572 mov r3, sb                                        |         r3 = sb;
    0x00036574 movs r1, 8                                        |         r1 = 8;
    0x00036576 add.w sl, sp, 0x14                                |         sl += var_14h;
    0x0003657a mov r0, r4                                        |         r0 = r4;
    0x0003657c add r2, pc                                        |         r2 = 0x6cce6;
    0x0003657e bl 0x43f38                                        |         zbx_snprintf ();
    0x00036582 movs r2, 0x20                                     |         r2 = 0x20;
    0x00036584 movs r1, 0                                        |         r1 = 0;
    0x00036586 mov r0, sl                                        |         r0 = sl;
    0x00036588 blx 0xdd6c                                        |         uname ();
    0x0003658c mov r1, r4                                        |         r1 = r4;
    0x0003658e add r3, sp, 0xc                                   |         r3 += var_ch;
    0x00036590 mov r2, sl                                        |         r2 = sl;
    0x00036592 mov r0, r7                                        |         r0 = r7;
    0x00036594 str r5, [sp, 0x1c]                                |         var_1ch = r5;
    0x00036596 blx 0xdf14                                        |         r0 = fcn_0000df14 ();
    0x0003659a mov r4, r0                                        |         r4 = r0;
    0x0003659c cmp r0, 0                                         |         
                                                                 |         if (r0 != 0) {
    0x0003659e bne 0x3668e                                       |             goto label_10;
                                                                 |         }
    0x000365a0 ldr r3, [sp, 0xc]                                 |         r3 = var_ch;
    0x000365a2 ldr r1, [r3, 8]                                   |         r1 = *((r3 + 8));
    0x000365a4 ldr r2, [r3, 0xc]                                 |         r2 = *((r3 + 0xc));
    0x000365a6 ldr r0, [r3, 4]                                   |         r0 = *((r3 + 4));
    0x000365a8 orr r1, r1, 0x80000                               |         r1 |= 0x80000;
    0x000365ac blx 0xdef0                                        |         r0 = fcn_0000def0 ();
    0x000365b0 mov r3, r0                                        |         r3 = r0;
    0x000365b2 str r0, [r6]                                      |         *(r6) = r0;
    0x000365b4 adds r3, 1                                        |         r3++;
                                                                 |         if (r3 == 1) {
    0x000365b6 beq.w 0x366fe                                     |             goto label_11;
                                                                 |         }
    0x000365ba movs r2, 1                                        |         r2 = 1;
    0x000365bc movs r1, 2                                        |         r1 = 2;
    0x000365be blx 0xe054                                        |         pcre_compile ();
    0x000365c0 stcl p0, c3, [sl, -4]                             |         __asm ("stcl p0, c3, [sl, -4]");
                                                                 |         if (r1 == 2) {
    0x000365c4 beq 0x366a6                                       |             goto label_12;
                                                                 |         }
    0x000365c6 cmp r5, 1                                         |         
                                                                 |         if (r5 == 1) {
    0x000365c8 beq 0x3669e                                       |             goto label_4;
                                                                 |         }
                                                                 | label_3:
    0x000365ca ldr.w fp, [pc, 0x19c]                             |         fp = case.0x3cc18.1;
    0x000365ce add fp, pc                                        |         
                                                                 | label_2:
    0x000365d0 cmp.w r8, 0                                       |         
                                                                 |         if (r8 != 0) {
    0x000365d4 beq 0x3660c                                       |             
    0x000365d6 movs r3, 4                                        |             r3 = 4;
    0x000365d8 movs r1, 0                                        |             r1 = 0;
    0x000365da str r3, [sp, 0x14]                                |             var_14h = r3;
    0x000365dc mov r2, sl                                        |             r2 = sl;
    0x000365de add r3, sp, 0x10                                  |             r3 += var_10h;
    0x000365e0 mov r0, r8                                        |             r0 = r8;
    0x000365e2 str r5, [sp, 0x1c]                                |             var_1ch = r5;
    0x000365e4 str r1, [sp, 0x18]                                |             var_18h = r1;
    0x000365e6 strd r1, r1, [sp, 0x20]                           |             __asm ("strd r1, r1, [sp, 0x20]");
    0x000365ea strd r1, r1, [sp, 0x28]                           |             __asm ("strd r1, r1, [sp, 0x28]");
    0x000365ee str r1, [sp, 0x30]                                |             var_30h = r1;
    0x000365f0 blx 0xdf14                                        |             r0 = fcn_0000df14 ();
    0x000365f4 cmp r0, 0                                         |             
                                                                 |             if (r0 != 0) {
    0x000365f6 bne.w 0x36718                                     |                 goto label_13;
                                                                 |             }
    0x000365fa ldr r3, [sp, 0x10]                                |             r3 = var_10h;
    0x000365fc ldr r0, [r6]                                      |             r0 = *(r6);
    0x000365fe ldrd r2, r1, [r3, 0x10]                           |             __asm ("ldrd r2, r1, [r3, 0x10]");
    0x00036602 blx 0xe06c                                        |             strstr (r0, r1);
    0x00036606 adds r0, 1                                        |             r0++;
                                                                 |             if (r0 == 1) {
    0x00036608 beq.w 0x36732                                     |                 goto label_14;
                                                                 |             }
                                                                 |         }
    0x0003660c ldr r3, [sp, 0xc]                                 |         r3 = var_ch;
    0x0003660e ldrd r8, r5, [r3, 0x10]                           |         __asm ("ldrd r8, r5, [r3, 0x10]");
    0x00036612 ldr r3, [sp, 0x6c]                                |         r3 = var_6ch;
    0x00036614 cmp r3, 0                                         |         
                                                                 |         if (r3 != 0) {
    0x00036616 bne.w 0x36728                                     |             goto label_15;
                                                                 |         }
                                                                 | label_6:
    0x0003661a ldr r0, [r6]                                      |         r0 = *(r6);
    0x0003661c mov r2, r8                                        |         r2 = r8;
    0x0003661e mov r1, r5                                        |         r1 = r5;
    0x00036620 blx 0xdbc0                                        |         fcn_0000dbc0 ();
    0x00036624 adds r0, 1                                        |         r0++;
                                                                 |         if (r0 == 1) {
    0x00036626 beq 0x366c4                                       |             goto label_16;
                                                                 |         }
    0x00036628 movs r3, 1                                        |         r3 = 1;
    0x0003662a mov.w r2, 0x100                                   |         r2 = 0x100;
    0x0003662c strb r0, [r0, 0xa]                                |         *((r0 + 0xa)) = r0;
    0x0003662e mov r1, r7                                        |         r1 = r7;
    0x00036630 addw r0, r6, 0xca8                                |         __asm ("addw r0, r6, 0xca8");
    0x00036634 str r3, [r6, 0x14]                                |         *((r6 + 0x14)) = r3;
    0x00036636 bl 0x4465c                                        |         zbx_strlcpy ();
                                                                 | label_1:
    0x0003663a ldr r0, [sp, 0xc]                                 |         r0 = var_ch;
                                                                 |         if (r0 != 0) {
    0x0003663c cbz r0, 0x36642                                   |             
    0x0003663e blx 0xdd90                                        |             strrchr (r0, r1);
                                                                 |         }
    0x00036642 ldr r0, [sp, 0x10]                                |         r0 = var_10h;
                                                                 |         if (r0 != 0) {
    0x00036644 cbz r0, 0x3664a                                   |             
    0x00036646 blx 0xdd90                                        |             strrchr (r0, r1);
                                                                 |         }
                                                                 | label_0:
    0x0003664a ldr r2, [pc, 0x120]                               |         
    0x0003664c ldr r3, [pc, 0x110]                               |         r3 = *(0x36760);
    0x0003664e add r2, pc                                        |         r2 = 0x6cdc0;
    0x00036650 ldr r3, [r2, r3]                                  |         r3 = *(0x6cdc0);
    0x00036652 ldr r2, [r3]                                      |         r2 = *(0x6cdc0);
    0x00036654 ldr r3, [sp, 0x3c]                                |         r3 = var_3ch;
    0x00036656 eors r2, r3                                       |         r2 ^= r3;
    0x00036658 mov.w r3, 0                                       |         r3 = 0;
                                                                 |         if (r2 != r3) {
    0x0003665c bne 0x36756                                       |             goto label_17;
                                                                 |         }
    0x0003665e mov r0, r4                                        |         r0 = r4;
    0x00036660 add sp, 0x44                                      |         
    0x00036662 pop.w {r4, r5, r6, r7, r8, sb, sl, fp, pc}        |         
                                                                 | label_8:
    0x00036666 cmp r4, 0                                         |         
    0x00036668 bne 0x3656e                                       |         
                                                                 |     } while (r4 != 0);
    0x0003666a ldr r3, [pc, 0x104]                               |     
    0x0003666c movw r4, 0x1e3                                    |     r4 = 0x1e3;
    0x00036670 ldr r2, [pc, 0x100]                               |     
    0x00036672 ldr r1, [pc, 0x104]                               |     
    0x00036674 ldr r0, [pc, 0x104]                               |     
    0x00036676 add r3, pc                                        |     r3 = 0x6cdec;
    0x00036678 add r2, pc                                        |     r2 = 0x6cdf0;
    0x0003667a str r4, [sp]                                      |     *(sp) = r4;
    0x0003667c add r1, pc                                        |     r1 = 0x6cdfa;
    0x0003667e add r0, pc                                        |     r0 = 0x6cdfe;
    0x00036680 bl 0x43cd4                                        |     zbx_error ();
    0x00036684 bl 0x356ac                                        |     zbx_backtrace ();
                                                                 | label_7:
    0x00036688 mov.w r4, -1                                      |     r4 = -1;
    0x0003668c b 0x3664a                                         |     goto label_0;
                                                                 | label_10:
    0x0003668e ldr r0, [pc, 0xf0]                                |     
    0x00036690 mov r1, r7                                        |     r1 = r7;
    0x00036692 add r0, pc                                        |     r0 = 0x6ce18;
    0x00036694 bl 0x363d0                                        |     fcn_000363d0 ();
                                                                 | label_5:
    0x00036698 mov.w r4, -1                                      |     r4 = -1;
    0x0003669c b 0x3663a                                         |     goto label_1;
                                                                 | label_4:
    0x0003669e ldr.w fp, [pc, 0xe4]                              |     
    0x000366a2 add fp, pc                                        |     fp = 0x6ce2c;
    0x000366a4 b 0x365d0                                         |     goto label_2;
                                                                 | label_12:
    0x000366a6 blx 0xe3d4                                        |     r0 = fcn_0000e3d4 ();
    0x000366aa ldr r0, [r0]                                      |     r0 = *(r0);
    0x000366ac bl 0x31154                                        |     r0 = strerror_from_system ()
    0x000366b0 mov r3, r0                                        |     r3 = r0;
    0x000366b2 ldr r0, [pc, 0xd4]                                |     
    0x000366b4 mov r2, sb                                        |     r2 = sb;
    0x000366b6 mov r1, r7                                        |     r1 = r7;
    0x000366b8 add r0, pc                                        |     r0 = 0x6ce46;
    0x000366ba bl 0x363d0                                        |     fcn_000363d0 ();
    0x000366be cmp r5, 1                                         |     
                                                                 |     if (r5 != 1) {
    0x000366c0 bne 0x365ca                                       |         goto label_3;
                                                                 |     }
    0x000366c2 b 0x3669e                                         |     goto label_4;
                                                                 | label_16:
    0x000366c4 blx 0xe3d4                                        |     r0 = fcn_0000e3d4 ();
    0x000366c8 ldr r0, [r0]                                      |     r0 = *(r0);
    0x000366ca bl 0x31154                                        |     r0 = strerror_from_system ()
    0x000366ce mov r3, r0                                        |     r3 = r0;
    0x000366d0 ldr r0, [pc, 0xb8]                                |     
    0x000366d2 movs r2, 0                                        |     r2 = 0;
    0x000366d4 movw r1, 0x1bf                                    |     r1 = 0x1bf;
    0x000366d8 add r0, pc                                        |     r0 = 0x6ce68;
    0x000366da bl 0x40ed8                                        |     r0 = zbx_strdup2 ();
    0x000366de mov r4, r0                                        |     r4 = r0;
    0x000366e0 mov r0, r6                                        |     r0 = r6;
    0x000366e2 blx fp                                            |     fp (r0);
    0x000366e4 ldr r0, [pc, 0xa8]                                |     
    0x000366e6 mov r3, r4                                        |     r3 = r4;
    0x000366e8 mov r2, sb                                        |     r2 = sb;
    0x000366ea mov r1, r7                                        |     r1 = r7;
    0x000366ec add r0, pc                                        |     r0 = 0x6ce80;
    0x000366ee bl 0x363d0                                        |     fcn_000363d0 ();
    0x000366f2 cmp r4, 0                                         |     
                                                                 |     if (r4 == 0) {
    0x000366f4 beq 0x36698                                       |         goto label_5;
                                                                 |     }
    0x000366f6 mov r0, r4                                        |     r0 = r4;
    0x000366f8 blx 0xde30                                        |     fcn_0000de30 ();
    0x000366fc b 0x36698                                         |     goto label_5;
                                                                 | label_11:
    0x000366fe blx 0xe3d4                                        |     r0 = fcn_0000e3d4 ();
    0x00036702 ldr r0, [r0]                                      |     r0 = *(r0);
    0x00036704 bl 0x31154                                        |     r0 = strerror_from_system ()
    0x00036708 mov r3, r0                                        |     r3 = r0;
    0x0003670a ldr r0, [pc, 0x88]                                |     
    0x0003670c mov r2, sb                                        |     r2 = sb;
    0x0003670e mov r1, r7                                        |     r1 = r7;
    0x00036710 add r0, pc                                        |     r0 = 0x6ceaa;
    0x00036712 bl 0x363d0                                        |     fcn_000363d0 ();
    0x00036716 b 0x36698                                         |     goto label_5;
                                                                 | label_13:
    0x00036718 ldr r0, [pc, 0x7c]                                |     
    0x0003671a mov r1, r8                                        |     r1 = r8;
    0x0003671c add r0, pc                                        |     r0 = 0x6ceb8;
    0x0003671e bl 0x363d0                                        |     fcn_000363d0 ();
    0x00036722 mov r0, r6                                        |     r0 = r6;
    0x00036724 blx fp                                            |     fp (r0);
    0x00036726 b 0x36698                                         |     goto label_5;
                                                                 | label_15:
    0x00036728 mov r0, r3                                        |     r0 = r3;
    0x0003672a str r3, [r6, 0x18]                                |     *((r6 + 0x18)) = r3;
    0x0003672c bl 0x42fc4                                        |     zbx_alarm_on ();
    0x00036730 b 0x3661a                                         |     goto label_6;
                                                                 | label_14:
    0x00036732 blx 0xe3d4                                        |     r0 = fcn_0000e3d4 ();
    0x00036736 ldr r0, [r0]                                      |     r0 = *(r0);
    0x00036738 bl 0x31154                                        |     r0 = strerror_from_system ()
    0x0003673c mov r1, r0                                        |     r1 = r0;
    0x0003673e ldr r0, [pc, 0x5c]                                |     
    0x00036740 add r0, pc                                        |     r0 = 0x6cee2;
    0x00036742 bl 0x363d0                                        |     fcn_000363d0 ();
    0x00036746 mov r0, r6                                        |     r0 = r6;
    0x00036748 blx fp                                            |     fp (r0);
    0x0003674a b 0x36698                                         |     goto label_5;
                                                                 | label_9:
    0x0003674c ldr r0, [pc, 0x50]                                |     
    0x0003674e add r0, pc                                        |     r0 = 0x6cef2;
    0x00036750 bl 0x363d0                                        |     fcn_000363d0 ();
    0x00036754 b 0x36688                                         |     goto label_7;
                                                                 | label_17:
    0x00036756 blx 0xe158                                        |     fcn_0000e158 ();
    0x0003675a nop                                               |     
    0x0003675c ldrsb r2, [r3, r2]                                |     r2 = *((r3 + r2));
    0x0003675e movs r2, r0                                       |     r2 = r0;
    0x00036760 lsls r4, r2, 0xe                                  |     r4 = r2 << 0xe;
    0x00036762 movs r0, r0                                       |     
    0x00036764 vhadd.s8 d16, d4, d1                              |     __asm ("vhadd.s8 d16, d4, d1");
    0x00036768 lsls r3, r2, 7                                    |     r3 = r2 << 7;
    0x0003676a movs r0, r0                                       |     
    0x0003676c strb r2, [r1, r6]                                 |     *((r1 + r6)) = r2;
    0x0003676e movs r2, r0                                       |     r2 = r0;
    0x00036770 ldr r6, [r7, 0x30]                                |     r6 = *((r7 + 0x30));
    0x00036772 movs r1, r0                                       |     r1 = r0;
    0x00036774 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 @ 0x38484 */
                                                     | #include <stdint.h>
                                                     |  
    ; (fcn) fcn.00038484 ()                          | void fcn_00038484 (int16_t arg1, int16_t arg2) {
                                                     |     int16_t var_0h;
                                                     |     int16_t var_sp_4h;
                                                     |     r0 = arg1;
                                                     |     r1 = arg2;
    0x00038484 bmi 0xb4b138                          |     
    0x00038488 push.w {r4, r5, r6, r7, r8, lr}       |     
    0x0003848c mov r6, r0                            |     r6 = r0;
    0x0003848e add r3, pc                            |     r3 += pc;
    0x00038490 sub sp, 8                             |     
    0x00038492 mov r7, r1                            |     r7 = r1;
    0x00038494 ldr.w r8, [r3, r2]                    |     r8 = *((r3 + r2));
    0x00038498 ldr.w r3, [r8]                        |     r3 = *(r8);
    0x0003849c cmp r3, 3                             |     
                                                     |     if (r3 > 3) {
    0x0003849e bgt 0x384fe                           |         goto label_3;
                                                     |     }
                                                     |     do {
                                                     | label_1:
    0x000384a0 movs r2, 1                            |         r2 = 1;
    0x000384a2 mov r1, r7                            |         r1 = r7;
    0x000384a4 mov r0, r6                            |         r0 = r6;
    0x000384a6 blx 0xde54                            |         r0 = fcn_0000de54 ();
    0x000384aa adds r3, r0, 1                        |         r3 = r0 + 1;
    0x000384ac mov r4, r0                            |         r4 = r0;
                                                     |         if (r3 != r0) {
    0x000384ae bne 0x3852a                           |             goto label_4;
                                                     |         }
    0x000384b0 blx 0xe3d4                            |         fcn_0000e3d4 ();
    0x000384b4 ldr.w r3, [r8]                        |         r3 = *(r8);
    0x000384b8 ldr r5, [r0]                          |         r5 = *(r0);
    0x000384ba cmp r3, 3                             |         
                                                     |         if (r3 > 3) {
    0x000384bc bgt 0x384e0                           |             goto label_5;
                                                     |         }
                                                     | label_0:
    0x000384be cmp r5, 0xb                           |         
    0x000384c0 mov.w r1, 0                           |         r1 = 0;
    0x000384c4 mov r0, r6                            |         r0 = r6;
                                                     |         if (r5 != 0xb) {
    0x000384c6 bne 0x3852e                           |             goto label_6;
                                                     |         }
    0x000384c8 bl 0x3835c                            |         r0 = fcn_0003835c (r0, r1);
    0x000384cc subs r4, r0, 0                        |         r4 = r0 - 0;
    0x000384ce bgt 0x384a0                           |         
                                                     |     } while (r4 > r0);
                                                     |     do {
                                                     | label_2:
    0x000384d0 ldr.w r3, [r8]                        |         r3 = *(r8);
    0x000384d4 cmp r3, 3                             |         
                                                     |         if (r3 <= 3) {
    0x000384d6 bgt 0x38510                           |             
    0x000384d8 mov r0, r4                            |             r0 = r4;
    0x000384da add sp, 8                             |             
    0x000384dc pop.w {r4, r5, r6, r7, r8, pc}        |             
                                                     | label_5:
    0x000384e0 mov r0, r5                            |             r0 = r5;
    0x000384e2 bl 0x31154                            |             strerror_from_system ()
    0x000384e6 ldr r2, [pc, 0x54]                    |             r2 = *(0x3853e);
    0x000384e8 mov r3, r4                            |             r3 = r4;
    0x000384ea ldr r1, [pc, 0x54]                    |             r1 = *(0x38542);
    0x000384ec str r0, [sp, 4]                       |             var_sp_4h = r0;
    0x000384ee movs r0, 4                            |             r0 = 4;
    0x000384f0 add r2, pc                            |             r2 += pc;
    0x000384f2 str r5, [sp]                          |             *(sp) = r5;
    0x000384f4 adds r2, 0x14                         |             r2 += 0x14;
    0x000384f6 add r1, pc                            |             r1 += pc;
    0x000384f8 bl 0x30d1c                            |             zbx_zabbix_log ();
    0x000384fc b 0x384be                             |             goto label_0;
                                                     | label_3:
    0x000384fe ldr r2, [pc, 0x44]                    |             
    0x00038500 movs r0, 4                            |             r0 = 4;
    0x00038502 ldr r1, [pc, 0x44]                    |             
    0x00038504 add r2, pc                            |             r2 = 0x70a4e;
    0x00038506 add r1, pc                            |             r1 = 0x70a54;
    0x00038508 adds r2, 0x14                         |             r2 += 0x14;
    0x0003850a bl 0x30d1c                            |             zbx_zabbix_log ();
    0x0003850e b 0x384a0                             |             goto label_1;
                                                     |         }
    0x00038510 ldr r2, [pc, 0x38]                    |         
    0x00038512 mov r3, r4                            |         r3 = r4;
    0x00038514 ldr r1, [pc, 0x38]                    |         
    0x00038516 movs r0, 4                            |         r0 = 4;
    0x00038518 add r2, pc                            |         r2 = 0x70a68;
    0x0003851a add r1, pc                            |         r1 = 0x70a6e;
    0x0003851c adds r2, 0x14                         |         r2 += 0x14;
    0x0003851e bl 0x30d1c                            |         zbx_zabbix_log ();
    0x00038520 invalid                               |         
    0x00038524 add sp, 8                             |         
    0x00038526 pop.w {r4, r5, r6, r7, r8, pc}        |         
                                                     | label_4:
    0x0003852a cmp r0, 0                             |         
    0x0003852c bne 0x384d0                           |         
                                                     |     } while (r0 != 0);
                                                     | label_6:
    0x0003852e mov.w r4, -1                          |     r4 = -1;
    0x00038532 b 0x384d0                             |     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 @ 0x38554 */
                                                                 | #include <stdint.h>
                                                                 |  
    ; (fcn) fcn.00038554 ()                                      | void fcn_00038554 (int16_t arg1, int16_t arg2, int16_t arg3) {
                                                                 |     int32_t var_0h;
                                                                 |     int32_t var_0h_2;
                                                                 |     r0 = arg1;
                                                                 |     r1 = arg2;
                                                                 |     r2 = arg3;
    0x00038554 ldr r3, [pc, 0xb8]                                |     
    0x00038556 push.w {r4, r5, r6, r7, r8, sb, sl, fp, lr}       |     
    0x0003855a mov r5, r0                                        |     r5 = r0;
    0x0003855c ldr r4, [pc, 0xb4]                                |     r4 = *(0x38614);
    0x0003855e sub sp, 0xc                                       |     
    0x00038560 add r3, pc                                        |     r3 = 0x70b74;
    0x00038562 mov r6, r1                                        |     r6 = r1;
    0x00038564 mov r7, r2                                        |     r7 = r2;
    0x00038566 ldr.w r8, [r3, r4]                                |     r8 = *(0x70b74);
    0x0003856a ldr.w r3, [r8]                                    |     r3 = *(0x70b74);
    0x0003856e cmp r3, 3                                         |     
                                                                 |     if (r3 > 3) {
    0x00038570 bgt 0x385e4                                       |         goto label_2;
                                                                 |     }
                                                                 | label_1:
    0x00038572 ldr.w sb, [pc, 0xa4]                              |     sb = *(0x00038618);
    0x00038576 ldr.w sl, [pc, 0xa4]                              |     
    0x0003857a add sb, pc                                        |     sb += pc;
    0x0003857c add.w sb, sb, 0x28                                |     sb += 0x28;
    0x00038580 add sl, pc                                        |     sl = 0x70ba2;
    0x00038582 b 0x38594                                         |     
                                                                 |     while (r3 <= 3) {
    0x00038584 cmp.w fp, 0xb                                     |         
    0x00038588 mov.w r1, 1                                       |         r1 = 1;
    0x0003858c mov r0, r5                                        |         r0 = r5;
                                                                 |         if (fp != 0xb) {
    0x0003858e bne 0x385d6                                       |             goto label_3;
                                                                 |         }
                                                                 | label_0:
    0x00038590 bl 0x3835c                                        |         fcn_0003835c (r0, r1);
    0x00038594 mov r2, r7                                        |         r2 = r7;
    0x00038596 mov r1, r6                                        |         r1 = r6;
    0x00038598 mov r0, r5                                        |         r0 = r5;
    0x0003859a blx 0xde60                                        |         r0 = fcn_0000de60 ();
    0x0003859e adds r3, r0, 1                                    |         r3 = r0 + 1;
    0x000385a0 mov r4, r0                                        |         r4 = r0;
                                                                 |         if (r3 != r0) {
    0x000385a2 bne 0x385d6                                       |             goto label_3;
                                                                 |         }
    0x000385a4 blx 0xe3d4                                        |         fcn_0000e3d4 ();
    0x000385a8 ldr.w r3, [r8]                                    |         r3 = *(r8);
    0x000385ac ldr.w fp, [r0]                                    |         fp = *(r0);
    0x000385b0 cmp r3, 3                                         |         
    0x000385b2 ble 0x38584                                       |         
                                                                 |     }
    0x000385b4 mov r0, fp                                        |     r0 = fp;
    0x000385b6 bl 0x31154                                        |     strerror_from_system ()
    0x000385ba mov r1, sl                                        |     r1 = sl;
    0x000385bc strd fp, r0, [sp]                                 |     __asm ("strd fp, r0, [sp]");
    0x000385c0 mov r3, r4                                        |     r3 = r4;
    0x000385c2 movs r0, 4                                        |     r0 = 4;
    0x000385c4 mov r2, sb                                        |     r2 = sb;
    0x000385c6 bl 0x30d1c                                        |     zbx_zabbix_log ();
    0x000385ca cmp.w fp, 0xb                                     |     
    0x000385ce mov.w r1, 1                                       |     r1 = 1;
    0x000385d2 mov r0, r5                                        |     r0 = r5;
                                                                 |     if (fp == 0xb) {
    0x000385d4 beq 0x38590                                       |         goto label_0;
                                                                 |     }
                                                                 | label_3:
    0x000385d6 ldr.w r3, [r8]                                    |     r3 = *(r8);
    0x000385da cmp r3, 3                                         |     
                                                                 |     if (r3 <= 3) {
    0x000385dc bgt 0x385f6                                       |         
    0x000385de add sp, 0xc                                       |         
    0x000385e0 pop.w {r4, r5, r6, r7, r8, sb, sl, fp, pc}        |         
                                                                 | label_2:
    0x000385e4 ldr r2, [pc, 0x38]                                |         
    0x000385e6 movs r0, 4                                        |         r0 = 4;
    0x000385e8 ldr r1, [pc, 0x38]                                |         
    0x000385ea add r2, pc                                        |         r2 = 0x70c0e;
    0x000385ec adds r2, 0x28                                     |         r2 += 0x28;
    0x000385ee add r1, pc                                        |         r1 = 0x70c16;
    0x000385f0 bl 0x30d1c                                        |         zbx_zabbix_log ();
    0x000385f4 b 0x38572                                         |         goto label_1;
                                                                 |     }
    0x000385f6 ldr r2, [pc, 0x30]                                |     
    0x000385f8 mov r3, r4                                        |     r3 = r4;
    0x000385fa ldr r1, [pc, 0x30]                                |     
    0x000385fc movs r0, 4                                        |     r0 = 4;
    0x000385fe add r2, pc                                        |     r2 = 0x70c2c;
    0x00038600 add r1, pc                                        |     r1 = 0x70c32;
    0x00038602 adds r2, 0x28                                     |     r2 += 0x28;
    0x00038604 add sp, 0xc                                       |     
    0x00038606 pop.w {r4, r5, r6, r7, r8, sb, sl, fp, lr}        |     
    0x0003860a b.w 0x30d1c                                       |     return void (*0x30d1c)() ();
                                                                 | }
    ; 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 push.w {r4, r5, r6, r7, r8, sb, sl, fp, lr}       |     
    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 @ 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 @ 0x3713c */
                                                                 | #include <stdint.h>
                                                                 |  
                                                                 | #define BIT_MASK(t,v) ((t)(-((v)!= 0)))&(((t)-1)>>((sizeof(t)*CHAR_BIT)-(v)))
                                                                 |  
    ; (fcn) sym.zbx_tcp_accept ()                                | void zbx_tcp_accept (int16_t arg_1h, int16_t arg1, int16_t arg2) {
                                                                 |     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_20h;
                                                                 |     int32_t var_20h_2;
                                                                 |     int16_t var_28h;
                                                                 |     int32_t var_28h_2;
                                                                 |     int16_t var_34h;
                                                                 |     int16_t var_38h;
                                                                 |     int16_t var_64h;
                                                                 |     size_t size;
                                                                 |     int16_t var_11ch;
                                                                 |     int16_t var_19ch;
                                                                 |     r0 = arg1;
                                                                 |     r1 = arg2;
                                                                 | label_3:
    0x00036d8c invalid                                           |     
                                                                 |     if (? == ?) {
    0x00036d90 beq.w 0x36f44                                     |         goto label_24;
                                                                 |     }
    0x00036d94 ldr r3, [pc, 0x330]                               |     
    0x00036d96 ldr r7, [pc, 0x334]                               |     
    0x00036d98 str r6, [sp, 0x1c]                                |     var_1ch = r6;
    0x00036d9a add r3, pc                                        |     r3 = 0x6de66;
    0x00036d9c str r3, [sp, 0xc]                                 |     var_ch = r3;
    0x00036d9e add r7, pc                                        |     r7 = 0x6de70;
    0x00036da0 ldr r3, [pc, 0x32c]                               |     
    0x00036da2 cmp.w sb, 0                                       |     
    0x00036da6 it ne                                             |     
                                                                 |     if (sb == 0) {
    0x00036da8 movne r7, sb                                      |         r7 = sb;
                                                                 |     }
    0x00036daa mov fp, r7                                        |     
    0x00036dac add r3, pc                                        |     r3 = 0x6de80;
    0x00036dae str r3, [sp, 0x10]                                |     var_10h = r3;
    0x00036db0 ldr r3, [pc, 0x320]                               |     
    0x00036db2 add r3, pc                                        |     r3 = 0x6de8a;
    0x00036db4 str r3, [sp, 0x14]                                |     var_14h = r3;
    0x00036db6 b 0x36de0                                         |     goto label_2;
                                                                 | label_0:
    0x00036db8 blx 0xe3d4                                        |     r0 = fcn_0000e3d4 ();
    0x00036dbc mov r7, r0                                        |     r7 = r0;
    0x00036dbe ldr r0, [r0]                                      |     r0 = *(r0);
    0x00036dc0 bl 0x31154                                        |     r0 = strerror_from_system ()
    0x00036dc4 mov r3, r0                                        |     r3 = r0;
    0x00036dc6 ldr r0, [pc, 0x310]                               |     
    0x00036dc8 mov r2, r8                                        |     r2 = r8;
    0x00036dca mov r1, fp                                        |     r1 = fp;
    0x00036dcc add r0, pc                                        |     r0 = 0x6deaa;
    0x00036dce bl 0x363d0                                        |     fcn_000363d0 ();
    0x00036dd2 ldr r3, [r7]                                      |     r3 = *(r7);
    0x00036dd4 cmp r3, 0x61                                      |     
                                                                 |     if (r3 != 0x61) {
    0x00036dd6 bne 0x36ebe                                       |         goto label_25;
                                                                 |     }
                                                                 |     do {
                                                                 | label_1:
    0x00036dd8 ldr r4, [r4, 0x1c]                                |         r4 = *((r4 + 0x1c));
    0x00036dda cmp r4, 0                                         |         
                                                                 |         if (r4 == 0) {
    0x00036ddc beq.w 0x36f38                                     |             goto label_26;
                                                                 |         }
                                                                 | label_2:
    0x00036de0 ldr r7, [r5, 0x24]                                |         r7 = *((r5 + 0x24));
    0x00036de2 cmp.w r7, 0x100                                   |         
                                                                 |         if (r7 == 0x100) {
    0x00036de6 beq.w 0x36fb2                                     |             goto label_27;
                                                                 |         }
    0x00036dea ldr r0, [r4, 4]                                   |         r0 = *((r4 + 4));
    0x00036dec bic r6, r0, 8                                     |         r6 = BIT_MASK (r0, 8);
    0x00036df0 cmp r6, 2                                         |         
    0x00036df2 bne 0x36dd8                                       |         
                                                                 |     } while (r6 != 2);
    0x00036df4 ldr r1, [r4, 8]                                   |     r1 = *((r4 + 8));
    0x00036df6 adds r7, 0xa                                      |     r7 += 0xa;
    0x00036df8 ldr r2, [r4, 0xc]                                 |     r2 = *((r4 + 0xc));
    0x00036dfa orr r1, r1, 0x80000                               |     r1 |= 0x80000;
    0x00036dfe blx 0xdef0                                        |     fcn_0000def0 ();
    0x00036e02 str.w r0, [r5, r7, lsl 2]                         |     __asm ("str.w r0, [r5, r7, lsl 2]");
    0x00036e06 adds r0, 1                                        |     r0++;
                                                                 |     if (r0 == 1) {
    0x00036e08 beq 0x36db8                                       |         goto label_0;
                                                                 |     }
    0x00036e0a ldr r3, [r5, 0x24]                                |     r3 = *((r5 + 0x24));
    0x00036e0c mov r1, r6                                        |     r1 = r6;
    0x00036e0e movs r2, 1                                        |     r2 = 1;
    0x00036e10 adds r3, 0xa                                      |     r3 += 0xa;
    0x00036e12 ldr.w r0, [r5, r3, lsl 2]                         |     offset_0 = r3 << 2;
                                                                 |     r0 = *((r5 + offset_0));
    0x00036e16 blx 0xe054                                        |     r0 = pcre_compile ();
    0x00036e18 ldmdb lr, {r0, ip, sp}                            |     __asm ("ldmdb lr, {r0, ip, sp}");
                                                                 |     if (r3 == 0xa) {
    0x00036e1c bne 0x36e36                                       |         
    0x00036e1e blx 0xe3d4                                        |         r0 = fcn_0000e3d4 ();
    0x00036e22 ldr r0, [r0]                                      |         r0 = *(r0);
    0x00036e24 bl 0x31154                                        |         r0 = strerror_from_system ()
    0x00036e28 mov r3, r0                                        |         r3 = r0;
    0x00036e2a ldr r0, [pc, 0x2b0]                               |         
    0x00036e2c mov r2, r8                                        |         r2 = r8;
    0x00036e2e mov r1, fp                                        |         r1 = fp;
    0x00036e30 add r0, pc                                        |         r0 = 0x6df12;
    0x00036e32 bl 0x363d0                                        |         fcn_000363d0 ();
                                                                 |     }
    0x00036e36 ldr r3, [r5, 0x24]                                |     r3 = *((r5 + 0x24));
    0x00036e38 add r7, sp, 0x38                                  |     r7 += var_38h;
    0x00036e3a movs r1, 1                                        |     r1 = 1;
    0x00036e3c movs r2, 2                                        |     r2 = 2;
    0x00036e3e str r1, [sp, 0x38]                                |     var_38h = r1;
    0x00036e40 adds r3, 0xa                                      |     r3 += 0xa;
    0x00036e42 ldr.w r0, [r5, r3, lsl 2]                         |     offset_1 = r3 << 2;
                                                                 |     r0 = *((r5 + offset_1));
    0x00036e46 movs r3, 4                                        |     r3 = 4;
    0x00036e48 str r3, [sp]                                      |     *(sp) = r3;
    0x00036e4a mov r3, r7                                        |     r3 = r7;
    0x00036e4c blx 0xe37c                                        |     fcn_0000e37c ();
    0x00036e50 adds r0, 1                                        |     r0++;
                                                                 |     if (r0 == 1) {
    0x00036e52 bne 0x36e6c                                       |         
    0x00036e54 blx 0xe3d4                                        |         r0 = fcn_0000e3d4 ();
    0x00036e58 ldr r0, [r0]                                      |         r0 = *(r0);
    0x00036e5a bl 0x31154                                        |         strerror_from_system ()
    0x00036e5e mov r3, r8                                        |         r3 = r8;
    0x00036e60 str r0, [sp]                                      |         *(sp) = r0;
    0x00036e62 mov r2, fp                                        |         r2 = fp;
    0x00036e64 ldrd r1, r0, [sp, 0x10]                           |         __asm ("ldrd r1, r0, [var_10h]");
    0x00036e68 bl 0x363d0                                        |         fcn_000363d0 ();
                                                                 |     }
    0x00036e6c ldr r2, [r4, 4]                                   |     r2 = *((r4 + 4));
    0x00036e6e ldr r3, [r5, 0x24]                                |     r3 = *((r5 + 0x24));
    0x00036e70 cmp r2, 0xa                                       |     
    0x00036e72 add.w r1, r3, 0xa                                 |     r1 = r3 + 0xa;
    0x00036e76 ldr.w r0, [r5, r1, lsl 2]                         |     offset_2 = r1 << 2;
                                                                 |     r0 = *((r5 + offset_2));
                                                                 |     if (r2 == 0xa) {
    0x00036e7a beq.w 0x36f9c                                     |         goto label_28;
                                                                 |     }
                                                                 | label_5:
    0x00036e7e adds r3, 0xa                                      |     r3 += 0xa;
    0x00036e80 ldrd r2, r1, [r4, 0x10]                           |     __asm ("ldrd r2, r1, [r4, 0x10]");
    0x00036e84 ldr.w r0, [r5, r3, lsl 2]                         |     offset_3 = r3 << 2;
                                                                 |     r0 = *((r5 + offset_3));
    0x00036e88 blx 0xe06c                                        |     strstr (r0, r1);
    0x00036e8c adds r0, 1                                        |     r0++;
                                                                 |     if (r0 != 1) {
    0x00036e8e bne 0x36f12                                       |         goto label_29;
                                                                 |     }
                                                                 | label_23:
    0x00036e90 blx 0xe3d4                                        |     r0 = fcn_0000e3d4 ();
    0x00036e94 mov r7, r0                                        |     r7 = r0;
    0x00036e96 ldr r0, [r0]                                      |     r0 = *(r0);
    0x00036e98 bl 0x31154                                        |     strerror_from_system ()
    0x00036e9c mov r1, fp                                        |     r1 = fp;
    0x00036e9e mov r3, r0                                        |     r3 = r0;
    0x00036ea0 mov r2, r8                                        |     r2 = r8;
    0x00036ea2 ldr r0, [sp, 0xc]                                 |     r0 = var_ch;
    0x00036ea4 bl 0x363d0                                        |     fcn_000363d0 ();
    0x00036ea8 ldr r3, [r5, 0x24]                                |     r3 = *((r5 + 0x24));
    0x00036eaa adds r3, 0xa                                      |     r3 += 0xa;
    0x00036eac ldr.w r0, [r5, r3, lsl 2]                         |     offset_4 = r3 << 2;
                                                                 |     r0 = *((r5 + offset_4));
    0x00036eb0 adds r1, r0, 1                                    |     r1 = r0 + 1;
                                                                 |     if (r1 != r0) {
    0x00036eb2 beq 0x36eb8                                       |         
    0x00036eb4 blx 0xe0ac                                        |         fcn_0000e0ac ();
                                                                 |     }
    0x00036eb8 ldr r3, [r7]                                      |     r3 = *(r7);
    0x00036eba cmp r3, 0x62                                      |     
                                                                 |     if (r3 == 0x62) {
    0x00036ebc beq 0x36dd8                                       |         goto label_1;
                                                                 |     }
                                                                 | label_25:
    0x00036ebe ldr r3, [sp, 0x18]                                |     r3 = var_18h;
                                                                 |     if (r3 != 0) {
    0x00036ec0 cbz r3, 0x36ec8                                   |         
    0x00036ec2 mov r0, r3                                        |         r0 = r3;
    0x00036ec4 blx 0xde30                                        |         fcn_0000de30 ();
                                                                 |     }
                                                                 | label_4:
    0x00036ec8 ldr r0, [sp, 0x34]                                |     r0 = var_34h;
                                                                 |     if (r0 != 0) {
    0x00036eca cbz r0, 0x36ed0                                   |         
    0x00036ecc blx 0xdd90                                        |         strrchr (r0, r1);
                                                                 |     }
    0x00036ed0 ldr r4, [r5, 0x24]                                |     r4 = *((r5 + 0x24));
                                                                 | label_8:
    0x00036ed2 cmp r4, 0                                         |     
    0x00036ed4 itt gt                                            |     
                                                                 |     if (r4 <= 0) {
    0x00036ed6 addgt r6, r5, 0x24                                |         r6 = r5 + 0x24;
                                                                 |     }
                                                                 |     if (r4 > 0) {
    0x00036eda movs r4, 0                                        |         r4 = 0;
                                                                 |     }
                                                                 |     if (r4 <= 0) {
    0x00036edc ble 0x36ef2                                       |         goto label_30;
                                                                 |     }
                                                                 |     do {
    0x00036ede ldr r0, [r6, 4]!                                  |         r0 = *((r6 += 4));
    0x00036ee2 adds r3, r0, 1                                    |         r3 = r0 + 1;
                                                                 |         if (r3 != r0) {
    0x00036ee4 beq 0x36eea                                       |             
    0x00036ee6 blx 0xe0ac                                        |             fcn_0000e0ac ();
                                                                 |         }
    0x00036eea ldr r3, [r5, 0x24]                                |         r3 = *((r5 + 0x24));
    0x00036eec adds r4, 1                                        |         r4++;
    0x00036eee cmp r3, r4                                        |         
    0x00036ef0 bgt 0x36ede                                       |         
                                                                 |     } while (r3 > r4);
                                                                 | label_30:
    0x00036ef2 mov.w r0, -1                                      |     r0 = -1;
                                                                 | label_12:
    0x00036ef6 ldr r2, [pc, 0x1e8]                               |     
    0x00036ef8 ldr r3, [pc, 0x1c0]                               |     r3 = *(0x370bc);
    0x00036efa add r2, pc                                        |     r2 = 0x6dfe0;
    0x00036efc ldr r3, [r2, r3]                                  |     r3 = *(0x6dfe0);
    0x00036efe ldr r2, [r3]                                      |     r2 = *(0x6dfe0);
    0x00036f00 ldr r3, [sp, 0x64]                                |     r3 = var_64h;
    0x00036f02 eors r2, r3                                       |     r2 ^= r3;
    0x00036f04 mov.w r3, 0                                       |     r3 = 0;
                                                                 |     if (r2 != r3) {
    0x00036f08 bne.w 0x370ac                                     |         goto label_31;
                                                                 |     }
    0x00036f0c add sp, 0x6c                                      |     
    0x00036f0e pop.w {r4, r5, r6, r7, r8, sb, sl, fp, pc}        |     
                                                                 | label_29:
    0x00036f12 ldr r3, [pc, 0x1d0]                               |     r3 = *(0x370e6);
    0x00036f14 ldr.w r3, [sl, r3]                                |     r3 = *((sl + r3));
    0x00036f18 ldr r1, [r3]                                      |     r1 = *(0x370e6);
    0x00036f1a ldr r3, [r5, 0x24]                                |     r3 = *((r5 + 0x24));
    0x00036f1c adds r3, 0xa                                      |     r3 += 0xa;
    0x00036f1e ldr.w r0, [r5, r3, lsl 2]                         |     offset_5 = r3 << 2;
                                                                 |     r0 = *((r5 + offset_5));
    0x00036f22 blx 0xdd14                                        |     fcn_0000dd14 ();
    0x00036f26 adds r0, 1                                        |     r0++;
                                                                 |     if (r0 == 1) {
    0x00036f28 beq 0x37008                                       |         goto label_32;
                                                                 |     }
    0x00036f2a ldr r3, [r5, 0x24]                                |     r3 = *((r5 + 0x24));
    0x00036f2c ldr r4, [r4, 0x1c]                                |     r4 = *((r4 + 0x1c));
    0x00036f2e adds r3, 1                                        |     r3++;
    0x00036f30 str r3, [r5, 0x24]                                |     *((r5 + 0x24)) = r3;
    0x00036f32 cmp r4, 0                                         |     
                                                                 |     if (r4 != 0) {
    0x00036f34 bne.w 0x36de0                                     |         goto label_2;
                                                                 |     }
                                                                 | label_26:
    0x00036f38 ldr r0, [sp, 0x34]                                |     r0 = var_34h;
    0x00036f3a ldr r6, [sp, 0x1c]                                |     r6 = var_1ch;
                                                                 |     if (r0 != 0) {
    0x00036f3c cbz r0, 0x36f44                                   |         
    0x00036f3e blx 0xdd90                                        |         strrchr (r0, r1);
    0x00036f42 str r4, [sp, 0x34]                                |         var_34h = r4;
                                                                 |     }
                                                                 | label_24:
    0x00036f44 cmp r6, 0                                         |     
    0x00036f46 it ne                                             |     
                                                                 |     if (r6 != 0) {
    0x00036f48 cmpne sb, 0                                       |         __asm ("cmpne sb, 0");
                                                                 |     }
                                                                 |     if (r6 == 0) {
    0x00036f4c beq.w 0x37074                                     |         goto label_33;
                                                                 |     }
    0x00036f50 mov sb, r6                                        |     sb = r6;
    0x00036f52 movs r3, 0x2c                                     |     r3 = 0x2c;
    0x00036f54 strb r3, [sb], 1                                  |     *(sb) = r3;
                                                                 |     sb++;
    0x00036f58 movs r1, 0x2c                                     |     r1 = 0x2c;
    0x00036f5a mov r0, sb                                        |     r0 = sb;
    0x00036f5c blx 0xdcd4                                        |     r0 = fcn_0000dcd4 ();
    0x00036f60 mov r6, r0                                        |     r6 = r0;
                                                                 |     if (r0 != 0) {
    0x00036f62 cbz r0, 0x36f68                                   |         
    0x00036f64 movs r3, 0                                        |         r3 = 0;
    0x00036f66 strb r3, [r0]                                     |         *(r0) = r3;
                                                                 |     }
    0x00036f68 ldrd r3, r2, [sp, 0x20]                           |     __asm ("ldrd r3, r2, [var_20h]");
    0x00036f6c mov r1, r8                                        |     r1 = r8;
    0x00036f6e mov r0, sb                                        |     r0 = sb;
    0x00036f70 blx 0xdf14                                        |     r0 = fcn_0000df14 ();
    0x00036f74 mov r4, r0                                        |     r4 = r0;
    0x00036f76 cmp r0, 0                                         |     
                                                                 |     if (r0 == 0) {
    0x00036f78 beq.w 0x36d8c                                     |         goto label_3;
                                                                 |     }
    0x00036f7c mov r0, r4                                        |     r0 = r4;
    0x00036f7e blx 0xdd78                                        |     freeaddrinfo ();
    0x00036f82 str r0, [sp]                                      |     *(sp) = r0;
    0x00036f84 mov r3, r4                                        |     r3 = r4;
    0x00036f86 ldr r0, [pc, 0x160]                               |     
    0x00036f88 mov r2, r8                                        |     r2 = r8;
    0x00036f8a mov r1, sb                                        |     r1 = sb;
    0x00036f8c add r0, pc                                        |     r0 = 0x6e07a;
    0x00036f8e bl 0x363d0                                        |     fcn_000363d0 ();
    0x00036f92 ldr r3, [sp, 0x18]                                |     r3 = var_18h;
    0x00036f94 cmp r3, 0                                         |     
                                                                 |     if (r3 == 0) {
    0x00036f96 beq 0x36ec8                                       |         goto label_4;
                                                                 |     }
    0x00036f98 ldr r0, [sp, 0x18]                                |     r0 = var_18h;
    0x00036f9a b 0x36fce                                         |     goto label_9;
                                                                 | label_28:
    0x00036f9c movs r2, 4                                        |     r2 = 4;
    0x00036f9e mov r3, r7                                        |     r3 = r7;
    0x00036fa0 str r2, [sp]                                      |     *(sp) = r2;
    0x00036fa2 movs r1, 0x29                                     |     r1 = 0x29;
    0x00036fa4 movs r2, 0x1a                                     |     r2 = 0x1a;
    0x00036fa6 blx 0xe37c                                        |     fcn_0000e37c ();
    0x00036faa adds r0, 1                                        |     r0++;
                                                                 |     if (r0 == 1) {
    0x00036fac beq 0x36fd4                                       |         goto label_34;
                                                                 |     }
                                                                 | label_6:
    0x00036fae ldr r3, [r5, 0x24]                                |     r3 = *((r5 + 0x24));
    0x00036fb0 b 0x36e7e                                         |     goto label_5;
                                                                 | label_27:
    0x00036fb2 cmp.w sb, 0                                       |     
                                                                 |     if (sb == 0) {
    0x00036fb6 beq 0x36ffa                                       |         goto label_35;
                                                                 |     }
                                                                 | label_7:
    0x00036fb8 ldr r0, [pc, 0x130]                               |     
    0x00036fba mov r2, r8                                        |     r2 = r8;
    0x00036fbc mov r1, sb                                        |     r1 = sb;
    0x00036fbe add r0, pc                                        |     r0 = 0x6e0ae;
    0x00036fc0 bl 0x363d0                                        |     fcn_000363d0 ();
    0x00036fc4 ldr r3, [sp, 0x18]                                |     r3 = var_18h;
    0x00036fc6 cmp r3, 0                                         |     
                                                                 |     if (r3 == 0) {
    0x00036fc8 beq.w 0x36ec8                                     |         goto label_4;
                                                                 |     }
                                                                 | label_14:
    0x00036fcc mov r0, r3                                        |     r0 = r3;
                                                                 | label_9:
    0x00036fce blx 0xde30                                        |     fcn_0000de30 ();
    0x00036fd2 b 0x36ec8                                         |     goto label_4;
                                                                 | label_34:
    0x00036fd4 mov r7, sb                                        |     r7 = sb;
    0x00036fd6 cmp.w sb, 0                                       |     
    0x00036fda beq 0x37002                                       |     
                                                                 |     while (1) {
    0x00036fdc blx 0xe3d4                                        |         r0 = fcn_0000e3d4 ();
    0x00036fe0 ldr r0, [r0]                                      |         r0 = *(r0);
    0x00036fe2 bl 0x31154                                        |         strerror_from_system ()
    0x00036fe6 ldr r1, [pc, 0x108]                               |         
    0x00036fe8 mov r2, r7                                        |         r2 = r7;
    0x00036fea str r0, [sp]                                      |         *(sp) = r0;
    0x00036fec mov r3, r8                                        |         r3 = r8;
    0x00036fee ldr r0, [pc, 0x104]                               |         
    0x00036ff0 add r1, pc                                        |         r1 = 0x6e0e6;
    0x00036ff2 add r0, pc                                        |         r0 = 0x6e0ec;
    0x00036ff4 bl 0x363d0                                        |         fcn_000363d0 ();
    0x00036ff8 b 0x36fae                                         |         goto label_6;
                                                                 | label_35:
    0x00036ffa ldr.w sb, [pc, 0xfc]                              |         sb = *(0x000370f8);
    0x00036ffe add sb, pc                                        |         sb += pc;
    0x00037000 b 0x36fb8                                         |         goto label_7;
    0x00037002 ldr r7, [pc, 0xf8]                                |         
    0x00037004 add r7, pc                                        |         r7 = 0x6e106;
    0x00037006 b 0x36fdc                                         |         
                                                                 |     }
                                                                 | label_32:
    0x00037008 cmp.w sb, 0                                       |     
                                                                 |     if (sb == 0) {
    0x0003700c beq 0x3705a                                       |         goto label_36;
                                                                 |     }
                                                                 | label_10:
    0x0003700e blx 0xe3d4                                        |     r0 = fcn_0000e3d4 ();
    0x00037012 ldr r0, [r0]                                      |     r0 = *(r0);
    0x00037014 bl 0x31154                                        |     r0 = strerror_from_system ()
    0x00037018 mov r3, r0                                        |     r3 = r0;
    0x0003701a ldr r0, [pc, 0xe4]                                |     
    0x0003701c mov r2, r8                                        |     r2 = r8;
    0x0003701e mov r1, sb                                        |     r1 = sb;
    0x00037020 add r0, pc                                        |     r0 = 0x6e126;
    0x00037022 bl 0x363d0                                        |     fcn_000363d0 ();
    0x00037026 ldr r4, [r5, 0x24]                                |     r4 = *((r5 + 0x24));
    0x00037028 add.w r3, r4, 0xa                                 |     r3 = r4 + 0xa;
    0x0003702c ldr.w r0, [r5, r3, lsl 2]                         |     offset_6 = r3 << 2;
                                                                 |     r0 = *((r5 + offset_6));
    0x00037030 adds r2, r0, 1                                    |     r2 = r0 + 1;
                                                                 |     if (r2 != r0) {
    0x00037032 bne 0x3704e                                       |         goto label_37;
                                                                 |     }
    0x00037034 ldr r0, [sp, 0x18]                                |     r0 = var_18h;
    0x00037036 ldr r6, [sp, 0x34]                                |     r6 = var_34h;
                                                                 |     if (r0 == 0) {
    0x00037038 cbz r0, 0x37062                                   |         goto label_38;
                                                                 |     }
    0x0003703a blx 0xde30                                        |     fcn_0000de30 ();
    0x0003703e cmp r6, 0                                         |     
                                                                 |     if (r6 == 0) {
    0x00037040 beq.w 0x36ed2                                     |         goto label_8;
                                                                 |     }
                                                                 | label_11:
    0x00037044 mov r0, r6                                        |     r0 = r6;
    0x00037046 blx 0xdd90                                        |     strrchr (r0, r1);
    0x0003704a ldr r4, [r5, 0x24]                                |     r4 = *((r5 + 0x24));
    0x0003704c b 0x36ed2                                         |     goto label_8;
                                                                 | label_37:
    0x0003704e blx 0xe0ac                                        |     fcn_0000e0ac ();
    0x00037052 ldr r0, [sp, 0x18]                                |     r0 = var_18h;
    0x00037054 cmp r0, 0                                         |     
                                                                 |     if (r0 != 0) {
    0x00037056 bne 0x36fce                                       |         goto label_9;
                                                                 |     }
    0x00037058 b 0x36ec8                                         |     goto label_4;
                                                                 | label_36:
    0x0003705a ldr.w sb, [pc, 0xa8]                              |     sb = *(0x00037104);
    0x0003705e add sb, pc                                        |     sb += pc;
    0x00037060 b 0x3700e                                         |     goto label_10;
                                                                 | label_38:
    0x00037062 cmp r6, 0                                         |     
                                                                 |     if (r6 != 0) {
    0x00037064 bne 0x37044                                       |         goto label_11;
                                                                 |     }
    0x00037066 b 0x36ed2                                         |     goto label_8;
                                                                 | label_33:
    0x00037074 ldr r3, [r5, 0x24]                                |     r3 = *((r5 + 0x24));
                                                                 |     if (r3 == 0) {
    0x00037076 cbz r3, 0x37094                                   |         goto label_39;
                                                                 |     }
    0x00037078 ldr r0, [sp, 0x18]                                |     r0 = var_18h;
    0x0003707a ldr r4, [sp, 0x34]                                |     r4 = var_34h;
                                                                 |     if (r0 == 0) {
    0x0003707c cbz r0, 0x3708e                                   |         goto label_40;
                                                                 |     }
    0x0003707e blx 0xde30                                        |     fcn_0000de30 ();
    0x00037082 cbz r4, 0x3708a                                   |     
                                                                 |     while (r4 != 0) {
    0x00037084 mov r0, r4                                        |         r0 = r4;
    0x00037086 blx 0xdd90                                        |         strrchr (r0, r1);
                                                                 | label_13:
    0x0003708a movs r0, 0                                        |         r0 = 0;
    0x0003708c b 0x36ef6                                         |         goto label_12;
                                                                 | label_40:
    0x0003708e cmp r4, 0                                         |         
    0x00037090 bne 0x37084                                       |         
                                                                 |     }
    0x00037092 b 0x3708a                                         |     goto label_13;
                                                                 | label_39:
    0x00037094 ldr r3, [sp, 0x28]                                |     r3 = var_28h;
                                                                 |     if (r3 == 0) {
    0x00037096 cbz r3, 0x370b0                                   |         goto label_41;
                                                                 |     }
                                                                 | label_15:
    0x00037098 ldr r0, [pc, 0x70]                                |     
    0x0003709a ldrd r1, r2, [sp, 0x28]                           |     __asm ("ldrd r1, r2, [var_28h]");
    0x0003709e add r0, pc                                        |     r0 = 0x6e1ae;
    0x000370a0 bl 0x363d0                                        |     fcn_000363d0 ();
    0x000370a4 ldr r3, [sp, 0x18]                                |     r3 = var_18h;
    0x000370a6 cmp r3, 0                                         |     
                                                                 |     if (r3 != 0) {
    0x000370a8 bne 0x36fcc                                       |         goto label_14;
                                                                 |     }
    0x000370aa b 0x36ec8                                         |     goto label_4;
                                                                 | label_31:
    0x000370ac blx 0xe158                                        |     fcn_0000e158 ();
                                                                 | label_41:
    0x000370b0 ldr r3, [pc, 0x5c]                                |     
    0x000370b2 add r3, pc                                        |     r3 = 0x6e1c6;
    0x000370b4 str r3, [sp, 0x28]                                |     var_28h = r3;
    0x000370b6 b 0x37098                                         |     goto label_15;
    0x0003713c push.w {r4, r5, r6, r7, r8, sb, sl, fp, lr}       |     
    0x00037140 mov sb, r1                                        |     sb = r1;
    0x00037142 ldr r1, [pc, 0x254]                               |     
    0x00037144 sub sp, 0x1a4                                     |     
    0x00037146 mov r4, r0                                        |     r4 = r0;
    0x00037148 ldr r2, [pc, 0x250]                               |     r2 = *(0x3739c);
    0x0003714a add r1, pc                                        |     r1 = 0x6e4e8;
    0x0003714c ldrb.w r3, [r0, 0x20]                             |     r3 = *((r0 + 0x20));
    0x00037150 ldr.w sl, [pc, 0x24c]                             |     sl = *(0x000373a0);
    0x00037154 ldr r2, [r1, r2]                                  |     
    0x00037156 add sl, pc                                        |     sl += pc;
    0x00037158 ldr r2, [r2]                                      |     r2 = *(0x6e4e8);
    0x0003715a str r2, [sp, 0x19c]                               |     var_19ch = r2;
    0x0003715c mov.w r2, 0                                       |     r2 = 0;
                                                                 |     if (r3 != 0) {
    0x00037160 cbz r3, 0x37166                                   |         
    0x00037162 bl 0x367dc                                        |         fcn_000367dc (r0);
                                                                 |     }
    0x00037166 add r5, sp, 0x9c                                  |     r5 += size;
    0x00037168 movs r2, 0x80                                     |     r2 = 0x80;
    0x0003716a movs r1, 0                                        |     r1 = 0;
    0x0003716c mov r0, r5                                        |     r0 = r5;
    0x0003716e blx 0xdd6c                                        |     uname ();
    0x00037172 ldr r3, [r4, 0x24]                                |     r3 = *((r4 + 0x24));
    0x00037174 cmp r3, 0                                         |     
                                                                 |     if (r3 <= 0) {
    0x00037176 ble.w 0x372ea                                     |         goto label_42;
                                                                 |     }
    0x00037178 strh r0, [r7, 4]                                  |     *((r7 + 4)) = r0;
    0x0003717a mov.w fp, 0                                       |     
    0x0003717e add.w r7, r4, 0x24                                |     r7 = r4 + 0x24;
    0x00037182 mov r6, fp                                        |     r6 = fp;
    0x00037184 mov.w r8, 1                                       |     r8 = 1;
                                                                 |     do {
    0x00037188 ldr r0, [r7, 4]!                                  |         r0 = *((r7 += 4));
    0x0003718c adds r6, 1                                        |         r6++;
    0x0003718e blx 0xe3ec                                        |         fcn_0000e3ec ();
    0x00037192 ldr.w r1, [r5, r0, lsl 2]                         |         offset_7 = r0 << 2;
                                                                 |         r1 = *((r5 + offset_7));
    0x00037196 ldr r2, [r7]                                      |         r2 = *(r7);
    0x00037198 and r3, r2, 0x1f                                  |         r3 = r2 & 0x1f;
    0x0003719c cmp fp, r2                                        |         
    0x0003719e lsl.w r3, r8, r3                                  |         r3 = r8 << r3;
    0x000371a0 b.w 0x33b114                                      |         void (*0x33b114)() ();
    0x000371a4 mov fp, r2                                        |         
    0x000371a6 orrs r3, r1                                       |         r3 |= r1;
    0x000371a8 str.w r3, [r5, r0, lsl 2]                         |         __asm ("str.w r3, [r5, r0, lsl 2]");
    0x000371ac ldr r3, [r4, 0x24]                                |         r3 = *((r4 + 0x24));
    0x000371ae cmp r3, r6                                        |         
    0x000371b0 bgt 0x37188                                       |         
                                                                 |     } while (r3 > r6);
    0x000371b2 add.w r0, fp, 1                                   |     r0 += arg_1h;
                                                                 | label_19:
    0x000371b6 movs r6, 0                                        |     r6 = 0;
    0x000371b8 mov r1, r5                                        |     r1 = r5;
    0x000371ba mov r3, r6                                        |     r3 = r6;
    0x000371bc mov r2, r6                                        |     r2 = r6;
    0x000371be str r6, [sp]                                      |     *(sp) = r6;
    0x000371c0 blx 0xe09c                                        |     fwrite (r0, r1, r2, r3);
    0x000371c4 adds r0, 1                                        |     r0++;
                                                                 |     if (r0 == 1) {
    0x000371c6 beq.w 0x3737e                                     |         goto label_43;
                                                                 |     }
    0x000371ca ldrd r3, r0, [r4, 0x24]                           |     __asm ("ldrd r3, r0, [r4, 0x24]");
    0x000371ce cmp r3, r6                                        |     
    0x000371d0 itt gt                                            |     
                                                                 |     if (r3 <= r6) {
    0x000371d2 addgt r8, r4, 0x24                                |         r8 = r4 + 0x24;
                                                                 |     }
                                                                 |     if (r3 > r6) {
    0x000371d6 movs r7, 1                                        |         r7 = 1;
                                                                 |     }
                                                                 |     if (r7 > 1) {
    0x000371d8 bgt 0x371e4                                       |         goto label_44;
                                                                 |     }
    0x000371da b 0x37200                                         |     goto label_45;
                                                                 |     do {
    0x000371dc ldr r3, [r4, 0x24]                                |         r3 = *((r4 + 0x24));
    0x000371de adds r6, 1                                        |         r6++;
    0x000371e0 cmp r3, r6                                        |         
                                                                 |         if (r3 <= r6) {
    0x000371e2 ble 0x372bc                                       |             goto label_46;
                                                                 |         }
                                                                 | label_44:
    0x000371e4 ldr r0, [r8, 4]!                                  |         r0 = *((r8 += 4));
    0x000371e8 blx 0xe3ec                                        |         fcn_0000e3ec ();
    0x000371ec ldr.w r3, [r5, r0, lsl 2]                         |         offset_8 = r0 << 2;
                                                                 |         r3 = *((r5 + offset_8));
    0x000371f0 ldr.w r0, [r8]                                    |         r0 = *(r8);
    0x000371f4 and r1, r0, 0x1f                                  |         r1 = r0 & 0x1f;
    0x000371f8 lsl.w r1, r7, r1                                  |         r1 = r7 << r1;
    0x000371fc tst r1, r3                                        |         
    0x000371fe beq 0x371dc                                       |         
                                                                 |     } while ((r1 & r3) == 0);
                                                                 |     do {
                                                                 | label_45:
    0x00037200 add r2, sp, 0x14                                  |         r2 += var_14h;
    0x00037202 movs r5, 0x80                                     |         r5 = 0x80;
    0x00037204 add r1, sp, 0x1c                                  |         r1 += var_1ch;
    0x00037206 str r5, [r2]                                      |         *(r2) = r5;
    0x00037208 blx 0xdecc                                        |         r0 = fcn_0000decc ();
    0x0003720c adds r2, r0, 1                                    |         r2 = r0 + 1;
                                                                 |         if (r2 == r0) {
    0x0003720e beq.w 0x3734e                                     |             goto label_47;
                                                                 |         }
    0x00037212 ldr r2, [r4]                                      |         r2 = *(r4);
    0x00037214 add r6, sp, 0x18                                  |         r6 += var_18h;
    0x00037216 str r5, [r6]                                      |         *(r6) = r5;
    0x00037218 mov.w r8, 1                                       |         r8 = 1;
    0x0003721c add r5, sp, 0x11c                                 |         r5 += var_11ch;
    0x0003721e strb.w r8, [r4, 0x20]                             |         *((r4 + 0x20)) = r8;
    0x00037222 strd r0, r2, [r4]                                 |         __asm ("strd r0, r2, [r4]");
    0x00037226 mov r1, r5                                        |         r1 = r5;
    0x00037228 mov r2, r6                                        |         r2 = r6;
    0x0003722a blx 0xe310                                        |         fcn_0000e310 ();
    0x0003722e adds r0, 1                                        |         r0++;
                                                                 |         if (r0 == 1) {
    0x00037230 beq 0x3732c                                       |             goto label_48;
                                                                 |         }
    0x00037232 mov r1, r5                                        |         r1 = r5;
    0x00037234 ldr r2, [r6]                                      |         r2 = *(r6);
    0x00037236 addw r0, r4, 0xc28                                |         __asm ("addw r0, r4, 0xc28");
    0x0003723a addw r7, r4, 0xca8                                |         __asm ("addw r7, r4, 0xca8");
    0x0003723e blx 0xdf84                                        |         fcn_0000df84 ();
    0x00037242 ldrh.w r3, [sp, 0x11c]                            |         r3 = var_11ch;
    0x00037246 mov r0, r5                                        |         r0 = r5;
    0x00037248 mov r2, r7                                        |         r2 = r7;
    0x0003724a str.w r8, [sp, 8]                                 |         __asm ("str.w r8, [var_8h]");
    0x0003724e cmp r3, 2                                         |         
    0x00037250 mov.w r3, 0                                       |         r3 = 0;
    0x00037254 strd r3, r3, [sp]                                 |         __asm ("strd r3, r3, [sp]");
    0x00037258 it ne                                             |         
                                                                 |         if (r3 == 2) {
    0x0003725a movne r1, 0x1c                                    |             r1 = 0x1c;
                                                                 |         }
    0x0003725c mov.w r3, 0x100                                   |         r3 = 0x100;
    0x00037260 it eq                                             |         
                                                                 |         if (r3 != 2) {
    0x00037262 moveq r1, 0x10                                    |             r1 = 0x10;
                                                                 |         }
    0x00037264 blx 0xdb20                                        |         r0 = getnameinfo ();
    0x00037268 mov r5, r0                                        |         r5 = r0;
    0x0003726a cmp r0, 0                                         |         
                                                                 |         if (r0 != 0) {
    0x0003726c bne 0x37368                                       |             goto label_49;
                                                                 |         }
    0x0003726e ldr r3, [pc, 0x134]                               |         r3 = *(0x373a6);
    0x00037270 ldr.w r3, [sl, r3]                                |         r3 = *((sl + r3));
    0x00037274 ldr r0, [r3]                                      |         r0 = *(0x373a6);
    0x00037276 str r0, [r4, 0x18]                                |         *((r4 + 0x18)) = r0;
    0x00037278 bl 0x42fc4                                        |         zbx_alarm_on ();
    0x0003727c movs r3, 2                                        |         r3 = 2;
    0x0003727e ldr r0, [r4]                                      |         r0 = *(r4);
    0x00037280 mov r2, r8                                        |         r2 = r8;
    0x00037282 mov r1, r6                                        |         r1 = r6;
    0x00037284 blx 0xdca4                                        |         r0 = fcn_0000dca4 ();
    0x00037288 adds r3, r0, 1                                    |         r3 = r0 + 1;
                                                                 |         if (r3 == r0) {
    0x0003728a beq 0x3730c                                       |             goto label_50;
                                                                 |         }
    0x0003728c cmp r0, 1                                         |         
                                                                 |         if (r0 == 1) {
    0x0003728e beq 0x372ce                                       |             goto label_51;
                                                                 |         }
                                                                 | label_17:
    0x00037290 tst.w sb, 1                                       |         
    0x00037294 itt ne                                            |         
                                                                 |         if ((sb & 1) == 0) {
    0x00037296 movne r3, 1                                       |             r3 = 1;
                                                                 |         }
                                                                 |         if ((sb & 1) == 0) {
    0x00037298 strne r3, [r4, 0x14]                              |             *((r4 + 0x14)) = r3;
                                                                 |         }
                                                                 |         if ((sb & 1) == 0) {
    0x0003729a beq 0x372ee                                       |             goto label_52;
                                                                 |         }
                                                                 | label_18:
    0x0003729c ldr r3, [r4, 0x18]                                |         r3 = *((r4 + 0x18));
                                                                 |         if (r3 != 0) {
    0x0003729e cbnz r3, 0x372c4                                  |             goto label_53;
                                                                 |         }
                                                                 | label_16:
    0x000372a0 ldr r2, [pc, 0x104]                               |         
    0x000372a2 ldr r3, [pc, 0xf8]                                |         r3 = *(0x3739e);
    0x000372a4 add r2, pc                                        |         r2 = 0x6e650;
    0x000372a6 ldr r3, [r2, r3]                                  |         r3 = *(0x6e650);
    0x000372a8 ldr r2, [r3]                                      |         r2 = *(0x6e650);
    0x000372aa ldr r3, [sp, 0x19c]                               |         r3 = var_19ch;
    0x000372ac eors r2, r3                                       |         r2 ^= r3;
    0x000372ae mov.w r3, 0                                       |         r3 = 0;
                                                                 |         if (r2 != r3) {
    0x000372b2 bne 0x37394                                       |             goto label_54;
                                                                 |         }
    0x000372b4 mov r0, r5                                        |         r0 = r5;
    0x000372b6 add sp, 0x1a4                                     |         
    0x000372b8 pop.w {r4, r5, r6, r7, r8, sb, sl, fp, pc}        |         
                                                                 | label_46:
    0x000372bc adds r6, 0xa                                      |         r6 += 0xa;
    0x000372be ldr.w r0, [r4, r6, lsl 2]                         |         offset_9 = r6 << 2;
                                                                 |         r0 = *((r4 + offset_9));
    0x000372c2 b 0x37200                                         |         
                                                                 |     } while (1);
                                                                 | label_53:
    0x000372c4 bl 0x42fd4                                        |     zbx_alarm_off ();
    0x000372c8 movs r3, 0                                        |     r3 = 0;
    0x000372ca str r3, [r4, 0x18]                                |     *((r4 + 0x18)) = r3;
    0x000372cc b 0x372a0                                         |     goto label_16;
                                                                 | label_51:
    0x000372ce ldrb r3, [r6]                                     |     r3 = *(r6);
    0x000372d0 cmp r3, 0x16                                      |     
                                                                 |     if (r3 != 0x16) {
    0x000372d2 bne 0x37290                                       |         goto label_17;
                                                                 |     }
    0x000372d4 ldr r0, [pc, 0xd4]                                |     
    0x000372d6 mov r1, r7                                        |     r1 = r7;
    0x000372d8 add r0, pc                                        |     r0 = 0x6e688;
    0x000372da bl 0x363d0                                        |     fcn_000363d0 ();
    0x000372de ldrb.w r3, [r4, 0x20]                             |     r3 = *((r4 + 0x20));
                                                                 |     if (r3 != 0) {
    0x000372e2 cbnz r3, 0x37300                                  |         goto label_21;
                                                                 |     }
                                                                 |     do {
                                                                 | label_20:
    0x000372e4 mov.w r5, -1                                      |         r5 = -1;
    0x000372e8 b 0x3729c                                         |         goto label_18;
                                                                 | label_42:
    0x000372ea movs r0, 1                                        |         r0 = 1;
    0x000372ec b 0x371b6                                         |         goto label_19;
                                                                 | label_52:
    0x000372ee ldr r0, [pc, 0xc0]                                |         
    0x000372f0 mov r1, r7                                        |         r1 = r7;
    0x000372f2 add r0, pc                                        |         r0 = 0x6e6a8;
    0x000372f4 bl 0x363d0                                        |         fcn_000363d0 ();
    0x000372f8 ldrb.w r3, [r4, 0x20]                             |         r3 = *((r4 + 0x20));
    0x000372fc cmp r3, 0                                         |         
    0x000372fe beq 0x372e4                                       |         
                                                                 |     } while (r3 == 0);
                                                                 | label_21:
    0x00037300 mov r0, r4                                        |     r0 = r4;
    0x00037302 mov.w r5, -1                                      |     r5 = -1;
    0x00037306 bl 0x367dc                                        |     fcn_000367dc (r0);
    0x0003730a b 0x3729c                                         |     goto label_18;
                                                                 | label_50:
    0x0003730c blx 0xe3d4                                        |     r0 = fcn_0000e3d4 ();
    0x00037310 ldr r0, [r0]                                      |     r0 = *(r0);
    0x00037312 bl 0x31154                                        |     r0 = strerror_from_system ()
    0x00037316 mov r2, r0                                        |     r2 = r0;
    0x00037318 ldr r0, [pc, 0x98]                                |     
    0x0003731a mov r1, r7                                        |     r1 = r7;
    0x0003731c add r0, pc                                        |     r0 = 0x6e6d4;
    0x0003731e bl 0x363d0                                        |     fcn_000363d0 ();
    0x00037322 ldrb.w r3, [r4, 0x20]                             |     r3 = *((r4 + 0x20));
    0x00037326 cmp r3, 0                                         |     
                                                                 |     if (r3 == 0) {
    0x00037328 beq 0x372e4                                       |         goto label_20;
                                                                 |     }
    0x0003732a b 0x37300                                         |     goto label_21;
                                                                 | label_48:
    0x0003732c blx 0xe3d4                                        |     r0 = fcn_0000e3d4 ();
    0x00037330 ldr r0, [r0]                                      |     r0 = *(r0);
    0x00037332 bl 0x31154                                        |     r0 = strerror_from_system ()
    0x00037336 mov r1, r0                                        |     r1 = r0;
    0x00037338 ldr r0, [pc, 0x7c]                                |     
    0x0003733a add r0, pc                                        |     r0 = 0x6e6f6;
    0x0003733c bl 0x363d0                                        |     fcn_000363d0 ();
                                                                 | label_22:
    0x00037340 ldrb.w r3, [r4, 0x20]                             |     r3 = *((r4 + 0x20));
    0x00037344 cmp r3, 0                                         |     
                                                                 |     if (r3 != 0) {
    0x00037346 bne 0x37300                                       |         goto label_21;
                                                                 |     }
    0x00037348 mov.w r5, -1                                      |     r5 = -1;
    0x0003734c b 0x3729c                                         |     goto label_18;
                                                                 | label_47:
    0x0003734e blx 0xe3d4                                        |     r0 = fcn_0000e3d4 ();
    0x00037352 ldr r0, [r0]                                      |     r0 = *(r0);
    0x00037354 bl 0x31154                                        |     r0 = strerror_from_system ()
    0x00037358 mov r1, r0                                        |     r1 = r0;
    0x0003735a ldr r0, [pc, 0x60]                                |     
    0x0003735c add r0, pc                                        |     r0 = 0x6e71e;
    0x0003735e bl 0x363d0                                        |     fcn_000363d0 ();
                                                                 |     do {
    0x00037362 mov.w r5, -1                                      |         r5 = -1;
    0x00037366 b 0x372a0                                         |         goto label_16;
                                                                 | label_49:
    0x00037368 blx 0xe3d4                                        |         r0 = fcn_0000e3d4 ();
    0x0003736c ldr r0, [r0]                                      |         r0 = *(r0);
    0x0003736e bl 0x31154                                        |         strerror_from_system ()
    0x00037370 cdp2 p6, 0xf, c4, c1, c1, 0                       |         __asm ("cdp2 p6, 0xf, c4, c1, c1, 0");
    0x00037374 ldr r0, [pc, 0x48]                                |         
    0x00037376 add r0, pc                                        |         r0 = 0x6e73a;
    0x00037378 bl 0x363d0                                        |         fcn_000363d0 ();
    0x0003737c b 0x37340                                         |         goto label_22;
                                                                 | label_43:
    0x0003737e blx 0xe3d4                                        |         r0 = fcn_0000e3d4 ();
    0x00037382 ldr r0, [r0]                                      |         r0 = *(r0);
    0x00037384 bl 0x31154                                        |         r0 = strerror_from_system ()
    0x00037388 mov r1, r0                                        |         r1 = r0;
    0x0003738a ldr r0, [pc, 0x38]                                |         
    0x0003738c add r0, pc                                        |         r0 = 0x6e756;
    0x0003738e bl 0x363d0                                        |         fcn_000363d0 ();
    0x00037392 b 0x37362                                         |         
                                                                 |     } while (1);
                                                                 | label_54:
    0x00037394 blx 0xe158                                        |     fcn_0000e158 ();
    0x00037398 ldr r2, [pc, 0x238]                               |     r2 = *(0x375d4);
    0x0003739a movs r2, r0                                       |     r2 = r0;
    0x0003739c lsls r4, r2, 0xe                                  |     r4 = r2 << 0xe;
    0x0003739e movs r0, r0                                       |     
    0x000373a0 ldr r2, [pc, 0x208]                               |     r2 = *(0x375ac);
    0x000373a2 movs r2, r0                                       |     r2 = r0;
    0x000373a4 lsls r4, r4, 0xc                                  |     r4 <<= 0xc;
    0x000373a6 movs r0, r0                                       |     
    0x000373a8 ldr r1, [pc, 0xd0]                                |     r1 = *(0x3747c);
    0x000373aa movs r2, r0                                       |     r2 = r0;
    0x000373ac b 0x36e90                                         |     goto label_23;
                                                                 | }
    ; 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 @ 0x38104 */
                                             | #include <stdint.h>
                                             |  
    ; (fcn) sym.zbx_udp_send ()              | void zbx_udp_send (int16_t arg1, int16_t arg2, int16_t arg3, int16_t arg4) {
                                             |     int32_t var_0h;
                                             |     int32_t var_0h_2;
                                             |     r0 = arg1;
                                             |     r1 = arg2;
                                             |     r2 = arg3;
                                             |     r3 = arg4;
    0x00038104 push {r4, r5, r6, r7, lr}     |     
    0x00038106 mov r6, r0                    |     r6 = r0;
    0x00038108 sub sp, 0xc                   |     
    0x0003810a mov r4, r3                    |     r4 = r3;
                                             |     if (r3 != 0) {
    0x0003810c cbnz r3, 0x38128              |         goto label_2;
                                             |     }
    0x0003810e ldr r0, [r0]                  |     r0 = *(r0);
    0x00038110 strd r3, r3, [sp]             |     __asm ("strd r3, r3, [sp]");
    0x00038114 blx 0xdd38                    |     r0 = fcn_0000dd38 ();
    0x00038118 adds r3, r0, 1                |     r3 = r0 + 1;
    0x0003811a mov r5, r0                    |     r5 = r0;
    0x0003811c it ne                         |     
                                             |     if (r3 == r0) {
    0x0003811e movne r5, r4                  |         r5 = r4;
                                             |     }
                                             |     if (r3 == r0) {
    0x00038120 beq 0x38162                   |         goto label_3;
                                             |     }
                                             |     do {
                                             | label_0:
    0x00038122 mov r0, r5                    |         r0 = r5;
    0x00038124 add sp, 0xc                   |         
    0x00038126 pop {r4, r5, r6, r7, pc}      |         
                                             | label_2:
    0x00038128 mov r5, r1                    |         r5 = r1;
    0x0003812a mov r7, r2                    |         r7 = r2;
    0x0003812c mov r0, r3                    |         r0 = r3;
    0x0003812e movs r4, 0                    |         r4 = 0;
    0x00038130 str r3, [r6, 0x18]            |         *((r6 + 0x18)) = r3;
    0x00038132 bl 0x42fc4                    |         zbx_alarm_on ();
    0x00038136 mov r2, r7                    |         r2 = r7;
    0x00038138 mov r1, r5                    |         r1 = r5;
    0x0003813a strd r4, r4, [sp]             |         __asm ("strd r4, r4, [sp]");
    0x0003813e mov r3, r4                    |         r3 = r4;
    0x00038140 ldr r0, [r6]                  |         r0 = *(r6);
    0x00038142 blx 0xdd38                    |         r0 = fcn_0000dd38 ();
    0x00038146 adds r2, r0, 1                |         r2 = r0 + 1;
    0x00038148 mov r5, r0                    |         r5 = r0;
                                             |         if (r2 == r0) {
    0x0003814a beq 0x38178                   |             goto label_4;
                                             |         }
    0x0003814c mov r5, r4                    |         r5 = r4;
                                             | label_1:
    0x0003814e ldr r3, [r6, 0x18]            |         r3 = *((r6 + 0x18));
    0x00038150 cmp r3, 0                     |         
    0x00038152 beq 0x38122                   |         
                                             |     } while (r3 == 0);
    0x00038154 bl 0x42fd4                    |     zbx_alarm_off ();
    0x00038158 movs r3, 0                    |     r3 = 0;
    0x0003815a mov r0, r5                    |     r0 = r5;
    0x0003815c str r3, [r6, 0x18]            |     *((r6 + 0x18)) = r3;
    0x0003815e add sp, 0xc                   |     
    0x00038160 pop {r4, r5, r6, r7, pc}      |     
                                             | label_3:
    0x00038162 blx 0xe3d4                    |     r0 = fcn_0000e3d4 ();
    0x00038166 ldr r0, [r0]                  |     r0 = *(r0);
    0x00038168 bl 0x31154                    |     r0 = strerror_from_system ()
    0x0003816c mov r1, r0                    |     r1 = r0;
    0x0003816e ldr r0, [pc, 0x20]            |     
    0x00038170 add r0, pc                    |     r0 = 0x70306;
    0x00038172 bl 0x363d0                    |     fcn_000363d0 ();
    0x00038176 b 0x38122                     |     goto label_0;
                                             | label_4:
    0x00038178 blx 0xe3d4                    |     r0 = fcn_0000e3d4 ();
    0x0003817c ldr r0, [r0]                  |     r0 = *(r0);
    0x0003817e bl 0x31154                    |     r0 = strerror_from_system ()
    0x00038182 mov r1, r0                    |     r1 = r0;
    0x00038184 ldr r0, [pc, 0xc]             |     
    0x00038186 add r0, pc                    |     r0 = 0x7031e;
    0x00038188 bl 0x363d0                    |     fcn_000363d0 ();
    0x0003818c b 0x3814e                     |     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 @ 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;
                                                                 |     do {
                                                                 | label_4:
    0x0003767e rsb.w r2, r4, 0x800                               |         r2 = 0x800 - r4;
    0x00037682 add.w r1, fp, r4                                  |         r1 = fp + r4;
    0x00037686 mov r0, r5                                        |         r0 = r5;
    0x00037688 bl 0x364d4                                        |         r0 = fcn_000364d4 (r0, r1, r2);
                                                                 |         if (r0 == 0) {
    0x0003768c cbz r0, 0x376e2                                   |             goto label_30;
                                                                 |         }
                                                                 | label_0:
    0x0003768e adds r1, r0, 1                                    |         r1 = r0 + 1;
                                                                 |         if (r1 == r0) {
    0x00037690 beq.w 0x37832                                     |             goto label_8;
                                                                 |         }
    0x00037694 ldr r3, [r5, 0x1c]                                |         r3 = *((r5 + 0x1c));
    0x00037696 cmp r3, 0                                         |         
                                                                 |         if (r3 != 0) {
    0x00037698 bne 0x37736                                       |             goto label_31;
                                                                 |         }
    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_30;
                                                                 |         }
    0x000376aa cmp r6, 1                                         |         
                                                                 |         if (r6 == 1) {
    0x000376ac beq.w 0x37808                                     |             goto label_32;
                                                                 |         }
    0x000376b0 cmp r6, 2                                         |         
                                                                 |         if (r6 == 2) {
    0x000376b2 beq 0x3776c                                       |             goto label_33;
                                                                 |         }
    0x000376b4 cmp r6, 4                                         |         
    0x000376b6 bne 0x3767e                                       |         
                                                                 |     } while (r6 != 4);
    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_34;
                                                                 |     }
                                                                 | label_2:
    0x000376c2 add.w sl, r6, 8                                   |     sl = r6 + 8;
    0x000376c6 cmp sl, r4                                        |     
                                                                 |     if (sl < r4) {
    0x000376c8 bls.w 0x37850                                     |         goto label_35;
                                                                 |     }
                                                                 | 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_30:
    0x000376e2 cmp r6, 5                                         |     
                                                                 |     if (r6 == 5) {
    0x000376e4 beq.w 0x3786c                                     |         goto label_36;
                                                                 |     }
    0x000376e8 cmp r6, 4                                         |     
                                                                 |     if (r6 != 4) {
    0x000376ea bne.w 0x378e6                                     |         goto label_37;
                                                                 |     }
    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_8;
                                                                 |     }
    0x000376fc ldr r1, [pc, 0x3b4]                               |     
    0x000376fe add r1, pc                                        |     r1 = 0x6f1b6;
                                                                 | label_11:
    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_9:
    0x0003770e ldr r3, [r5, 0x18]                                |         r3 = *((r5 + 0x18));
    0x00037710 cmp r3, 0                                         |         
                                                                 |         if (r3 != 0) {
    0x00037712 bne.w 0x37842                                     |             goto label_38;
                                                                 |         }
                                                                 |     }
                                                                 | label_6:
    0x00037716 mov.w r0, -1                                      |     r0 = -1;
                                                                 | label_12:
    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_39;
                                                                 |     }
    0x00037730 add sp, 0x44                                      |     
    0x00037732 pop.w {r4, r5, r6, r7, r8, sb, sl, fp, pc}        |     
                                                                 | label_31:
    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_5:
    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_40;
                                                                 |     }
    0x00037768 add.w sl, sl, 4                                   |     sl += 4;
                                                                 | label_33:
    0x0003776c add.w r6, sl, 1                                   |     r6 = sl + 1;
    0x00037770 cmp r6, r4                                        |     
                                                                 |     if (r6 > r4) {
    0x00037772 bhi 0x3784c                                       |         goto label_41;
                                                                 |     }
    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_42;
                                                                 |     }
    0x00037780 ldr r2, [sp, 0x20]                                |     r2 = *(arg_20h);
    0x00037782 cmp r3, r2                                        |     
                                                                 |     if (r3 > r2) {
    0x00037784 bhi.w 0x37928                                     |         goto label_42;
                                                                 |     }
    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_34:
    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_7:
    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_43;
                                                                 |     }
    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_44;
                                                                 |     }
    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_21:
    0x000377ec bhs 0x378c0                                       |         goto label_45;
                                                                 |     }
    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_10:
    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_36;
                                                                 |     }
    0x00037804 movs r6, 5                                        |     r6 = 5;
    0x00037806 b 0x3767e                                         |     goto label_4;
                                                                 | label_32:
    0x00037808 cmp r4, 3                                         |     
                                                                 |     if (r4 > 3) {
    0x0003780a bhi 0x37758                                       |         goto label_5;
                                                                 |     }
    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                                     |         goto label_4;
                                                                 |     }
                                                                 | label_14:
    0x0003781e cmp r4, 0                                         |     
                                                                 |     if (r4 == 0) {
    0x00037820 beq.w 0x37950                                     |         goto label_46;
                                                                 |     }
                                                                 | label_40:
    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_47;
                                                                 |     }
                                                                 | label_8:
    0x00037832 ldr r3, [sp, 0x1c]                                |     r3 = *(arg_1ch);
    0x00037834 cmp r3, 0                                         |     
                                                                 |     if (r3 == 0) {
    0x00037836 beq.w 0x37716                                     |         goto label_6;
                                                                 |     }
    0x0003783a ldr r3, [r5, 0x18]                                |     r3 = *((r5 + 0x18));
    0x0003783c cmp r3, 0                                         |     
                                                                 |     if (r3 == 0) {
    0x0003783e beq.w 0x37716                                     |         goto label_6;
                                                                 |     }
                                                                 | label_38:
    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_6;
                                                                 | label_41:
    0x0003784c movs r6, 2                                        |     r6 = 2;
    0x0003784e b 0x3767e                                         |     goto label_4;
                                                                 | label_35:
    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_7;
                                                                 | label_36:
    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_48;
                                                                 |     }
    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_49;
                                                                 |     }
    0x00037888 cmp r3, 2                                         |     
                                                                 |     if (r3 <= 2) {
    0x0003788a ble 0x37832                                       |         goto label_8;
                                                                 |     }
    0x0003788c ldr r1, [pc, 0x234]                               |     
    0x0003788e add r1, pc                                        |     r1 = 0x6f356;
                                                                 | label_13:
    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_6;
                                                                 |     }
    0x000378a6 b 0x3770e                                         |     goto label_9;
                                                                 | label_45:
    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_10;
                                                                 | label_37:
    0x000378e6 cmp r6, 2                                         |     
                                                                 |     if (r6 != 2) {
    0x000378e8 bne 0x37922                                       |         goto label_50;
                                                                 |     }
    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_8;
                                                                 |     }
    0x000378f6 ldr r1, [pc, 0x1d4]                               |     
    0x000378f8 add r1, pc                                        |     r1 = 0x6f3ca;
    0x000378fa b 0x37700                                         |     goto label_11;
                                                                 | label_48:
    0x000378fc ldr r3, [sp, 0x14]                                |     r3 = var_14h;
    0x000378fe lsls r3, r3, 0x1e                                 |     r3 <<= 0x1e;
                                                                 |     if (r3 < r3) {
    0x00037900 bmi 0x3796e                                       |         goto label_51;
                                                                 |     }
    0x00037902 ldr r6, [r5, 0xc]                                 |     r6 = *((r5 + 0xc));
    0x00037904 str r7, [r5, 8]                                   |     *((r5 + 8)) = r7;
                                                                 | label_17:
    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_16:
    0x0003790e ldr r3, [r5, 0x18]                                |         r3 = *((r5 + 0x18));
                                                                 |         if (r3 != 0) {
    0x00037910 cbnz r3, 0x37964                                  |             goto label_52;
                                                                 |         }
                                                                 |     }
                                                                 | label_15:
    0x00037912 ldr r0, [r5, 8]                                   |     r0 = *((r5 + 8));
    0x00037914 add r0, sl                                        |     r0 += sl;
    0x00037916 b 0x3771a                                         |     goto label_12;
                                                                 | label_49:
    0x00037918 cmp r3, 2                                         |     
                                                                 |     if (r3 <= 2) {
    0x0003791a ble 0x37832                                       |         goto label_8;
                                                                 |     }
    0x0003791c ldr r1, [pc, 0x1b0]                               |     
    0x0003791e add r1, pc                                        |     r1 = 0x6f3f2;
    0x00037920 b 0x37890                                         |     goto label_13;
                                                                 | label_50:
    0x00037922 cmp r6, 3                                         |     
                                                                 |     if (r6 != 3) {
    0x00037924 bne.w 0x3781e                                     |         goto label_14;
                                                                 |     }
                                                                 | label_42:
    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_8;
                                                                 |     }
    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_6;
                                                                 |     }
    0x0003794e b 0x3770e                                         |     goto label_9;
                                                                 | label_46:
    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_15;
                                                                 |     }
    0x0003795c b 0x3790e                                         |     goto label_16;
                                                                 | label_47:
    0x0003795e ldr r1, [pc, 0x178]                               |     
    0x00037960 add r1, pc                                        |     r1 = 0x6f43e;
    0x00037962 b 0x37700                                         |     goto label_11;
                                                                 | label_52:
    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_15;
                                                                 | label_51:
    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_53;
                                                                 |     }
    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_8;
                                                                 |     }
    0x000379b8 ldr r3, [r5, 0x1c]                                |     r3 = *((r5 + 0x1c));
    0x000379ba cmp r3, 1                                         |     
                                                                 |     if (r3 == 1) {
    0x000379bc beq 0x37a92                                       |         goto label_54;
                                                                 |     }
                                                                 | label_18:
    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_17;
                                                                 |     }
    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_17;
                                                                 | label_43:
    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_8;
                                                                 |     }
    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_9;
                                                                 |     }
    0x00037a44 b 0x37716                                         |     goto label_6;
                                                                 | label_44:
    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_8;
                                                                 |     }
    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_9;
                                                                 |     }
    0x00037a78 b 0x37716                                         |     goto label_6;
                                                                 |     if (r6 != 0) {
                                                                 | label_53:
    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_8;
                                                                 | label_54:
    0x00037a92 ldr r0, [r5, 0xc]                                 |     r0 = *((r5 + 0xc));
    0x00037a94 cmp r0, 0                                         |     
                                                                 |     if (r0 == 0) {
    0x00037a96 beq 0x379be                                       |         goto label_18;
                                                                 |     }
    0x00037a98 blx 0xde30                                        |     fcn_0000de30 ();
    0x00037a9c b 0x379be                                         |     goto label_18;
                                                                 | label_39:
    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_55;
    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_56;
                                                                 |     }
    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_57;
                                                                 |         }
    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_58;
                                                                 |         }
                                                                 |         if (r4 == 0) {
                                                                 | label_19:
    0x00037eac cbz r4, 0x37eb6                                   |             goto label_56;
                                                                 |         }
    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_56:
    0x00037eb6 movs r0, 0                                        |     r0 = 0;
                                                                 | label_20:
    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_59;
                                                                 |     }
    0x00037ece addw sp, sp, 0x808                                |     __asm ("addw sp, sp, 0x808");
    0x00037ed2 pop.w {r4, r5, r6, r7, r8, pc}                    |     
                                                                 | label_57:
    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_19;
                                                                 |     }
    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_19;
                                                                 |     }
    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_60;
                                                                 | label_58:
    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_60:
    0x00037f0c mov.w r0, -1                                      |     r0 = -1;
    0x00037f10 str.w r3, [r8]                                    |     __asm ("str.w r3, [r8]");
    0x00037f14 b 0x37eb8                                         |     goto label_20;
                                                                 | label_59:
    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_21;
                                                                 | label_55:
    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_61;
                                                                 |         }
                                                                 | label_22:
    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_62;
                                                                 |         }
                                                                 | label_23:
    0x000381de cmp.w r5, 0x800                                   |         
    0x000381e2 add.w r7, r5, 1                                   |         r7 = r5 + 1;
                                                                 |         if (r5 >= 0x800) {
    0x000381e6 bhs 0x38272                                       |             goto label_63;
                                                                 |         }
                                                                 | label_24:
    0x000381e8 add.w r0, r4, 0x428                               |         r0 = r4 + 0x428;
    0x000381ec movs r3, 0                                        |         r3 = 0;
    0x000381ee str r3, [r4, 0x1c]                                |         *((r4 + 0x1c)) = r3;
                                                                 | label_25:
    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_26:
    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_29:
    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_64;
                                                                 |         }
    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_22;
                                                                 |     }
                                                                 | label_61:
    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_28:
    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_65;
                                                                 |     }
    0x0003825c ldr r3, [r4, 0x18]                                |     r3 = *((r4 + 0x18));
    0x0003825e cmp r3, 0                                         |     
                                                                 |     if (r3 == 0) {
    0x00038260 beq 0x381de                                       |         goto label_23;
                                                                 |     }
    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_24;
                                                                 |     }
                                                                 | label_63:
    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_25;
                                                                 | label_62:
    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_27:
    0x0003829c mov.w r0, -1                                      |         r0 = -1;
    0x000382a0 b 0x38204                                         |         goto label_26;
                                                                 | label_65:
    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_27;
                                                                 | label_64:
    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_66;
                                                                 |     }
    0x000382d6 movs r1, r0                                       |     r1 = r0;
                                                                 |     if (r1 < r0) {
    0x000382d8 bls 0x38240                                       |         goto label_28;
                                                                 |     }
    0x000382da movs r1, r0                                       |     r1 = r0;
                                                                 |     if (r1 < r0) {
    0x000382dc bls 0x38210                                       |         goto label_29;
                                                                 |     }
    0x000382de movs r1, r0                                       |     r1 = r0;
                                                                 | label_66:
    0x00038300 movs r0, 0xe                                      |     r0 = 0xe;
    0x00038302 mov r3, ip                                        |     r3 = ip;
    0x00038304 add.w lr, lr, 1                                   |     lr++;
                                                                 | }

[*] Function system used 28 times zabbix_agentd