[*] 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