[*] Binary protection state of snmpd_migrate

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


[*] Function printf tear down of snmpd_migrate

    ; assembly                                               | /* r2dec pseudo code output */
                                                             | /* /logs/firmware/patool_extraction/rootfs.img_unblob_extracted/rootfs.img_extract/0-80367616.squashfs_v4_le_extract/usr/libexec/snmpd_migrate @ 0x1284 */
                                                             | #include <stdint.h>
                                                             |  
    ; (fcn) fcn.00001284 ()                                  | void fcn_00001284 (int16_t arg_1h_2, int16_t arg_1h, int16_t arg_8h, int16_t arg_ch, int16_t arg_10h, int16_t arg_14h, 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_34h, int16_t arg_38h, int16_t arg_3ch, void * ptr, void * arg_44h, void * arg_48h, int16_t arg_4ch, int16_t arg_50h, int16_t arg_54h, char * arg_58h, int16_t arg_c4h) {
                                                             |     int16_t var_0h;
                                                             |     int16_t var_4h;
                                                             | label_17:
    0x00000866 movs r6, 1                                    |     r6 = 1;
                                                             |     do {
    0x00000868 ldr r2, [pc, 0x26c]                           |         
    0x0000086a ldr r3, [pc, 0x260]                           |         r3 = *(0xace);
    0x0000086c add r2, pc                                    |         r2 = 0x1348;
    0x0000086e ldr r3, [r2, r3]                              |         r3 = *(0x1348);
    0x00000870 ldr r2, [r3]                                  |         r2 = *(0x1348);
    0x00000872 ldr r3, [sp, 0xc4]                            |         r3 = *(arg_c4h);
    0x00000874 eors r2, r3                                   |         r2 ^= r3;
    0x00000876 mov.w r3, 0                                   |         r3 = 0;
                                                             |         if (r2 != r3) {
    0x0000087a bne.w 0x106c                                  |             goto label_20;
                                                             |         }
    0x0000087e mov r0, r6                                    |         r0 = r6;
    0x00000880 add sp, 0xcc                                  |         
    0x00000882 vpop {d8}                                     |         __asm ("vpop {d8}");
    0x00000886 pop.w {r4, r5, r6, r7, r8, sb, sl, fp, pc}    |         
                                                             | label_4:
    0x00000948 add.w r2, sl, r7                              |         r2 = sl + r7;
    0x0000094c ldrb.w r1, [sl, r7]                           |         r1 = *((sl + r7));
    0x00000950 ldrb r2, [r2, 1]                              |         r2 = *((r2 + 1));
    0x00000952 adds r7, 2                                    |         r7 += 2;
    0x00000954 cmp r2, 0                                     |         
                                                             |         if (r2 == 0) {
    0x00000956 beq.w 0xc60                                   |             goto label_21;
                                                             |         }
    0x0000095a mov.w fp, 0                                   |         
    0x0000095e strd r1, r2, [sp, 0x34]                       |         __asm ("strd r1, r2, [sp, 0x34]");
    0x00000960 asrs r5, r1, 8                                |         r5 = r1 >> 8;
                                                             | label_3:
    0x00000962 movs r0, 0x10                                 |         r0 = 0x10;
    0x00000964 add.w r6, sl, r7                              |         r6 = sl + r7;
    0x00000968 blx 0x7f0                                     |         r0 = malloc (r0);
    0x0000096c mov r4, r0                                    |         r4 = r0;
    0x0000096e cmp r0, 0                                     |         
                                                             |         if (r0 == 0) {
    0x00000970 beq.w 0x1058                                  |             goto label_22;
                                                             |         }
    0x00000974 ldrb.w r0, [sl, r7]                           |         r0 = *((sl + r7));
    0x00000978 ldr.w r5, [r6, 1]                             |         r5 = *((r6 + 1));
    0x0000097c sub.w r3, r0, 0xb                             |         r3 = r0 - 0xb;
    0x00000980 str r0, [r4]                                  |         *(r4) = r0;
    0x00000982 str r5, [r4, 4]                               |         *((r4 + 4)) = r5;
    0x00000984 cmp r3, 0xf                                   |         
                                                             |         if (r3 <= 0xf) {
    0x00000986 bhi 0x9ac                                     |             
                                                             |             /* switch table (17 cases) at 0x98c */
    0x00000988 tbh [pc, r3, lsl 1]                           |             __asm ("tbh [pc, r3, lsl 1]");
                                                             |         }
    0x000009ac ldr r3, [pc, 0x12c]                           |         
    0x000009ae mov r8, sl                                    |         r8 = sl;
    0x000009b0 ldr r2, [pc, 0x12c]                           |         
    0x000009b2 mov.w r1, 0x100                               |         r1 = 0x100;
    0x000009b6 str r0, [sp]                                  |         *(sp) = r0;
    0x000009b8 movs r0, 0                                    |         r0 = 0;
    0x000009ba add r3, pc                                    |         r3 = 0x149a;
    0x000009bc add r2, pc                                    |         r2 = 0x14a0;
                                                             | label_18:
    0x000009be blx 0x820                                     |         g_log ();
    0x000009c2 mov r0, r4                                    |         r0 = r4;
    0x000009c4 blx 0x778                                     |         free (r0);
    0x000009c8 mov r0, r8                                    |         r0 = r8;
    0x000009ca blx 0x778                                     |         free (r0);
    0x000009ce ldr r0, [pc, 0x114]                           |         
    0x000009d0 movs r6, 1                                    |         r6 = 1;
    0x000009d2 add r0, pc                                    |         r0 = 0x14bc;
    0x000009d4 blx 0x808                                     |         puts (r0);
    0x000009d8 ldr r0, [pc, 0x10c]                           |         
    0x000009da add r0, pc                                    |         r0 = 0x14c6;
    0x000009dc blx 0x808                                     |         puts (r0);
    0x000009e0 ldr.w r4, [sb]                                |         r4 = *(sb);
    0x000009e4 cmp r4, 0                                     |         
                                                             |         if (r4 != 0) {
    0x000009e6 bne 0xa5e                                     |             goto label_5;
                                                             |         }
                                                             | label_0:
    0x000009e8 ldr r3, [sp, 0x40]                            |         r3 = *(ptr);
    0x000009ea ldr r0, [r3]                                  |         r0 = *(r3);
                                                             |         if (r0 != 0) {
    0x000009ec cbz r0, 0x9f2                                 |             
    0x000009ee blx 0x778                                     |             free (r0);
                                                             |         }
    0x000009f2 ldr r3, [sp, 0x40]                            |         r3 = *(ptr);
    0x000009f4 ldr r0, [r3, 4]                               |         r0 = *((r3 + 4));
                                                             |         if (r0 != 0) {
    0x000009f6 cbz r0, 0x9fc                                 |             
    0x000009f8 blx 0x778                                     |             free (r0);
                                                             |         }
    0x000009fc ldr r3, [sp, 0x40]                            |         r3 = *(ptr);
    0x000009fe ldr r0, [r3, 8]                               |         r0 = *((r3 + 8));
                                                             |         if (r0 != 0) {
    0x00000a00 cbz r0, 0xa06                                 |             
    0x00000a02 blx 0x778                                     |             free (r0);
                                                             |         }
    0x00000a06 ldr r3, [sp, 0x40]                            |         r3 = *(ptr);
    0x00000a08 ldr r0, [r3, 0x14]                            |         r0 = *((r3 + 0x14));
                                                             |         if (r0 != 0) {
    0x00000a0a cbz r0, 0xa10                                 |             
    0x00000a0c blx 0x778                                     |             free (r0);
                                                             |         }
    0x00000a10 ldr r3, [sp, 0x40]                            |         r3 = *(ptr);
    0x00000a12 ldr r0, [r3, 0x18]                            |         r0 = *((r3 + 0x18));
                                                             |         if (r0 != 0) {
    0x00000a14 cbz r0, 0xa1a                                 |             
    0x00000a16 blx 0x778                                     |             free (r0);
                                                             |         }
    0x00000a1a ldr r0, [sp, 0x40]                            |         r0 = *(ptr);
    0x00000a1c blx 0x778                                     |         free (r0);
    0x00000a20 ldr r3, [sp, 0x44]                            |         r3 = *(arg_44h);
    0x00000a22 ldr r0, [r3]                                  |         r0 = *(r3);
                                                             |         if (r0 != 0) {
    0x00000a24 cbz r0, 0xa2a                                 |             
    0x00000a26 blx 0x778                                     |             free (r0);
                                                             |         }
    0x00000a2a ldr r3, [sp, 0x44]                            |         r3 = *(arg_44h);
    0x00000a2c ldr r0, [r3, 0xc]                             |         r0 = *((r3 + 0xc));
                                                             |         if (r0 != 0) {
    0x00000a2e cbz r0, 0xa34                                 |             
    0x00000a30 blx 0x778                                     |             free (r0);
                                                             |         }
    0x00000a34 ldr r0, [sp, 0x44]                            |         r0 = *(arg_44h);
    0x00000a36 blx 0x778                                     |         free (r0);
    0x00000a3a ldr r3, [sp, 0x48]                            |         r3 = *(arg_48h);
    0x00000a3c ldr r0, [r3]                                  |         r0 = *(r3);
                                                             |         if (r0 != 0) {
    0x00000a3e cbz r0, 0xa44                                 |             
    0x00000a40 blx 0x778                                     |             free (r0);
                                                             |         }
    0x00000a44 ldr r3, [sp, 0x48]                            |         r3 = *(arg_48h);
    0x00000a46 ldr r0, [r3, 4]                               |         r0 = *((r3 + 4));
                                                             |         if (r0 != 0) {
    0x00000a48 cbz r0, 0xa4e                                 |             
    0x00000a4a blx 0x778                                     |             free (r0);
                                                             |         }
    0x00000a4e ldr r0, [sp, 0x48]                            |         r0 = *(arg_48h);
    0x00000a50 blx 0x778                                     |         free (r0);
    0x00000a54 mov r0, sb                                    |         r0 = sb;
    0x00000a56 blx 0x778                                     |         free (r0);
    0x00000a5a b 0x868                                       |         
                                                             |     } while (1);
                                                             |     do {
    0x00000a5c mov r4, r5                                    |         r4 = r5;
                                                             | label_5:
    0x00000a5e ldr r5, [r4]                                  |         r5 = *(r4);
    0x00000a60 cmp r5, 0                                     |         
                                                             |         if (r5 == 0) {
    0x00000a62 beq.w 0x1156                                  |             goto label_23;
                                                             |         }
    0x00000a64 strh r0, [r7, 0x1a]                           |         *((r7 + 0x1a)) = r0;
    0x00000a66 ldr r0, [r5, 8]                               |         r0 = *((r5 + 8));
                                                             |         if (r0 != 0) {
    0x00000a68 cbz r0, 0xa6e                                 |             
    0x00000a6a blx 0x778                                     |             free (r0);
                                                             |         }
    0x00000a6e ldr r0, [r5, 0xc]                             |         r0 = *((r5 + 0xc));
                                                             |         if (r0 != 0) {
    0x00000a70 cbz r0, 0xa76                                 |             
    0x00000a72 blx 0x778                                     |             free (r0);
                                                             |         }
    0x00000a76 ldr r0, [r5, 0x10]                            |         r0 = *((r5 + 0x10));
                                                             |         if (r0 != 0) {
    0x00000a78 cbz r0, 0xa7e                                 |             
    0x00000a7a blx 0x778                                     |             free (r0);
                                                             |         }
    0x00000a7e ldr r0, [r5, 0x14]                            |         r0 = *((r5 + 0x14));
                                                             |         if (r0 != 0) {
    0x00000a80 cbz r0, 0xa86                                 |             
    0x00000a82 blx 0x778                                     |             free (r0);
                                                             |         }
    0x00000a86 ldr r0, [r5, 0x18]                            |         r0 = *((r5 + 0x18));
                                                             |         if (r0 != 0) {
    0x00000a88 cbz r0, 0xa8e                                 |             
    0x00000a8a blx 0x778                                     |             free (r0);
                                                             |         }
    0x00000a8e ldr r0, [r5, 0x1c]                            |         r0 = *((r5 + 0x1c));
                                                             |         if (r0 != 0) {
    0x00000a90 cbz r0, 0xa96                                 |             
    0x00000a92 blx 0x778                                     |             free (r0);
                                                             |         }
    0x00000a96 ldr r0, [r5, 0x20]                            |         r0 = *((r5 + 0x20));
                                                             |         if (r0 != 0) {
    0x00000a98 cbz r0, 0xa9e                                 |             
    0x00000a9a blx 0x778                                     |             free (r0);
                                                             |         }
    0x00000a9e ldr r0, [r5, 0x24]                            |         r0 = *((r5 + 0x24));
                                                             |         if (r0 != 0) {
    0x00000aa0 cbz r0, 0xaa6                                 |             
    0x00000aa2 blx 0x778                                     |             free (r0);
                                                             |         }
    0x00000aa6 mov r0, r5                                    |         r0 = r5;
    0x00000aa8 blx 0x778                                     |         free (r0);
    0x00000aac ldr r5, [r4, 4]                               |         r5 = *((r4 + 4));
    0x00000aae mov r0, r4                                    |         r0 = r4;
    0x00000ab0 blx 0x778                                     |         free (r0);
    0x00000ab4 cmp r5, 0                                     |         
    0x00000ab6 bne 0xa5c                                     |         
                                                             |     } while (r5 != 0);
    0x00000ab8 b 0x9e8                                       |     goto label_0;
    0x00000aec movs r0, 0x84                                 |     r0 = 0x84;
    0x00000aee blx 0x7f0                                     |     malloc (r0);
    0x00000af2 movs r3, 0x18                                 |     r3 = 0x18;
    0x00000af4 str r0, [r4, 8]                               |     *((r4 + 8)) = r0;
    0x00000af6 str r3, [r4]                                  |     *(r4) = r3;
    0x00000af8 cmp r0, 0                                     |     
                                                             |     if (r0 == 0) {
    0x00000afa beq.w 0x1100                                  |         goto label_24;
                                                             |     }
    0x00000afe ldr.w r5, [r6, 5]                             |     r5 = *((r6 + 5));
    0x00000b02 cmp r5, 0x40                                  |     
    0x00000b04 str r5, [r0]                                  |     *(r0) = r5;
    0x00000b06 it gt                                         |     
                                                             |     if (r5 <= 0x40) {
    0x00000b08 movgt r8, 9                                   |         r8 = 9;
                                                             |     }
                                                             |     if (r5 <= 0x40) {
    0x00000b0c bgt 0xb36                                     |         
    0x00000b0e cmp r5, 0                                     |         
                                                             |         if (r5 <= 0) {
    0x00000b10 ble 0xc04                                     |             goto label_25;
                                                             |         }
    0x00000b12 add.w r8, r5, -1                              |         r8 = r5 + -1;
    0x00000b16 lsls r2, r5, 1                                |         r2 = r5 << 1;
    0x00000b18 lsl.w r8, r8, 1                               |         r8 <<= 1;
    0x00000b1c adds r0, 4                                    |         r0 += 4;
    0x00000b1e add.w r1, r6, 9                               |         r1 = r6 + 9;
    0x00000b22 blx 0x7a8                                     |         memcpy (r0, r1, r2);
    0x00000b26 add.w r3, r8, 0xb                             |         r3 = r8 + 0xb;
    0x00000b2a add.w r8, r8, 0xc                             |         r8 += 0xc;
                                                             | label_1:
    0x00000b2e ldrb r3, [r6, r3]                             |         r3 = *((r6 + r3));
    0x00000b30 and r3, r3, 7                                 |         r3 &= 7;
    0x00000b34 str r3, [r4, 0xc]                             |         *((r4 + 0xc)) = r3;
                                                             |     }
    0x00000b36 ldr r3, [sp, 0x34]                            |     r3 = *(arg_34h);
    0x00000b38 add r7, r8                                    |     r7 += r8;
    0x00000b3a sub.w r6, r3, 0x16                            |     r6 = r3 - 0x16;
    0x00000b3e cmp r6, 0xe                                   |     
                                                             |     if (r6 > 0xe) {
    0x00000b40 bhi.w 0xeb0                                   |         goto label_26;
                                                             |     }
    0x00000b44 ldr.w r8, [sb, 4]                             |     r8 = *((sb + 4));
    0x00000b48 cmp r8, fp                                    |     
                                                             |     if (r8 > fp) {
    0x00000b4a bgt.w 0xeb4                                   |         goto label_27;
                                                             |     }
    0x00000b4e movs r1, 0x28                                 |     r1 = 0x28;
    0x00000b50 movs r0, 1                                    |     r0 = 1;
    0x00000b52 blx 0x760                                     |     r0 = calloc (r0, r1);
    0x00000b56 mov r5, r0                                    |     r5 = r0;
    0x00000b58 cmp r0, 0                                     |     
                                                             |     if (r0 == 0) {
    0x00000b5a beq.w 0x1116                                  |         goto label_28;
                                                             |     }
    0x00000b5e ldr.w r3, [sb]                                |     r3 = *(sb);
    0x00000b62 movs r1, 8                                    |     r1 = 8;
    0x00000b64 movs r0, 1                                    |     r0 = 1;
    0x00000b66 str r3, [sp, 0x3c]                            |     *(arg_3ch) = r3;
    0x00000b68 blx 0x760                                     |     r0 = calloc (r0, r1);
    0x00000b6c mov r1, r0                                    |     r1 = r0;
    0x00000b6e cmp r0, 0                                     |     
                                                             |     if (r0 == 0) {
    0x00000b70 beq.w 0x112c                                  |         goto label_29;
                                                             |     }
    0x00000b74 movs r3, 0                                    |     r3 = 0;
    0x00000b76 str r5, [r0]                                  |     *(r0) = r5;
    0x00000b78 str r3, [r0, 4]                               |     *((r0 + 4)) = r3;
    0x00000b7a ldr r3, [sp, 0x3c]                            |     r3 = *(arg_3ch);
    0x00000b7c cmp r3, 0                                     |     
                                                             |     if (r3 == 0) {
    0x00000b7e beq.w 0xee2                                   |         goto label_30;
                                                             |     }
                                                             |     do {
    0x00000b82 mov r2, r3                                    |         r2 = r3;
    0x00000b84 ldr r3, [r3, 4]                               |         r3 = *((r3 + 4));
    0x00000b86 cmp r3, 0                                     |         
    0x00000b88 bne 0xb82                                     |         
                                                             |     } while (r3 != 0);
    0x00000b8a str r1, [r2, 4]                               |     *((r2 + 4)) = r1;
                                                             | label_10:
    0x00000b8c ldr r3, [sp, 0x3c]                            |     r3 = *(arg_3ch);
    0x00000b8e str.w r3, [sb]                                |     __asm ("str.w r3, [sb]");
    0x00000b92 add.w r3, r8, 1                               |     r3 = r8 + 1;
    0x00000b96 str.w r3, [sb, 4]                             |     __asm ("str.w r3, [sb, 4]");
                                                             | label_8:
    0x00000b9a ldr.w r8, [r4, 8]                             |     r8 = *((r4 + 8));
    0x00000b9e cmp r6, 0x23                                  |     
                                                             |     if (r6 > 0x23) {
    0x00000ba0 bhi 0xc3e                                     |         goto label_6;
                                                             |     }
                                                             |     /* switch table (37 cases) at 0xba6 */
    0x00000ba2 tbh [pc, r6, lsl 1]                           |     __asm ("tbh [pc, r6, lsl 1]");
    0x00000bee cmp r5, 0                                     |     
                                                             |     if (r5 != 0) {
    0x00000bf0 bne.w 0xee6                                   |         goto label_31;
                                                             |     }
    0x00000bf4 str r5, [r4, 8]                               |     *((r4 + 8)) = r5;
                                                             |     do {
                                                             | label_2:
    0x00000bf6 movs r3, 5                                    |         r3 = 5;
    0x00000bf8 mov.w r8, 6                                   |         r8 = 6;
    0x00000bfc b 0xb2e                                       |         goto label_1;
    0x00000bfe ldr.w r3, [r6, 5]                             |         r3 = *((r6 + 5));
    0x00000c02 str r3, [r4, 8]                               |         *((r4 + 8)) = r3;
                                                             | label_25:
    0x00000c04 movs r3, 9                                    |         r3 = 9;
    0x00000c06 mov.w r8, 0xa                                 |         r8 = 0xa;
    0x00000c0a b 0xb2e                                       |         goto label_1;
    0x00000c0c cmp r5, 4                                     |         
                                                             |         if (r5 > 4) {
    0x00000c0e bhi.w 0x1140                                  |             goto label_32;
                                                             |         }
    0x00000c12 cmp r5, 0                                     |         
    0x00000c14 beq 0xbf6                                     |         
                                                             |     } while (r5 == 0);
    0x00000c16 mov r2, r5                                    |     r2 = r5;
    0x00000c18 adds r1, r6, 5                                |     r1 = r6 + 5;
    0x00000c1a add.w r0, r4, 8                               |     r0 = r4 + 8;
    0x00000c1e add.w r8, r5, 6                               |     r8 = r5 + 6;
    0x00000c22 blx 0x7a8                                     |     memcpy (r0, r1, r2);
    0x00000c26 adds r3, r5, 5                                |     r3 = r5 + 5;
    0x00000c28 b 0xb2e                                       |     goto label_1;
    0x00000c2a movs r3, 0                                    |     r3 = 0;
    0x00000c2c vstr d8, [r4]                                 |     __asm ("vstr d8, [r4]");
    0x00000c30 str r3, [r4, 8]                               |     *((r4 + 8)) = r3;
    0x00000c32 b 0xbf6                                       |     goto label_2;
    0x00000c34 mov r0, r8                                    |     r0 = r8;
    0x00000c36 blx 0x7e4                                     |     strdup (r0);
    0x00000c3a ldr r3, [sp, 0x48]                            |     r3 = *(arg_48h);
    0x00000c3c str r0, [r3, 4]                               |     *((r3 + 4)) = r0;
                                                             | label_6:
    0x00000c3e ldr r3, [r4]                                  |     r3 = *(r4);
    0x00000c40 cmp r3, 0x15                                  |     
                                                             |     if (r3 != 0x15) {
    0x00000c42 beq 0xc48                                     |         
                                                             | label_7:
    0x00000c44 cmp r3, 0x18                                  |         
                                                             |         if (r3 != 0x18) {
    0x00000c46 bne 0xc4e                                     |             goto label_33;
                                                             |         }
                                                             |     }
                                                             | label_12:
    0x00000c48 mov r0, r8                                    |     r0 = r8;
    0x00000c4a blx 0x778                                     |     free (r0);
                                                             | label_33:
    0x00000c4e mov r0, r4                                    |     r0 = r4;
    0x00000c50 add.w fp, fp, 1                               |     
    0x00000c54 blx 0x778                                     |     free (r0);
    0x00000c58 ldr r3, [sp, 0x38]                            |     r3 = *(arg_38h);
    0x00000c5a cmp fp, r3                                    |     
                                                             |     if (fp != r3) {
    0x00000c5c bne.w 0x962                                   |         goto label_3;
                                                             |     }
                                                             | label_21:
    0x00000c60 ldr r3, [sp, 0x4c]                            |     r3 = *(arg_4ch);
    0x00000c62 cmp r3, r7                                    |     
                                                             |     if (r3 > r7) {
    0x00000c64 bgt.w 0x948                                   |         goto label_4;
                                                             |     }
    0x00000c68 ldr r6, [sp, 0x54]                            |     r6 = *(arg_54h);
    0x00000c6a mov r8, sl                                    |     r8 = sl;
    0x00000c6c mov r0, r8                                    |     r0 = r8;
    0x00000c6e blx 0x778                                     |     free (r0);
    0x00000c72 ldr.w r4, [sb]                                |     r4 = *(sb);
    0x00000c76 cmp r4, 0                                     |     
                                                             |     if (r4 == 0) {
    0x00000c78 beq.w 0xf10                                   |         goto label_34;
                                                             |     }
    0x00000c7c ldr r0, [r6, 8]                               |     r0 = *((r6 + 8));
    0x00000c7e movs r5, 0                                    |     r5 = 0;
    0x00000c80 mov.w r2, 0x1a0                               |     r2 = 0x1a0;
    0x00000c84 movw r1, 0x241                                |     r1 = 0x241;
    0x00000c88 str r5, [sp, 0x58]                            |     *(arg_58h) = r5;
    0x00000c8a blx 0x7c0                                     |     r0 = open64 ();
    0x00000c8e subs r7, r0, 0                                |     r7 = r0 - 0;
                                                             |     if (r7 < r0) {
    0x00000c90 blt.w 0xff0                                   |         goto label_35;
                                                             |     }
    0x00000c94 ldr.w r3, [sb, 4]                             |     r3 = *((sb + 4));
    0x00000c98 cmp r3, r5                                    |     
                                                             |     if (r3 > r5) {
    0x00000c9a bgt.w 0xf30                                   |         goto label_36;
                                                             |     }
    0x00000c9e mov sl, r5                                    |     sl = r5;
                                                             | label_13:
    0x00000ca0 ldr r2, [sp, 0x40]                            |     r2 = *(ptr);
    0x00000ca2 ldr r5, [sp, 0x58]                            |     r5 = *(arg_58h);
    0x00000ca4 ldr r3, [r2]                                  |     r3 = *(r2);
                                                             |     if (r3 != 0) {
    0x00000ca6 cbz r3, 0xcec                                 |         
    0x00000ca8 str r3, [sp]                                  |         *(sp) = r3;
    0x00000caa movs r1, 1                                    |         r1 = 1;
    0x00000cac ldr r3, [r2, 0x20]                            |         r3 = *((r2 + 0x20));
    0x00000cae ldr r0, [sp, 0x50]                            |         r0 = *(arg_50h);
    0x00000cb0 str r3, [sp, 0x20]                            |         *(arg_20h) = r3;
    0x00000cb2 ldr r3, [r2, 0x1c]                            |         r3 = *((r2 + 0x1c));
    0x00000cb4 str r3, [sp, 0x1c]                            |         *(arg_1ch) = r3;
    0x00000cb6 ldr r3, [r2, 0x18]                            |         r3 = *((r2 + 0x18));
    0x00000cb8 str r3, [sp, 0x18]                            |         *(arg_18h) = r3;
    0x00000cba ldr r3, [r2, 0x14]                            |         r3 = *((r2 + 0x14));
    0x00000cbc str r3, [sp, 0x14]                            |         *(arg_14h) = r3;
    0x00000cbe ldr r3, [r2, 0x10]                            |         r3 = *((r2 + 0x10));
    0x00000cc0 str r3, [sp, 0x10]                            |         *(arg_10h) = r3;
    0x00000cc2 ldr r3, [r2, 0xc]                             |         r3 = *((r2 + 0xc));
    0x00000cc4 str r3, [sp, 0xc]                             |         *(arg_ch) = r3;
    0x00000cc6 ldr r3, [r2, 8]                               |         r3 = *((r2 + 8));
    0x00000cc8 str r3, [sp, 8]                               |         *(arg_8h) = r3;
    0x00000cca ldr r3, [r2, 4]                               |         r3 = *((r2 + 4));
    0x00000ccc ldr.w r2, [pc, 0x49c]                         |         
    0x00000cd0 str r3, [sp, 4]                               |         var_4h = r3;
    0x00000cd2 mov r3, r5                                    |         r3 = r5;
    0x00000cd4 add r2, pc                                    |         r2 = 0x1e44;
    0x00000cd6 blx 0x79c                                     |         r0 = asprintf_chk ()
    0x00000cda mov sl, r0                                    |         sl = r0;
    0x00000cdc mov r0, r5                                    |         r0 = r5;
    0x00000cde blx 0x778                                     |         free (r0);
    0x00000ce2 cmp.w sl, 0                                   |         
    0x00000ce4 lsrs r0, r0, 0x1c                             |         r0 >>= 0x1c;
                                                             |         if (r0 < r0) {
    0x00000ce6 blt.w 0x104e                                  |             goto label_37;
                                                             |         }
    0x00000cea ldr r5, [sp, 0x58]                            |         r5 = *(arg_58h);
                                                             |     }
    0x00000cec ldr r2, [sp, 0x44]                            |     r2 = *(arg_44h);
    0x00000cee ldr r3, [r2]                                  |     r3 = *(r2);
                                                             |     if (r3 != 0) {
    0x00000cf0 cbz r3, 0xd2e                                 |         
    0x00000cf2 str r3, [sp]                                  |         *(sp) = r3;
    0x00000cf4 movs r1, 1                                    |         r1 = 1;
    0x00000cf6 ldr r3, [r2, 0x18]                            |         r3 = *((r2 + 0x18));
    0x00000cf8 ldr r0, [sp, 0x50]                            |         r0 = *(arg_50h);
    0x00000cfa str r3, [sp, 0x18]                            |         *(arg_18h) = r3;
    0x00000cfc ldr r3, [r2, 0x14]                            |         r3 = *((r2 + 0x14));
    0x00000cfe str r3, [sp, 0x14]                            |         *(arg_14h) = r3;
    0x00000d00 ldr r3, [r2, 0x10]                            |         r3 = *((r2 + 0x10));
    0x00000d02 str r3, [sp, 0x10]                            |         *(arg_10h) = r3;
    0x00000d04 ldr r3, [r2, 0xc]                             |         r3 = *((r2 + 0xc));
    0x00000d06 str r3, [sp, 0xc]                             |         *(arg_ch) = r3;
    0x00000d08 ldr r3, [r2, 8]                               |         r3 = *((r2 + 8));
    0x00000d0a str r3, [sp, 8]                               |         *(arg_8h) = r3;
    0x00000d0c ldr r3, [r2, 4]                               |         r3 = *((r2 + 4));
    0x00000d0e ldr.w r2, [pc, 0x460]                         |         
    0x00000d12 str r3, [sp, 4]                               |         var_4h = r3;
    0x00000d14 mov r3, r5                                    |         r3 = r5;
    0x00000d16 add r2, pc                                    |         r2 = 0x1e8c;
    0x00000d18 blx 0x79c                                     |         r0 = asprintf_chk ()
    0x00000d1c mov sl, r0                                    |         sl = r0;
    0x00000d1e mov r0, r5                                    |         r0 = r5;
    0x00000d20 blx 0x778                                     |         free (r0);
    0x00000d24 cmp.w sl, 0                                   |         
                                                             |         if (sl < 0) {
    0x00000d28 blt.w 0xfd0                                   |             goto label_38;
                                                             |         }
    0x00000d2c ldr r5, [sp, 0x58]                            |         r5 = *(arg_58h);
                                                             |     }
    0x00000d2e ldr r2, [sp, 0x48]                            |     r2 = *(arg_48h);
    0x00000d30 ldr r3, [r2]                                  |     r3 = *(r2);
                                                             |     if (r3 != 0) {
    0x00000d32 cbz r3, 0xd66                                 |         
    0x00000d34 str r3, [sp]                                  |         *(sp) = r3;
    0x00000d36 movs r1, 1                                    |         r1 = 1;
    0x00000d38 ldr r3, [r2, 0x10]                            |         r3 = *((r2 + 0x10));
    0x00000d3a ldr r0, [sp, 0x50]                            |         r0 = *(arg_50h);
    0x00000d3c str r3, [sp, 0x10]                            |         *(arg_10h) = r3;
    0x00000d3e ldr r3, [r2, 0xc]                             |         r3 = *((r2 + 0xc));
    0x00000d40 str r3, [sp, 0xc]                             |         *(arg_ch) = r3;
    0x00000d42 ldr r3, [r2, 8]                               |         r3 = *((r2 + 8));
    0x00000d44 str r3, [sp, 8]                               |         *(arg_8h) = r3;
    0x00000d46 ldr r3, [r2, 4]                               |         r3 = *((r2 + 4));
    0x00000d48 ldr.w r2, [pc, 0x428]                         |         
    0x00000d4c str r3, [sp, 4]                               |         var_4h = r3;
    0x00000d4e mov r3, r5                                    |         r3 = r5;
    0x00000d50 add r2, pc                                    |         r2 = 0x1ec8;
    0x00000d52 blx 0x79c                                     |         r0 = asprintf_chk ()
    0x00000d56 mov sl, r0                                    |         sl = r0;
    0x00000d58 mov r0, r5                                    |         r0 = r5;
    0x00000d5a blx 0x778                                     |         free (r0);
    0x00000d5e cmp.w sl, 0                                   |         
                                                             |         if (sl < 0) {
    0x00000d62 blt.w 0x102a                                  |             goto label_39;
                                                             |         }
                                                             |     }
    0x00000d66 ldr r1, [sp, 0x58]                            |     r1 = *(arg_58h);
    0x00000d68 mov r2, sl                                    |     r2 = sl;
    0x00000d6a mov r0, r7                                    |     r0 = r7;
    0x00000d6c blx 0x790                                     |     r0 = write (r0, r1, r2);
    0x00000d70 cmp r0, 0                                     |     
                                                             |     if (r0 < 0) {
    0x00000d72 blt.w 0x1020                                  |         goto label_40;
                                                             |     }
    0x00000d76 ldr r0, [sp, 0x58]                            |     r0 = *(arg_58h);
                                                             |     if (r0 != 0) {
    0x00000d78 cbz r0, 0xd7e                                 |         
    0x00000d7a blx 0x778                                     |         free (r0);
                                                             |     }
    0x00000d7e mov r0, r7                                    |     r0 = r7;
    0x00000d80 movs r6, 0                                    |     r6 = 0;
    0x00000d82 blx 0x7d8                                     |     close (r0);
    0x00000d86 b 0xa5e                                       |     goto label_5;
    0x00000d88 ldr r1, [r4, 4]                               |     r1 = *((r4 + 4));
    0x00000d8a mov r0, r8                                    |     r0 = r8;
    0x00000d8c bl 0x13a4                                     |     fcn_000013a4 (r0, r1);
    0x00000d90 str r0, [r5, 8]                               |     *((r5 + 8)) = r0;
    0x00000d92 b 0xc3e                                       |     goto label_6;
    0x00000d94 ldr r3, [sp, 0x48]                            |     r3 = *(arg_48h);
    0x00000d96 str.w r8, [r3, 0x10]                          |     __asm ("str.w r8, [r3, 0x10]");
    0x00000d9a b 0xc3e                                       |     goto label_6;
    0x00000d9c ldr r3, [sp, 0x48]                            |     r3 = *(arg_48h);
    0x00000d9e str.w r8, [r3, 0xc]                           |     __asm ("str.w r8, [r3, 0xc]");
    0x00000da2 b 0xc3e                                       |     goto label_6;
    0x00000da4 ldr r3, [sp, 0x48]                            |     r3 = *(arg_48h);
    0x00000da6 str.w r8, [r3, 8]                             |     __asm ("str.w r8, [r3, 8]");
    0x00000daa b 0xc3e                                       |     goto label_6;
    0x00000dac mov r0, r8                                    |     r0 = r8;
    0x00000dae blx 0x7e4                                     |     strdup (r0);
    0x00000db2 ldr r3, [sp, 0x48]                            |     r3 = *(arg_48h);
    0x00000db4 str r0, [r3]                                  |     *(r3) = r0;
    0x00000db6 b 0xc3e                                       |     goto label_6;
    0x00000db8 ldr r3, [sp, 0x44]                            |     r3 = *(arg_44h);
    0x00000dba str.w r8, [r3, 0x18]                          |     __asm ("str.w r8, [r3, 0x18]");
    0x00000dbe b 0xc3e                                       |     goto label_6;
    0x00000dc0 ldr r3, [sp, 0x44]                            |     r3 = *(arg_44h);
    0x00000dc2 str.w r8, [r3, 0x14]                          |     __asm ("str.w r8, [r3, 0x14]");
    0x00000dc6 b 0xc3e                                       |     goto label_6;
                                                             | label_19:
    0x00000dc8 ldr r3, [sp, 0x44]                            |     r3 = *(arg_44h);
    0x00000dca str.w r8, [r3, 0x10]                          |     __asm ("str.w r8, [r3, 0x10]");
    0x00000dce b 0xc3e                                       |     goto label_6;
    0x00000dd0 mov r0, r8                                    |     r0 = r8;
    0x00000dd2 blx 0x7e4                                     |     strdup (r0);
    0x00000dd6 str r0, [r5, 0x10]                            |     *((r5 + 0x10)) = r0;
    0x00000dd8 b 0xc3e                                       |     goto label_6;
    0x00000dda mov r0, r8                                    |     r0 = r8;
    0x00000ddc blx 0x7e4                                     |     strdup (r0);
    0x00000de0 str r0, [r5, 0xc]                             |     *((r5 + 0xc)) = r0;
    0x00000de2 b 0xc3e                                       |     goto label_6;
    0x00000de4 str.w r8, [r5, 4]                             |     __asm ("str.w r8, [r5, 4]");
    0x00000de8 b 0xc3e                                       |     goto label_6;
    0x00000dea mov r0, r8                                    |     r0 = r8;
    0x00000dec bl 0x134c                                     |     fcn_0000134c (r0);
    0x00000df0 str r0, [r5, 0x20]                            |     *((r5 + 0x20)) = r0;
    0x00000df2 b 0xc3e                                       |     goto label_6;
    0x00000df4 mov r0, r8                                    |     r0 = r8;
    0x00000df6 bl 0x134c                                     |     fcn_0000134c (r0);
    0x00000dfa str r0, [r5, 0x18]                            |     *((r5 + 0x18)) = r0;
    0x00000dfc b 0xc3e                                       |     goto label_6;
    0x00000dfe ldr r3, [r4]                                  |     r3 = *(r4);
    0x00000e00 cmp r3, 0x15                                  |     
                                                             |     if (r3 == 0x15) {
    0x00000e02 beq.w 0xfc6                                   |         goto label_41;
                                                             |     }
    0x00000e06 movs r2, 0                                    |     r2 = 0;
    0x00000e08 str r2, [r5, 0x14]                            |     *((r5 + 0x14)) = r2;
    0x00000e0a b 0xc44                                       |     goto label_7;
    0x00000e0c mov r0, r8                                    |     r0 = r8;
    0x00000e0e blx 0x7e4                                     |     strdup (r0);
    0x00000e12 ldr r3, [sp, 0x44]                            |     r3 = *(arg_44h);
    0x00000e14 str r0, [r3, 0xc]                             |     *((r3 + 0xc)) = r0;
    0x00000e16 b 0xc3e                                       |     goto label_6;
    0x00000e18 ldr r3, [sp, 0x44]                            |     r3 = *(arg_44h);
    0x00000e1a str.w r8, [r3, 8]                             |     __asm ("str.w r8, [r3, 8]");
    0x00000e1e b 0xc3e                                       |     goto label_6;
    0x00000e20 ldr r3, [sp, 0x44]                            |     r3 = *(arg_44h);
    0x00000e22 str.w r8, [r3, 4]                             |     __asm ("str.w r8, [r3, 4]");
    0x00000e26 b 0xc3e                                       |     goto label_6;
    0x00000e28 mov r0, r8                                    |     r0 = r8;
    0x00000e2a blx 0x7e4                                     |     strdup (r0);
    0x00000e2e ldr r3, [sp, 0x44]                            |     r3 = *(arg_44h);
    0x00000e30 str r0, [r3]                                  |     *(r3) = r0;
    0x00000e32 b 0xc3e                                       |     goto label_6;
    0x00000e34 ldr r3, [sp, 0x40]                            |     r3 = *(ptr);
    0x00000e36 str.w r8, [r3, 0x20]                          |     __asm ("str.w r8, [r3, 0x20]");
    0x00000e3a b 0xc3e                                       |     goto label_6;
    0x00000e3c ldr r3, [sp, 0x40]                            |     r3 = *(ptr);
    0x00000e3e str.w r8, [r3, 0x1c]                          |     __asm ("str.w r8, [r3, 0x1c]");
    0x00000e42 b 0xc3e                                       |     goto label_6;
    0x00000e44 mov r0, r8                                    |     r0 = r8;
    0x00000e46 blx 0x7e4                                     |     strdup (r0);
    0x00000e4a ldr r3, [sp, 0x40]                            |     r3 = *(ptr);
    0x00000e4c str r0, [r3, 0x18]                            |     *((r3 + 0x18)) = r0;
    0x00000e4e b 0xc3e                                       |     goto label_6;
    0x00000e50 mov r0, r8                                    |     r0 = r8;
    0x00000e52 blx 0x7e4                                     |     strdup (r0);
    0x00000e56 ldr r3, [sp, 0x40]                            |     r3 = *(ptr);
    0x00000e58 str r0, [r3, 0x14]                            |     *((r3 + 0x14)) = r0;
    0x00000e5a b 0xc3e                                       |     goto label_6;
    0x00000e5c ldr r3, [sp, 0x40]                            |     r3 = *(ptr);
    0x00000e5e str.w r8, [r3, 0x10]                          |     __asm ("str.w r8, [r3, 0x10]");
    0x00000e62 b 0xc3e                                       |     goto label_6;
    0x00000e64 ldr r3, [sp, 0x40]                            |     r3 = *(ptr);
    0x00000e66 str.w r8, [r3, 0xc]                           |     __asm ("str.w r8, [r3, 0xc]");
    0x00000e6a b 0xc3e                                       |     goto label_6;
    0x00000e6c ldr r1, [r4, 4]                               |     r1 = *((r4 + 4));
    0x00000e6e mov r0, r8                                    |     r0 = r8;
    0x00000e70 bl 0x13a4                                     |     fcn_000013a4 (r0, r1);
    0x00000e74 ldr r3, [sp, 0x40]                            |     r3 = *(ptr);
    0x00000e76 str r0, [r3, 8]                               |     *((r3 + 8)) = r0;
    0x00000e78 b 0xc3e                                       |     goto label_6;
    0x00000e7a mov r0, r8                                    |     r0 = r8;
    0x00000e7c bl 0x134c                                     |     fcn_0000134c (r0);
    0x00000e80 ldr r3, [sp, 0x40]                            |     r3 = *(ptr);
    0x00000e82 str r0, [r3, 4]                               |     *((r3 + 4)) = r0;
    0x00000e84 b 0xc3e                                       |     goto label_6;
    0x00000e86 mov r0, r8                                    |     r0 = r8;
    0x00000e88 blx 0x7e4                                     |     strdup (r0);
    0x00000e8c ldr r3, [sp, 0x40]                            |     r3 = *(ptr);
    0x00000e8e str r0, [r3]                                  |     *(r3) = r0;
    0x00000e90 b 0xc3e                                       |     goto label_6;
    0x00000e92 ldr r1, [r4, 4]                               |     r1 = *((r4 + 4));
    0x00000e94 mov r0, r8                                    |     r0 = r8;
    0x00000e96 bl 0x13a4                                     |     fcn_000013a4 (r0, r1);
    0x00000e9a str r0, [r5, 0x24]                            |     *((r5 + 0x24)) = r0;
    0x00000e9c b 0xc3e                                       |     goto label_6;
    0x00000e9e ldr r1, [r4, 4]                               |     r1 = *((r4 + 4));
    0x00000ea0 mov r0, r8                                    |     r0 = r8;
    0x00000ea2 bl 0x13a4                                     |     fcn_000013a4 (r0, r1);
    0x00000ea6 str r0, [r5, 0x1c]                            |     *((r5 + 0x1c)) = r0;
    0x00000ea8 b 0xc3e                                       |     goto label_6;
    0x00000eaa str.w r8, [r5]                                |     __asm ("str.w r8, [r5]");
    0x00000eae b 0xc3e                                       |     goto label_6;
                                                             | label_26:
    0x00000eb0 movs r5, 0                                    |     r5 = 0;
    0x00000eb2 b 0xb9a                                       |     goto label_8;
                                                             | label_27:
    0x00000eb4 ldr.w r5, [sb]                                |     r5 = *(sb);
    0x00000eb8 cmp r5, 0                                     |     
                                                             |     if (r5 == 0) {
    0x00000eba beq.w 0x1084                                  |         goto label_42;
                                                             |     }
    0x00000ebe add.w r3, fp, -1                              |     r3 = fp + -1;
    0x00000ec2 cmp.w fp, 0                                   |     
                                                             |     if (fp != 0) {
    0x00000ec6 bne 0xed0                                     |         goto label_43;
                                                             |     }
    0x00000ec8 b 0xede                                       |     goto label_44;
                                                             | label_9:
    0x00000eca cmp r5, 0                                     |     
                                                             |     if (r5 == 0) {
    0x00000ecc beq.w 0xb9a                                   |         goto label_8;
                                                             |     }
                                                             | label_43:
    0x00000ed0 subs r3, 1                                    |     r3--;
    0x00000ed2 ldr r5, [r5, 4]                               |     r5 = *((r5 + 4));
    0x00000ed4 adds r2, r3, 1                                |     r2 = r3 + 1;
                                                             |     if (r2 != r3) {
    0x00000ed6 bne 0xeca                                     |         goto label_9;
                                                             |     }
    0x00000ed8 cmp r5, 0                                     |     
                                                             |     if (r5 == 0) {
    0x00000eda beq.w 0xb9a                                   |         goto label_8;
                                                             |     }
                                                             | label_44:
    0x00000ede ldr r5, [r5]                                  |     r5 = *(r5);
    0x00000ee0 b 0xb9a                                       |     goto label_8;
                                                             | label_30:
    0x00000ee2 str r0, [sp, 0x3c]                            |     *(arg_3ch) = r0;
    0x00000ee4 b 0xb8c                                       |     goto label_10;
                                                             | label_31:
    0x00000ee6 adds r0, r5, 1                                |     r0 = r5 + 1;
    0x00000ee8 blx 0x7f0                                     |     malloc (r0);
    0x00000eec movs r3, 0x15                                 |     r3 = 0x15;
    0x00000eee mov r8, r0                                    |     r8 = r0;
    0x00000ef0 str r0, [r4, 8]                               |     *((r4 + 8)) = r0;
    0x00000ef2 str r3, [r4]                                  |     *(r4) = r3;
    0x00000ef4 cmp r0, 0                                     |     
                                                             |     if (r0 == 0) {
    0x00000ef6 beq.w 0x109a                                  |         goto label_45;
                                                             |     }
    0x00000efa mov r2, r5                                    |     r2 = r5;
    0x00000efc adds r1, r6, 5                                |     r1 = r6 + 5;
    0x00000efe blx 0x7a8                                     |     memcpy (r0, r1, r2);
    0x00000f02 movs r3, 0                                    |     r3 = 0;
    0x00000f04 strb.w r3, [r8, r5]                           |     *((r8 + r5)) = r3;
    0x00000f08 adds r3, r5, 5                                |     r3 = r5 + 5;
    0x00000f0a add.w r8, r5, 6                               |     r8 = r5 + 6;
    0x00000f0e b 0xb2e                                       |     goto label_1;
                                                             | label_34:
    0x00000f10 mov r6, r4                                    |     r6 = r4;
    0x00000f12 b 0x9e8                                       |     goto label_0;
                                                             | label_36:
    0x00000f30 ldr r3, [r4]                                  |     r3 = *(r4);
    0x00000f32 movs r1, 1                                    |     r1 = 1;
    0x00000f34 ldr r2, [pc, 0x248]                           |     
    0x00000f36 ldr r0, [sp, 0x50]                            |     r0 = *(arg_50h);
    0x00000f38 ldr r3, [r3, 8]                               |     r3 = *((r3 + 8));
    0x00000f3a add r2, pc                                    |     r2 = 0x20be;
    0x00000f3c blx 0x79c                                     |     r0 = asprintf_chk ()
    0x00000f40 cmp r0, r5                                    |     
                                                             |     if (r0 < r5) {
    0x00000f42 blt 0x1034                                    |         goto label_46;
                                                             |     }
    0x00000f44 ldr r3, [pc, 0x23c]                           |     
    0x00000f46 mov r5, r4                                    |     r5 = r4;
    0x00000f48 ldr.w fp, [pc, 0x23c]                         |     
    0x00000f4c ldr.w r8, [pc, 0x23c]                         |     
    0x00000f50 add r3, pc                                    |     r3 = 0x20d8;
    0x00000f52 str.w sb, [sp, 0x3c]                          |     __asm ("str.w sb, [arg_3ch]");
    0x00000f56 str r3, [sp, 0x38]                            |     *(arg_38h) = r3;
    0x00000f58 add fp, pc                                    |     fp = 0x20e4;
    0x00000f5a ldr r3, [sp, 0x50]                            |     r3 = *(arg_50h);
    0x00000f5c add r8, pc                                    |     r8 = 0x20ec;
    0x00000f5e str r4, [sp, 0x4c]                            |     *(arg_4ch) = r4;
    0x00000f60 str r7, [sp, 0x54]                            |     *(arg_54h) = r7;
    0x00000f62 str r3, [sp, 0x34]                            |     *(arg_34h) = r3;
    0x00000f64 b 0xfaa                                       |     
                                                             |     while (r1 != 0) {
    0x00000f66 mov r0, r8                                    |         r0 = r8;
                                                             | label_11:
    0x00000f68 ldr r4, [r2, 0x24]                            |         r4 = *((r2 + 0x24));
    0x00000f6a str r4, [sp, 0x2c]                            |         *(arg_2ch) = r4;
    0x00000f6c ldr r4, [r2, 0x20]                            |         r4 = *((r2 + 0x20));
    0x00000f6e str r4, [sp, 0x28]                            |         *(arg_28h) = r4;
    0x00000f70 ldr r4, [r2, 0x1c]                            |         r4 = *((r2 + 0x1c));
    0x00000f72 str r4, [sp, 0x24]                            |         *(arg_24h) = r4;
    0x00000f74 ldr r2, [r2, 0x18]                            |         r2 = *((r2 + 0x18));
    0x00000f76 str r1, [sp, 0x18]                            |         *(arg_18h) = r1;
    0x00000f78 movs r1, 1                                    |         r1 = 1;
    0x00000f7a strd sb, sl, [sp, 0xc]                        |         __asm ("strd sb, sl, [sp, 0xc]");
    0x00000f7e str r2, [sp, 0x20]                            |         *(arg_20h) = r2;
    0x00000f80 ldr r2, [pc, 0x20c]                           |         
    0x00000f82 strd r3, r7, [sp]                             |         __asm ("strd r3, r7, [sp]");
    0x00000f86 mov r3, r6                                    |         r3 = r6;
    0x00000f88 str r0, [sp, 0x1c]                            |         *(arg_1ch) = r0;
    0x00000f8a str r0, [sp, 0x14]                            |         *(arg_14h) = r0;
    0x00000f8c add r2, pc                                    |         r2 = 0x2120;
    0x00000f8e ldr r0, [sp, 0x34]                            |         r0 = *(arg_34h);
    0x00000f90 str.w lr, [sp, 8]                             |         __asm ("str.w lr, [arg_8h]");
    0x00000f94 blx 0x79c                                     |         r0 = asprintf_chk ()
    0x00000f98 subs.w sl, r0, 0                              |         sl = r0 - 0;
                                                             |         if (sl < r0) {
    0x00000f9c blt 0x1004                                    |             goto label_47;
                                                             |         }
    0x00000f9e mov r0, r6                                    |         r0 = r6;
    0x00000fa0 blx 0x778                                     |         free (r0);
    0x00000fa4 ldr r5, [r5, 4]                               |         r5 = *((r5 + 4));
    0x00000fa6 cmp r5, 0                                     |         
                                                             |         if (r5 == 0) {
    0x00000fa8 beq 0x1016                                    |             goto label_48;
                                                             |         }
    0x00000faa ldr r2, [r5]                                  |         r2 = *(r5);
    0x00000fac ldr r6, [sp, 0x58]                            |         r6 = *(arg_58h);
    0x00000fae ldr r1, [r2, 0x14]                            |         r1 = *((r2 + 0x14));
    0x00000fb0 ldrd r3, r7, [r2]                             |         __asm ("ldrd r3, r7, [r2]");
    0x00000fb4 ldrd lr, sb, [r2, 8]                          |         __asm ("ldrd lr, sb, [r2, 8]");
    0x00000fb8 ldr.w sl, [r2, 0x10]                          |         sl = *((r2 + 0x10));
    0x00000fbc cmp r1, 0                                     |         
    0x00000fbe bne 0xf66                                     |         
                                                             |     }
    0x00000fc0 ldr r0, [sp, 0x38]                            |     r0 = *(arg_38h);
    0x00000fc2 mov r1, fp                                    |     r1 = fp;
    0x00000fc4 b 0xf68                                       |     goto label_11;
                                                             | label_41:
    0x00000fc6 mov r0, r8                                    |     r0 = r8;
    0x00000fc8 blx 0x7e4                                     |     strdup (r0);
    0x00000fcc str r0, [r5, 0x14]                            |     *((r5 + 0x14)) = r0;
    0x00000fce b 0xc48                                       |     goto label_12;
                                                             | label_38:
    0x00000fd0 ldr r3, [pc, 0x1c0]                           |     
    0x00000fd2 ldr r2, [pc, 0x1c4]                           |     
    0x00000fd4 add r3, pc                                    |     r3 = 0x216c;
    0x00000fd6 add r2, pc                                    |     r2 = 0x2174;
                                                             |     do {
                                                             | label_14:
    0x00000fd8 movs r0, 0                                    |         r0 = 0;
    0x00000fda mov.w r1, 0x100                               |         r1 = 0x100;
    0x00000fde blx 0x820                                     |         g_log ();
    0x00000fe2 ldr r0, [sp, 0x58]                            |         r0 = *(arg_58h);
                                                             |         if (r0 != 0) {
    0x00000fe4 cbz r0, 0xfea                                 |             
                                                             | label_15:
    0x00000fe6 blx 0x778                                     |             free (r0);
                                                             |         }
                                                             | label_16:
    0x00000fea mov r0, r7                                    |         r0 = r7;
    0x00000fec blx 0x7d8                                     |         close (r0);
                                                             | label_35:
    0x00000ff0 ldr r0, [pc, 0x1a8]                           |         
    0x00000ff2 movs r6, 1                                    |         r6 = 1;
    0x00000ff4 add r0, pc                                    |         r0 = 0x2194;
    0x00000ff6 blx 0x808                                     |         puts (r0);
    0x00000ffa ldr r0, [pc, 0x1a4]                           |         
    0x00000ffc add r0, pc                                    |         r0 = 0x21a2;
    0x00000ffe blx 0x808                                     |         puts (r0);
    0x00001000 invalid                                       |         
                                                             | label_47:
    0x00001004 ldr r3, [pc, 0x19c]                           |         
    0x00001006 ldr r2, [pc, 0x1a0]                           |         
    0x00001008 ldr.w sb, [sp, 0x3c]                          |         sb = *(arg_3ch);
    0x0000100c ldr r4, [sp, 0x4c]                            |         r4 = *(arg_4ch);
    0x0000100e add r3, pc                                    |         r3 = 0x21b6;
    0x00001010 ldr r7, [sp, 0x54]                            |         r7 = *(arg_54h);
    0x00001012 add r2, pc                                    |         r2 = 0x21c0;
    0x00001014 b 0xfd8                                       |         
                                                             |     } while (1);
                                                             | label_48:
    0x00001016 ldr.w sb, [sp, 0x3c]                          |     sb = *(arg_3ch);
    0x0000101a ldr r4, [sp, 0x4c]                            |     r4 = *(arg_4ch);
    0x0000101c ldr r7, [sp, 0x54]                            |     r7 = *(arg_54h);
    0x0000101e b 0xca0                                       |     goto label_13;
                                                             | label_40:
    0x00001020 ldr r3, [pc, 0x188]                           |     
    0x00001022 ldr r2, [pc, 0x18c]                           |     
    0x00001024 add r3, pc                                    |     r3 = 0x21d4;
    0x00001026 add r2, pc                                    |     r2 = 0x21dc;
    0x00001028 b 0xfd8                                       |     goto label_14;
                                                             | label_39:
    0x0000102a ldr r3, [pc, 0x188]                           |     
    0x0000102c ldr r2, [pc, 0x188]                           |     
    0x0000102e add r3, pc                                    |     r3 = 0x21e8;
    0x00001030 add r2, pc                                    |     r2 = 0x21ec;
    0x00001032 b 0xfd8                                       |     goto label_14;
                                                             | label_46:
    0x00001034 ldr r3, [pc, 0x184]                           |     
    0x00001036 mov r0, r5                                    |     r0 = r5;
    0x00001038 ldr r2, [pc, 0x184]                           |     
    0x0000103a mov.w r1, 0x100                               |     r1 = 0x100;
    0x0000103e add r3, pc                                    |     r3 = 0x21fe;
    0x00001040 add r2, pc                                    |     r2 = 0x2204;
    0x00001042 blx 0x820                                     |     g_log ();
    0x00001046 ldr r0, [sp, 0x58]                            |     r0 = *(arg_58h);
    0x00001048 cmp r0, 0                                     |     
                                                             |     if (r0 != 0) {
    0x0000104a bne 0xfe6                                     |         goto label_15;
                                                             |     }
    0x0000104c b 0xfea                                       |     goto label_16;
                                                             | label_37:
    0x0000104e ldr r3, [pc, 0x174]                           |     
    0x00001050 ldr r2, [pc, 0x174]                           |     
    0x00001052 add r3, pc                                    |     r3 = 0x221c;
    0x00001054 add r2, pc                                    |     r2 = 0x2220;
    0x00001056 b 0xfd8                                       |     goto label_14;
                                                             | label_22:
    0x00001058 ldr r3, [pc, 0x170]                           |     
    0x0000105a movs r2, 0xf0                                 |     r2 = 0xf0;
    0x0000105c ldr r1, [pc, 0x170]                           |     
    0x0000105e ldr r0, [pc, 0x174]                           |     
    0x00001060 add r3, pc                                    |     r3 = 0x2230;
    0x00001062 add r1, pc                                    |     r1 = 0x2236;
    0x00001064 adds r3, 0x20                                 |     r3 += 0x20;
    0x00001066 add r0, pc                                    |     r0 = 0x2240;
    0x00001068 blx 0x76c                                     |     assert_fail ();
                                                             | label_20:
    0x0000106c blx 0x7fc                                     |     stack_chk_fail ();
    0x00001070 ldr r3, [pc, 0x164]                           |     
    0x00001072 mov.w r1, 0x100                               |     r1 = 0x100;
    0x00001076 ldr r2, [pc, 0x164]                           |     
    0x00001078 add r3, pc                                    |     r3 = 0x2254;
    0x0000107a add r2, pc                                    |     r2 = 0x225c;
    0x0000107c blx 0x820                                     |     g_log ();
    0x00001080 b.w 0x866                                     |     goto label_17;
                                                             | label_42:
    0x00001084 ldr r3, [pc, 0x158]                           |     
    0x00001086 movw r2, 0x3a6                                |     r2 = 0x3a6;
    0x0000108a ldr r1, [pc, 0x158]                           |     
    0x0000108c ldr r0, [pc, 0x158]                           |     
    0x0000108e add r3, pc                                    |     r3 = 0x2272;
    0x00001090 add r1, pc                                    |     r1 = 0x227a;
    0x00001092 adds r3, 0x34                                 |     r3 += 0x34;
    0x00001094 add r0, pc                                    |     r0 = 0x2280;
    0x00001096 blx 0x76c                                     |     assert_fail ();
                                                             | label_45:
    0x0000109a ldr r3, [pc, 0x150]                           |     
    0x0000109c mov.w r2, 0x132                               |     r2 = 0x132;
    0x000010a0 ldr r1, [pc, 0x14c]                           |     
    0x000010a2 ldr r0, [pc, 0x150]                           |     
    0x000010a4 add r3, pc                                    |     r3 = 0x2296;
    0x000010a6 add r1, pc                                    |     r1 = 0x229a;
    0x000010a8 adds r3, 0x20                                 |     r3 += 0x20;
    0x000010aa add r0, pc                                    |     r0 = 0x22a4;
    0x000010ac blx 0x76c                                     |     assert_fail ();
    0x000010b0 ldr r3, [pc, 0x144]                           |     
    0x000010b2 mov.w r1, 0x100                               |     r1 = 0x100;
    0x000010b6 ldr r2, [pc, 0x144]                           |     
    0x000010b8 add r3, pc                                    |     r3 = 0x22b4;
    0x000010ba add r2, pc                                    |     r2 = 0x22bc;
    0x000010bc blx 0x820                                     |     g_log ();
    0x000010c0 b.w 0x866                                     |     goto label_17;
                                                             | label_24:
    0x00001100 ldr r3, [pc, 0x118]                           |     
    0x00001102 movw r2, 0x165                                |     r2 = 0x165;
    0x00001106 ldr r1, [pc, 0x118]                           |     
    0x00001108 ldr r0, [pc, 0x118]                           |     
    0x0000110a add r3, pc                                    |     r3 = 0x232a;
    0x0000110c add r1, pc                                    |     r1 = 0x2332;
    0x0000110e adds r3, 0x20                                 |     r3 += 0x20;
    0x00001110 add r0, pc                                    |     r0 = 0x2338;
    0x00001112 blx 0x76c                                     |     assert_fail ();
                                                             | label_28:
    0x00001116 add.w r3, fp, 1                               |     r3 += arg_1h_2;
    0x0000111a ldr r2, [pc, 0x10c]                           |     
    0x0000111c str r3, [sp]                                  |     *(sp) = r3;
    0x0000111e mov r8, sl                                    |     r8 = sl;
    0x00001120 ldr r3, [pc, 0x108]                           |     
    0x00001122 mov.w r1, 0x100                               |     r1 = 0x100;
    0x00001126 add r2, pc                                    |     r2 = 0x2354;
    0x00001128 add r3, pc                                    |     r3 = 0x2358;
    0x0000112a b 0x9be                                       |     goto label_18;
                                                             | label_29:
    0x0000112c ldr r3, [pc, 0x100]                           |     
    0x0000112e mov.w r1, 0x100                               |     r1 = 0x100;
    0x00001132 ldr r2, [pc, 0x100]                           |     
    0x00001134 str r0, [sp, 0x3c]                            |     *(arg_3ch) = r0;
    0x00001136 add r3, pc                                    |     r3 = 0x236a;
    0x00001138 add r2, pc                                    |     r2 = 0x2372;
    0x0000113a blx 0x820                                     |     g_log ();
    0x0000113e b 0xb8c                                       |     goto label_10;
                                                             | label_32:
    0x00001140 ldr r3, [pc, 0xf4]                            |     
    0x00001142 movw r2, 0x103                                |     r2 = 0x103;
    0x00001146 ldr r1, [pc, 0xf4]                            |     
    0x00001148 ldr r0, [pc, 0xf4]                            |     
    0x0000114a add r3, pc                                    |     r3 = 0x2386;
    0x0000114c add r1, pc                                    |     r1 = 0x238e;
    0x0000114e adds r3, 0x20                                 |     r3 += 0x20;
    0x00001150 add r0, pc                                    |     r0 = 0x2394;
    0x00001152 blx 0x76c                                     |     assert_fail ();
                                                             | label_23:
    0x00001156 ldr r3, [pc, 0xec]                            |     
    0x00001158 mov.w r2, 0x1f4                               |     r2 = 0x1f4;
    0x0000115c ldr r1, [pc, 0xe8]                            |     
    0x0000115e ldr r0, [pc, 0xec]                            |     
    0x00001160 add r3, pc                                    |     r3 = 0x23aa;
    0x00001162 add r1, pc                                    |     r1 = 0x23ae;
    0x00001164 adds r3, 0x4c                                 |     r3 += 0x4c;
    0x00001166 add r0, pc                                    |     r0 = 0x23b8;
    0x00001168 blx 0x76c                                     |     assert_fail ();
    0x0000116c lsrs r0, r2, 0xd                              |     r0 = r2 >> 0xd;
    0x0000116e movs r0, r0                                   |     
    0x00001170 lsrs r6, r6, 0xd                              |     r6 >>= 0xd;
    0x00001172 movs r0, r0                                   |     
    0x00001174 lsrs r0, r4, 0xe                              |     r0 = r4 >> 0xe;
    0x00001176 movs r0, r0                                   |     
    0x00001178 lsrs r2, r1, 6                                |     r2 = r1 >> 6;
    0x0000117a movs r0, r0                                   |     
    0x0000117c lsls r4, r7, 0x1b                             |     r4 = r7 << 0x1b;
    0x0000117e movs r0, r0                                   |     
    0x00001180 lsrs r6, r5, 0x20                             |     r6 = r5 >> 0x20;
    0x00001182 movs r0, r0                                   |     
    0x00001184 lsrs r0, r4, 5                                |     r0 = r4 >> 5;
    0x00001186 movs r0, r0                                   |     
    0x00001188 lsls r0, r3, 0x15                             |     r0 = r3 << 0x15;
    0x0000118a movs r0, r0                                   |     
    0x0000118c lsls r4, r3, 0x15                             |     r4 = r3 << 0x15;
    0x0000118e movs r0, r0                                   |     
    0x00001190 lsrs r4, r4, 0x20                             |     r4 >>= 0x20;
    0x00001192 movs r0, r0                                   |     
    0x00001194 lsrs r4, r3, 3                                |     r4 = r3 >> 3;
    0x00001196 movs r0, r0                                   |     
    0x00001198 lsrs r6, r3, 3                                |     r6 = r3 >> 3;
    0x0000119a movs r0, r0                                   |     
    0x0000119c lsrs r0, r4, 6                                |     r0 = r4 >> 6;
    0x0000119e movs r0, r0                                   |     
    0x000011a0 lsls r0, r4, 0x13                             |     r0 = r4 << 0x13;
    0x000011a2 movs r0, r0                                   |     
    0x000011a4 lsrs r2, r4, 2                                |     r2 = r4 >> 2;
    0x000011a6 movs r0, r0                                   |     
    0x000011a8 lsls r2, r2, 0x1f                             |     r2 <<= 0x1f;
    0x000011aa movs r0, r0                                   |     
    0x000011ac lsrs r4, r1, 2                                |     r4 = r1 >> 2;
    0x000011ae movs r0, r0                                   |     
    0x000011b0 lsrs r2, r6, 4                                |     r2 = r6 >> 4;
    0x000011b2 movs r0, r0                                   |     
    0x000011b4 lsrs r2, r0, 2                                |     r2 = r0 >> 2;
    0x000011b6 movs r0, r0                                   |     
    0x000011b8 lsrs r0, r5, 3                                |     r0 = r5 >> 3;
    0x000011ba movs r0, r0                                   |     
    0x000011bc lsrs r2, r6, 1                                |     r2 = r6 >> 1;
    0x000011be movs r0, r0                                   |     
    0x000011c0 lsls r0, r7, 0x1c                             |     r0 = r7 << 0x1c;
    0x000011c2 movs r0, r0                                   |     
    0x000011c4 lsrs r6, r3, 1                                |     r6 = r3 >> 1;
    0x000011c6 movs r0, r0                                   |     
    0x000011c8 lsrs r0, r0, 0x20                             |     r0 >>= 0x20;
    0x000011ca movs r0, r0                                   |     
    0x000011cc lsrs r0, r0, 6                                |     r0 >>= 6;
    0x000011ce movs r0, r0                                   |     
    0x000011d0 lsls r2, r1, 0x16                             |     r2 = r1 << 0x16;
    0x000011d2 movs r0, r0                                   |     
    0x000011d4 lsls r6, r2, 0x17                             |     r6 = r2 << 0x17;
    0x000011d6 movs r0, r0                                   |     
    0x000011d8 lsrs r0, r7, 0x20                             |     r0 = r7 >> 0x20;
    0x000011da movs r0, r0                                   |     
    0x000011dc lsls r6, r3, 0x13                             |     r6 = r3 << 0x13;
    0x000011de movs r0, r0                                   |     
    0x000011e0 lsrs r2, r2, 5                                |     r2 >>= 5;
    0x000011e2 movs r0, r0                                   |     
    0x000011e4 lsls r4, r3, 0x15                             |     r4 = r3 << 0x15;
    0x000011e6 movs r0, r0                                   |     
    0x000011e8 lsls r4, r1, 0x1a                             |     r4 = r1 << 0x1a;
    0x000011ea movs r0, r0                                   |     
    0x000011ec lsrs r4, r7, 4                                |     r4 = r7 >> 4;
    0x000011ee movs r0, r0                                   |     
    0x000011f0 lsls r6, r0, 0x15                             |     r6 = r0 << 0x15;
    0x000011f2 movs r0, r0                                   |     
    0x000011f4 lsls r6, r1, 0x17                             |     r6 = r1 << 0x17;
    0x000011f6 movs r0, r0                                   |     
    0x000011f8 lsls r0, r7, 0x1f                             |     r0 = r7 << 0x1f;
    0x000011fa movs r0, r0                                   |     
    0x000011fc lsls r6, r1, 0x13                             |     r6 = r1 << 0x13;
    0x000011fe movs r0, r0                                   |     
    0x00001200 lsls r4, r4, 0x1f                             |     r4 <<= 0x1f;
    0x00001202 movs r0, r0                                   |     
    0x00001204 lsls r2, r5, 0x13                             |     r2 = r5 << 0x13;
    0x00001206 movs r0, r0                                   |     
    0x00001208 lsrs r6, r7, 3                                |     r6 = r7 >> 3;
    0x0000120a movs r0, r0                                   |     
    0x0000120c lsls r0, r1, 0x14                             |     r0 = r1 << 0x14;
    0x0000120e movs r0, r0                                   |     
    0x00001210 lsls r2, r7, 0x14                             |     r2 = r7 << 0x14;
    0x00001212 movs r0, r0                                   |     
    0x00001214 lsls r4, r7, 0x1e                             |     r4 = r7 << 0x1e;
    0x00001216 movs r0, r0                                   |     
    0x00001218 lsls r2, r6, 0x10                             |     r2 = r6 << 0x10;
    0x0000121a movs r0, r0                                   |     
    0x0000121c lsrs r6, r2, 3                                |     r6 = r2 >> 3;
    0x0000121e movs r0, r0                                   |     
    0x00001220 lsls r0, r4, 0x13                             |     r0 = r4 << 0x13;
    0x00001222 movs r0, r0                                   |     
    0x00001224 lsls r4, r7, 0x15                             |     r4 = r7 << 0x15;
    0x00001226 movs r0, r0                                   |     
    0x00001228 lsls r2, r3, 0x16                             |     r2 = r3 << 0x16;
    0x0000122a movs r0, r0                                   |     
    0x0000122c lsls r0, r1, 0x1e                             |     r0 = r1 << 0x1e;
    0x0000122e movs r0, r0                                   |     
    0x00001230 lsls r2, r7, 0x1d                             |     r2 = r7 << 0x1d;
    0x00001232 movs r0, r0                                   |     
    0x00001234 lsls r0, r7, 0x16                             |     r0 = r7 << 0x16;
    0x00001236 movs r0, r0                                   |     
    0x00001238 lsrs r6, r2, 2                                |     r6 = r2 >> 2;
    0x0000123a movs r0, r0                                   |     
    0x0000123c lsls r0, r4, 0x12                             |     r0 = r4 << 0x12;
    0x0000123e movs r0, r0                                   |     
    0x00001240 lsls r0, r6, 0x13                             |     r0 = r6 << 0x13;
    0x00001242 movs r0, r0                                   |     
    0x00001244 lsrs r0, r0, 2                                |     r0 >>= 2;
    0x00001246 movs r0, r0                                   |     
    0x00001248 lsls r2, r1, 0x12                             |     r2 = r1 << 0x12;
    0x0000124a movs r0, r0                                   |     
    0x0000124c lsrs r6, r5, 1                                |     r6 = r5 >> 1;
    0x0000124e movs r0, r0                                   |     
    0x00001284 adds r0, 0x14                                 |     r0 += 0x14;
    0x00001286 b 0xdc8                                       |     goto label_19;
                                                             | }

[*] Function printf used 6 times snmpd_migrate