[*] Binary protection state of libnetsnmpagent.so.40.1.0

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


[*] Function popen tear down of libnetsnmpagent.so.40.1.0

    ; assembly                                                   | /* r2dec pseudo code output */
                                                                 | /* /logs/firmware/patool_extraction/rootfs.img_unblob_extracted/rootfs.img_extract/0-50593792.squashfs_v4_le_extract/usr/lib/libnetsnmpagent.so.40.1.0 @ 0x21168 */
                                                                 | #include <stdint.h>
                                                                 |  
                                                                 | #define BIT_MASK(t,v) ((t)(-((v)!= 0)))&(((t)-1)>>((sizeof(t)*CHAR_BIT)-(v)))
                                                                 |  
    ; (fcn) sym.vacm_create_simple ()                            | void vacm_create_simple (int16_t arg_154h, int16_t arg_1c8h, int16_t arg_308h, int16_t arg_3e8h, int16_t arg_b53h, int16_t arg_b54h, int16_t arg_b56h, int16_t arg_1540h, int16_t arg_1f40h, int16_t arg_2940h, int16_t arg_3d40h, int16_t arg_4700h, int16_t arg_5100h, int16_t arg_5b00h, int16_t arg1, int16_t arg2, int16_t arg3, int16_t arg4) {
                                                                 |     int16_t var_0h_2;
                                                                 |     int16_t var_4h_3;
                                                                 |     int16_t var_8h_2;
                                                                 |     int16_t var_ch_3;
                                                                 |     int16_t var_10h;
                                                                 |     int16_t var_14h;
                                                                 |     int16_t var_18h_2;
                                                                 |     int16_t var_1ch_2;
                                                                 |     int16_t var_28h;
                                                                 |     int16_t var_2ch;
                                                                 |     int16_t var_30h;
                                                                 |     int16_t var_34h;
                                                                 |     int16_t var_38h;
                                                                 |     int16_t var_3ch;
                                                                 |     int16_t var_40h;
                                                                 |     int16_t var_44h;
                                                                 |     int16_t var_48h;
                                                                 |     int16_t var_4ch;
                                                                 |     int16_t var_58h;
                                                                 |     r0 = arg1;
                                                                 |     r1 = arg2;
                                                                 |     r2 = arg3;
                                                                 |     r3 = arg4;
    0x00021168 svcmi 0xf0e92d                                    |     __asm ("svcmi 0xf0e92d");
    0x0002116c mov r4, r2                                        |     r4 = r2;
    0x0002116e ldr.w r2, [pc, 0x660]                             |     
    0x00021172 mov r5, r3                                        |     r5 = r3;
    0x00021174 sub.w sp, sp, 0x5b00                              |     
    0x00021178 mov sb, r1                                        |     sb = r1;
    0x0002117a ldr.w r3, [pc, 0x658]                             |     r3 = *(0x217d6);
    0x0002117e sub sp, 0x5c                                      |     
    0x00021180 add r2, pc                                        |     r2 = 0x42956;
    0x00021182 str r0, [sp, 0x44]                                |     var_44h = r0;
    0x00021184 add.w r1, sp, 0x5b00                              |     r1 += arg_5b00h;
    0x00021188 add.w r0, sp, 0x2940                              |     r0 += arg_2940h;
    0x0002118c ldr r3, [r2, r3]                                  |     
    0x0002118e add.w r6, sp, 0x5100                              |     r6 += arg_5100h;
    0x00021192 adds r0, 0x18                                     |     r0 += 0x18;
    0x00021194 adds r6, 0x54                                     |     r6 += 0x54;
    0x00021196 add.w fp, sp, 0x3340                              |     
    0x00021198 ldrh r5, [r1, r5]                                 |     r5 = *((r1 + r5));
    0x0002119a adds r1, 0x54                                     |     r1 += 0x54;
    0x0002119c ldr r3, [r3]                                      |     r3 = *(0x42956);
    0x0002119e str r3, [r1]                                      |     *(r1) = r3;
    0x000211a0 mov.w r3, 0                                       |     r3 = 0;
    0x000211a4 ldr.w r3, [pc, 0x630]                             |     
    0x000211a8 movs r1, 0                                        |     r1 = 0;
    0x000211aa str r0, [sp, 0x28]                                |     var_28h = r0;
    0x000211ac add.w fp, fp, 0x14                                |     
    0x000211b0 add.w r8, sp, 0x3d40                              |     r8 += arg_3d40h;
    0x000211b4 add r3, pc                                        |     r3 = 0x42990;
    0x000211b6 mov.w r2, 0xa00                                   |     r2 = 0xa00;
    0x000211ba str r3, [sp, 0x40]                                |     var_40h = r3;
    0x000211bc movw r3, 0x6e61                                   |     
    0x000211c0 movt r3, 0x79                                     |     r3 = 0x796e61;
    0x000211c4 add.w r8, r8, 0x14                                |     r8 += 0x14;
    0x000211c8 str r3, [r0, -0x4]                                |     *((r0 - 0x4)) = r3;
    0x000211cc mov r0, r6                                        |     r0 = r6;
    0x000211ce blx 0xdf80                                        |     snmp_add ();
    0x000211d2 mov.w r2, 0xa00                                   |     r2 = 0xa00;
    0x000211d6 movs r1, 0                                        |     r1 = 0;
    0x000211d8 mov r0, fp                                        |     r0 = fp;
    0x000211da add r7, sp, 0x58                                  |     r7 += var_58h;
    0x000211dc blx 0xdf80                                        |     snmp_add ();
    0x000211e0 mov.w r2, 0xa00                                   |     r2 = 0xa00;
    0x000211e4 movs r1, 0                                        |     r1 = 0;
    0x000211e6 mov r0, r8                                        |     r0 = r8;
    0x000211e8 blx 0xdf80                                        |     snmp_add ();
    0x000211ec mov r0, sb                                        |     r0 = sb;
    0x000211ee sub.w sb, r7, 4                                   |     sb = r7 - 4;
    0x000211f2 mov r1, sb                                        |     r1 = sb;
    0x000211f4 mov.w r2, 0x100                                   |     r2 = 0x100;
    0x000211f8 blx 0xd9f8                                        |     fcn_0000d9f8 ();
    0x000211fc cmp r4, 1                                         |     
    0x000211fe ldrh r1, [r7, -0x4]                               |     r1 = *((r7 - 0x4));
    0x00021202 mov r3, r0                                        |     r3 = r0;
                                                                 |     if (r4 == 1) {
    0x00021204 beq.w 0x2161c                                     |         goto label_14;
                                                                 |     }
    0x00021208 movw r2, 0x762d                                   |     r2 = 0x762d;
    0x0002120c cmp r1, r2                                        |     
    0x0002120e beq.w 0x2146c                                     |     
                                                                 |     while (r2 != 0) {
    0x00021212 movs r2, 3                                        |         r2 = 3;
    0x00021214 str r2, [sp, 0x34]                                |         var_34h = r2;
                                                                 |         if (r3 != 0) {
                                                                 | label_0:
    0x00021216 cbz r3, 0x21220                                   |             
    0x00021218 ldrb r2, [r3]                                     |             r2 = *(r3);
    0x0002121a cmp r2, 0                                         |             
                                                                 |             if (r2 != 0) {
    0x0002121c bne.w 0x21744                                     |                 goto label_15;
                                                                 |             }
                                                                 |         }
    0x00021220 ldr.w r1, [pc, 0x5b8]                             |         r1 = *(0x000217dc);
    0x00021224 add.w r2, sp, 0x1f40                              |         r2 += arg_1f40h;
    0x00021228 adds r2, 0x14                                     |         r2 += 0x14;
    0x0002122a add r1, pc                                        |         r1 += pc;
    0x0002122c ldm r1, {r0, r1}                                  |         r0 = *(r1);
                                                                 |         r1 = *((r1 + 4));
    0x0002122e stm.w r2, {r0, r1}                                |         *(r2) = r0;
                                                                 |         *((r2 + 4)) = r1;
                                                                 | label_9:
    0x00021232 ldr.w r2, [pc, 0x5ac]                             |         r2 = *(0x000217e0);
    0x00021236 add.w r7, sp, 0x4700                              |         r7 += arg_4700h;
    0x0002123a adds r7, 0x58                                     |         r7 += 0x58;
    0x0002123c str r7, [sp, 0x2c]                                |         var_2ch = r7;
    0x0002123e add r2, pc                                        |         r2 += pc;
    0x00021240 ldm.w r2, {r0, r1}                                |         r0 = *(r2);
                                                                 |         r1 = *((r2 + 4));
    0x00021244 strh r1, [r7]                                     |         *(r7) = r1;
    0x00021246 lsrs r1, r1, 0x10                                 |         r1 >>= 0x10;
    0x00021248 str r0, [r7, -0x4]                                |         *((r7 - 0x4)) = r0;
    0x0002124c strb r1, [r7, 2]                                  |         *((r7 + 2)) = r1;
                                                                 | label_5:
    0x0002124e cmp r3, 0                                         |         
                                                                 |         if (r3 == 0) {
    0x00021250 beq.w 0x214ec                                     |             goto label_16;
                                                                 |         }
    0x00021254 ldrb r2, [r3]                                     |         r2 = *(r3);
    0x00021256 cmp r2, 0                                         |         
                                                                 |         if (r2 == 0) {
    0x00021258 beq.w 0x214ec                                     |             goto label_16;
                                                                 |         }
    0x0002125c cmp r2, 0x2d                                      |         
                                                                 |         if (r2 != 0x2d) {
    0x0002125e bne.w 0x21728                                     |             goto label_17;
                                                                 |         }
    0x00021262 ldrb r2, [r3, 1]                                  |         r2 = *((r3 + 1));
    0x00021264 cmp r2, 0x56                                      |         
                                                                 |         if (r2 != 0x56) {
    0x00021266 bne.w 0x21728                                     |             goto label_17;
                                                                 |         }
    0x0002126a ldrb r2, [r3, 2]                                  |         r2 = *((r3 + 2));
    0x0002126c subs r2, 0x20                                     |         r2 -= 0x20;
                                                                 |         if (r2 != 0x20) {
    0x0002126e bne.w 0x21728                                     |             goto label_17;
                                                                 |         }
    0x00021270 strh r3, [r3, 0x12]                               |         *((r3 + 0x12)) = r3;
    0x00021272 add.w r7, sp, 0x1540                              |         r7 += arg_1540h;
    0x00021276 mov r0, r3                                        |         r0 = r3;
    0x00021278 adds r7, 0x18                                     |         r7 += 0x18;
    0x0002127a str r2, [sp, 0x30]                                |         var_30h = r2;
    0x0002127c blx 0xe06c                                        |         fcn_0000e06c ();
    0x00021280 mov.w r2, 0xa00                                   |         r2 = 0xa00;
    0x00021284 subs r1, r7, 4                                    |         r1 = r7 - 4;
    0x00021286 blx 0xd9f8                                        |         r0 = fcn_0000d9f8 ();
    0x0002128a mov r3, r0                                        |         r3 = r0;
                                                                 |         if (r3 != 0) {
                                                                 | label_1:
    0x0002128c cbz r3, 0x21296                                   |             
    0x0002128e ldrb r2, [r3]                                     |             r2 = *(r3);
    0x00021290 cmp r2, 0                                         |             
                                                                 |             if (r2 != 0) {
    0x00021292 bne.w 0x216fc                                     |                 goto label_18;
                                                                 |             }
                                                                 |         }
    0x00021296 movs r3, 1                                        |         r3 = 1;
    0x00021298 str r3, [sp, 0x38]                                |         var_38h = r3;
                                                                 | label_8:
    0x0002129a lsls r3, r5, 0x1e                                 |         r3 = r5 << 0x1e;
    0x0002129c itt mi                                            |         
                                                                 |         if (r3 >= r5) {
    0x0002129e submi r3, r7, 4                                   |             r3 = r7 - 4;
                                                                 |         }
                                                                 |         if (r3 >= r5) {
    0x000212a0 strmi r3, [sp, 0x48]                              |             var_48h = r3;
                                                                 |         }
                                                                 |         if (r3 >= r5) {
    0x000212a2 bmi 0x212ac                                       |             
    0x000212a4 ldr.w r3, [pc, 0x53c]                             |             
    0x000212a8 add r3, pc                                        |             r3 = 0x42a90;
    0x000212aa str r3, [sp, 0x48]                                |             var_48h = r3;
                                                                 |         }
    0x000212ac ldr.w r2, [pc, 0x538]                             |         r2 = *(0x000217e8);
    0x000212b0 cmp r4, 5                                         |         
    0x000212b2 it ne                                             |         
                                                                 |         if (r4 != 5) {
    0x000212b4 cmpne r4, 2                                       |             __asm ("cmpne r4, 2");
                                                                 |         }
    0x000212b6 sub.w r3, r4, 2                                   |         r3 = r4 - 2;
    0x000212ba ite eq                                            |         
                                                                 |         if (r4 != 5) {
    0x000212bc moveq sl, 1                                       |             sl = 1;
                                                                 |         }
                                                                 |         if (r4 != 5) {
    0x000212c0 mov.w sl, 0                                       |             sl = 0;
                                                                 |         }
    0x000212c4 cmp r3, 1                                         |         
    0x000212c6 add r2, pc                                        |         r2 += pc;
    0x000212c8 bic r1, r3, 2                                     |         r1 = BIT_MASK (r3, 2);
    0x000212cc ldr r0, [r2]                                      |         r0 = *(r2);
    0x000212ce str r1, [sp, 0x3c]                                |         var_3ch = r1;
    0x000212d0 add.w r0, r0, 1                                   |         r0++;
    0x000212d4 str r0, [r2]                                      |         *(r2) = r0;
                                                                 |         if (r3 < 1) {
    0x000212d6 bls.w 0x2159e                                     |             goto label_19;
                                                                 |         }
    0x000212da add.w r2, sp, 0x1f40                              |         r2 += arg_1f40h;
    0x000212de adds r2, 0x14                                     |         r2 += 0x14;
    0x000212e0 cmp.w sl, 0                                       |         
                                                                 |         if (sl != 0) {
    0x000212e4 beq 0x21322                                       |             
                                                                 | label_3:
    0x000212e6 ldrb r3, [r6]                                     |             r3 = *(r6);
    0x000212e8 cmp r3, 0                                         |             
                                                                 |             if (r3 == 0) {
    0x000212ea beq.w 0x216d4                                     |                 goto label_20;
                                                                 |             }
    0x000212ee ldr.w r3, [pc, 0x4fc]                             |             r3 = *(0x000217ec);
    0x000212f2 add.w sl, sp, 0x154                               |             sl += arg_154h;
    0x000212f6 strd r2, sb, [sp, 0xc]                            |             __asm ("strd r2, sb, [sp, 0xc]");
    0x000212fa mov r0, sl                                        |             r0 = sl;
    0x000212fc movs r2, 1                                        |             r2 = 1;
    0x000212fe strd r6, fp, [sp, 4]                              |             __asm ("strd r6, fp, [sp, 4]");
    0x00021302 add r3, pc                                        |             r3 += pc;
    0x00021304 str r3, [sp]                                      |             *(sp) = r3;
    0x00021306 mov.w r3, 0xa00                                   |             r3 = 0xa00;
    0x0002130a mov r1, r3                                        |             r1 = r3;
    0x0002130c blx 0xe9b4                                        |             fcn_0000e9b4 ();
                                                                 | label_6:
    0x00021310 ldr.w r0, [pc, 0x4dc]                             |             
    0x00021314 movs r2, 0                                        |             r2 = 0;
    0x00021316 mov r1, sl                                        |             r1 = sl;
    0x00021318 strb.w r2, [sp, 0xb53]                            |             *(arg_b53h) = r2;
    0x0002131c add r0, pc                                        |             r0 = 0x42b10;
    0x0002131e blx 0xcdac                                        |             fcn_0000cdac ();
                                                                 |         }
    0x00021322 ldr r3, [sp, 0x3c]                                |         r3 = var_3ch;
                                                                 |         if (r3 == 0) {
    0x00021324 cbnz r3, 0x21360                                  |             
    0x00021326 ldr r3, [sp, 0x34]                                |             r3 = var_34h;
    0x00021328 mov.w r2, 0xa00                                   |             r2 = 0xa00;
    0x0002132c str.w fp, [sp, 4]                                 |             __asm ("str.w fp, [var_4h_3]");
    0x00021330 mov r1, sb                                        |             r1 = sb;
    0x00021332 strd r3, r6, [sp, 0x14]                           |             __asm ("strd r3, r6, [sp, 0x14]");
    0x00021336 ldr r3, [sp, 0x30]                                |             r3 = var_30h;
    0x00021338 str r3, [sp, 0xc]                                 |             var_ch_3 = r3;
    0x0002133a ldr.w r3, [pc, 0x4b8]                             |             r3 = *(0x000217f4);
    0x0002133e add r3, pc                                        |             r3 += pc;
    0x00021340 ldr r0, [r3]                                      |             r0 = *(r3);
    0x00021342 str r2, [sp, 0x10]                                |             var_10h = r2;
    0x00021344 str r2, [sp, 8]                                   |             var_8h_2 = r2;
    0x00021346 ldr.w r3, [pc, 0x4b0]                             |             
    0x0002134a ldr r2, [sp, 0x40]                                |             r2 = var_40h;
    0x0002134c ldr r3, [r2, r3]                                  |             r3 = *((r2 + r3));
    0x0002134e add.w r2, sp, 0x1f40                              |             r2 += arg_1f40h;
    0x00021352 adds r2, 0x14                                     |             r2 += 0x14;
    0x00021354 str r3, [sp]                                      |             *(sp) = r3;
    0x00021356 ldr.w r3, [pc, 0x4a4]                             |             r3 = *(0x000217fc);
    0x0002135a add r3, pc                                        |             r3 = 0x42b58;
    0x0002135c blx 0xd828                                        |             fcn_0000d828 ();
                                                                 |         }
    0x00021360 cmp r4, 1                                         |         
                                                                 |         if (r4 != 1) {
    0x00021362 bne.w 0x215d8                                     |             goto label_21;
                                                                 |         }
    0x00021366 ldr r3, [sp, 0x30]                                |         r3 = var_30h;
                                                                 |         if (r3 != 0) {
    0x00021368 cbz r3, 0x21386                                   |             
    0x0002136a ldr.w r3, [pc, 0x494]                             |             r3 = *(0x00021800);
    0x0002136e mov r1, r4                                        |             r1 = r4;
    0x00021370 mov.w r2, 0xa00                                   |             r2 = 0xa00;
    0x00021374 subs r0, r7, 4                                    |             r0 = r7 - 4;
    0x00021376 add r3, pc                                        |             r3 += pc;
    0x00021378 ldr r3, [r3]                                      |             r3 = *(r3);
    0x0002137a str r3, [sp]                                      |             *(sp) = r3;
    0x0002137c ldr.w r3, [pc, 0x484]                             |             
    0x00021380 add r3, pc                                        |             r3 = 0x42b88;
    0x00021382 blx 0xdee8                                        |             fcn_0000dee8 ();
                                                                 |         }
    0x00021386 ldr.w r1, [pc, 0x480]                             |         
    0x0002138a ldr r0, [sp, 0x44]                                |         r0 = var_44h;
    0x0002138c add r1, pc                                        |         r1 = 0x42b9a;
    0x0002138e blx 0xcea4                                        |         fcn_0000cea4 ();
    0x00021392 mov r1, sb                                        |         r1 = sb;
    0x00021394 mov.w r2, 0xa00                                   |         r2 = 0xa00;
    0x00021398 cmp r0, 0                                         |         
                                                                 |         if (r0 != 0) {
    0x0002139a bne.w 0x2165a                                     |             goto label_22;
                                                                 |         }
    0x0002139e mov r0, r8                                        |         r0 = r8;
    0x000213a0 blx 0xe02c                                        |         fcn_0000e02c ();
                                                                 | label_4:
    0x000213a4 ldr r3, [sp, 0x30]                                |         r3 = var_30h;
                                                                 |         if (r3 != 0) {
    0x000213a6 cbz r3, 0x213de                                   |             
    0x000213a8 ldr.w r3, [pc, 0x460]                             |             r3 = *(0x0002180c);
    0x000213ac addw r2, sp, 0xb54                                |             __asm ("addw r2, arg_b54h");
    0x000213b0 add.w sb, sp, 0x154                               |             sb += arg_154h;
    0x000213b4 str r2, [sp, 8]                                   |             var_8h_2 = r2;
    0x000213b6 subs r2, r7, 4                                    |             r2 = r7 - 4;
    0x000213b8 mov r0, sb                                        |             r0 = sb;
    0x000213ba add r3, pc                                        |             r3 += pc;
    0x000213bc str r2, [sp, 4]                                   |             var_4h_3 = r2;
    0x000213be str r3, [sp]                                      |             *(sp) = r3;
    0x000213c0 mov.w r3, 0xa00                                   |             r3 = 0xa00;
    0x000213c4 mov r1, r3                                        |             r1 = r3;
    0x000213c6 movs r2, 1                                        |             r2 = 1;
    0x000213c8 blx 0xe9b4                                        |             fcn_0000e9b4 ();
    0x000213cc ldr.w r0, [pc, 0x440]                             |             
    0x000213d0 movs r3, 0                                        |             r3 = 0;
    0x000213d2 mov r1, sb                                        |             r1 = sb;
    0x000213d4 strb.w r3, [sb, 0x9ff]                            |             *((sb + 0x9ff)) = r3;
    0x000213d8 add r0, pc                                        |             r0 = 0x42bec;
    0x000213da blx 0xcf48                                        |             fcn_0000cf48 ();
                                                                 |         }
    0x000213de bic r3, r5, 2                                     |         r3 = BIT_MASK (r5, 2);
    0x000213e2 cmp r3, 1                                         |         
                                                                 |         if (r3 != 1) {
    0x000213e4 bne.w 0x21516                                     |             goto label_23;
                                                                 |         }
    0x000213e8 ldrb r3, [r6]                                     |         r3 = *(r6);
                                                                 |         if (r3 == 0) {
    0x000213ea cbnz r3, 0x213f2                                  |             
    0x000213ec ldr.w r6, [pc, 0x424]                             |             
    0x000213f0 add r6, pc                                        |             r6 = 0x42c08;
                                                                 |         }
    0x000213f2 ldr r3, [sp, 0x38]                                |         r3 = var_38h;
    0x000213f4 cmp r3, 0                                         |         
                                                                 |         if (r3 != 0) {
    0x000213f6 bne.w 0x216f6                                     |             goto label_24;
                                                                 |         }
    0x000213fa ldr.w r3, [pc, 0x41c]                             |         r3 = *(0x00021818);
    0x000213fe add r3, pc                                        |         r3 += pc;
                                                                 | label_7:
    0x00021400 ldr r2, [sp, 0x28]                                |         r2 = var_28h;
    0x00021402 add r4, sp, 0x154                                 |         r4 += arg_154h;
    0x00021404 str r3, [sp, 0x14]                                |         var_14h = r3;
    0x00021406 subs r7, 4                                        |         r7 -= 4;
    0x00021408 ldr r3, [sp, 0x2c]                                |         r3 = var_2ch;
    0x0002140a ldr.w r0, [pc, 0x410]                             |         r0 = *(0x0002181c);
    0x0002140e subs r1, r2, 4                                    |         r1 = r2 - 4;
    0x00021410 ldr r2, [sp, 0x48]                                |         r2 = var_48h;
    0x00021412 subs r3, 4                                        |         r3 -= 4;
    0x00021414 str r1, [sp, 0xc]                                 |         var_ch_3 = r1;
    0x00021416 add r0, pc                                        |         r0 += pc;
    0x00021418 str r3, [sp, 0x10]                                |         var_10h = r3;
    0x0002141a mov.w r3, 0xa00                                   |         r3 = 0xa00;
    0x0002141e strd r2, r2, [sp, 0x1c]                           |         __asm ("strd r2, r2, [sp, 0x1c]");
    0x00021422 mov r1, r3                                        |         r1 = r3;
    0x00021424 movs r2, 1                                        |         r2 = 1;
    0x00021426 str r0, [sp]                                      |         *(sp) = r0;
    0x00021428 mov r0, r4                                        |         r0 = r4;
    0x0002142a str r6, [sp, 8]                                   |         var_8h_2 = r6;
    0x0002142c str r7, [sp, 0x18]                                |         var_18h_2 = r7;
    0x0002142e str.w r8, [sp, 4]                                 |         __asm ("str.w r8, [var_4h_3]");
    0x00021432 blx 0xe9b4                                        |         fcn_0000e9b4 ();
    0x00021436 ldr r0, [pc, 0x3e8]                               |         
    0x00021438 movs r2, 0                                        |         r2 = 0;
    0x0002143a mov r1, r4                                        |         r1 = r4;
    0x0002143c strb.w r2, [r4, 0x9ff]                            |         *((r4 + 0x9ff)) = r2;
    0x00021440 add r0, pc                                        |         r0 = 0x42c66;
    0x00021442 blx 0xe56c                                        |         fcn_0000e56c ();
                                                                 | label_2:
    0x00021446 ldr r2, [pc, 0x3dc]                               |         
    0x00021448 add.w r1, sp, 0x5b00                              |         r1 += arg_5b00h;
    0x0002144c ldr r3, [pc, 0x384]                               |         r3 = *(0x217d4);
    0x0002144e adds r1, 0x54                                     |         r1 += 0x54;
    0x00021450 add r2, pc                                        |         r2 = 0x42c7a;
    0x00021452 ldr r3, [r2, r3]                                  |         r3 = *(0x42c7a);
    0x00021454 ldr r2, [r3]                                      |         r2 = *(0x42c7a);
    0x00021456 ldr r3, [r1]                                      |         r3 = *(r1);
    0x00021458 eors r2, r3                                       |         r2 ^= r3;
    0x0002145a mov.w r3, 0                                       |         r3 = 0;
                                                                 |         if (r2 != r3) {
    0x0002145e bne.w 0x217cc                                     |             goto label_25;
                                                                 |         }
    0x00021462 add.w sp, sp, 0x5b00                              |         
    0x00021466 add sp, 0x5c                                      |         
    0x00021468 pop.w {r4, r5, r6, r7, r8, sb, sl, fp, pc}        |         
    0x0002146c ldrb.w r2, [sb, 2]                                |         r2 = *((sb + 2));
    0x00021470 cmp r2, 0                                         |         
    0x00021472 bne.w 0x21212                                     |         
                                                                 |     }
    0x00021476 cmp r0, 0                                         |     
                                                                 |     if (r0 == 0) {
    0x00021478 beq.w 0x21780                                     |         goto label_26;
                                                                 |     }
    0x0002147c ldr r3, [sp, 0x28]                                |     r3 = var_28h;
    0x0002147e mov.w r2, 0xa00                                   |     r2 = 0xa00;
    0x00021482 sub.w sl, r3, 4                                   |     sl = r3 - 4;
    0x00021486 mov r1, sl                                        |     r1 = sl;
    0x00021488 blx 0xd9f8                                        |     r0 = fcn_0000d9f8 ();
    0x0002148c mov r7, r0                                        |     r7 = r0;
    0x0002148e cmp r0, 0                                         |     
                                                                 |     if (r0 == 0) {
    0x00021490 beq.w 0x21780                                     |         goto label_26;
                                                                 |     }
    0x00021494 ldr r1, [pc, 0x390]                               |     
    0x00021496 mov r0, sl                                        |     r0 = sl;
    0x00021498 add r1, pc                                        |     r1 = 0x42cc4;
    0x0002149a blx 0xd68c                                        |     r0 = fcn_0000d68c ();
    0x0002149e cmp r0, 0                                         |     
                                                                 |     if (r0 == 0) {
    0x000214a0 beq.w 0x217b8                                     |         goto label_27;
                                                                 |     }
                                                                 | label_13:
    0x000214a4 ldr r1, [pc, 0x384]                               |     
    0x000214a6 mov r0, sl                                        |     r0 = sl;
    0x000214a8 add r1, pc                                        |     r1 = 0x42cd8;
    0x000214aa blx 0xd68c                                        |     fcn_0000d68c ();
    0x000214ae ldr r1, [pc, 0x380]                               |     
    0x000214b0 cmp r0, 0                                         |     
    0x000214b2 ite ne                                            |     
                                                                 |     if (r0 == 0) {
    0x000214b4 movne r3, 3                                       |         r3 = 3;
                                                                 |     }
                                                                 |     if (r0 != 0) {
    0x000214b6 moveq r3, 1                                       |         r3 = 1;
                                                                 |     }
    0x000214b8 mov r0, sl                                        |     r0 = sl;
    0x000214ba str r3, [sp, 0x34]                                |     var_34h = r3;
    0x000214bc add r1, pc                                        |     r1 = 0x42cf2;
    0x000214be blx 0xd68c                                        |     r0 = fcn_0000d68c ();
    0x000214c2 cmp r0, 0                                         |     
                                                                 |     if (r0 == 0) {
    0x000214c4 beq.w 0x217a8                                     |         goto label_28;
                                                                 |     }
                                                                 | label_12:
    0x000214c8 ldr r1, [pc, 0x368]                               |     
    0x000214ca mov r0, sl                                        |     r0 = sl;
    0x000214cc add r1, pc                                        |     r1 = 0x42d04;
    0x000214ce blx 0xd68c                                        |     fcn_0000d68c ();
    0x000214d2 ldr r3, [sp, 0x34]                                |     r3 = var_34h;
    0x000214d4 cmp r0, 0                                         |     
    0x000214d6 it eq                                             |     
                                                                 |     if (r0 != 0) {
    0x000214d8 moveq r3, 2                                       |         r3 = 2;
                                                                 |     }
    0x000214da mov r0, r7                                        |     r0 = r7;
    0x000214dc mov.w r2, 0x100                                   |     r2 = 0x100;
    0x000214e0 mov r1, sb                                        |     r1 = sb;
    0x000214e2 str r3, [sp, 0x34]                                |     var_34h = r3;
    0x000214e4 blx 0xd9f8                                        |     r0 = fcn_0000d9f8 ();
    0x000214e8 mov r3, r0                                        |     r3 = r0;
    0x000214ea b 0x21216                                         |     goto label_0;
                                                                 | label_16:
    0x000214ec ldr r2, [pc, 0x348]                               |     
    0x000214ee movs r0, 0                                        |     r0 = 0;
    0x000214f0 str r0, [sp, 0x30]                                |     var_30h = r0;
    0x000214f2 add.w r7, sp, 0x1540                              |     r7 += arg_1540h;
    0x000214f6 adds r7, 0x18                                     |     r7 += 0x18;
    0x000214f8 add r2, pc                                        |     r2 = 0x42d34;
    0x000214fa ldr r1, [r2]                                      |     r1 = *(0x42d34);
    0x000214fc ldr r2, [pc, 0x33c]                               |     
    0x000214fe strh.w r1, [sp, 0xb54]                            |     *(arg_b54h) = r1;
    0x00021502 lsrs r1, r1, 0x10                                 |     r1 >>= 0x10;
    0x00021504 add r2, pc                                        |     r2 = 0x42d44;
    0x00021506 strb.w r1, [sp, 0xb56]                            |     *(arg_b56h) = r1;
    0x0002150a ldm.w r2, {r0, r1}                                |     r0 = *(r2);
                                                                 |     r1 = *((r2 + 4));
    0x0002150e str r0, [r7, -0x4]                                |     *((r7 - 0x4)) = r0;
    0x00021512 strh r1, [r7]                                     |     *(r7) = r1;
    0x00021514 b 0x2128c                                         |     goto label_1;
                                                                 | label_23:
    0x00021516 ldr.w sl, [pc, 0x328]                             |     
    0x0002151a movs r4, 0                                        |     r4 = 0;
    0x0002151c ldr r3, [pc, 0x324]                               |     
    0x0002151e add.w sb, sp, 0x154                               |     sb += arg_154h;
    0x00021522 ldr.w fp, [pc, 0x324]                             |     
    0x00021526 ldr r2, [sp, 0x38]                                |     r2 = var_38h;
    0x00021528 add sl, pc                                        |     sl = 0x42d6e;
    0x0002152a add r3, pc                                        |     r3 = 0x42d72;
    0x0002152c add fp, pc                                        |     fp = 0x42d7a;
    0x0002152e cmp r2, 0                                         |     
    0x00021530 it eq                                             |     
                                                                 |     if (r2 != 0) {
    0x00021532 moveq sl, r3                                      |         sl = r3;
                                                                 |     }
    0x00021534 str.w sl, [sp, 0x30]                              |     __asm ("str.w sl, [var_30h]");
                                                                 |     do {
    0x00021538 asr.w r3, r5, r4                                  |         r3 = r5 >> r4;
    0x0002153c lsls r3, r3, 0x1f                                 |         r3 <<= 0x1f;
                                                                 |         if (r3 < r3) {
    0x0002153e bpl 0x21596                                       |             
    0x00021540 ldrb r3, [r6]                                     |             r3 = *(r6);
    0x00021542 mov sl, r6                                        |             sl = r6;
                                                                 |             if (r3 == 0) {
    0x00021544 cbnz r3, 0x2154c                                  |                 
    0x00021546 ldr.w sl, [pc, 0x304]                             |                 sl = *(0x0002184c);
    0x0002154a add sl, pc                                        |                 sl += pc;
                                                                 |             }
    0x0002154c mov r1, r4                                        |             r1 = r4;
    0x0002154e mov r0, fp                                        |             r0 = fp;
    0x00021550 blx 0xd2f4                                        |             fcn_0000d2f4 ();
    0x00021554 subs r2, r7, 4                                    |             r2 = r7 - 4;
    0x00021556 ldr r3, [sp, 0x30]                                |             r3 = var_30h;
    0x00021558 str r2, [sp, 0x1c]                                |             var_1ch_2 = r2;
    0x0002155a ldr r2, [sp, 0x2c]                                |             r2 = var_2ch;
    0x0002155c str r3, [sp, 0x14]                                |             var_14h = r3;
    0x0002155e ldr r3, [pc, 0x2f0]                               |             
    0x00021560 subs r2, 4                                        |             r2 -= 4;
    0x00021562 str r0, [sp, 0x18]                                |             var_18h_2 = r0;
    0x00021564 str r2, [sp, 0x10]                                |             var_10h = r2;
    0x00021566 mov r0, sb                                        |             r0 = sb;
    0x00021568 ldr r2, [sp, 0x28]                                |             r2 = var_28h;
    0x0002156a add r3, pc                                        |             r3 = 0x42dc0;
    0x0002156c str r3, [sp]                                      |             *(sp) = r3;
    0x0002156e mov.w r3, 0xa00                                   |             r3 = 0xa00;
    0x00021572 mov r1, r3                                        |             r1 = r3;
    0x00021574 str.w sl, [sp, 8]                                 |             __asm ("str.w sl, [var_8h_2]");
    0x00021578 subs r2, 4                                        |             r2 -= 4;
    0x0002157a str.w r8, [sp, 4]                                 |             __asm ("str.w r8, [var_4h_3]");
    0x0002157e str r2, [sp, 0xc]                                 |             var_ch_3 = r2;
    0x00021580 movs r2, 1                                        |             r2 = 1;
    0x00021582 blx 0xe9b4                                        |             fcn_0000e9b4 ();
    0x00021584 ands.w r8, r8, r3, ror 18                         |             r8 &= (r3 >>> 18);
    0x00021588 movs r2, 0                                        |             r2 = 0;
    0x0002158a mov r1, sb                                        |             r1 = sb;
    0x0002158c strb.w r2, [sp, 0xb53]                            |             *(arg_b53h) = r2;
    0x00021590 add r0, pc                                        |             r0 += pc;
    0x00021592 blx 0xd914                                        |             fcn_0000d914 ();
                                                                 |         }
    0x00021596 adds r4, 1                                        |         r4++;
    0x00021598 cmp r4, 9                                         |         
    0x0002159a bne 0x21538                                       |         
                                                                 |     } while (r4 != 9);
    0x0002159c b 0x21446                                         |     goto label_2;
                                                                 | label_19:
    0x0002159e ldr r3, [sp, 0x34]                                |     r3 = var_34h;
    0x000215a0 mov.w r2, 0xa00                                   |     r2 = 0xa00;
    0x000215a4 str r2, [sp, 0x10]                                |     var_10h = r2;
    0x000215a6 mov r1, sb                                        |     r1 = sb;
    0x000215a8 str r2, [sp, 8]                                   |     var_8h_2 = r2;
    0x000215aa str r3, [sp, 0x14]                                |     var_14h = r3;
    0x000215ac ldr r3, [sp, 0x30]                                |     r3 = var_30h;
    0x000215ae ldr r2, [sp, 0x40]                                |     r2 = var_40h;
    0x000215b0 str r6, [sp, 0x18]                                |     var_18h_2 = r6;
    0x000215b2 str r3, [sp, 0xc]                                 |     var_ch_3 = r3;
    0x000215b4 ldr r3, [pc, 0x2a0]                               |     r3 = *(0x21858);
    0x000215b6 str.w fp, [sp, 4]                                 |     __asm ("str.w fp, [var_4h_3]");
    0x000215ba ldr r3, [r2, r3]                                  |     r3 = *((r2 + r3));
    0x000215bc add.w r2, sp, 0x1f40                              |     r2 += arg_1f40h;
    0x000215c0 adds r2, 0x14                                     |     r2 += 0x14;
    0x000215c2 str r2, [sp, 0x4c]                                |     var_4ch = r2;
    0x000215c4 str r3, [sp]                                      |     *(sp) = r3;
    0x000215c6 ldr r3, [pc, 0x294]                               |     
    0x000215c8 add r3, pc                                        |     r3 = 0x42e2a;
    0x000215ca blx 0xd828                                        |     fcn_0000d828 ();
    0x000215cc invalid                                           |     
    0x000215d0 cmp.w sl, 0                                       |     
                                                                 |     if (sl != 0) {
    0x000215d4 bne.w 0x212e6                                     |         goto label_3;
                                                                 |     }
                                                                 | label_21:
    0x000215d8 ldr r3, [pc, 0x284]                               |     
    0x000215da movs r2, 1                                        |     r2 = 1;
    0x000215dc mov r0, r8                                        |     r0 = r8;
    0x000215de str.w fp, [sp, 4]                                 |     __asm ("str.w fp, [var_4h_3]");
    0x000215e2 add r3, pc                                        |     r3 = 0x42e46;
    0x000215e4 str r3, [sp]                                      |     *(sp) = r3;
    0x000215e6 mov.w r3, 0xa00                                   |     r3 = 0xa00;
    0x000215ea mov r1, r3                                        |     r1 = r3;
    0x000215ec blx 0xe9b4                                        |     fcn_0000e9b4 ();
    0x000215f0 add.w r3, sp, 0x3d40                              |     r3 += arg_3d40h;
    0x000215f4 ldrb r4, [r3, 0x14]                               |     r4 = *((r3 + 0x14));
    0x000215f6 adds r3, 0x14                                     |     r3 += 0x14;
    0x000215f8 cmp r4, 0                                         |     
                                                                 |     if (r4 == 0) {
    0x000215fa beq.w 0x213a4                                     |         goto label_4;
                                                                 |     }
    0x000215fe blx 0xdb88                                        |     fcn_0000db88 ();
    0x00021602 mov r3, r8                                        |     r3 = r8;
    0x00021604 ldr r1, [r0]                                      |     r1 = *(r0);
    0x00021606 movs r0, 0x5f                                     |     r0 = 0x5f;
                                                                 |     do {
    0x00021608 ldrh.w r2, [r1, r4, lsl 1]                        |         offset_0 = r4 << 1;
                                                                 |         r2 = *((r1 + offset_0));
    0x0002160c lsls r2, r2, 0x1c                                 |         r2 <<= 0x1c;
    0x0002160e it pl                                             |         
                                                                 |         if (r2 < r2) {
    0x00021610 strbpl r0, [r3]                                   |             *(r3) = r0;
                                                                 |         }
    0x00021612 ldrb r4, [r3, 1]!                                 |         r4 = *((r3 += 1));
    0x00021616 cmp r4, 0                                         |         
    0x00021618 bne 0x21608                                       |         
                                                                 |     } while (r4 != 0);
    0x0002161a b 0x213a4                                         |     goto label_4;
                                                                 | label_14:
    0x0002161c movw r2, 0x732d                                   |     r2 = 0x732d;
    0x00021620 cmp r1, r2                                        |     
                                                                 |     if (r1 == r2) {
    0x00021622 beq.w 0x21774                                     |         goto label_29;
                                                                 |     }
                                                                 | label_10:
    0x00021626 ldr r1, [sp, 0x28]                                |     r1 = var_28h;
    0x00021628 movw r2, 0x7375                                   |     
    0x0002162c movt r2, 0x6d                                     |     r2 = 0x6d7375;
    0x00021630 str r2, [r1, -0x4]                                |     *((r1 - 0x4)) = r2;
                                                                 |     if (r3 != 0) {
                                                                 | label_11:
    0x00021634 cbz r3, 0x2163e                                   |         
    0x00021636 ldrb r2, [r3]                                     |         r2 = *(r3);
    0x00021638 cmp r2, 0                                         |         
                                                                 |         if (r2 != 0) {
    0x0002163a bne.w 0x21758                                     |             goto label_30;
                                                                 |         }
                                                                 |     }
    0x0002163e ldr r2, [pc, 0x224]                               |     
    0x00021640 movs r1, 3                                        |     r1 = 3;
    0x00021642 str r1, [sp, 0x34]                                |     var_34h = r1;
    0x00021644 add.w r7, sp, 0x4700                              |     r7 += arg_4700h;
    0x00021648 adds r7, 0x58                                     |     r7 += 0x58;
    0x0002164a add r2, pc                                        |     r2 = 0x42eb4;
    0x0002164c str r7, [sp, 0x2c]                                |     var_2ch = r7;
    0x0002164e ldm.w r2, {r0, r1}                                |     r0 = *(r2);
                                                                 |     r1 = *((r2 + 4));
    0x00021652 str r0, [r7, -0x4]                                |     *((r7 - 0x4)) = r0;
    0x00021656 strb r1, [r7]                                     |     *(r7) = r1;
    0x00021658 b 0x2124e                                         |     goto label_5;
                                                                 | label_22:
    0x0002165a mov r0, fp                                        |     r0 = fp;
    0x0002165c blx 0xe02c                                        |     fcn_0000e02c ();
    0x00021660 ldr r3, [pc, 0x204]                               |     
    0x00021662 movs r2, 1                                        |     r2 = 1;
    0x00021664 mov r0, r8                                        |     r0 = r8;
    0x00021666 str.w fp, [sp, 4]                                 |     __asm ("str.w fp, [var_4h_3]");
    0x0002166a add r3, pc                                        |     r3 = 0x42ed6;
    0x0002166c str r3, [sp]                                      |     *(sp) = r3;
    0x0002166e mov.w r3, 0xa00                                   |     r3 = 0xa00;
    0x00021672 mov r1, r3                                        |     r1 = r3;
    0x00021674 blx 0xe9b4                                        |     fcn_0000e9b4 ();
    0x00021678 add.w r3, sp, 0x3d40                              |     r3 += arg_3d40h;
    0x0002167c ldrb r4, [r3, 0x14]                               |     r4 = *((r3 + 0x14));
    0x0002167e adds r3, 0x14                                     |     r3 += 0x14;
                                                                 |     if (r4 == 0) {
    0x00021680 cbz r4, 0x2169e                                   |         goto label_31;
                                                                 |     }
    0x00021682 blx 0xdb88                                        |     fcn_0000db88 ();
    0x00021686 mov r3, r8                                        |     r3 = r8;
    0x00021688 ldr r1, [r0]                                      |     r1 = *(r0);
    0x0002168a movs r0, 0x5f                                     |     r0 = 0x5f;
                                                                 |     do {
    0x0002168c ldrh.w r2, [r1, r4, lsl 1]                        |         offset_1 = r4 << 1;
                                                                 |         r2 = *((r1 + offset_1));
    0x00021690 lsls r4, r2, 0x1c                                 |         r4 = r2 << 0x1c;
    0x00021692 it pl                                             |         
                                                                 |         if (r4 < r2) {
    0x00021694 strbpl r0, [r3]                                   |             *(r3) = r0;
                                                                 |         }
    0x00021696 ldrb r4, [r3, 1]!                                 |         r4 = *((r3 += 1));
    0x0002169a cmp r4, 0                                         |         
    0x0002169c bne 0x2168c                                       |         
                                                                 |     } while (r4 != 0);
                                                                 | label_31:
    0x0002169e ldr r3, [pc, 0x1cc]                               |     
    0x000216a0 add r4, sp, 0x154                                 |     r4 += arg_154h;
    0x000216a2 ldr r2, [sp, 0x28]                                |     r2 = var_28h;
    0x000216a4 mov r0, r4                                        |     r0 = r4;
    0x000216a6 str.w fp, [sp, 0xc]                               |     __asm ("str.w fp, [var_ch_3]");
    0x000216aa add r3, pc                                        |     r3 = 0x42f1c;
    0x000216ac str.w r8, [sp, 4]                                 |     __asm ("str.w r8, [var_4h_3]");
    0x000216b0 str r3, [sp]                                      |     *(sp) = r3;
    0x000216b2 subs r2, 4                                        |     r2 -= 4;
    0x000216b4 mov.w r3, 0xa00                                   |     r3 = 0xa00;
    0x000216b8 str r2, [sp, 8]                                   |     var_8h_2 = r2;
    0x000216ba mov r1, r3                                        |     r1 = r3;
    0x000216bc movs r2, 1                                        |     r2 = 1;
    0x000216be blx 0xe9b4                                        |     fcn_0000e9b4 ();
    0x000216c2 ldr r0, [pc, 0x1ac]                               |     
    0x000216c4 movs r2, 0                                        |     r2 = 0;
    0x000216c6 mov r1, r4                                        |     r1 = r4;
    0x000216c8 strb.w r2, [r4, 0x9ff]                            |     *((r4 + 0x9ff)) = r2;
    0x000216cc add r0, pc                                        |     r0 = 0x42f42;
    0x000216ce blx 0xe814                                        |     fcn_0000e814 ();
    0x000216d2 b 0x213a4                                         |     goto label_4;
                                                                 | label_20:
    0x000216d4 ldr r3, [pc, 0x19c]                               |     
    0x000216d6 add.w sl, sp, 0x154                               |     sl += arg_154h;
    0x000216da strd r2, sb, [sp, 8]                              |     __asm ("strd r2, sb, [sp, 8]");
    0x000216de mov r0, sl                                        |     r0 = sl;
    0x000216e0 movs r2, 1                                        |     r2 = 1;
    0x000216e2 str.w fp, [sp, 4]                                 |     __asm ("str.w fp, [var_4h_3]");
    0x000216e6 add r3, pc                                        |     r3 = 0x42f5e;
    0x000216e8 str r3, [sp]                                      |     *(sp) = r3;
    0x000216ea mov.w r3, 0xa00                                   |     r3 = 0xa00;
    0x000216ee mov r1, r3                                        |     r1 = r3;
    0x000216f0 blx 0xe9b4                                        |     fcn_0000e9b4 ();
    0x000216f4 b 0x21310                                         |     goto label_6;
                                                                 | label_24:
    0x000216f6 ldr r3, [pc, 0x180]                               |     
    0x000216f8 add r3, pc                                        |     r3 = 0x42f76;
    0x000216fa b 0x21400                                         |     goto label_7;
                                                                 | label_18:
    0x000216fc mov r0, r3                                        |     r0 = r3;
    0x000216fe mov.w r2, 0xa00                                   |     r2 = 0xa00;
    0x00021702 mov r1, r6                                        |     r1 = r6;
    0x00021704 blx 0xd9f8                                        |     fcn_0000d9f8 ();
    0x00021708 mov r0, r6                                        |     r0 = r6;
    0x0002170a blx 0xdc98                                        |     CONTAINER_FREE ();
    0x0002170e subs r0, 1                                        |     r0--;
    0x00021710 ldrb r3, [r6, r0]                                 |     r3 = *((r6 + r0));
    0x00021712 cmp r3, 0x2a                                      |     
    0x00021714 mov.w r3, 0                                       |     r3 = 0;
    0x00021718 ittt eq                                           |     
                                                                 |     if (r3 != 0x2a) {
    0x0002171a strbeq r3, [r6, r0]                               |         *((r6 + r0)) = r3;
                                                                 |     }
                                                                 |     if (r3 != 0x2a) {
    0x0002171c moveq r3, 1                                       |         r3 = 1;
                                                                 |     }
                                                                 |     if (r3 == 0x2a) {
    0x0002171e streq r3, [sp, 0x38]                              |         var_38h = r3;
                                                                 |         goto label_32;
                                                                 |     }
                                                                 |     if (r3 == 0x2a) {
                                                                 | label_32:
    0x00021720 beq.w 0x2129a                                     |         goto label_8;
                                                                 |     }
    0x00021724 str r3, [sp, 0x38]                                |     var_38h = r3;
    0x00021726 b 0x2129a                                         |     goto label_8;
                                                                 | label_17:
    0x00021728 add.w r7, sp, 0x1540                              |     r7 += arg_1540h;
    0x0002172c mov r0, r3                                        |     r0 = r3;
    0x0002172e mov.w r2, 0xa00                                   |     r2 = 0xa00;
    0x00021732 addw r1, sp, 0xb54                                |     __asm ("addw r1, arg_b54h");
    0x00021736 adds r7, 0x18                                     |     r7 += 0x18;
    0x00021738 blx 0xd9f8                                        |     fcn_0000d9f8 ();
    0x0002173c subs r2, r7, 4                                    |     r2 = r7 - 4;
    0x0002173e mov r3, r0                                        |     r3 = r0;
    0x00021740 str r2, [sp, 0x30]                                |     var_30h = r2;
    0x00021742 b 0x2128c                                         |     goto label_1;
                                                                 | label_15:
    0x00021744 add.w r1, sp, 0x1f40                              |     r1 += arg_1f40h;
    0x00021748 mov r0, r3                                        |     r0 = r3;
    0x0002174a mov.w r2, 0xa00                                   |     r2 = 0xa00;
    0x0002174e adds r1, 0x14                                     |     r1 += 0x14;
    0x00021750 blx 0xd9f8                                        |     r0 = fcn_0000d9f8 ();
    0x00021754 mov r3, r0                                        |     r3 = r0;
    0x00021756 b 0x21232                                         |     goto label_9;
                                                                 | label_30:
    0x00021758 mov r0, r3                                        |     r0 = r3;
    0x0002175a add.w r3, sp, 0x4700                              |     r3 += arg_4700h;
    0x0002175e adds r3, 0x58                                     |     r3 += 0x58;
    0x00021760 mov.w r2, 0xa00                                   |     r2 = 0xa00;
    0x00021764 subs r1, r3, 4                                    |     r1 = r3 - 4;
    0x00021766 str r3, [sp, 0x2c]                                |     var_2ch = r3;
    0x00021768 blx 0xd9f8                                        |     fcn_0000d9f8 ();
    0x0002176c movs r2, 3                                        |     r2 = 3;
    0x0002176e mov r3, r0                                        |     r3 = r0;
    0x00021770 str r2, [sp, 0x34]                                |     var_34h = r2;
    0x00021772 b 0x2124e                                         |     goto label_5;
                                                                 | label_29:
    0x00021774 ldrb.w r2, [sb, 2]                                |     r2 = *((sb + 2));
    0x00021778 cmp r2, 0                                         |     
                                                                 |     if (r2 != 0) {
    0x0002177a bne.w 0x21626                                     |         goto label_10;
                                                                 |     }
    0x0002177e cbnz r0, 0x2178a                                  |     
                                                                 |     while (r0 == 0) {
                                                                 | label_26:
    0x00021780 ldr r0, [pc, 0xf8]                                |         
    0x00021782 add r0, pc                                        |         r0 = 0x43002;
    0x00021784 blx 0xe784                                        |         fcn_0000e784 ();
    0x00021788 b 0x21446                                         |         goto label_2;
    0x0002178a ldr r3, [sp, 0x28]                                |         r3 = var_28h;
    0x0002178c mov.w r2, 0xa00                                   |         r2 = 0xa00;
    0x00021790 subs r1, r3, 4                                    |         r1 = r3 - 4;
    0x00021792 blx 0xd9f8                                        |         r0 = fcn_0000d9f8 ();
    0x00021796 cmp r0, 0                                         |         
    0x00021798 beq 0x21780                                       |         
                                                                 |     }
    0x0002179a mov.w r2, 0x100                                   |     r2 = 0x100;
    0x0002179e mov r1, sb                                        |     r1 = sb;
    0x000217a0 blx 0xd9f8                                        |     r0 = fcn_0000d9f8 ();
    0x000217a4 mov r3, r0                                        |     r3 = r0;
    0x000217a6 b 0x21634                                         |     goto label_11;
                                                                 | label_28:
    0x000217a8 ldr r2, [sp, 0x28]                                |     r2 = var_28h;
    0x000217aa movw r3, 0x3276                                   |     
    0x000217ae movt r3, 0x63                                     |     r3 = 0x633276;
    0x000217b2 str r3, [r2, -0x4]                                |     *((r2 - 0x4)) = r3;
    0x000217b6 b 0x214c8                                         |     goto label_12;
                                                                 | label_27:
    0x000217b8 ldr r3, [pc, 0xc4]                                |     
    0x000217ba ldr r2, [sp, 0x28]                                |     r2 = var_28h;
    0x000217bc add r3, pc                                        |     
    0x000217be ldr r3, [r3]                                      |     r3 = *(0x43040);
    0x000217c0 strh r3, [r2, -0x4]                               |     *((r2 - 0x4)) = r3;
    0x000217c4 lsrs r3, r3, 0x10                                 |     r3 >>= 0x10;
    0x000217c6 strb r3, [r2, -0x2]                               |     *((r2 - 0x2)) = r3;
    0x000217ca b 0x214a4                                         |     goto label_13;
                                                                 | label_25:
    0x000217cc blx 0xd4d0                                        |     fcn_0000d4d0 ();
    0x000217d0 strh r4, [r1, 0x16]                               |     *((r1 + 0x16)) = r4;
    0x000217d2 movs r1, r0                                       |     r1 = r0;
    0x000217d4 lsrs r4, r2, 6                                    |     r4 = r2 >> 6;
    0x000217d6 movs r0, r0                                       |     
    0x000217d8 strh r0, [r3, 0x14]                               |     *((r3 + 0x14)) = r0;
    0x000217da movs r1, r0                                       |     r1 = r0;
    0x000217dc ldr r2, [r5, 0x50]                                |     r2 = *((r5 + 0x50));
    0x000217de movs r0, r0                                       |     
    0x000217e0 ldr r6, [r3, 0x20]                                |     r6 = *((r3 + 0x20));
    0x000217e2 movs r0, r0                                       |     
    0x000217e4 ldrb r0, [r5, r2]                                 |     r0 = *((r5 + r2));
    0x000217e6 movs r0, r0                                       |     
    0x000217e8 str r3, [sp, 0x1c8]                               |     *(arg_1c8h) = r3;
    0x000217ea movs r1, r0                                       |     r1 = r0;
    0x000217ec ldr r6, [r6, 0x3c]                                |     r6 = *((r6 + 0x3c));
    0x000217ee movs r0, r0                                       |     
    0x000217f0 ldr r0, [r2, 0x44]                                |     r0 = *((r2 + 0x44));
    0x000217f2 movs r0, r0                                       |     
    0x000217f4 str r2, [sp, 0x3e8]                               |     *(arg_3e8h) = r2;
    0x000217f6 movs r1, r0                                       |     r1 = r0;
    0x000217f8 lsrs r4, r6, 0xd                                  |     r4 = r6 >> 0xd;
    0x000217fa movs r0, r0                                       |     
    0x000217fc ldr r6, [r3, 0x40]                                |     r6 = *((r3 + 0x40));
    0x000217fe movs r0, r0                                       |     
    0x00021800 str r2, [sp, 0x308]                               |     *(arg_308h) = r2;
    0x00021802 movs r1, r0                                       |     r1 = r0;
    0x00021804 ldr r4, [r0, 0x40]                                |     r4 = *((r0 + 0x40));
    0x00021806 movs r0, r0                                       |     
    0x00021808 str r0, [r3, 0x78]                                |     *((r3 + 0x78)) = r0;
    0x0002180a movs r0, r0                                       |     
    0x0002180c ldr r6, [r5, 0x3c]                                |     r6 = *((r5 + 0x3c));
    0x0002180e movs r0, r0                                       |     
    0x00021810 str r0, [r4, 0x4c]                                |     *((r4 + 0x4c)) = r0;
    0x00021812 movs r0, r0                                       |     
    0x00021814 ldr r0, [r1, 0x34]                                |     r0 = *((r1 + 0x34));
    0x00021816 movs r0, r0                                       |     
    0x00021818 ldr r6, [r1, 0xc]                                 |     r6 = *((r1 + 0xc));
    0x0002181a movs r0, r0                                       |     
    0x0002181c ldr r2, [r4, 0x38]                                |     r2 = *((r4 + 0x38));
    0x0002181e movs r0, r0                                       |     
    0x00021820 str r4, [r1, 0x74]                                |     *((r1 + 0x74)) = r4;
    0x00021822 movs r0, r0                                       |     
    0x00021824 ldrb r4, [r7, 0x1f]                               |     r4 = *((r7 + 0x1f));
    0x00021826 movs r1, r0                                       |     r1 = r0;
    0x00021828 str r0, [r7, 0x40]                                |     *((r7 + 0x40)) = r0;
    0x0002182a movs r0, r0                                       |     
    0x0002182c str r0, [r4, 8]                                   |     *((r4 + 8)) = r0;
    0x0002182e movs r0, r0                                       |     
    0x00021830 ldr r4, [r2, 0x28]                                |     r4 = *((r2 + 0x28));
    0x00021832 movs r0, r0                                       |     
    0x00021834 str r0, [r0, 8]                                   |     *((r0 + 8)) = r0;
    0x00021836 movs r0, r0                                       |     
    0x00021838 str r4, [r2, 0x40]                                |     *((r2 + 0x40)) = r4;
    0x0002183a movs r0, r0                                       |     
    0x0002183c ldr r0, [r3, 0x24]                                |     r0 = *((r3 + 0x24));
    0x0002183e movs r0, r0                                       |     
    0x00021840 ldr r4, [r5]                                      |     r4 = *(r5);
    0x00021842 movs r0, r0                                       |     
    0x00021844 str r2, [r4, 0x78]                                |     *((r4 + 0x78)) = r2;
    0x00021846 movs r0, r0                                       |     
    0x00021848 ldr r4, [r7, 4]                                   |     r4 = *((r7 + 4));
    0x0002184a movs r0, r0                                       |     
    0x0002184c ldr r6, [r5, 0x1c]                                |     r6 = *((r5 + 0x1c));
    0x0002184e movs r0, r0                                       |     
    0x00021850 ldr r6, [r4, 0x24]                                |     r6 = *((r4 + 0x24));
    0x00021852 movs r0, r0                                       |     
    0x00021854 str r4, [r3, 0x40]                                |     *((r3 + 0x40)) = r4;
    0x00021856 movs r0, r0                                       |     
    0x00021858 lsrs r0, r1, 0xa                                  |     r0 = r1 >> 0xa;
    0x0002185a movs r0, r0                                       |     
    0x0002185c ldr r4, [r3, 0x18]                                |     r4 = *((r3 + 0x18));
    0x0002185e movs r0, r0                                       |     
    0x00021860 ldr r6, [r5, 0x18]                                |     r6 = *((r5 + 0x18));
    0x00021862 movs r0, r0                                       |     
    0x00021864 str r2, [r5, 0x60]                                |     *((r5 + 0x60)) = r2;
    0x00021866 movs r0, r0                                       |     
    0x00021868 ldr r6, [r4, 0x10]                                |     r6 = *((r4 + 0x10));
    0x0002186a movs r0, r0                                       |     
    0x0002186c ldr r2, [r6, 0xc]                                 |     r2 = *((r6 + 0xc));
    0x0002186e movs r0, r0                                       |     
    0x00021870 str r4, [r3, 0x44]                                |     *((r3 + 0x44)) = r4;
    0x00021872 movs r0, r0                                       |     
    0x00021874 ldr r6, [r4]                                      |     r6 = *(r4);
    0x00021876 movs r0, r0                                       |     
    0x00021878 str r4, [r3, 0x64]                                |     *((r3 + 0x64)) = r4;
    0x0002187a movs r0, r0                                       |     
    0x0002187c str r2, [r7, 0x78]                                |     *((r7 + 0x78)) = r2;
    0x0002187e movs r0, r0                                       |     
    0x00021880 ldrb r4, [r1, r6]                                 |     r4 = *((r1 + r6));
    0x00021882 movs r0, r0                                       |     
                                                                 | }

[*] Function popen used 1 times libnetsnmpagent.so.40.1.0