[*] Binary protection state of AJAJPost.dll
Partial RELRO No Canary found NX disabled No PIE No RPATH No RUNPATH Symbols
[*] Function strcpy tear down of AJAJPost.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/AJAJPost.dll @ 0x12918 */
| #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*) */
0x00012918 push {r4, fp, lr} |
0x0001291c add fp, sp, 8 |
0x00012920 sub sp, sp, 0x2c |
0x00012924 str r0, [fp, -0x30] | var_30h = r0;
0x00012928 ldr r3, [fp, -0x30] | r3 = var_30h;
0x0001292c ldr r3, [r3, 0x14] | r3 = *((r3 + 0x14));
0x00012930 ldr r2, [fp, -0x30] | r2 = var_30h;
0x00012934 ldr r2, [r2, 0x3c] | r2 = *((r2 + 0x3c));
0x00012938 add r3, r3, r2 | r3 += r2;
0x0001293c str r3, [fp, -0x10] | var_10h = r3;
0x00012940 ldr r3, [fp, -0x30] | r3 = var_30h;
0x00012944 ldr r2, [r3, 0x3c] | r2 = *((r3 + 0x3c));
0x00012948 ldr r3, [fp, -0x30] | r3 = var_30h;
0x0001294c ldr r3, [r3, 0x1c] | r3 = *((r3 + 0x1c));
0x00012950 cmp r2, r3 |
| if (r2 == r3) {
0x00012954 beq 0x13040 | goto label_2;
| }
0x00012958 ldr r3, [fp, -0x30] | r3 = var_30h;
0x0001295c ldr r3, [r3, 0x3c] | r3 = *((r3 + 0x3c));
0x00012960 cmp r3, 0 |
| if (r3 == 0) {
0x00012964 bne 0x1299c |
0x00012968 ldr r3, [fp, -0x30] | r3 = var_30h;
0x0001296c ldr r3, [r3, 0x14] | r3 = *((r3 + 0x14));
0x00012970 ldrb r3, [r3] | r3 = *(r3);
0x00012974 cmp r3, 0x30 |
| if (r3 != 0x30) {
0x00012978 beq 0x12990 |
0x0001297c ldr r3, [fp, -0x30] | r3 = var_30h;
0x00012980 ldr r3, [r3, 0x14] | r3 = *((r3 + 0x14));
0x00012984 ldrb r3, [r3] | r3 = *(r3);
0x00012988 cmp r3, 0x3a |
| if (r3 != 0x3a) {
0x0001298c bne 0x1299c | goto label_3;
| }
| }
0x00012990 ldr r0, [fp, -0x30] | r0 = var_30h;
0x00012994 bl 0x11bb0 | scgi_kill_socket ();
0x00012998 b 0x13054 | goto label_4;
| }
| label_3:
0x0001299c ldr r3, [fp, -0x30] | r3 = var_30h;
0x000129a0 ldr r3, [r3, 0x14] | r3 = *((r3 + 0x14));
0x000129a4 ldr r2, [fp, -0x30] | r2 = var_30h;
0x000129a8 ldr r2, [r2, 0x1c] | r2 = *((r2 + 0x1c));
0x000129ac add r3, r3, r2 | r3 += r2;
0x000129b0 str r3, [fp, -0x14] | var_14h = r3;
| do {
| label_1:
0x000129b4 ldr r3, [fp, -0x30] | r3 = var_30h;
0x000129b8 ldr r3, [r3, 0x4c] | r3 = *((r3 + 0x4c));
0x000129bc cmp r3, 3 |
| if (r3 > 3) {
| /* switch table (4 cases) at 0x129c8 */
0x000129c0 ldrls pc, [pc, r3, lsl 2] | offset_0 = r3 << 2;
| pc = *((pc + offset_0));
| }
0x000129c4 b 0x13048 | goto label_5;
| label_0:
0x000129d8 ldr r2, [fp, -0x10] | r2 = var_10h;
0x000129dc ldr r3, [fp, -0x14] | r3 = var_14h;
0x000129e0 cmp r2, r3 |
| if (r2 >= r3) {
0x000129e4 bhs 0x13024 | goto label_6;
| }
0x000129e8 ldr r3, [fp, -0x30] | r3 = var_30h;
0x000129ec ldr r3, [r3, 0x3c] | r3 = *((r3 + 0x3c));
0x000129f0 add r2, r3, 1 | r2 = r3 + 1;
0x000129f4 ldr r3, [fp, -0x30] | r3 = var_30h;
0x000129f8 str r2, [r3, 0x3c] | *((r3 + 0x3c)) = r2;
0x000129fc ldr r3, [fp, -0x10] | r3 = var_10h;
0x00012a00 ldrb r3, [r3] | r3 = *(r3);
0x00012a04 cmp r3, 0x3a |
| if (r3 != 0x3a) {
0x00012a08 bne 0x12a90 | goto label_7;
| }
0x00012a0c ldr r3, [fp, -0x30] | r3 = var_30h;
0x00012a10 mov r2, 1 | r2 = 1;
0x00012a14 str r2, [r3, 0x4c] | *((r3 + 0x4c)) = r2;
0x00012a18 ldr r3, [fp, -0x10] | r3 = var_10h;
0x00012a1c mov r2, 0 | r2 = 0;
0x00012a20 strb r2, [r3] | *(r3) = r2;
0x00012a24 ldr r3, [fp, -0x30] | r3 = var_30h;
0x00012a28 ldr r3, [r3, 0x14] | r3 = *((r3 + 0x14));
0x00012a2c mov r2, 0xa | r2 = 0xa;
0x00012a30 mov r1, 0 | r1 = 0;
0x00012a34 mov r0, r3 | r0 = r3;
0x00012a38 bl 0x10bdc | r0 = strtoul (r0, r1, r2);
0x00012a3c mov r4, r0 | r4 = r0;
0x00012a40 ldr r3, [fp, -0x30] | r3 = var_30h;
0x00012a44 ldr r3, [r3, 0x14] | r3 = *((r3 + 0x14));
0x00012a48 mov r0, r3 | r0 = r3;
0x00012a4c bl 0x10c0c | r0 = strlen (r0);
0x00012a50 mov r3, r0 | r3 = r0;
0x00012a54 add r3, r4, r3 | r3 = r4 + r3;
0x00012a58 add r3, r3, 2 | r3 += 2;
0x00012a5c mov r2, r3 | r2 = r3;
0x00012a60 ldr r3, [fp, -0x30] | r3 = var_30h;
0x00012a64 str r2, [r3, 0x44] | *((r3 + 0x44)) = r2;
0x00012a68 ldr r3, [fp, -0x10] | r3 = var_10h;
0x00012a6c mov r2, 0x3a | r2 = 0x3a;
0x00012a70 strb r2, [r3] | *(r3) = r2;
0x00012a74 ldr r3, [fp, -0x10] | r3 = var_10h;
0x00012a78 add r3, r3, 1 | r3++;
0x00012a7c str r3, [fp, -0x10] | var_10h = r3;
0x00012a80 ldr r3, [fp, -0x30] | r3 = var_30h;
0x00012a84 ldr r2, [fp, -0x10] | r2 = var_10h;
0x00012a88 str r2, [r3, 0x40] | *((r3 + 0x40)) = r2;
0x00012a8c b 0x129b4 |
| } while (1);
| label_7:
0x00012a90 ldr r3, [fp, -0x10] | r3 = var_10h;
0x00012a94 ldrb r3, [r3] | r3 = *(r3);
0x00012a98 cmp r3, 0x2f |
| if (r3 >= 0x2f) {
0x00012a9c bls 0x12ab0 |
0x00012aa0 ldr r3, [fp, -0x10] | r3 = var_10h;
0x00012aa4 ldrb r3, [r3] | r3 = *(r3);
0x00012aa8 cmp r3, 0x39 |
| if (r3 < 0x39) {
0x00012aac bls 0x12abc | goto label_8;
| }
| }
0x00012ab0 ldr r0, [fp, -0x30] | r0 = var_30h;
0x00012ab4 bl 0x11bb0 | scgi_kill_socket ();
0x00012ab8 b 0x13054 | goto label_4;
| label_8:
0x00012abc ldr r3, [fp, -0x10] | r3 = var_10h;
0x00012ac0 add r3, r3, 1 | r3++;
0x00012ac4 str r3, [fp, -0x10] | var_10h = r3;
0x00012ac8 b 0x129d8 | goto label_0;
| do {
0x00012acc ldr r2, [fp, -0x10] | r2 = var_10h;
0x00012ad0 ldr r3, [fp, -0x14] | r3 = var_14h;
0x00012ad4 cmp r2, r3 |
| if (r2 >= r3) {
0x00012ad8 bhs 0x1302c | goto label_9;
| }
0x00012adc ldr r3, [fp, -0x30] | r3 = var_30h;
0x00012ae0 ldr r3, [r3, 0x3c] | r3 = *((r3 + 0x3c));
0x00012ae4 add r2, r3, 1 | r2 = r3 + 1;
0x00012ae8 ldr r3, [fp, -0x30] | r3 = var_30h;
0x00012aec str r2, [r3, 0x3c] | *((r3 + 0x3c)) = r2;
0x00012af0 ldr r3, [fp, -0x30] | r3 = var_30h;
0x00012af4 ldr r2, [r3, 0x3c] | r2 = *((r3 + 0x3c));
0x00012af8 ldr r3, [fp, -0x30] | r3 = var_30h;
0x00012afc ldr r3, [r3, 0x44] | r3 = *((r3 + 0x44));
0x00012b00 cmp r2, r3 |
| if (r2 == r3) {
0x00012b04 bne 0x12cd8 |
0x00012b08 ldr r3, [fp, -0x10] | r3 = var_10h;
0x00012b0c ldrb r3, [r3] | r3 = *(r3);
0x00012b10 cmp r3, 0x2c |
| if (r3 == 0x2c) {
0x00012b14 bne 0x12b2c |
0x00012b18 ldr r3, [fp, -0x10] | r3 = var_10h;
0x00012b1c sub r3, r3, 1 | r3--;
0x00012b20 ldrb r3, [r3] | r3 = *(r3);
0x00012b24 cmp r3, 0 |
| if (r3 == 0) {
0x00012b28 beq 0x12b38 | goto label_10;
| }
| }
0x00012b2c ldr r0, [fp, -0x30] | r0 = var_30h;
0x00012b30 bl 0x11bb0 | scgi_kill_socket ();
0x00012b34 b 0x13054 | goto label_4;
| label_10:
0x00012b38 ldr r3, [fp, -0x30] | r3 = var_30h;
0x00012b3c ldr r3, [r3, 0xc] | r3 = *((r3 + 0xc));
0x00012b40 ldrb r3, [r3, 0x24] | r3 = *((r3 + 0x24));
0x00012b44 cmp r3, 0 |
| if (r3 == 0) {
0x00012b48 bne 0x12b58 |
0x00012b4c ldr r0, [fp, -0x30] | r0 = var_30h;
0x00012b50 bl 0x11bb0 | scgi_kill_socket ();
0x00012b54 b 0x13054 | goto label_4;
| }
0x00012b58 ldr r3, [fp, -0x30] | r3 = var_30h;
0x00012b5c ldr r3, [r3, 0xc] | r3 = *((r3 + 0xc));
0x00012b60 ldr r3, [r3, 0x20] | r3 = *((r3 + 0x20));
0x00012b64 cmp r3, 0 |
| if (r3 == 0) {
0x00012b68 bne 0x12c70 |
0x00012b6c ldr r3, [fp, -0x30] | r3 = var_30h;
0x00012b70 ldr r4, [r3, 0xc] | r4 = *((r3 + 0xc));
0x00012b74 mov r1, 1 | r1 = 1;
0x00012b78 mov r0, 2 | r0 = 2;
0x00012b7c bl 0x10b64 | r0 = calloc (r0, r1);
0x00012b80 mov r3, r0 | r3 = r0;
0x00012b84 str r3, [r4, 0x1c] | *((r4 + 0x1c)) = r3;
0x00012b88 ldr r3, [r4, 0x1c] | r3 = *((r4 + 0x1c));
0x00012b8c cmp r3, 0 |
| if (r3 != 0) {
0x00012b90 moveq r3, 1 | r3 = 1;
| }
| if (r3 == 0) {
0x00012b94 movne r3, 0 | r3 = 0;
| }
0x00012b98 and r3, r3, 0xff | r3 &= 0xff;
0x00012b9c cmp r3, 0 |
| if (r3 != 0) {
0x00012ba0 beq 0x12bb0 |
0x00012ba4 ldr r0, [pc, 0x4b0] | r0 = *(0x13058);
0x00012ba8 bl 0x128dc | scgi_perror ();
0x00012bac bl 0x10c78 | abort ();
| }
0x00012bb0 ldr r3, [fp, -0x30] | r3 = var_30h;
0x00012bb4 ldr r3, [r3, 0xc] | r3 = *((r3 + 0xc));
0x00012bb8 ldr r3, [r3, 0x1c] | r3 = *((r3 + 0x1c));
0x00012bbc mov r2, 0 | r2 = 0;
0x00012bc0 strb r2, [r3] | *(r3) = r2;
0x00012bc4 ldr r3, [pc, 0x494] |
0x00012bc8 ldr r3, [r3] | r3 = "scgilib:_Out_of_RAM__Emergency_shutdown.";
0x00012bcc cmp r3, 0 |
| if (r3 == 0) {
0x00012bd0 bne 0x12bf8 |
0x00012bd4 ldr r3, [fp, -0x30] | r3 = var_30h;
0x00012bd8 ldr r3, [r3, 0xc] | r3 = *((r3 + 0xc));
0x00012bdc ldr r2, [pc, 0x47c] | r2 = "scgilib:_Out_of_RAM__Emergency_shutdown.";
0x00012be0 str r3, [r2] | *(r2) = r3;
0x00012be4 ldr r3, [fp, -0x30] | r3 = var_30h;
0x00012be8 ldr r3, [r3, 0xc] | r3 = *((r3 + 0xc));
0x00012bec ldr r2, [pc, 0x470] | r2 = *(0x13060);
0x00012bf0 str r3, [r2] | *(r2) = r3;
0x00012bf4 b 0x12c0c |
| } else {
0x00012bf8 ldr r3, [pc, 0x464] |
0x00012bfc ldr r3, [r3] | r3 = *(0x13060);
0x00012c00 ldr r2, [fp, -0x30] | r2 = var_30h;
0x00012c04 ldr r2, [r2, 0xc] | r2 = *((r2 + 0xc));
0x00012c08 str r2, [r3, 8] | *((r3 + 8)) = r2;
| }
0x00012c0c ldr r3, [fp, -0x30] | r3 = var_30h;
0x00012c10 ldr r3, [r3, 0xc] | r3 = *((r3 + 0xc));
0x00012c14 mov r2, 0 | r2 = 0;
0x00012c18 str r2, [r3, 8] | *((r3 + 8)) = r2;
0x00012c1c ldr r3, [fp, -0x30] | r3 = var_30h;
0x00012c20 ldr r2, [r3, 0xc] | r2 = *((r3 + 0xc));
0x00012c24 ldr r3, [pc, 0x434] |
0x00012c28 ldr r3, [r3] | r3 = "scgilib:_Out_of_RAM__Emergency_shutdown.";
0x00012c2c cmp r2, r3 |
| if (r2 == r3) {
0x00012c30 bne 0x12c48 |
0x00012c34 ldr r3, [fp, -0x30] | r3 = var_30h;
0x00012c38 ldr r3, [r3, 0xc] | r3 = *((r3 + 0xc));
0x00012c3c mov r2, 0 | r2 = 0;
0x00012c40 str r2, [r3, 0xc] | *((r3 + 0xc)) = r2;
0x00012c44 b 0x12c5c |
| } else {
0x00012c48 ldr r3, [fp, -0x30] | r3 = var_30h;
0x00012c4c ldr r3, [r3, 0xc] | r3 = *((r3 + 0xc));
0x00012c50 ldr r2, [pc, 0x40c] |
0x00012c54 ldr r2, [r2] | r2 = *(0x13060);
0x00012c58 str r2, [r3, 0xc] | *((r3 + 0xc)) = r2;
| }
0x00012c5c ldr r3, [fp, -0x30] | r3 = var_30h;
0x00012c60 ldr r3, [r3, 0xc] | r3 = *((r3 + 0xc));
0x00012c64 ldr r2, [pc, 0x3f8] | r2 = *(0x13060);
0x00012c68 str r3, [r2] | *(r2) = r3;
0x00012c6c b 0x13054 | goto label_4;
| }
0x00012c70 ldr r3, [fp, -0x30] | r3 = var_30h;
0x00012c74 ldr r3, [r3, 0xc] | r3 = *((r3 + 0xc));
0x00012c78 ldr r3, [r3, 0x14] | r3 = *((r3 + 0x14));
0x00012c7c ldr r3, [r3, 0xc] | r3 = *((r3 + 0xc));
0x00012c80 mov r2, 0xa | r2 = 0xa;
0x00012c84 mov r1, 0 | r1 = 0;
0x00012c88 mov r0, r3 | r0 = r3;
0x00012c8c bl 0x10bdc | r0 = strtoul (r0, r1, r2);
0x00012c90 mov r3, r0 | r3 = r0;
0x00012c94 str r3, [fp, -0x20] | var_20h = r3;
0x00012c98 ldr r3, [fp, -0x30] | r3 = var_30h;
0x00012c9c ldr r2, [r3, 0x44] | r2 = *((r3 + 0x44));
0x00012ca0 ldr r3, [fp, -0x20] | r3 = var_20h;
0x00012ca4 add r2, r2, r3 | r2 += r3;
0x00012ca8 ldr r3, [fp, -0x30] | r3 = var_30h;
0x00012cac str r2, [r3, 0x48] | *((r3 + 0x48)) = r2;
0x00012cb0 ldr r3, [fp, -0x10] | r3 = var_10h;
0x00012cb4 add r3, r3, 1 | r3++;
0x00012cb8 str r3, [fp, -0x10] | var_10h = r3;
0x00012cbc ldr r3, [fp, -0x30] | r3 = var_30h;
0x00012cc0 ldr r2, [fp, -0x10] | r2 = var_10h;
0x00012cc4 str r2, [r3, 0x40] | *((r3 + 0x40)) = r2;
0x00012cc8 ldr r3, [fp, -0x30] | r3 = var_30h;
0x00012ccc mov r2, 3 | r2 = 3;
0x00012cd0 str r2, [r3, 0x4c] | *((r3 + 0x4c)) = r2;
0x00012cd4 b 0x129b4 | goto label_1;
| }
0x00012cd8 ldr r3, [fp, -0x10] | r3 = var_10h;
0x00012cdc ldrb r3, [r3] | r3 = *(r3);
0x00012ce0 cmp r3, 0 |
| if (r3 == 0) {
0x00012ce4 bne 0x12d24 |
0x00012ce8 ldr r3, [fp, -0x30] | r3 = var_30h;
0x00012cec ldr r3, [r3, 0x40] | r3 = *((r3 + 0x40));
0x00012cf0 ldr r2, [fp, -0x10] | r2 = var_10h;
0x00012cf4 cmp r2, r3 |
| if (r2 == r3) {
0x00012cf8 bne 0x12d08 |
0x00012cfc ldr r0, [fp, -0x30] | r0 = var_30h;
0x00012d00 bl 0x11bb0 | scgi_kill_socket ();
0x00012d04 b 0x13054 | goto label_4;
| }
0x00012d08 ldr r3, [fp, -0x30] | r3 = var_30h;
0x00012d0c mov r2, 2 | r2 = 2;
0x00012d10 str r2, [r3, 0x4c] | *((r3 + 0x4c)) = r2;
0x00012d14 ldr r3, [fp, -0x10] | r3 = var_10h;
0x00012d18 add r3, r3, 1 | r3++;
0x00012d1c str r3, [fp, -0x10] | var_10h = r3;
0x00012d20 b 0x129b4 | goto label_1;
| }
0x00012d24 ldr r3, [fp, -0x10] | r3 = var_10h;
0x00012d28 add r3, r3, 1 | r3++;
0x00012d2c str r3, [fp, -0x10] | var_10h = r3;
0x00012d30 b 0x12acc |
| } while (1);
| do {
0x00012d34 ldr r2, [fp, -0x10] | r2 = var_10h;
0x00012d38 ldr r3, [fp, -0x14] | r3 = var_14h;
0x00012d3c cmp r2, r3 |
| if (r2 >= r3) {
0x00012d40 bhs 0x13034 | goto label_11;
| }
0x00012d44 ldr r3, [fp, -0x30] | r3 = var_30h;
0x00012d48 ldr r3, [r3, 0x3c] | r3 = *((r3 + 0x3c));
0x00012d4c add r2, r3, 1 | r2 = r3 + 1;
0x00012d50 ldr r3, [fp, -0x30] | r3 = var_30h;
0x00012d54 str r2, [r3, 0x3c] | *((r3 + 0x3c)) = r2;
0x00012d58 ldr r3, [fp, -0x30] | r3 = var_30h;
0x00012d5c ldr r2, [r3, 0x3c] | r2 = *((r3 + 0x3c));
0x00012d60 ldr r3, [fp, -0x30] | r3 = var_30h;
0x00012d64 ldr r3, [r3, 0x44] | r3 = *((r3 + 0x44));
0x00012d68 cmp r2, r3 |
| if (r2 == r3) {
0x00012d6c bne 0x12d7c |
0x00012d70 ldr r0, [fp, -0x30] | r0 = var_30h;
0x00012d74 bl 0x11bb0 | scgi_kill_socket ();
0x00012d78 b 0x13054 | goto label_4;
| }
0x00012d7c ldr r3, [fp, -0x10] | r3 = var_10h;
0x00012d80 ldrb r3, [r3] | r3 = *(r3);
0x00012d84 cmp r3, 0 |
| if (r3 == 0) {
0x00012d88 bne 0x12ed8 |
0x00012d8c ldr r3, [fp, -0x30] | r3 = var_30h;
0x00012d90 ldr r3, [r3, 0x40] | r3 = *((r3 + 0x40));
0x00012d94 mov r0, r3 | r0 = r3;
0x00012d98 bl 0x10c0c | r0 = strlen (r0);
0x00012d9c mov r3, r0 | r3 = r0;
0x00012da0 str r3, [fp, -0x1c] | nmeb = r3;
0x00012da4 ldr r3, [fp, -0x1c] | r3 = nmeb;
0x00012da8 add r3, r3, 1 | r3++;
0x00012dac mov r1, 1 | r1 = 1;
0x00012db0 mov r0, r3 | r0 = r3;
0x00012db4 bl 0x10b64 | r0 = calloc (r0, r1);
0x00012db8 mov r3, r0 | r3 = r0;
0x00012dbc str r3, [fp, -0x24] | var_30h = r3;
0x00012dc0 ldr r3, [fp, -0x24] | r3 = var_30h;
0x00012dc4 cmp r3, 0 |
| if (r3 != 0) {
0x00012dc8 moveq r3, 1 | r3 = 1;
| }
| if (r3 == 0) {
0x00012dcc movne r3, 0 | r3 = 0;
| }
0x00012dd0 and r3, r3, 0xff | r3 &= 0xff;
0x00012dd4 cmp r3, 0 |
| if (r3 != 0) {
0x00012dd8 beq 0x12de8 |
0x00012ddc ldr r0, [pc, 0x278] | r0 = *(0x13058);
0x00012de0 bl 0x128dc | scgi_perror ();
0x00012de4 bl 0x10c78 | abort ();
| }
0x00012de8 ldr r2, [fp, -0x24] | r2 = var_30h;
0x00012dec ldr r3, [fp, -0x30] | r3 = var_30h;
0x00012df0 ldr r3, [r3, 0x40] | r3 = *((r3 + 0x40));
0x00012df4 mov r1, r3 | r1 = r3;
0x00012df8 mov r0, r2 | r0 = r2;
0x00012dfc bl 0x10d08 | strcpy (r0, r1)
0x00012e00 ldr r3, [fp, -0x30] | r3 = var_30h;
0x00012e04 ldr r2, [r3, 0x40] | r2 = *((r3 + 0x40));
0x00012e08 ldr r3, [fp, -0x1c] | r3 = nmeb;
0x00012e0c add r3, r3, 1 | r3++;
0x00012e10 add r3, r2, r3 | r3 = r2 + r3;
0x00012e14 mov r0, r3 | r0 = r3;
0x00012e18 bl 0x10c0c | r0 = strlen (r0);
0x00012e1c mov r3, r0 | r3 = r0;
0x00012e20 add r3, r3, 1 | r3++;
0x00012e24 mov r1, 1 | r1 = 1;
0x00012e28 mov r0, r3 | r0 = r3;
0x00012e2c bl 0x10b64 | r0 = calloc (r0, r1);
0x00012e30 mov r3, r0 | r3 = r0;
0x00012e34 str r3, [fp, -0x28] | var_28h = r3;
0x00012e38 ldr r3, [fp, -0x28] | r3 = var_28h;
0x00012e3c cmp r3, 0 |
| if (r3 != 0) {
0x00012e40 moveq r3, 1 | r3 = 1;
| }
| if (r3 == 0) {
0x00012e44 movne r3, 0 | r3 = 0;
| }
0x00012e48 and r3, r3, 0xff | r3 &= 0xff;
0x00012e4c cmp r3, 0 |
| if (r3 != 0) {
0x00012e50 beq 0x12e60 |
0x00012e54 ldr r0, [pc, 0x200] | r0 = *(0x13058);
0x00012e58 bl 0x128dc | scgi_perror ();
0x00012e5c bl 0x10c78 | abort ();
| }
0x00012e60 ldr r0, [fp, -0x28] | r0 = var_28h;
0x00012e64 ldr r3, [fp, -0x30] | r3 = var_30h;
0x00012e68 ldr r2, [r3, 0x40] | r2 = *((r3 + 0x40));
0x00012e6c ldr r3, [fp, -0x1c] | r3 = nmeb;
0x00012e70 add r3, r3, 1 | r3++;
0x00012e74 add r3, r2, r3 | r3 = r2 + r3;
0x00012e78 mov r1, r3 | r1 = r3;
0x00012e7c bl 0x10d08 | strcpy (r0, r1)
0x00012e80 ldr r3, [fp, -0x24] | r3 = var_30h;
0x00012e84 ldr r2, [fp, -0x28] | r2 = var_28h;
0x00012e88 mov r1, r3 | r1 = r3;
0x00012e8c ldr r0, [fp, -0x30] | r0 = var_30h;
0x00012e90 bl 0x13068 | r0 = sym ();
0x00012e94 mov r3, r0 | r3 = r0;
0x00012e98 cmp r3, 0 |
| if (r3 != 0) {
0x00012e9c moveq r3, 1 | r3 = 1;
| }
| if (r3 == 0) {
0x00012ea0 movne r3, 0 | r3 = 0;
| }
0x00012ea4 and r3, r3, 0xff | r3 &= 0xff;
0x00012ea8 cmp r3, 0 |
| if (r3 != 0) {
0x00012eac bne 0x13050 | goto label_12;
| }
0x00012eb0 ldr r3, [fp, -0x30] | r3 = var_30h;
0x00012eb4 mov r2, 1 | r2 = 1;
0x00012eb8 str r2, [r3, 0x4c] | *((r3 + 0x4c)) = r2;
0x00012ebc ldr r3, [fp, -0x10] | r3 = var_10h;
0x00012ec0 add r3, r3, 1 | r3++;
0x00012ec4 str r3, [fp, -0x10] | var_10h = r3;
0x00012ec8 ldr r3, [fp, -0x30] | r3 = var_30h;
0x00012ecc ldr r2, [fp, -0x10] | r2 = var_10h;
0x00012ed0 str r2, [r3, 0x40] | *((r3 + 0x40)) = r2;
0x00012ed4 b 0x129b4 | goto label_1;
| }
0x00012ed8 ldr r3, [fp, -0x10] | r3 = var_10h;
0x00012edc add r3, r3, 1 | r3++;
0x00012ee0 str r3, [fp, -0x10] | var_10h = r3;
0x00012ee4 b 0x12d34 |
| } while (1);
0x00012ee8 mov r3, 0 | r3 = 0;
0x00012eec str r3, [fp, -0x18] | dest = r3;
0x00012ef0 ldr r3, [fp, -0x30] | r3 = var_30h;
0x00012ef4 ldr r3, [r3, 0xc] | r3 = *((r3 + 0xc));
0x00012ef8 ldr r3, [r3, 0x20] | r3 = *((r3 + 0x20));
0x00012efc str r3, [fp, -0x18] | dest = r3;
0x00012f00 ldr r3, [fp, -0x18] | r3 = dest;
0x00012f04 add r3, r3, 1 | r3++;
0x00012f08 mov r2, r3 | r2 = r3;
0x00012f0c ldr r3, [fp, -0x30] | r3 = var_30h;
0x00012f10 ldr r4, [r3, 0xc] | r4 = *((r3 + 0xc));
0x00012f14 mov r1, 1 | r1 = 1;
0x00012f18 mov r0, r2 | r0 = r2;
0x00012f1c bl 0x10b64 | r0 = calloc (r0, r1);
0x00012f20 mov r3, r0 | r3 = r0;
0x00012f24 str r3, [r4, 0x1c] | *((r4 + 0x1c)) = r3;
0x00012f28 ldr r3, [r4, 0x1c] | r3 = *((r4 + 0x1c));
0x00012f2c cmp r3, 0 |
| if (r3 != 0) {
0x00012f30 moveq r3, 1 | r3 = 1;
| }
| if (r3 == 0) {
0x00012f34 movne r3, 0 | r3 = 0;
| }
0x00012f38 and r3, r3, 0xff | r3 &= 0xff;
0x00012f3c cmp r3, 0 |
| if (r3 != 0) {
0x00012f40 beq 0x12f50 |
0x00012f44 ldr r0, [pc, 0x110] | r0 = *(0x13058);
0x00012f48 bl 0x128dc | scgi_perror ();
0x00012f4c bl 0x10c78 | abort ();
| }
0x00012f50 ldr r3, [fp, -0x30] | r3 = var_30h;
0x00012f54 ldr r3, [r3, 0xc] | r3 = *((r3 + 0xc));
0x00012f58 ldr r0, [r3, 0x1c] | r0 = *((r3 + 0x1c));
0x00012f5c ldr r3, [fp, -0x30] | r3 = var_30h;
0x00012f60 ldr r3, [r3, 0x40] | r3 = *((r3 + 0x40));
0x00012f64 ldr r2, [fp, -0x18] | r2 = dest;
0x00012f68 mov r1, r3 | r1 = r3;
0x00012f6c bl 0x10b94 | memcpy (r0, r1, r2);
0x00012f70 ldr r3, [pc, 0xe8] |
0x00012f74 ldr r3, [r3] | r3 = "scgilib:_Out_of_RAM__Emergency_shutdown.";
0x00012f78 cmp r3, 0 |
| if (r3 == 0) {
0x00012f7c bne 0x12fa4 |
0x00012f80 ldr r3, [fp, -0x30] | r3 = var_30h;
0x00012f84 ldr r3, [r3, 0xc] | r3 = *((r3 + 0xc));
0x00012f88 ldr r2, [pc, 0xd0] | r2 = "scgilib:_Out_of_RAM__Emergency_shutdown.";
0x00012f8c str r3, [r2] | *(r2) = r3;
0x00012f90 ldr r3, [fp, -0x30] | r3 = var_30h;
0x00012f94 ldr r3, [r3, 0xc] | r3 = *((r3 + 0xc));
0x00012f98 ldr r2, [pc, 0xc4] | r2 = *(0x13060);
0x00012f9c str r3, [r2] | *(r2) = r3;
0x00012fa0 b 0x12fb8 |
| } else {
0x00012fa4 ldr r3, [pc, 0xb8] |
0x00012fa8 ldr r3, [r3] | r3 = *(0x13060);
0x00012fac ldr r2, [fp, -0x30] | r2 = var_30h;
0x00012fb0 ldr r2, [r2, 0xc] | r2 = *((r2 + 0xc));
0x00012fb4 str r2, [r3, 8] | *((r3 + 8)) = r2;
| }
0x00012fb8 ldr r3, [fp, -0x30] | r3 = var_30h;
0x00012fbc ldr r3, [r3, 0xc] | r3 = *((r3 + 0xc));
0x00012fc0 mov r2, 0 | r2 = 0;
0x00012fc4 str r2, [r3, 8] | *((r3 + 8)) = r2;
0x00012fc8 ldr r3, [fp, -0x30] | r3 = var_30h;
0x00012fcc ldr r2, [r3, 0xc] | r2 = *((r3 + 0xc));
0x00012fd0 ldr r3, [pc, 0x88] |
0x00012fd4 ldr r3, [r3] | r3 = "scgilib:_Out_of_RAM__Emergency_shutdown.";
0x00012fd8 cmp r2, r3 |
| if (r2 == r3) {
0x00012fdc bne 0x12ff4 |
0x00012fe0 ldr r3, [fp, -0x30] | r3 = var_30h;
0x00012fe4 ldr r3, [r3, 0xc] | r3 = *((r3 + 0xc));
0x00012fe8 mov r2, 0 | r2 = 0;
0x00012fec str r2, [r3, 0xc] | *((r3 + 0xc)) = r2;
0x00012ff0 b 0x13008 |
| } else {
0x00012ff4 ldr r3, [fp, -0x30] | r3 = var_30h;
0x00012ff8 ldr r3, [r3, 0xc] | r3 = *((r3 + 0xc));
0x00012ffc ldr r2, [pc, 0x60] |
0x00013000 ldr r2, [r2] | r2 = *(0x13060);
0x00013004 str r2, [r3, 0xc] | *((r3 + 0xc)) = r2;
| }
0x00013008 ldr r3, [fp, -0x30] | r3 = var_30h;
0x0001300c ldr r3, [r3, 0xc] | r3 = *((r3 + 0xc));
0x00013010 ldr r2, [pc, 0x4c] | r2 = *(0x13060);
0x00013014 str r3, [r2] | *(r2) = r3;
0x00013018 ldr r3, [fp, -0x14] | r3 = var_14h;
0x0001301c str r3, [fp, -0x10] | var_10h = r3;
0x00013020 b 0x13038 | goto label_13;
| label_6:
0x00013024 mov r0, r0 |
0x00013028 b 0x13038 | goto label_13;
| label_9:
0x0001302c mov r0, r0 |
0x00013030 b 0x13038 | goto label_13;
| label_11:
0x00013034 mov r0, r0 |
| label_13:
0x00013038 mov r0, r0 |
0x0001303c b 0x13048 | goto label_5;
| label_2:
0x00013040 mov r0, r0 |
0x00013044 b 0x13054 | goto label_4;
| label_5:
0x00013048 mov r0, r0 |
0x0001304c b 0x13054 | goto label_4;
| label_12:
0x00013050 mov r0, r0 |
| label_4:
0x00013054 sub sp, fp, 8 |
0x00013058 pop {r4, fp, pc} |
| }
[*] Function strcpy used 3 times AJAJPost.dll