[*] Binary protection state of AJAJSaveFile.dll

  
  	Partial RELRO  No Canary found   NX disabled  No PIE       No RPATH     No RUNPATH   Symbols


[*] Function strcpy tear down of AJAJSaveFile.dll

    ; assembly                                           | /* r2dec pseudo code output */
                                                         | /* /logs/firmware/unblob_extracted/firmware_extract/56048-12514271.gzip_extract/gzip.uncompressed_extract/5243916-15068666.gzip_extract/gzip.uncompressed_extract/root/AJAJSaveFile.dll @ 0x1b928 */
                                                         | #include <stdint.h>
                                                         |  
    ; (fcn) sym.scgi_parse_input_SCGI_DESC_ ()           | void scgi_parse_input_SCGI_DESC_ (int32_t arg1) {
                                                         |     int32_t var_30h;
                                                         |     char * var_28h;
                                                         |     char * dest;
                                                         |     int32_t var_20h;
                                                         |     size_t nmeb;
                                                         |     size_t var_18h;
                                                         |     int32_t var_14h;
                                                         |     int32_t var_10h;
                                                         |     int32_t var_sp_28h;
                                                         |     int32_t var_sp_20h;
                                                         |     int32_t var_8h;
                                                         |     r0 = arg1;
                                                         |     /* scgi_parse_input(SCGI_DESC*) */
    0x0001b928 push {r4, fp, lr}                         |     
    0x0001b92c add fp, sp, 8                             |     
    0x0001b930 sub sp, sp, 0x2c                          |     
    0x0001b934 str r0, [fp, -0x30]                       |     var_30h = r0;
    0x0001b938 ldr r3, [fp, -0x30]                       |     r3 = var_30h;
    0x0001b93c ldr r3, [r3, 0x14]                        |     r3 = *((r3 + 0x14));
    0x0001b940 ldr r2, [fp, -0x30]                       |     r2 = var_30h;
    0x0001b944 ldr r2, [r2, 0x3c]                        |     r2 = *((r2 + 0x3c));
    0x0001b948 add r3, r3, r2                            |     r3 += r2;
    0x0001b94c str r3, [fp, -0x10]                       |     var_10h = r3;
    0x0001b950 ldr r3, [fp, -0x30]                       |     r3 = var_30h;
    0x0001b954 ldr r2, [r3, 0x3c]                        |     r2 = *((r3 + 0x3c));
    0x0001b958 ldr r3, [fp, -0x30]                       |     r3 = var_30h;
    0x0001b95c ldr r3, [r3, 0x1c]                        |     r3 = *((r3 + 0x1c));
    0x0001b960 cmp r2, r3                                |     
                                                         |     if (r2 == r3) {
    0x0001b964 beq 0x1c050                               |         goto label_2;
                                                         |     }
    0x0001b968 ldr r3, [fp, -0x30]                       |     r3 = var_30h;
    0x0001b96c ldr r3, [r3, 0x3c]                        |     r3 = *((r3 + 0x3c));
    0x0001b970 cmp r3, 0                                 |     
                                                         |     if (r3 == 0) {
    0x0001b974 bne 0x1b9ac                               |         
    0x0001b978 ldr r3, [fp, -0x30]                       |         r3 = var_30h;
    0x0001b97c ldr r3, [r3, 0x14]                        |         r3 = *((r3 + 0x14));
    0x0001b980 ldrb r3, [r3]                             |         r3 = *(r3);
    0x0001b984 cmp r3, 0x30                              |         
                                                         |         if (r3 != 0x30) {
    0x0001b988 beq 0x1b9a0                               |             
    0x0001b98c ldr r3, [fp, -0x30]                       |             r3 = var_30h;
    0x0001b990 ldr r3, [r3, 0x14]                        |             r3 = *((r3 + 0x14));
    0x0001b994 ldrb r3, [r3]                             |             r3 = *(r3);
    0x0001b998 cmp r3, 0x3a                              |             
                                                         |             if (r3 != 0x3a) {
    0x0001b99c bne 0x1b9ac                               |                 goto label_3;
                                                         |             }
                                                         |         }
    0x0001b9a0 ldr r0, [fp, -0x30]                       |         r0 = var_30h;
    0x0001b9a4 bl 0x1abc0                                |         scgi_kill_socket ();
    0x0001b9a8 b 0x1c064                                 |         goto label_4;
                                                         |     }
                                                         | label_3:
    0x0001b9ac ldr r3, [fp, -0x30]                       |     r3 = var_30h;
    0x0001b9b0 ldr r3, [r3, 0x14]                        |     r3 = *((r3 + 0x14));
    0x0001b9b4 ldr r2, [fp, -0x30]                       |     r2 = var_30h;
    0x0001b9b8 ldr r2, [r2, 0x1c]                        |     r2 = *((r2 + 0x1c));
    0x0001b9bc add r3, r3, r2                            |     r3 += r2;
    0x0001b9c0 str r3, [fp, -0x14]                       |     var_14h = r3;
                                                         |     do {
                                                         | label_1:
    0x0001b9c4 ldr r3, [fp, -0x30]                       |         r3 = var_30h;
    0x0001b9c8 ldr r3, [r3, 0x4c]                        |         r3 = *((r3 + 0x4c));
    0x0001b9cc cmp r3, 3                                 |         
                                                         |         if (r3 > 3) {
                                                         |             /* switch table (4 cases) at 0x1b9d8 */
    0x0001b9d0 ldrls pc, [pc, r3, lsl 2]                 |             offset_0 = r3 << 2;
                                                         |             pc = *((pc + offset_0));
                                                         |         }
    0x0001b9d4 b 0x1c058                                 |         goto label_5;
                                                         | label_0:
    0x0001b9e8 ldr r2, [fp, -0x10]                       |         r2 = var_10h;
    0x0001b9ec ldr r3, [fp, -0x14]                       |         r3 = var_14h;
    0x0001b9f0 cmp r2, r3                                |         
                                                         |         if (r2 >= r3) {
    0x0001b9f4 bhs 0x1c034                               |             goto label_6;
                                                         |         }
    0x0001b9f8 ldr r3, [fp, -0x30]                       |         r3 = var_30h;
    0x0001b9fc ldr r3, [r3, 0x3c]                        |         r3 = *((r3 + 0x3c));
    0x0001ba00 add r2, r3, 1                             |         r2 = r3 + 1;
    0x0001ba04 ldr r3, [fp, -0x30]                       |         r3 = var_30h;
    0x0001ba08 str r2, [r3, 0x3c]                        |         *((r3 + 0x3c)) = r2;
    0x0001ba0c ldr r3, [fp, -0x10]                       |         r3 = var_10h;
    0x0001ba10 ldrb r3, [r3]                             |         r3 = *(r3);
    0x0001ba14 cmp r3, 0x3a                              |         
                                                         |         if (r3 != 0x3a) {
    0x0001ba18 bne 0x1baa0                               |             goto label_7;
                                                         |         }
    0x0001ba1c ldr r3, [fp, -0x30]                       |         r3 = var_30h;
    0x0001ba20 mov r2, 1                                 |         r2 = 1;
    0x0001ba24 str r2, [r3, 0x4c]                        |         *((r3 + 0x4c)) = r2;
    0x0001ba28 ldr r3, [fp, -0x10]                       |         r3 = var_10h;
    0x0001ba2c mov r2, 0                                 |         r2 = 0;
    0x0001ba30 strb r2, [r3]                             |         *(r3) = r2;
    0x0001ba34 ldr r3, [fp, -0x30]                       |         r3 = var_30h;
    0x0001ba38 ldr r3, [r3, 0x14]                        |         r3 = *((r3 + 0x14));
    0x0001ba3c mov r2, 0xa                               |         r2 = 0xa;
    0x0001ba40 mov r1, 0                                 |         r1 = 0;
    0x0001ba44 mov r0, r3                                |         r0 = r3;
    0x0001ba48 bl 0x11234                                |         r0 = strtoul (r0, r1, r2);
    0x0001ba4c mov r4, r0                                |         r4 = r0;
    0x0001ba50 ldr r3, [fp, -0x30]                       |         r3 = var_30h;
    0x0001ba54 ldr r3, [r3, 0x14]                        |         r3 = *((r3 + 0x14));
    0x0001ba58 mov r0, r3                                |         r0 = r3;
    0x0001ba5c bl 0x11270                                |         r0 = strlen (r0);
    0x0001ba60 mov r3, r0                                |         r3 = r0;
    0x0001ba64 add r3, r4, r3                            |         r3 = r4 + r3;
    0x0001ba68 add r3, r3, 2                             |         r3 += 2;
    0x0001ba6c mov r2, r3                                |         r2 = r3;
    0x0001ba70 ldr r3, [fp, -0x30]                       |         r3 = var_30h;
    0x0001ba74 str r2, [r3, 0x44]                        |         *((r3 + 0x44)) = r2;
    0x0001ba78 ldr r3, [fp, -0x10]                       |         r3 = var_10h;
    0x0001ba7c mov r2, 0x3a                              |         r2 = 0x3a;
    0x0001ba80 strb r2, [r3]                             |         *(r3) = r2;
    0x0001ba84 ldr r3, [fp, -0x10]                       |         r3 = var_10h;
    0x0001ba88 add r3, r3, 1                             |         r3++;
    0x0001ba8c str r3, [fp, -0x10]                       |         var_10h = r3;
    0x0001ba90 ldr r3, [fp, -0x30]                       |         r3 = var_30h;
    0x0001ba94 ldr r2, [fp, -0x10]                       |         r2 = var_10h;
    0x0001ba98 str r2, [r3, 0x40]                        |         *((r3 + 0x40)) = r2;
    0x0001ba9c b 0x1b9c4                                 |         
                                                         |     } while (1);
                                                         | label_7:
    0x0001baa0 ldr r3, [fp, -0x10]                       |     r3 = var_10h;
    0x0001baa4 ldrb r3, [r3]                             |     r3 = *(r3);
    0x0001baa8 cmp r3, 0x2f                              |     
                                                         |     if (r3 >= 0x2f) {
    0x0001baac bls 0x1bac0                               |         
    0x0001bab0 ldr r3, [fp, -0x10]                       |         r3 = var_10h;
    0x0001bab4 ldrb r3, [r3]                             |         r3 = *(r3);
    0x0001bab8 cmp r3, 0x39                              |         
                                                         |         if (r3 < 0x39) {
    0x0001babc bls 0x1bacc                               |             goto label_8;
                                                         |         }
                                                         |     }
    0x0001bac0 ldr r0, [fp, -0x30]                       |     r0 = var_30h;
    0x0001bac4 bl 0x1abc0                                |     scgi_kill_socket ();
    0x0001bac8 b 0x1c064                                 |     goto label_4;
                                                         | label_8:
    0x0001bacc ldr r3, [fp, -0x10]                       |     r3 = var_10h;
    0x0001bad0 add r3, r3, 1                             |     r3++;
    0x0001bad4 str r3, [fp, -0x10]                       |     var_10h = r3;
    0x0001bad8 b 0x1b9e8                                 |     goto label_0;
                                                         |     do {
    0x0001badc ldr r2, [fp, -0x10]                       |         r2 = var_10h;
    0x0001bae0 ldr r3, [fp, -0x14]                       |         r3 = var_14h;
    0x0001bae4 cmp r2, r3                                |         
                                                         |         if (r2 >= r3) {
    0x0001bae8 bhs 0x1c03c                               |             goto label_9;
                                                         |         }
    0x0001baec ldr r3, [fp, -0x30]                       |         r3 = var_30h;
    0x0001baf0 ldr r3, [r3, 0x3c]                        |         r3 = *((r3 + 0x3c));
    0x0001baf4 add r2, r3, 1                             |         r2 = r3 + 1;
    0x0001baf8 ldr r3, [fp, -0x30]                       |         r3 = var_30h;
    0x0001bafc str r2, [r3, 0x3c]                        |         *((r3 + 0x3c)) = r2;
    0x0001bb00 ldr r3, [fp, -0x30]                       |         r3 = var_30h;
    0x0001bb04 ldr r2, [r3, 0x3c]                        |         r2 = *((r3 + 0x3c));
    0x0001bb08 ldr r3, [fp, -0x30]                       |         r3 = var_30h;
    0x0001bb0c ldr r3, [r3, 0x44]                        |         r3 = *((r3 + 0x44));
    0x0001bb10 cmp r2, r3                                |         
                                                         |         if (r2 == r3) {
    0x0001bb14 bne 0x1bce8                               |             
    0x0001bb18 ldr r3, [fp, -0x10]                       |             r3 = var_10h;
    0x0001bb1c ldrb r3, [r3]                             |             r3 = *(r3);
    0x0001bb20 cmp r3, 0x2c                              |             
                                                         |             if (r3 == 0x2c) {
    0x0001bb24 bne 0x1bb3c                               |                 
    0x0001bb28 ldr r3, [fp, -0x10]                       |                 r3 = var_10h;
    0x0001bb2c sub r3, r3, 1                             |                 r3--;
    0x0001bb30 ldrb r3, [r3]                             |                 r3 = *(r3);
    0x0001bb34 cmp r3, 0                                 |                 
                                                         |                 if (r3 == 0) {
    0x0001bb38 beq 0x1bb48                               |                     goto label_10;
                                                         |                 }
                                                         |             }
    0x0001bb3c ldr r0, [fp, -0x30]                       |             r0 = var_30h;
    0x0001bb40 bl 0x1abc0                                |             scgi_kill_socket ();
    0x0001bb44 b 0x1c064                                 |             goto label_4;
                                                         | label_10:
    0x0001bb48 ldr r3, [fp, -0x30]                       |             r3 = var_30h;
    0x0001bb4c ldr r3, [r3, 0xc]                         |             r3 = *((r3 + 0xc));
    0x0001bb50 ldrb r3, [r3, 0x24]                       |             r3 = *((r3 + 0x24));
    0x0001bb54 cmp r3, 0                                 |             
                                                         |             if (r3 == 0) {
    0x0001bb58 bne 0x1bb68                               |                 
    0x0001bb5c ldr r0, [fp, -0x30]                       |                 r0 = var_30h;
    0x0001bb60 bl 0x1abc0                                |                 scgi_kill_socket ();
    0x0001bb64 b 0x1c064                                 |                 goto label_4;
                                                         |             }
    0x0001bb68 ldr r3, [fp, -0x30]                       |             r3 = var_30h;
    0x0001bb6c ldr r3, [r3, 0xc]                         |             r3 = *((r3 + 0xc));
    0x0001bb70 ldr r3, [r3, 0x20]                        |             r3 = *((r3 + 0x20));
    0x0001bb74 cmp r3, 0                                 |             
                                                         |             if (r3 == 0) {
    0x0001bb78 bne 0x1bc80                               |                 
    0x0001bb7c ldr r3, [fp, -0x30]                       |                 r3 = var_30h;
    0x0001bb80 ldr r4, [r3, 0xc]                         |                 r4 = *((r3 + 0xc));
    0x0001bb84 mov r1, 1                                 |                 r1 = 1;
    0x0001bb88 mov r0, 2                                 |                 r0 = 2;
    0x0001bb8c bl 0x111b0                                |                 r0 = calloc (r0, r1);
    0x0001bb90 mov r3, r0                                |                 r3 = r0;
    0x0001bb94 str r3, [r4, 0x1c]                        |                 *((r4 + 0x1c)) = r3;
    0x0001bb98 ldr r3, [r4, 0x1c]                        |                 r3 = *((r4 + 0x1c));
    0x0001bb9c cmp r3, 0                                 |                 
                                                         |                 if (r3 != 0) {
    0x0001bba0 moveq r3, 1                               |                     r3 = 1;
                                                         |                 }
                                                         |                 if (r3 == 0) {
    0x0001bba4 movne r3, 0                               |                     r3 = 0;
                                                         |                 }
    0x0001bba8 and r3, r3, 0xff                          |                 r3 &= 0xff;
    0x0001bbac cmp r3, 0                                 |                 
                                                         |                 if (r3 != 0) {
    0x0001bbb0 beq 0x1bbc0                               |                     
    0x0001bbb4 ldr r0, [pc, 0x4b0]                       |                     r0 = *(0x1c068);
    0x0001bbb8 bl 0x1b8ec                                |                     scgi_perror ();
    0x0001bbbc bl 0x11390                                |                     abort ();
                                                         |                 }
    0x0001bbc0 ldr r3, [fp, -0x30]                       |                 r3 = var_30h;
    0x0001bbc4 ldr r3, [r3, 0xc]                         |                 r3 = *((r3 + 0xc));
    0x0001bbc8 ldr r3, [r3, 0x1c]                        |                 r3 = *((r3 + 0x1c));
    0x0001bbcc mov r2, 0                                 |                 r2 = 0;
    0x0001bbd0 strb r2, [r3]                             |                 *(r3) = r2;
    0x0001bbd4 ldr r3, [pc, 0x494]                       |                 
    0x0001bbd8 ldr r3, [r3]                              |                 r3 = "scgilib:_Out_of_RAM__Emergency_shutdown.";
    0x0001bbdc cmp r3, 0                                 |                 
                                                         |                 if (r3 == 0) {
    0x0001bbe0 bne 0x1bc08                               |                     
    0x0001bbe4 ldr r3, [fp, -0x30]                       |                     r3 = var_30h;
    0x0001bbe8 ldr r3, [r3, 0xc]                         |                     r3 = *((r3 + 0xc));
    0x0001bbec ldr r2, [pc, 0x47c]                       |                     r2 = "scgilib:_Out_of_RAM__Emergency_shutdown.";
    0x0001bbf0 str r3, [r2]                              |                     *(r2) = r3;
    0x0001bbf4 ldr r3, [fp, -0x30]                       |                     r3 = var_30h;
    0x0001bbf8 ldr r3, [r3, 0xc]                         |                     r3 = *((r3 + 0xc));
    0x0001bbfc ldr r2, [pc, 0x470]                       |                     r2 = *(0x1c070);
    0x0001bc00 str r3, [r2]                              |                     *(r2) = r3;
    0x0001bc04 b 0x1bc1c                                 |                     
                                                         |                 } else {
    0x0001bc08 ldr r3, [pc, 0x464]                       |                     
    0x0001bc0c ldr r3, [r3]                              |                     r3 = *(0x1c070);
    0x0001bc10 ldr r2, [fp, -0x30]                       |                     r2 = var_30h;
    0x0001bc14 ldr r2, [r2, 0xc]                         |                     r2 = *((r2 + 0xc));
    0x0001bc18 str r2, [r3, 8]                           |                     *((r3 + 8)) = r2;
                                                         |                 }
    0x0001bc1c ldr r3, [fp, -0x30]                       |                 r3 = var_30h;
    0x0001bc20 ldr r3, [r3, 0xc]                         |                 r3 = *((r3 + 0xc));
    0x0001bc24 mov r2, 0                                 |                 r2 = 0;
    0x0001bc28 str r2, [r3, 8]                           |                 *((r3 + 8)) = r2;
    0x0001bc2c ldr r3, [fp, -0x30]                       |                 r3 = var_30h;
    0x0001bc30 ldr r2, [r3, 0xc]                         |                 r2 = *((r3 + 0xc));
    0x0001bc34 ldr r3, [pc, 0x434]                       |                 
    0x0001bc38 ldr r3, [r3]                              |                 r3 = "scgilib:_Out_of_RAM__Emergency_shutdown.";
    0x0001bc3c cmp r2, r3                                |                 
                                                         |                 if (r2 == r3) {
    0x0001bc40 bne 0x1bc58                               |                     
    0x0001bc44 ldr r3, [fp, -0x30]                       |                     r3 = var_30h;
    0x0001bc48 ldr r3, [r3, 0xc]                         |                     r3 = *((r3 + 0xc));
    0x0001bc4c mov r2, 0                                 |                     r2 = 0;
    0x0001bc50 str r2, [r3, 0xc]                         |                     *((r3 + 0xc)) = r2;
    0x0001bc54 b 0x1bc6c                                 |                     
                                                         |                 } else {
    0x0001bc58 ldr r3, [fp, -0x30]                       |                     r3 = var_30h;
    0x0001bc5c ldr r3, [r3, 0xc]                         |                     r3 = *((r3 + 0xc));
    0x0001bc60 ldr r2, [pc, 0x40c]                       |                     
    0x0001bc64 ldr r2, [r2]                              |                     r2 = *(0x1c070);
    0x0001bc68 str r2, [r3, 0xc]                         |                     *((r3 + 0xc)) = r2;
                                                         |                 }
    0x0001bc6c ldr r3, [fp, -0x30]                       |                 r3 = var_30h;
    0x0001bc70 ldr r3, [r3, 0xc]                         |                 r3 = *((r3 + 0xc));
    0x0001bc74 ldr r2, [pc, 0x3f8]                       |                 r2 = *(0x1c070);
    0x0001bc78 str r3, [r2]                              |                 *(r2) = r3;
    0x0001bc7c b 0x1c064                                 |                 goto label_4;
                                                         |             }
    0x0001bc80 ldr r3, [fp, -0x30]                       |             r3 = var_30h;
    0x0001bc84 ldr r3, [r3, 0xc]                         |             r3 = *((r3 + 0xc));
    0x0001bc88 ldr r3, [r3, 0x14]                        |             r3 = *((r3 + 0x14));
    0x0001bc8c ldr r3, [r3, 0xc]                         |             r3 = *((r3 + 0xc));
    0x0001bc90 mov r2, 0xa                               |             r2 = 0xa;
    0x0001bc94 mov r1, 0                                 |             r1 = 0;
    0x0001bc98 mov r0, r3                                |             r0 = r3;
    0x0001bc9c bl 0x11234                                |             r0 = strtoul (r0, r1, r2);
    0x0001bca0 mov r3, r0                                |             r3 = r0;
    0x0001bca4 str r3, [fp, -0x20]                       |             var_20h = r3;
    0x0001bca8 ldr r3, [fp, -0x30]                       |             r3 = var_30h;
    0x0001bcac ldr r2, [r3, 0x44]                        |             r2 = *((r3 + 0x44));
    0x0001bcb0 ldr r3, [fp, -0x20]                       |             r3 = var_20h;
    0x0001bcb4 add r2, r2, r3                            |             r2 += r3;
    0x0001bcb8 ldr r3, [fp, -0x30]                       |             r3 = var_30h;
    0x0001bcbc str r2, [r3, 0x48]                        |             *((r3 + 0x48)) = r2;
    0x0001bcc0 ldr r3, [fp, -0x10]                       |             r3 = var_10h;
    0x0001bcc4 add r3, r3, 1                             |             r3++;
    0x0001bcc8 str r3, [fp, -0x10]                       |             var_10h = r3;
    0x0001bccc ldr r3, [fp, -0x30]                       |             r3 = var_30h;
    0x0001bcd0 ldr r2, [fp, -0x10]                       |             r2 = var_10h;
    0x0001bcd4 str r2, [r3, 0x40]                        |             *((r3 + 0x40)) = r2;
    0x0001bcd8 ldr r3, [fp, -0x30]                       |             r3 = var_30h;
    0x0001bcdc mov r2, 3                                 |             r2 = 3;
    0x0001bce0 str r2, [r3, 0x4c]                        |             *((r3 + 0x4c)) = r2;
    0x0001bce4 b 0x1b9c4                                 |             goto label_1;
                                                         |         }
    0x0001bce8 ldr r3, [fp, -0x10]                       |         r3 = var_10h;
    0x0001bcec ldrb r3, [r3]                             |         r3 = *(r3);
    0x0001bcf0 cmp r3, 0                                 |         
                                                         |         if (r3 == 0) {
    0x0001bcf4 bne 0x1bd34                               |             
    0x0001bcf8 ldr r3, [fp, -0x30]                       |             r3 = var_30h;
    0x0001bcfc ldr r3, [r3, 0x40]                        |             r3 = *((r3 + 0x40));
    0x0001bd00 ldr r2, [fp, -0x10]                       |             r2 = var_10h;
    0x0001bd04 cmp r2, r3                                |             
                                                         |             if (r2 == r3) {
    0x0001bd08 bne 0x1bd18                               |                 
    0x0001bd0c ldr r0, [fp, -0x30]                       |                 r0 = var_30h;
    0x0001bd10 bl 0x1abc0                                |                 scgi_kill_socket ();
    0x0001bd14 b 0x1c064                                 |                 goto label_4;
                                                         |             }
    0x0001bd18 ldr r3, [fp, -0x30]                       |             r3 = var_30h;
    0x0001bd1c mov r2, 2                                 |             r2 = 2;
    0x0001bd20 str r2, [r3, 0x4c]                        |             *((r3 + 0x4c)) = r2;
    0x0001bd24 ldr r3, [fp, -0x10]                       |             r3 = var_10h;
    0x0001bd28 add r3, r3, 1                             |             r3++;
    0x0001bd2c str r3, [fp, -0x10]                       |             var_10h = r3;
    0x0001bd30 b 0x1b9c4                                 |             goto label_1;
                                                         |         }
    0x0001bd34 ldr r3, [fp, -0x10]                       |         r3 = var_10h;
    0x0001bd38 add r3, r3, 1                             |         r3++;
    0x0001bd3c str r3, [fp, -0x10]                       |         var_10h = r3;
    0x0001bd40 b 0x1badc                                 |         
                                                         |     } while (1);
                                                         |     do {
    0x0001bd44 ldr r2, [fp, -0x10]                       |         r2 = var_10h;
    0x0001bd48 ldr r3, [fp, -0x14]                       |         r3 = var_14h;
    0x0001bd4c cmp r2, r3                                |         
                                                         |         if (r2 >= r3) {
    0x0001bd50 bhs 0x1c044                               |             goto label_11;
                                                         |         }
    0x0001bd54 ldr r3, [fp, -0x30]                       |         r3 = var_30h;
    0x0001bd58 ldr r3, [r3, 0x3c]                        |         r3 = *((r3 + 0x3c));
    0x0001bd5c add r2, r3, 1                             |         r2 = r3 + 1;
    0x0001bd60 ldr r3, [fp, -0x30]                       |         r3 = var_30h;
    0x0001bd64 str r2, [r3, 0x3c]                        |         *((r3 + 0x3c)) = r2;
    0x0001bd68 ldr r3, [fp, -0x30]                       |         r3 = var_30h;
    0x0001bd6c ldr r2, [r3, 0x3c]                        |         r2 = *((r3 + 0x3c));
    0x0001bd70 ldr r3, [fp, -0x30]                       |         r3 = var_30h;
    0x0001bd74 ldr r3, [r3, 0x44]                        |         r3 = *((r3 + 0x44));
    0x0001bd78 cmp r2, r3                                |         
                                                         |         if (r2 == r3) {
    0x0001bd7c bne 0x1bd8c                               |             
    0x0001bd80 ldr r0, [fp, -0x30]                       |             r0 = var_30h;
    0x0001bd84 bl 0x1abc0                                |             scgi_kill_socket ();
    0x0001bd88 b 0x1c064                                 |             goto label_4;
                                                         |         }
    0x0001bd8c ldr r3, [fp, -0x10]                       |         r3 = var_10h;
    0x0001bd90 ldrb r3, [r3]                             |         r3 = *(r3);
    0x0001bd94 cmp r3, 0                                 |         
                                                         |         if (r3 == 0) {
    0x0001bd98 bne 0x1bee8                               |             
    0x0001bd9c ldr r3, [fp, -0x30]                       |             r3 = var_30h;
    0x0001bda0 ldr r3, [r3, 0x40]                        |             r3 = *((r3 + 0x40));
    0x0001bda4 mov r0, r3                                |             r0 = r3;
    0x0001bda8 bl 0x11270                                |             r0 = strlen (r0);
    0x0001bdac mov r3, r0                                |             r3 = r0;
    0x0001bdb0 str r3, [fp, -0x1c]                       |             nmeb = r3;
    0x0001bdb4 ldr r3, [fp, -0x1c]                       |             r3 = nmeb;
    0x0001bdb8 add r3, r3, 1                             |             r3++;
    0x0001bdbc mov r1, 1                                 |             r1 = 1;
    0x0001bdc0 mov r0, r3                                |             r0 = r3;
    0x0001bdc4 bl 0x111b0                                |             r0 = calloc (r0, r1);
    0x0001bdc8 mov r3, r0                                |             r3 = r0;
    0x0001bdcc str r3, [fp, -0x24]                       |             var_30h = r3;
    0x0001bdd0 ldr r3, [fp, -0x24]                       |             r3 = var_30h;
    0x0001bdd4 cmp r3, 0                                 |             
                                                         |             if (r3 != 0) {
    0x0001bdd8 moveq r3, 1                               |                 r3 = 1;
                                                         |             }
                                                         |             if (r3 == 0) {
    0x0001bddc movne r3, 0                               |                 r3 = 0;
                                                         |             }
    0x0001bde0 and r3, r3, 0xff                          |             r3 &= 0xff;
    0x0001bde4 cmp r3, 0                                 |             
                                                         |             if (r3 != 0) {
    0x0001bde8 beq 0x1bdf8                               |                 
    0x0001bdec ldr r0, [pc, 0x278]                       |                 r0 = *(0x1c068);
    0x0001bdf0 bl 0x1b8ec                                |                 scgi_perror ();
    0x0001bdf4 bl 0x11390                                |                 abort ();
                                                         |             }
    0x0001bdf8 ldr r2, [fp, -0x24]                       |             r2 = var_30h;
    0x0001bdfc ldr r3, [fp, -0x30]                       |             r3 = var_30h;
    0x0001be00 ldr r3, [r3, 0x40]                        |             r3 = *((r3 + 0x40));
    0x0001be04 mov r1, r3                                |             r1 = r3;
    0x0001be08 mov r0, r2                                |             r0 = r2;
    0x0001be0c bl 0x11480                                |             strcpy (r0, r1)
    0x0001be10 ldr r3, [fp, -0x30]                       |             r3 = var_30h;
    0x0001be14 ldr r2, [r3, 0x40]                        |             r2 = *((r3 + 0x40));
    0x0001be18 ldr r3, [fp, -0x1c]                       |             r3 = nmeb;
    0x0001be1c add r3, r3, 1                             |             r3++;
    0x0001be20 add r3, r2, r3                            |             r3 = r2 + r3;
    0x0001be24 mov r0, r3                                |             r0 = r3;
    0x0001be28 bl 0x11270                                |             r0 = strlen (r0);
    0x0001be2c mov r3, r0                                |             r3 = r0;
    0x0001be30 add r3, r3, 1                             |             r3++;
    0x0001be34 mov r1, 1                                 |             r1 = 1;
    0x0001be38 mov r0, r3                                |             r0 = r3;
    0x0001be3c bl 0x111b0                                |             r0 = calloc (r0, r1);
    0x0001be40 mov r3, r0                                |             r3 = r0;
    0x0001be44 str r3, [fp, -0x28]                       |             var_28h = r3;
    0x0001be48 ldr r3, [fp, -0x28]                       |             r3 = var_28h;
    0x0001be4c cmp r3, 0                                 |             
                                                         |             if (r3 != 0) {
    0x0001be50 moveq r3, 1                               |                 r3 = 1;
                                                         |             }
                                                         |             if (r3 == 0) {
    0x0001be54 movne r3, 0                               |                 r3 = 0;
                                                         |             }
    0x0001be58 and r3, r3, 0xff                          |             r3 &= 0xff;
    0x0001be5c cmp r3, 0                                 |             
                                                         |             if (r3 != 0) {
    0x0001be60 beq 0x1be70                               |                 
    0x0001be64 ldr r0, [pc, 0x200]                       |                 r0 = *(0x1c068);
    0x0001be68 bl 0x1b8ec                                |                 scgi_perror ();
    0x0001be6c bl 0x11390                                |                 abort ();
                                                         |             }
    0x0001be70 ldr r0, [fp, -0x28]                       |             r0 = var_28h;
    0x0001be74 ldr r3, [fp, -0x30]                       |             r3 = var_30h;
    0x0001be78 ldr r2, [r3, 0x40]                        |             r2 = *((r3 + 0x40));
    0x0001be7c ldr r3, [fp, -0x1c]                       |             r3 = nmeb;
    0x0001be80 add r3, r3, 1                             |             r3++;
    0x0001be84 add r3, r2, r3                            |             r3 = r2 + r3;
    0x0001be88 mov r1, r3                                |             r1 = r3;
    0x0001be8c bl 0x11480                                |             strcpy (r0, r1)
    0x0001be90 ldr r3, [fp, -0x24]                       |             r3 = var_30h;
    0x0001be94 ldr r2, [fp, -0x28]                       |             r2 = var_28h;
    0x0001be98 mov r1, r3                                |             r1 = r3;
    0x0001be9c ldr r0, [fp, -0x30]                       |             r0 = var_30h;
    0x0001bea0 bl 0x1c078                                |             r0 = sym ();
    0x0001bea4 mov r3, r0                                |             r3 = r0;
    0x0001bea8 cmp r3, 0                                 |             
                                                         |             if (r3 != 0) {
    0x0001beac moveq r3, 1                               |                 r3 = 1;
                                                         |             }
                                                         |             if (r3 == 0) {
    0x0001beb0 movne r3, 0                               |                 r3 = 0;
                                                         |             }
    0x0001beb4 and r3, r3, 0xff                          |             r3 &= 0xff;
    0x0001beb8 cmp r3, 0                                 |             
                                                         |             if (r3 != 0) {
    0x0001bebc bne 0x1c060                               |                 goto label_12;
                                                         |             }
    0x0001bec0 ldr r3, [fp, -0x30]                       |             r3 = var_30h;
    0x0001bec4 mov r2, 1                                 |             r2 = 1;
    0x0001bec8 str r2, [r3, 0x4c]                        |             *((r3 + 0x4c)) = r2;
    0x0001becc ldr r3, [fp, -0x10]                       |             r3 = var_10h;
    0x0001bed0 add r3, r3, 1                             |             r3++;
    0x0001bed4 str r3, [fp, -0x10]                       |             var_10h = r3;
    0x0001bed8 ldr r3, [fp, -0x30]                       |             r3 = var_30h;
    0x0001bedc ldr r2, [fp, -0x10]                       |             r2 = var_10h;
    0x0001bee0 str r2, [r3, 0x40]                        |             *((r3 + 0x40)) = r2;
    0x0001bee4 b 0x1b9c4                                 |             goto label_1;
                                                         |         }
    0x0001bee8 ldr r3, [fp, -0x10]                       |         r3 = var_10h;
    0x0001beec add r3, r3, 1                             |         r3++;
    0x0001bef0 str r3, [fp, -0x10]                       |         var_10h = r3;
    0x0001bef4 b 0x1bd44                                 |         
                                                         |     } while (1);
    0x0001bef8 mov r3, 0                                 |     r3 = 0;
    0x0001befc str r3, [fp, -0x18]                       |     dest = r3;
    0x0001bf00 ldr r3, [fp, -0x30]                       |     r3 = var_30h;
    0x0001bf04 ldr r3, [r3, 0xc]                         |     r3 = *((r3 + 0xc));
    0x0001bf08 ldr r3, [r3, 0x20]                        |     r3 = *((r3 + 0x20));
    0x0001bf0c str r3, [fp, -0x18]                       |     dest = r3;
    0x0001bf10 ldr r3, [fp, -0x18]                       |     r3 = dest;
    0x0001bf14 add r3, r3, 1                             |     r3++;
    0x0001bf18 mov r2, r3                                |     r2 = r3;
    0x0001bf1c ldr r3, [fp, -0x30]                       |     r3 = var_30h;
    0x0001bf20 ldr r4, [r3, 0xc]                         |     r4 = *((r3 + 0xc));
    0x0001bf24 mov r1, 1                                 |     r1 = 1;
    0x0001bf28 mov r0, r2                                |     r0 = r2;
    0x0001bf2c bl 0x111b0                                |     r0 = calloc (r0, r1);
    0x0001bf30 mov r3, r0                                |     r3 = r0;
    0x0001bf34 str r3, [r4, 0x1c]                        |     *((r4 + 0x1c)) = r3;
    0x0001bf38 ldr r3, [r4, 0x1c]                        |     r3 = *((r4 + 0x1c));
    0x0001bf3c cmp r3, 0                                 |     
                                                         |     if (r3 != 0) {
    0x0001bf40 moveq r3, 1                               |         r3 = 1;
                                                         |     }
                                                         |     if (r3 == 0) {
    0x0001bf44 movne r3, 0                               |         r3 = 0;
                                                         |     }
    0x0001bf48 and r3, r3, 0xff                          |     r3 &= 0xff;
    0x0001bf4c cmp r3, 0                                 |     
                                                         |     if (r3 != 0) {
    0x0001bf50 beq 0x1bf60                               |         
    0x0001bf54 ldr r0, [pc, 0x110]                       |         r0 = *(0x1c068);
    0x0001bf58 bl 0x1b8ec                                |         scgi_perror ();
    0x0001bf5c bl 0x11390                                |         abort ();
                                                         |     }
    0x0001bf60 ldr r3, [fp, -0x30]                       |     r3 = var_30h;
    0x0001bf64 ldr r3, [r3, 0xc]                         |     r3 = *((r3 + 0xc));
    0x0001bf68 ldr r0, [r3, 0x1c]                        |     r0 = *((r3 + 0x1c));
    0x0001bf6c ldr r3, [fp, -0x30]                       |     r3 = var_30h;
    0x0001bf70 ldr r3, [r3, 0x40]                        |     r3 = *((r3 + 0x40));
    0x0001bf74 ldr r2, [fp, -0x18]                       |     r2 = dest;
    0x0001bf78 mov r1, r3                                |     r1 = r3;
    0x0001bf7c bl 0x111f8                                |     memcpy (r0, r1, r2);
    0x0001bf80 ldr r3, [pc, 0xe8]                        |     
    0x0001bf84 ldr r3, [r3]                              |     r3 = "scgilib:_Out_of_RAM__Emergency_shutdown.";
    0x0001bf88 cmp r3, 0                                 |     
                                                         |     if (r3 == 0) {
    0x0001bf8c bne 0x1bfb4                               |         
    0x0001bf90 ldr r3, [fp, -0x30]                       |         r3 = var_30h;
    0x0001bf94 ldr r3, [r3, 0xc]                         |         r3 = *((r3 + 0xc));
    0x0001bf98 ldr r2, [pc, 0xd0]                        |         r2 = "scgilib:_Out_of_RAM__Emergency_shutdown.";
    0x0001bf9c str r3, [r2]                              |         *(r2) = r3;
    0x0001bfa0 ldr r3, [fp, -0x30]                       |         r3 = var_30h;
    0x0001bfa4 ldr r3, [r3, 0xc]                         |         r3 = *((r3 + 0xc));
    0x0001bfa8 ldr r2, [pc, 0xc4]                        |         r2 = *(0x1c070);
    0x0001bfac str r3, [r2]                              |         *(r2) = r3;
    0x0001bfb0 b 0x1bfc8                                 |         
                                                         |     } else {
    0x0001bfb4 ldr r3, [pc, 0xb8]                        |         
    0x0001bfb8 ldr r3, [r3]                              |         r3 = *(0x1c070);
    0x0001bfbc ldr r2, [fp, -0x30]                       |         r2 = var_30h;
    0x0001bfc0 ldr r2, [r2, 0xc]                         |         r2 = *((r2 + 0xc));
    0x0001bfc4 str r2, [r3, 8]                           |         *((r3 + 8)) = r2;
                                                         |     }
    0x0001bfc8 ldr r3, [fp, -0x30]                       |     r3 = var_30h;
    0x0001bfcc ldr r3, [r3, 0xc]                         |     r3 = *((r3 + 0xc));
    0x0001bfd0 mov r2, 0                                 |     r2 = 0;
    0x0001bfd4 str r2, [r3, 8]                           |     *((r3 + 8)) = r2;
    0x0001bfd8 ldr r3, [fp, -0x30]                       |     r3 = var_30h;
    0x0001bfdc ldr r2, [r3, 0xc]                         |     r2 = *((r3 + 0xc));
    0x0001bfe0 ldr r3, [pc, 0x88]                        |     
    0x0001bfe4 ldr r3, [r3]                              |     r3 = "scgilib:_Out_of_RAM__Emergency_shutdown.";
    0x0001bfe8 cmp r2, r3                                |     
                                                         |     if (r2 == r3) {
    0x0001bfec bne 0x1c004                               |         
    0x0001bff0 ldr r3, [fp, -0x30]                       |         r3 = var_30h;
    0x0001bff4 ldr r3, [r3, 0xc]                         |         r3 = *((r3 + 0xc));
    0x0001bff8 mov r2, 0                                 |         r2 = 0;
    0x0001bffc str r2, [r3, 0xc]                         |         *((r3 + 0xc)) = r2;
    0x0001c000 b 0x1c018                                 |         
                                                         |     } else {
    0x0001c004 ldr r3, [fp, -0x30]                       |         r3 = var_30h;
    0x0001c008 ldr r3, [r3, 0xc]                         |         r3 = *((r3 + 0xc));
    0x0001c00c ldr r2, [pc, 0x60]                        |         
    0x0001c010 ldr r2, [r2]                              |         r2 = *(0x1c070);
    0x0001c014 str r2, [r3, 0xc]                         |         *((r3 + 0xc)) = r2;
                                                         |     }
    0x0001c018 ldr r3, [fp, -0x30]                       |     r3 = var_30h;
    0x0001c01c ldr r3, [r3, 0xc]                         |     r3 = *((r3 + 0xc));
    0x0001c020 ldr r2, [pc, 0x4c]                        |     r2 = *(0x1c070);
    0x0001c024 str r3, [r2]                              |     *(r2) = r3;
    0x0001c028 ldr r3, [fp, -0x14]                       |     r3 = var_14h;
    0x0001c02c str r3, [fp, -0x10]                       |     var_10h = r3;
    0x0001c030 b 0x1c048                                 |     goto label_13;
                                                         | label_6:
    0x0001c034 mov r0, r0                                |     
    0x0001c038 b 0x1c048                                 |     goto label_13;
                                                         | label_9:
    0x0001c03c mov r0, r0                                |     
    0x0001c040 b 0x1c048                                 |     goto label_13;
                                                         | label_11:
    0x0001c044 mov r0, r0                                |     
                                                         | label_13:
    0x0001c048 mov r0, r0                                |     
    0x0001c04c b 0x1c058                                 |     goto label_5;
                                                         | label_2:
    0x0001c050 mov r0, r0                                |     
    0x0001c054 b 0x1c064                                 |     goto label_4;
                                                         | label_5:
    0x0001c058 mov r0, r0                                |     
    0x0001c05c b 0x1c064                                 |     goto label_4;
                                                         | label_12:
    0x0001c060 mov r0, r0                                |     
                                                         | label_4:
    0x0001c064 sub sp, fp, 8                             |     
    0x0001c068 pop {r4, fp, pc}                          |     
                                                         | }

[*] Function strcpy used 3 times AJAJSaveFile.dll