[*] Binary protection state of AJAJPost.dll

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


[*] Function fprintf 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 @ 0x10e44 */
                                         | #include <stdint.h>
                                         |  
    ; (fcn) main ()                      | int32_t main () {
                                         |     int32_t var_10h;
                                         |     int32_t var_ch;
                                         |     int32_t var_8h;
                                         |     int32_t var_4h_2;
                                         |     int32_t var_4h;
    0x00010e44 push {fp, lr}             |     
    0x00010e48 add fp, sp, 4             |     
    0x00010e4c sub sp, sp, 0x10          |     
    0x00010e50 ldr r0, [pc, 0x154]       |     r0 = *(0x10fa8);
    0x00010e54 bl 0x137c0                |     r0 = scgi_initialize ();
    0x00010e58 mov r3, r0                |     r3 = r0;
    0x00010e5c cmp r3, 0                 |     
                                         |     if (r3 == 0) {
    0x00010e60 movne r3, 1               |         r3 = 1;
                                         |     }
                                         |     if (r3 != 0) {
    0x00010e64 moveq r3, 0               |         r3 = 0;
                                         |     }
    0x00010e68 and r3, r3, 0xff          |     r3 &= 0xff;
    0x00010e6c cmp r3, 0                 |     
                                         |     if (r3 != 0) {
    0x00010e70 beq 0x10e90               |         
    0x00010e74 ldr r3, [pc, 0x134]       |         
    0x00010e78 ldr r3, [r3]              |         r3 = $d;
    0x00010e7c ldr r2, [pc, 0x128]       |         r2 = *(0x10fa8);
    0x00010e80 ldr r1, [pc, 0x12c]       |         r1 = stderr;
    0x00010e84 mov r0, r3                |         r0 = r3;
    0x00010e88 bl 0x10c60                |         fprintf (r0, r1, r2, r3)
    0x00010e8c b 0x10eb0                 |         
                                         |     } else {
    0x00010e90 ldr r3, [pc, 0x118]       |         
    0x00010e94 ldr r3, [r3]              |         r3 = $d;
    0x00010e98 ldr r2, [pc, 0x10c]       |         r2 = *(0x10fa8);
    0x00010e9c ldr r1, [pc, 0x114]       |         r1 = "Successfully_AJAJPost.dll_port__d.";
    0x00010ea0 mov r0, r3                |         r0 = r3;
    0x00010ea4 bl 0x10c60                |         fprintf (r0, "Successfully_AJAJPost.dll_port__d.", r2, r3)
    0x00010ea8 mov r3, 0                 |         r3 = 0;
    0x00010eac b 0x10fa0                 |         goto label_2;
                                         |     }
                                         |     do {
                                         | label_1:
    0x00010eb0 ldr r0, [pc, 0x104]       |         r0 = "Failed_AJAJPost.dll_port__d.";
    0x00010eb4 bl 0x10b88                |         usleep ("Failed_AJAJPost.dll_port__d.");
    0x00010eb8 mov r3, 0                 |         r3 = 0;
    0x00010ebc str r3, [fp, -8]          |         var_8h = r3;
                                         | label_0:
    0x00010ec0 ldr r3, [fp, -8]          |         r3 = var_8h;
    0x00010ec4 cmp r3, 4                 |         
    0x00010ec8 bgt 0x10eb0               |         
                                         |     } while (r3 > 4);
    0x00010ecc bl 0x13ae4                |     r0 = scgi_recv ();
    0x00010ed0 mov r3, r0                |     r3 = r0;
    0x00010ed4 str r3, [fp, -0xc]        |     var_ch = r3;
    0x00010ed8 ldr r3, [fp, -0xc]        |     r3 = var_ch;
    0x00010edc cmp r3, 0                 |     
                                         |     if (r3 == 0) {
    0x00010ee0 beq 0x10f98               |         goto label_3;
                                         |     }
    0x00010ee4 ldr r3, [fp, -8]          |     r3 = var_8h;
    0x00010ee8 add r3, r3, 1             |     r3++;
    0x00010eec str r3, [fp, -8]          |     var_8h = r3;
    0x00010ef0 mov r3, 0                 |     r3 = 0;
    0x00010ef4 str r3, [fp, -0x10]       |     var_10h = r3;
    0x00010ef8 ldr r3, [fp, -0xc]        |     r3 = var_ch;
    0x00010efc sub r2, fp, 0x10          |     r2 -= var_10h;
    0x00010f00 str r2, [r3, 0x28]        |     *((r3 + 0x28)) = r2;
    0x00010f04 ldr r3, [fp, -0xc]        |     r3 = var_ch;
    0x00010f08 ldr r3, [r3, 0x2c]        |     r3 = *((r3 + 0x2c));
    0x00010f0c cmp r3, 3                 |     
                                         |     if (r3 == 3) {
    0x00010f10 bne 0x10f34               |         
    0x00010f14 ldr r3, [fp, -0xc]        |         r3 = var_ch;
    0x00010f18 ldr r1, [r3, 0x1c]        |         r1 = *((r3 + 0x1c));
    0x00010f1c ldr r3, [fp, -0xc]        |         r3 = var_ch;
    0x00010f20 ldr r3, [r3, 0x20]        |         r3 = *((r3 + 0x20));
    0x00010f24 mov r2, r3                |         r2 = r3;
    0x00010f28 ldr r0, [fp, -0xc]        |         r0 = var_ch;
    0x00010f2c bl 0x112ac                |         sym ();
    0x00010f30 b 0x10f58                 |         
                                         |     } else {
    0x00010f34 ldr r1, [pc, 0x84]        |         r1 = *(0x10fbc);
    0x00010f38 ldr r0, [fp, -0xc]        |         r0 = var_ch;
    0x00010f3c bl 0x111f8                |         sym ();
    0x00010f40 ldr r3, [pc, 0x68]        |         
    0x00010f44 ldr r3, [r3]              |         r3 = $d;
    0x00010f48 mov r2, 0x14              |         r2 = 0x14;
    0x00010f4c mov r1, 1                 |         r1 = 1;
    0x00010f50 ldr r0, [pc, 0x6c]        |         r0 = "_01_Not_Implemented";
    0x00010f54 bl 0x10b7c                |         fwrite ("_01_Not_Implemented", r1, r2, r3);
                                         |     }
    0x00010f58 ldr r3, [fp, -0x10]       |     r3 = var_10h;
    0x00010f5c cmp r3, 1                 |     
                                         |     if (r3 == 1) {
    0x00010f60 bne 0x10f7c               |         
    0x00010f64 ldr r3, [pc, 0x44]        |         
    0x00010f68 ldr r3, [r3]              |         r3 = $d;
    0x00010f6c mov r2, 0x6f              |         r2 = 0x6f;
    0x00010f70 mov r1, 1                 |         r1 = 1;
    0x00010f74 ldr r0, [pc, 0x4c]        |         r0 = "Only_POST_supported";
    0x00010f78 bl 0x10b7c                |         fwrite ("Only_POST_supported", r1, r2, r3);
                                         |     }
    0x00010f7c ldr r3, [fp, -0x10]       |     r3 = var_10h;
    0x00010f80 cmp r3, 0                 |     
                                         |     if (r3 != 0) {
    0x00010f84 bne 0x10ec0               |         goto label_0;
                                         |     }
    0x00010f88 ldr r3, [fp, -0xc]        |     r3 = var_ch;
    0x00010f8c mov r2, 0                 |     r2 = 0;
    0x00010f90 str r2, [r3, 0x28]        |     *((r3 + 0x28)) = r2;
    0x00010f94 b 0x10ec0                 |     goto label_0;
                                         | label_3:
    0x00010f98 mov r0, r0                |     
    0x00010f9c b 0x10eb0                 |     goto label_1;
                                         | label_2:
    0x00010fa0 mov r0, r3                |     r0 = r3;
    0x00010fa4 sub sp, fp, 4             |     
    0x00010fa8 pop {fp, pc}              |     
                                         | }
    ; 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 @ 0x10fcc */
                                                     | #include <stdint.h>
                                                     |  
    ; (fcn) sym.CreateSocketTCP_unsigned_int_ ()     | void CreateSocketTCP_unsigned_int_ (int32_t arg1) {
                                                     |     int32_t var_28h;
                                                     |     int32_t var_21h;
                                                     |     void * addr;
                                                     |     int32_t var_1eh;
                                                     |     int32_t var_1ch;
                                                     |     int32_t var_10h;
                                                     |     int32_t var_0h;
                                                     |     int32_t var_ch_2;
                                                     |     int32_t var_ch;
                                                     |     r0 = arg1;
                                                     |     /* CreateSocketTCP(unsigned int*) */
    0x00010fcc push {r4, r5, fp, lr}                 |     
    0x00010fd0 add fp, sp, 0xc                       |     
    0x00010fd4 sub sp, sp, 0x28                      |     
    0x00010fd8 str r0, [fp, -0x28]                   |     var_28h = r0;
    0x00010fdc mov r3, 1                             |     r3 = 1;
    0x00010fe0 str r3, [fp, -0x10]                   |     var_10h = r3;
    0x00010fe4 mov r3, 1                             |     r3 = 1;
    0x00010fe8 strb r3, [fp, -0x21]                  |     var_21h = r3;
    0x00010fec mov r2, 0                             |     r2 = 0;
    0x00010ff0 mov r1, 1                             |     r1 = 1;
    0x00010ff4 mov r0, 2                             |     r0 = 2;
    0x00010ff8 bl 0x10c90                            |     r0 = socket (r0, r1, r2);
    0x00010ffc mov r3, r0                            |     r3 = r0;
    0x00011000 mov r2, r3                            |     r2 = r3;
    0x00011004 ldr r3, [fp, -0x28]                   |     r3 = var_28h;
    0x00011008 str r2, [r3]                          |     *(r3) = r2;
    0x0001100c ldr r3, [fp, -0x28]                   |     r3 = var_28h;
    0x00011010 ldr r3, [r3]                          |     r3 = *(r3);
    0x00011014 cmn r3, 1                             |     
                                                     |     if (r3 != 1) {
    0x00011018 beq 0x11174                           |         
    0x0001101c ldr r3, [fp, -0x28]                   |         r3 = var_28h;
    0x00011020 ldr r3, [r3]                          |         r3 = *(r3);
    0x00011024 mov r0, r3                            |         r0 = r3;
    0x00011028 sub r2, fp, 0x10                      |         r2 -= var_10h;
    0x0001102c mov r3, 4                             |         r3 = 4;
    0x00011030 str r3, [sp]                          |         *(sp) = r3;
    0x00011034 mov r3, r2                            |         r3 = r2;
    0x00011038 mov r2, 1                             |         r2 = 1;
    0x0001103c mov r1, 6                             |         r1 = 6;
    0x00011040 bl 0x10c30                            |         r0 = setsockopt ();
    0x00011044 mov r3, r0                            |         r3 = r0;
    0x00011048 cmn r3, 1                             |         
                                                     |         if (r3 != 1) {
    0x0001104c moveq r3, 1                           |             r3 = 1;
                                                     |         }
                                                     |         if (r3 == 1) {
    0x00011050 movne r3, 0                           |             r3 = 0;
                                                     |         }
    0x00011054 and r3, r3, 0xff                      |         r3 &= 0xff;
    0x00011058 cmp r3, 0                             |         
                                                     |         if (r3 != 0) {
    0x0001105c beq 0x11084                           |             
    0x00011060 ldr r3, [pc, 0x174]                   |             r3 = *(0x111d8);
    0x00011064 ldr r4, [r3]                          |             r4 = *(0x111d8);
    0x00011068 bl 0x10b70                            |             r0 = errno_location ();
    0x0001106c mov r3, r0                            |             r3 = r0;
    0x00011070 ldr r3, [r3]                          |             r3 = *(r3);
    0x00011074 mov r2, r3                            |             r2 = r3;
    0x00011078 ldr r1, [pc, 0x160]                   |             r1 = stderr;
    0x0001107c mov r0, r4                            |             r0 = r4;
    0x00011080 bl 0x10c60                            |             fprintf (r0, r1, r2, r3)
                                                     |         }
    0x00011084 sub r3, fp, 0x20                      |         r3 -= addr;
    0x00011088 mov r2, 0x10                          |         r2 = 0x10;
    0x0001108c mov r1, 0                             |         r1 = 0;
    0x00011090 mov r0, r3                            |         r0 = r3;
    0x00011094 bl 0x10c48                            |         memset (r0, r1, r2);
    0x00011098 mov r3, 2                             |         r3 = 2;
    0x0001109c strh r3, [fp, -0x20]                  |         addr = r3;
    0x000110a0 ldr r0, [pc, 0x13c]                   |         r0 = "AJAJPost_TCP_setsocketopt_error:_d";
    0x000110a4 bl 0x10c6c                            |         r0 = inet_addr ();
    0x000110a8 mov r3, r0                            |         r3 = r0;
    0x000110ac str r3, [fp, -0x1c]                   |         var_1ch = r3;
    0x000110b0 ldr r0, [pc, 0x130]                   |         r0 = "_27.0.0.1";
    0x000110b4 bl 0x10b58                            |         r0 = htons ();
    0x000110b8 mov r3, r0                            |         r3 = r0;
    0x000110bc strh r3, [fp, -0x1e]                  |         var_1eh = r3;
    0x000110c0 ldr r3, [fp, -0x28]                   |         r3 = var_28h;
    0x000110c4 ldr r3, [r3]                          |         r3 = *(r3);
    0x000110c8 mov r0, r3                            |         r0 = r3;
    0x000110cc sub r3, fp, 0x20                      |         r3 -= addr;
    0x000110d0 mov r2, 0x10                          |         r2 = 0x10;
    0x000110d4 mov r1, r3                            |         r1 = r3;
    0x000110d8 bl 0x10ba0                            |         r0 = connect (r0, r1, r2);
    0x000110dc mov r3, r0                            |         r3 = r0;
    0x000110e0 cmn r3, 1                             |         
                                                     |         if (r3 != 1) {
    0x000110e4 moveq r3, 1                           |             r3 = 1;
                                                     |         }
                                                     |         if (r3 == 1) {
    0x000110e8 movne r3, 0                           |             r3 = 0;
                                                     |         }
    0x000110ec and r3, r3, 0xff                      |         r3 &= 0xff;
    0x000110f0 cmp r3, 0                             |         
                                                     |         if (r3 != 0) {
    0x000110f4 beq 0x11144                           |             
    0x000110f8 ldr r3, [pc, 0xdc]                    |             r3 = *(0x111d8);
    0x000110fc ldr r4, [r3]                          |             r4 = *(0x111d8);
    0x00011100 ldr r3, [fp, -0x28]                   |             r3 = var_28h;
    0x00011104 ldr r5, [r3]                          |             r5 = *(0x111d8);
    0x00011108 bl 0x10b70                            |             r0 = errno_location ();
    0x0001110c mov r3, r0                            |             r3 = r0;
    0x00011110 ldr r3, [r3]                          |             r3 = *(r3);
    0x00011114 mov r2, r5                            |             r2 = r5;
    0x00011118 ldr r1, [pc, 0xcc]                    |             r1 = *(0x111e8);
    0x0001111c mov r0, r4                            |             r0 = r4;
    0x00011120 bl 0x10c60                            |             fprintf (r0, r1, r2, r3)
    0x00011124 ldr r3, [fp, -0x28]                   |             r3 = var_28h;
    0x00011128 ldr r3, [r3]                          |             r3 = *(r3);
    0x0001112c mov r0, r3                            |             r0 = r3;
    0x00011130 bl 0x10c3c                            |             close (r0);
    0x00011134 ldr r3, [fp, -0x28]                   |             r3 = var_28h;
    0x00011138 mvn r2, 0                             |             r2 = ~0;
    0x0001113c str r2, [r3]                          |             *(r3) = r2;
    0x00011140 b 0x11190                             |             
                                                     |         } else {
    0x00011144 ldr r3, [fp, -0x28]                   |             r3 = var_28h;
    0x00011148 ldr r3, [r3]                          |             r3 = *(r3);
    0x0001114c mov r0, r3                            |             r0 = r3;
    0x00011150 sub r2, fp, 0x21                      |             r2 -= var_21h;
    0x00011154 mov r3, 1                             |             r3 = 1;
    0x00011158 str r3, [sp]                          |             *(sp) = r3;
    0x0001115c mov r3, r2                            |             r3 = r2;
    0x00011160 mov r2, 1                             |             r2 = 1;
    0x00011164 mov r1, 6                             |             r1 = 6;
    0x00011168 bl 0x10c30                            |             setsockopt ();
    0x0001116c mov r3, 1                             |             r3 = 1;
    0x00011170 b 0x111d0                             |             
                                                     |         } else {
    0x00011174 ldr r3, [pc, 0x60]                    |             
    0x00011178 ldr r0, [r3]                          |             r0 = *(0x111d8);
    0x0001117c ldr r3, [fp, -0x28]                   |             r3 = var_28h;
    0x00011180 ldr r3, [r3]                          |             r3 = *(0x111d8);
    0x00011184 mov r2, r3                            |             r2 = r3;
    0x00011188 ldr r1, [pc, 0x60]                    |             r1 = "AJAJPost_TCP_Socket_was_unable_to_connect__d__errno:_d_";
    0x0001118c bl 0x10c60                            |             fprintf (r0, "AJAJPost_TCP_Socket_was_unable_to_connect__d__errno:_d_", r2, r3)
                                                     |         }
    0x00011190 mov r3, 0                             |         r3 = 0;
    0x00011194 b 0x111d0                             |         
                                                     |     }
    0x000111d0 mov r0, r3                            |     r0 = r3;
    0x000111d4 sub sp, fp, 0xc                       |     
    0x000111d8 pop {r4, r5, fp, pc}                  |     
                                                     | }
    ; 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 @ 0x112ac */
                                                                                 | #include <stdint.h>
                                                                                 |  
    ; (fcn) sym.ExchangeData_SCGI_REQUEST__unsigned_char__unsigned_int_ ()       | void ExchangeData_SCGI_REQUEST_unsigned_char_unsigned_int_ (int32_t arg1, int32_t arg2) {
                                                                                 |     void * buffer;
                                                                                 |     int32_t var_b4h;
                                                                                 |     int32_t var_b0h;
                                                                                 |     int32_t var_ach;
                                                                                 |     void * s1;
                                                                                 |     void * var_28h;
                                                                                 |     char * ptr;
                                                                                 |     int32_t var_20h;
                                                                                 |     int32_t var_1ch;
                                                                                 |     int32_t var_18h;
                                                                                 |     int32_t var_12h;
                                                                                 |     int32_t var_11h;
                                                                                 |     size_t nmeb;
                                                                                 |     int32_t var_ch;
                                                                                 |     int32_t var_0h;
                                                                                 |     int32_t var_sp_b4h;
                                                                                 |     int32_t var_sp_b0h;
                                                                                 |     int32_t c;
                                                                                 |     int32_t var_sp_2ch;
                                                                                 |     int32_t var_sp_28h;
                                                                                 |     int32_t var_sp_24h;
                                                                                 |     int8_t var_sp_12h;
                                                                                 |     int8_t var_sp_11h;
                                                                                 |     int32_t var_8h;
                                                                                 |     r0 = arg1;
                                                                                 |     r1 = arg2;
                                                                                 |     /* ExchangeData(SCGI_REQUEST*, unsigned char*, unsigned int) */
    0x000112ac push {r4, fp, lr}                                                 |     
    0x000112b0 add fp, sp, 8                                                     |     
    0x000112b4 sub sp, sp, 0x8000                                                |     
    0x000112b8 sub sp, sp, 0xcc                                                  |     
    0x000112bc sub r3, fp, 0x8000                                                |     r3 = fp - 0x8000;
    0x000112c0 sub r3, r3, 0xc                                                   |     r3 -= 0xc;
    0x000112c4 str r0, [r3, -0xb4]                                               |     *((r3 - 0xb4)) = r0;
    0x000112c8 sub r3, fp, 0x8000                                                |     r3 = fp - 0x8000;
    0x000112cc sub r3, r3, 0xc                                                   |     r3 -= 0xc;
    0x000112d0 str r1, [r3, -0xb8]                                               |     *((r3 - 0xb8)) = r1;
    0x000112d4 sub r3, fp, 0x8000                                                |     r3 = fp - 0x8000;
    0x000112d8 sub r3, r3, 0xc                                                   |     r3 -= 0xc;
    0x000112dc str r2, [r3, -0xbc]                                               |     *((r3 - 0xbc)) = r2;
    0x000112e0 mov r3, 0                                                         |     r3 = 0;
    0x000112e4 str r3, [fp, -0x2c]                                               |     s1 = r3;
    0x000112e8 mov r3, 0                                                         |     r3 = 0;
    0x000112ec strb r3, [fp, -0x11]                                              |     var_11h = r3;
    0x000112f0 sub r3, fp, 0x8000                                                |     r3 = fp - 0x8000;
    0x000112f4 sub r3, r3, 0xc                                                   |     r3 -= 0xc;
    0x000112f8 sub r3, r3, 0xac                                                  |     r3 -= 0xac;
    0x000112fc mov r0, r3                                                        |     r0 = r3;
    0x00011300 bl 0x10fcc                                                        |     r0 = sym ();
    0x00011304 mov r3, r0                                                        |     r3 = r0;
    0x00011308 cmp r3, 0                                                         |     
                                                                                 |     if (r3 == 0) {
    0x0001130c beq 0x11680                                                       |         goto label_0;
                                                                                 |     }
    0x00011310 sub r3, fp, 0x8000                                                |     r3 = fp - 0x8000;
    0x00011314 sub r3, r3, 0xc                                                   |     r3 -= 0xc;
    0x00011318 ldr r3, [r3, -0xac]                                               |     r3 = *((r3 - 0xac));
    0x0001131c mov r0, r3                                                        |     r0 = r3;
    0x00011320 sub r3, fp, 0x8000                                                |     r3 = fp - 0x8000;
    0x00011324 sub r3, r3, 0xc                                                   |     r3 -= 0xc;
    0x00011328 mov r2, r3                                                        |     r2 = r3;
    0x0001132c sub r3, fp, 0x8000                                                |     r3 = fp - 0x8000;
    0x00011330 sub r3, r3, 0xc                                                   |     r3 -= 0xc;
    0x00011334 mov r1, r3                                                        |     r1 = r3;
    0x00011338 mov r3, 0                                                         |     r3 = 0;
    0x0001133c ldr r2, [r2, -0xbc]                                               |     r2 = *((r2 - 0xbc));
    0x00011340 ldr r1, [r1, -0xb8]                                               |     r1 = *((r1 - 0xb8));
    0x00011344 bl 0x10bb8                                                        |     r0 = send (r0, r1, r2, r3);
    0x00011348 mov r3, r0                                                        |     r3 = r0;
    0x0001134c cmn r3, 1                                                         |     
                                                                                 |     if (r3 != 1) {
    0x00011350 moveq r3, 1                                                       |         r3 = 1;
                                                                                 |     }
                                                                                 |     if (r3 == 1) {
    0x00011354 movne r3, 0                                                       |         r3 = 0;
                                                                                 |     }
    0x00011358 and r3, r3, 0xff                                                  |     r3 &= 0xff;
    0x0001135c cmp r3, 0                                                         |     
                                                                                 |     if (r3 != 0) {
    0x00011360 beq 0x1138c                                                       |         
    0x00011364 ldr r3, [pc, 0x320]                                               |         r3 = *(0x11688);
    0x00011368 ldr r4, [r3]                                                      |         r4 = *(0x11688);
    0x0001136c bl 0x10b70                                                        |         r0 = errno_location ();
    0x00011370 mov r3, r0                                                        |         r3 = r0;
    0x00011374 ldr r3, [r3]                                                      |         r3 = *(r3);
    0x00011378 mov r2, r3                                                        |         r2 = r3;
    0x0001137c ldr r1, [pc, 0x30c]                                               |         r1 = stderr;
    0x00011380 mov r0, r4                                                        |         r0 = r4;
    0x00011384 bl 0x10c60                                                        |         fprintf (r0, r1, r2, r3)
    0x00011388 b 0x115a4                                                         |         goto label_1;
                                                                                 |     }
    0x0001138c sub r3, fp, 0x8000                                                |     r3 = fp - 0x8000;
    0x00011390 sub r3, r3, 0xc                                                   |     r3 -= 0xc;
    0x00011394 mov r2, r3                                                        |     r2 = r3;
    0x00011398 sub r3, fp, 0xac                                                  |     r3 -= c;
    0x0001139c str r3, [r2, -0xb0]                                               |     *((r2 - 0xb0)) = r3;
    0x000113a0 mov r3, 0                                                         |     r3 = 0;
    0x000113a4 str r3, [fp, -0x18]                                               |     var_18h = r3;
                                                                                 |     do {
    0x000113a8 ldr r3, [fp, -0x18]                                               |         r3 = var_18h;
    0x000113ac cmp r3, 0x1f                                                      |         
                                                                                 |         if (r3 > 0x1f) {
    0x000113b0 bhi 0x113dc                                                       |             goto label_2;
                                                                                 |         }
    0x000113b4 sub r3, fp, 0x8000                                                |         r3 = fp - 0x8000;
    0x000113b8 sub r3, r3, 0xc                                                   |         r3 -= 0xc;
    0x000113bc ldr r3, [r3, -0xb0]                                               |         r3 = *((r3 - 0xb0));
    0x000113c0 ldr r2, [fp, -0x18]                                               |         r2 = var_18h;
    0x000113c4 mov r1, 0                                                         |         r1 = 0;
    0x000113c8 str r1, [r3, r2, lsl 2]                                           |         offset_0 = r2 << 2;
                                                                                 |         *((r3 + offset_0)) = r1;
    0x000113cc ldr r3, [fp, -0x18]                                               |         r3 = var_18h;
    0x000113d0 add r3, r3, 1                                                     |         r3++;
    0x000113d4 str r3, [fp, -0x18]                                               |         var_18h = r3;
    0x000113d8 b 0x113a8                                                         |         
                                                                                 |     } while (1);
                                                                                 | label_2:
    0x000113dc sub r3, fp, 0x8000                                                |     r3 = fp - 0x8000;
    0x000113e0 sub r3, r3, 0xc                                                   |     r3 -= 0xc;
    0x000113e4 ldr r3, [r3, -0xac]                                               |     r3 = *((r3 - 0xac));
    0x000113e8 lsr r2, r3, 5                                                     |     r2 = r3 >> 5;
    0x000113ec lsl r3, r2, 2                                                     |     r3 = r2 << 2;
    0x000113f0 sub r1, fp, 0xc                                                   |     r1 -= var_18h;
    0x000113f4 add r3, r1, r3                                                    |     r3 = r1 + r3;
    0x000113f8 ldr r1, [r3, -0xa0]                                               |     r1 = c;
    0x000113fc sub r3, fp, 0x8000                                                |     r3 = fp - 0x8000;
    0x00011400 sub r3, r3, 0xc                                                   |     r3 -= 0xc;
    0x00011404 ldr r3, [r3, -0xac]                                               |     r3 = *((r3 - 0xac));
    0x00011408 and r3, r3, 0x1f                                                  |     r3 &= 0x1f;
    0x0001140c mov r0, 1                                                         |     r0 = 1;
    0x00011410 lsl r3, r0, r3                                                    |     r3 = r0 << r3;
    0x00011414 orr r1, r1, r3                                                    |     r1 |= r3;
    0x00011418 lsl r3, r2, 2                                                     |     r3 = r2 << 2;
    0x0001141c sub r2, fp, 0xc                                                   |     r2 -= var_18h;
    0x00011420 add r3, r2, r3                                                    |     r3 = r2 + r3;
    0x00011424 str r1, [r3, -0xa0]                                               |     c = r1;
    0x00011428 mov r3, 5                                                         |     r3 = 5;
    0x0001142c str r3, [fp, -0xb4]                                               |     var_b4h = r3;
    0x00011430 mov r3, 0                                                         |     r3 = 0;
    0x00011434 str r3, [fp, -0xb0]                                               |     var_b0h = r3;
    0x00011438 sub r3, fp, 0x8000                                                |     r3 = fp - 0x8000;
    0x0001143c sub r3, r3, 0xc                                                   |     r3 -= 0xc;
    0x00011440 sub r3, r3, 0xa8                                                  |     r3 -= 0xa8;
    0x00011444 mov r2, 0x8000                                                    |     r2 = 0x8000;
    0x00011448 mov r1, 0                                                         |     r1 = 0;
    0x0001144c mov r0, r3                                                        |     r0 = r3;
    0x00011450 bl 0x10c48                                                        |     memset (r0, r1, r2);
    0x00011454 sub r3, fp, 0x8000                                                |     r3 = fp - 0x8000;
    0x00011458 sub r3, r3, 0xc                                                   |     r3 -= 0xc;
    0x0001145c ldr r3, [r3, -0xac]                                               |     r3 = *((r3 - 0xac));
    0x00011460 add r3, r3, 1                                                     |     r3++;
    0x00011464 mov r0, r3                                                        |     r0 = r3;
    0x00011468 sub r1, fp, 0xac                                                  |     r1 -= c;
    0x0001146c sub r3, fp, 0xb4                                                  |     r3 -= var_sp_b4h;
    0x00011470 str r3, [sp]                                                      |     *(sp) = r3;
    0x00011474 mov r3, 0                                                         |     r3 = 0;
    0x00011478 mov r2, 0                                                         |     r2 = 0;
    0x0001147c bl 0x10c24                                                        |     r0 = select ();
    0x00011480 mov r3, r0                                                        |     r3 = r0;
    0x00011484 str r3, [fp, -0x1c]                                               |     var_1ch = r3;
    0x00011488 ldr r3, [fp, -0x1c]                                               |     r3 = var_1ch;
    0x0001148c cmn r3, 1                                                         |     
                                                                                 |     if (r3 != 1) {
    0x00011490 beq 0x114a0                                                       |         
    0x00011494 cmp r3, 0                                                         |         
                                                                                 |         if (r3 != 0) {
    0x00011498 beq 0x114bc                                                       |             
    0x0001149c b 0x114d8                                                         |             
                                                                                 |         } else {
    0x000114a0 ldr r3, [pc, 0x1e4]                                               |             
    0x000114a4 ldr r3, [r3]                                                      |             r3 = *(0x11688);
    0x000114a8 mov r2, 0x19                                                      |             r2 = 0x19;
    0x000114ac mov r1, 1                                                         |             r1 = 1;
    0x000114b0 ldr r0, [pc, 0x1dc]                                               |             r0 = "AjajPost_TCP_error_sending:__d";
    0x000114b4 bl 0x10b7c                                                        |             fwrite ("AjajPost_TCP_error_sending:__d", r1, r2, r3);
    0x000114b8 b 0x115a4                                                         |             goto label_1;
                                                                                 |         }
    0x000114bc ldr r3, [pc, 0x1c8]                                               |         
    0x000114c0 ldr r3, [r3]                                                      |         r3 = *(0x11688);
    0x000114c4 mov r2, 0x1c                                                      |         r2 = 0x1c;
    0x000114c8 mov r1, 1                                                         |         r1 = 1;
    0x000114cc ldr r0, [pc, 0x1c4]                                               |         r0 = "AJAJPost_Socket_error___";
    0x000114d0 bl 0x10b7c                                                        |         fwrite ("AJAJPost_Socket_error___", r1, r2, r3);
    0x000114d4 b 0x115a4                                                         |         goto label_1;
                                                                                 |     }
    0x000114d8 mov r3, 0                                                         |     r3 = 0;
    0x000114dc str r3, [fp, -0x10]                                               |     var_1ch = r3;
    0x000114e0 mov r3, 0                                                         |     r3 = 0;
    0x000114e4 strb r3, [fp, -0x12]                                              |     var_12h = r3;
                                                                                 |     do {
    0x000114e8 ldrb r3, [fp, -0x12]                                              |         r3 = var_12h;
    0x000114ec cmp r3, 2                                                         |         
                                                                                 |         if (r3 > 2) {
    0x000114f0 bhi 0x115a0                                                       |             goto label_3;
                                                                                 |         }
    0x000114f4 sub r3, fp, 0x8000                                                |         r3 = fp - 0x8000;
    0x000114f8 sub r3, r3, 0xc                                                   |         r3 -= 0xc;
    0x000114fc ldr r3, [r3, -0xac]                                               |         r3 = *((r3 - 0xac));
    0x00011500 mov r0, r3                                                        |         r0 = r3;
    0x00011504 sub r3, fp, 0x8000                                                |         r3 = fp - 0x8000;
    0x00011508 sub r3, r3, 0xc                                                   |         r3 -= 0xc;
    0x0001150c sub r3, r3, 0xa8                                                  |         r3 -= 0xa8;
    0x00011510 ldr r2, [fp, -0x10]                                               |         r2 = var_1ch;
    0x00011514 add r1, r3, r2                                                    |         r1 = r3 + r2;
    0x00011518 ldr r3, [fp, -0x10]                                               |         r3 = var_1ch;
    0x0001151c rsb r2, r3, 0x8000                                                |         r2 = 0x8000 - r3;
    0x00011520 mov r3, 0                                                         |         r3 = 0;
    0x00011524 bl 0x10c00                                                        |         r0 = recv (r0, r1);
    0x00011528 mov r3, r0                                                        |         r3 = r0;
    0x0001152c str r3, [fp, -0x20]                                               |         s1 = r3;
    0x00011530 ldr r2, [fp, -0x10]                                               |         r2 = var_1ch;
    0x00011534 ldr r3, [fp, -0x20]                                               |         r3 = s1;
    0x00011538 add r3, r2, r3                                                    |         r3 = r2 + r3;
    0x0001153c str r3, [fp, -0x10]                                               |         var_1ch = r3;
    0x00011540 sub r3, fp, 0x8000                                                |         r3 = fp - 0x8000;
    0x00011544 sub r3, r3, 0xc                                                   |         r3 -= 0xc;
    0x00011548 sub r3, r3, 0xa8                                                  |         r3 -= 0xa8;
    0x0001154c sub r0, fp, 0x2c                                                  |         r0 -= var_sp_2ch;
    0x00011550 mov r2, 4                                                         |         r2 = 4;
    0x00011554 mov r1, r3                                                        |         r1 = r3;
    0x00011558 bl 0x10b94                                                        |         memcpy (r0, r1, r2);
    0x0001155c ldr r2, [fp, -0x10]                                               |         r2 = var_1ch;
    0x00011560 ldr r3, [fp, -0x2c]                                               |         r3 = s1;
    0x00011564 cmp r2, r3                                                        |         
                                                                                 |         if (r2 == r3) {
    0x00011568 bne 0x11588                                                       |             
    0x0001156c ldr r3, [fp, -0x10]                                               |             r3 = var_1ch;
    0x00011570 sub r3, r3, 4                                                     |             r3 -= 4;
    0x00011574 str r3, [fp, -0x10]                                               |             var_1ch = r3;
    0x00011578 mov r3, 1                                                         |             r3 = 1;
    0x0001157c strb r3, [fp, -0x11]                                              |             var_11h = r3;
    0x00011580 mov r0, r0                                                        |             
    0x00011584 b 0x115a0                                                         |             
                                                                                 |         } else {
    0x00011588 ldr r0, [pc, 0x10c]                                               |             r0 = "AJAJPost_Receive_timeout___";
    0x0001158c bl 0x10b88                                                        |             usleep ("AJAJPost_Receive_timeout___");
    0x00011590 ldrb r3, [fp, -0x12]                                              |             r3 = var_12h;
    0x00011594 add r3, r3, 1                                                     |             r3++;
    0x00011598 strb r3, [fp, -0x12]                                              |             var_12h = r3;
    0x0001159c b 0x114e8                                                         |             
                                                                                 |         } while (1);
                                                                                 |     }
                                                                                 | label_3:
    0x000115a0 mov r0, r0                                                        |     
                                                                                 | label_1:
    0x000115a4 sub r3, fp, 0x8000                                                |     r3 = fp - 0x8000;
    0x000115a8 sub r3, r3, 0xc                                                   |     r3 -= 0xc;
    0x000115ac ldr r3, [r3, -0xac]                                               |     r3 = *((r3 - 0xac));
    0x000115b0 mov r1, 2                                                         |     r1 = 2;
    0x000115b4 mov r0, r3                                                        |     r0 = r3;
    0x000115b8 bl 0x10d20                                                        |     shutdown ();
    0x000115bc sub r3, fp, 0x8000                                                |     r3 = fp - 0x8000;
    0x000115c0 sub r3, r3, 0xc                                                   |     r3 -= 0xc;
    0x000115c4 ldr r3, [r3, -0xac]                                               |     r3 = *((r3 - 0xac));
    0x000115c8 mov r0, r3                                                        |     r0 = r3;
    0x000115cc bl 0x10c3c                                                        |     close (r0);
    0x000115d0 ldrb r3, [fp, -0x11]                                              |     r3 = var_11h;
    0x000115d4 cmp r3, 0                                                         |     
                                                                                 |     if (r3 != 0) {
    0x000115d8 beq 0x1166c                                                       |         
    0x000115dc ldr r3, [fp, -0x10]                                               |         r3 = var_1ch;
    0x000115e0 add r3, r3, 0x80                                                  |         r3 += 0x80;
    0x000115e4 mov r1, 1                                                         |         r1 = 1;
    0x000115e8 mov r0, r3                                                        |         r0 = r3;
    0x000115ec bl 0x10b64                                                        |         r0 = calloc (r0, r1);
    0x000115f0 mov r3, r0                                                        |         r3 = r0;
    0x000115f4 str r3, [fp, -0x24]                                               |         ptr = r3;
    0x000115f8 ldr r3, [fp, -0x24]                                               |         r3 = ptr;
    0x000115fc cmp r3, 0                                                         |         
                                                                                 |         if (r3 == 0) {
    0x00011600 beq 0x11680                                                       |             goto label_0;
                                                                                 |         }
    0x00011604 ldr r2, [pc, 0x94]                                                |         r2 = *(0x1169c);
    0x00011608 ldr r1, [pc, 0x94]                                                |         r1 = "_00_OK";
    0x0001160c ldr r0, [fp, -0x24]                                               |         r0 = ptr;
    0x00011610 bl 0x10c84                                                        |         sprintf (r0, "_00_OK", r2);
    0x00011614 str r0, [fp, -0x28]                                               |         var_28h = r0;
    0x00011618 ldr r3, [fp, -0x28]                                               |         r3 = var_28h;
    0x0001161c ldr r2, [fp, -0x24]                                               |         r2 = ptr;
    0x00011620 add r0, r2, r3                                                    |         r0 = r2 + r3;
    0x00011624 ldr r2, [fp, -0x10]                                               |         r2 = var_1ch;
    0x00011628 sub r3, fp, 0x8000                                                |         r3 = fp - 0x8000;
    0x0001162c sub r3, r3, 0xc                                                   |         r3 -= 0xc;
    0x00011630 sub r3, r3, 0xa8                                                  |         r3 -= 0xa8;
    0x00011634 add r3, r3, 4                                                     |         r3 += 4;
    0x00011638 mov r1, r3                                                        |         r1 = r3;
    0x0001163c bl 0x10b94                                                        |         memcpy (r0, r1, r2);
    0x00011640 ldr r2, [fp, -0x28]                                               |         r2 = var_28h;
    0x00011644 ldr r3, [fp, -0x10]                                               |         r3 = var_1ch;
    0x00011648 add r2, r2, r3                                                    |         r2 += r3;
    0x0001164c sub r3, fp, 0x8000                                                |         r3 = fp - 0x8000;
    0x00011650 sub r3, r3, 0xc                                                   |         r3 -= 0xc;
    0x00011654 ldr r1, [fp, -0x24]                                               |         r1 = ptr;
    0x00011658 ldr r0, [r3, -0xb4]                                               |         r0 = *((r3 - 0xb4));
    0x0001165c bl 0x13c44                                                        |         scgi_send ();
    0x00011660 ldr r0, [fp, -0x24]                                               |         r0 = ptr;
    0x00011664 bl 0x10cd8                                                        |         free (r0);
    0x00011668 b 0x11680                                                         |         
                                                                                 |     } else {
    0x0001166c sub r3, fp, 0x8000                                                |         r3 = fp - 0x8000;
    0x00011670 sub r3, r3, 0xc                                                   |         r3 -= 0xc;
    0x00011674 ldr r1, [pc, 0x2c]                                                |         r1 = "Status:__sContent_Type:_text_plain";
    0x00011678 ldr r0, [r3, -0xb4]                                               |         r0 = *((r3 - 0xb4));
    0x0001167c bl 0x111f8                                                        |         r0 = sym ();
                                                                                 |     }
                                                                                 | label_0:
    0x00011680 mov r0, r0                                                        |     
    0x00011684 sub sp, fp, 8                                                     |     
    0x00011688 pop {r4, fp, pc}                                                  |     
                                                                                 | }
    ; 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 @ 0x111f8 */
                                                                 | #include <stdint.h>
                                                                 |  
    ; (fcn) sym.SendWebAcknowledge_SCGI_REQUEST__char_ ()        | void SendWebAcknowledge_SCGI_REQUEST_char_ (int32_t arg1, int32_t arg2) {
                                                                 |     int32_t var_8ch;
                                                                 |     int32_t var_88h;
                                                                 |     char * s;
                                                                 |     int32_t var_4h_2;
                                                                 |     int32_t var_4h;
                                                                 |     r0 = arg1;
                                                                 |     r1 = arg2;
                                                                 |     /* SendWebAcknowledge(SCGI_REQUEST*, char*) */
    0x000111f8 push {fp, lr}                                     |     
    0x000111fc add fp, sp, 4                                     |     
    0x00011200 sub sp, sp, 0x88                                  |     
    0x00011204 str r0, [fp, -0x88]                               |     var_88h = r0;
    0x00011208 str r1, [fp, -0x8c]                               |     var_8ch = r1;
    0x0001120c sub r3, fp, 0x84                                  |     r3 -= s;
    0x00011210 mov r2, 0x80                                      |     r2 = 0x80;
    0x00011214 mov r1, 0                                         |     r1 = 0;
    0x00011218 mov r0, r3                                        |     r0 = r3;
    0x0001121c bl 0x10c48                                        |     memset (r0, r1, r2);
    0x00011220 sub r3, fp, 0x84                                  |     r3 -= s;
    0x00011224 ldr r2, [fp, -0x8c]                               |     r2 = var_8ch;
    0x00011228 ldr r1, [pc, 0x6c]                                |     r1 = *(0x11298);
    0x0001122c mov r0, r3                                        |     r0 = r3;
    0x00011230 bl 0x10c84                                        |     sprintf (r0, r1, r2);
    0x00011234 ldr r3, [pc, 0x64]                                |     
    0x00011238 ldr r3, [r3]                                      |     r3 = "Status:__sContent_Type:_text_plain";
    0x0001123c sub r2, fp, 0x84                                  |     r2 -= s;
    0x00011240 ldr r1, [pc, 0x5c]                                |     r1 = stderr;
    0x00011244 mov r0, r3                                        |     r0 = r3;
    0x00011248 bl 0x10c60                                        |     fprintf (r0, r1, r2, "Status:__sContent_Type:_text_plain")
    0x0001124c sub r3, fp, 0x84                                  |     r3 -= s;
    0x00011250 mov r1, r3                                        |     r1 = r3;
    0x00011254 ldr r0, [fp, -0x88]                               |     r0 = var_88h;
    0x00011258 bl 0x13c00                                        |     r0 = scgi_write ();
    0x0001125c mov r3, r0                                        |     r3 = r0;
    0x00011260 cmp r3, 0                                         |     
                                                                 |     if (r3 != 0) {
    0x00011264 moveq r3, 1                                       |         r3 = 1;
                                                                 |     }
                                                                 |     if (r3 == 0) {
    0x00011268 movne r3, 0                                       |         r3 = 0;
                                                                 |     }
    0x0001126c and r3, r3, 0xff                                  |     r3 &= 0xff;
    0x00011270 cmp r3, 0                                         |     
                                                                 |     if (r3 != 0) {
    0x00011274 beq 0x11290                                       |         
    0x00011278 ldr r3, [pc, 0x20]                                |         
    0x0001127c ldr r3, [r3]                                      |         r3 = "Status:__sContent_Type:_text_plain";
    0x00011280 mov r2, 0x48                                      |         r2 = 0x48;
    0x00011284 mov r1, 1                                         |         r1 = 1;
    0x00011288 ldr r0, [pc, 0x18]                                |         r0 = "ack:__s";
    0x0001128c bl 0x10b7c                                        |         r0 = fwrite ("ack:__s", r1, r2, "Status:__sContent_Type:_text_plain");
                                                                 |     }
    0x00011290 mov r0, r0                                        |     
    0x00011294 sub sp, fp, 4                                     |     
    0x00011298 pop {fp, pc}                                      |     
                                                                 | }
    ; 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 @ 0x11f94 */
                                             | #include <stdint.h>
                                             |  
    ; (fcn) sym.scgi_answer_the_phone ()     | void scgi_answer_the_phone (int32_t arg1) {
                                             |     int32_t var_a8h;
                                             |     int32_t var_a4h;
                                             |     int32_t var_9ch;
                                             |     int32_t var_98h;
                                             |     int32_t var_94h;
                                             |     int32_t var_90h;
                                             |     int32_t fildes;
                                             |     int32_t var_sp_94h;
                                             |     int32_t var_sp_10h;
                                             |     int32_t var_8h_2;
                                             |     int32_t var_8h;
                                             |     r0 = arg1;
    0x00011f94 push {r4, fp, lr}             |     
    0x00011f98 add fp, sp, 8                 |     
    0x00011f9c sub sp, sp, 0xa4              |     
    0x00011fa0 str r0, [fp, -0xa8]           |     var_a8h = r0;
    0x00011fa4 mov r3, 0x80                  |     r3 = 0x80;
    0x00011fa8 str r3, [fp, -0x94]           |     var_94h = r3;
    0x00011fac sub r3, fp, 0xa4              |     r3 = fp - 0xa4;
    0x00011fb0 mov r1, 0                     |     r1 = 0;
    0x00011fb4 mov r0, r3                    |     r0 = r3;
    0x00011fb8 bl 0x10bc4                    |     gettimeofday ();
    0x00011fbc ldr r3, [fp, -0xa8]           |     r3 = var_a8h;
    0x00011fc0 ldr r3, [r3, 0x14]            |     r3 = *((r3 + 0x14));
    0x00011fc4 sub r2, fp, 0x94              |     r2 -= var_sp_94h;
    0x00011fc8 sub r1, fp, 0x90              |     r1 -= var_9ch;
    0x00011fcc mov r0, r3                    |     r0 = r3;
    0x00011fd0 bl 0x10ccc                    |     r0 = accept (r0, r1, r2);
    0x00011fd4 mov r3, r0                    |     r3 = r0;
    0x00011fd8 str r3, [fp, -0x10]           |     fildes = r3;
    0x00011fdc ldr r3, [fp, -0x10]           |     r3 = fildes;
    0x00011fe0 lsr r3, r3, 0x1f              |     r3 >>= 0x1f;
    0x00011fe4 and r3, r3, 0xff              |     r3 &= 0xff;
    0x00011fe8 cmp r3, 0                     |     
                                             |     if (r3 != 0) {
    0x00011fec beq 0x11ffc                   |         
    0x00011ff0 ldr r0, [pc, 0x4c8]           |         r0 = *(0x124bc);
    0x00011ff4 bl 0x128dc                    |         scgi_perror ();
    0x00011ff8 b 0x124b8                     |         
                                             |     } else {
    0x00011ffc ldr r3, [pc, 0x4c0]           |         
    0x00012000 ldr r3, [r3]                  |         r3 = "Warning:_scgilibs_phone_rang_but_something_prevented_scgilib_from_answering_it.";
    0x00012004 cmp r3, 0                     |         
                                             |         if (r3 > 0) {
    0x00012008 ble 0x12024                   |             
    0x0001200c ldr r3, [pc, 0x4b4]           |             
    0x00012010 ldr r3, [r3]                  |             r3 = *(0x124c4);
    0x00012014 ldr r2, [fp, -0x10]           |             r2 = fildes;
    0x00012018 ldr r1, [pc, 0x4ac]           |             r1 = stderr;
    0x0001201c mov r0, r3                    |             r0 = r3;
    0x00012020 bl 0x10c60                    |             fprintf (r0, r1, r2, r3)
                                             |         }
    0x00012024 mov r2, 0x800                 |         r2 = 0x800;
    0x00012028 mov r1, 4                     |         r1 = 4;
    0x0001202c ldr r0, [fp, -0x10]           |         r0 = fildes;
    0x00012030 bl 0x10c18                    |         r0 = fcntl ();
    0x00012034 mov r3, r0                    |         r3 = r0;
    0x00012038 cmn r3, 1                     |         
                                             |         if (r3 != 1) {
    0x0001203c moveq r3, 1                   |             r3 = 1;
                                             |         }
                                             |         if (r3 == 1) {
    0x00012040 movne r3, 0                   |             r3 = 0;
                                             |         }
    0x00012044 and r3, r3, 0xff              |         r3 &= 0xff;
    0x00012048 cmp r3, 0                     |         
                                             |         if (r3 != 0) {
    0x0001204c beq 0x12064                   |             
    0x00012050 ldr r0, [pc, 0x478]           |             r0 = "scgi_answer_the_phone:_accept_on_port__d";
    0x00012054 bl 0x128dc                    |             scgi_perror ();
    0x00012058 ldr r0, [fp, -0x10]           |             r0 = fildes;
    0x0001205c bl 0x10c3c                    |             close (r0);
    0x00012060 b 0x124b8                     |             
                                             |         } else {
    0x00012064 mov r1, 0x50                  |             r1 = 0x50;
    0x00012068 mov r0, 1                     |             r0 = 1;
    0x0001206c bl 0x10b64                    |             r0 = calloc (r0, r1);
    0x00012070 mov r3, r0                    |             r3 = r0;
    0x00012074 str r3, [fp, -0x98]           |             var_a4h = r3;
    0x00012078 ldr r3, [fp, -0x98]           |             r3 = var_a4h;
    0x0001207c cmp r3, 0                     |             
                                             |             if (r3 != 0) {
    0x00012080 moveq r3, 1                   |                 r3 = 1;
                                             |             }
                                             |             if (r3 == 0) {
    0x00012084 movne r3, 0                   |                 r3 = 0;
                                             |             }
    0x00012088 and r3, r3, 0xff              |             r3 &= 0xff;
    0x0001208c cmp r3, 0                     |             
                                             |             if (r3 != 0) {
    0x00012090 beq 0x120a0                   |                 
    0x00012094 ldr r0, [pc, 0x438]           |                 r0 = "Warning:_scgilib_was_unable_to_set_a_socket_to_non_blocking_mode.__scgilib_hung_up_the_phone_on_this_socket.";
    0x00012098 bl 0x128dc                    |                 scgi_perror ();
    0x0001209c bl 0x10c78                    |                 abort ();
                                             |             }
    0x000120a0 ldr r3, [fp, -0x98]           |             r3 = var_a4h;
    0x000120a4 mov r2, 0                     |             r2 = 0;
    0x000120a8 str r2, [r3]                  |             *(r3) = r2;
    0x000120ac ldr r3, [fp, -0x98]           |             r3 = var_a4h;
    0x000120b0 mov r2, 0                     |             r2 = 0;
    0x000120b4 str r2, [r3, 4]               |             *((r3 + 4)) = r2;
    0x000120b8 ldr r3, [fp, -0x98]           |             r3 = var_a4h;
    0x000120bc ldr r2, [fp, -0xa8]           |             r2 = var_a8h;
    0x000120c0 str r2, [r3, 8]               |             *((r3 + 8)) = r2;
    0x000120c4 ldr r3, [fp, -0x98]           |             r3 = var_a4h;
    0x000120c8 ldr r2, [fp, -0x10]           |             r2 = fildes;
    0x000120cc str r2, [r3, 0x10]            |             *((r3 + 0x10)) = r2;
    0x000120d0 ldr r3, [fp, -0x98]           |             r3 = var_a4h;
    0x000120d4 ldr r2, [fp, -0xa4]           |             r2 = var_a4h;
    0x000120d8 str r2, [r3, 0x2c]            |             *((r3 + 0x2c)) = r2;
    0x000120dc ldr r3, [fp, -0x98]           |             r3 = var_a4h;
    0x000120e0 mov r2, 0                     |             r2 = 0;
    0x000120e4 str r2, [r3, 0x30]            |             *((r3 + 0x30)) = r2;
    0x000120e8 ldr r3, [fp, -0x98]           |             r3 = var_a4h;
    0x000120ec mov r2, 0                     |             r2 = 0;
    0x000120f0 str r2, [r3, 0x34]            |             *((r3 + 0x34)) = r2;
    0x000120f4 ldr r3, [fp, -0x98]           |             r3 = var_a4h;
    0x000120f8 mov r2, 0                     |             r2 = 0;
    0x000120fc str r2, [r3, 0x3c]            |             *((r3 + 0x3c)) = r2;
    0x00012100 ldr r3, [fp, -0x98]           |             r3 = var_a4h;
    0x00012104 mov r2, 0                     |             r2 = 0;
    0x00012108 str r2, [r3, 0x40]            |             *((r3 + 0x40)) = r2;
    0x0001210c ldr r3, [fp, -0x98]           |             r3 = var_a4h;
    0x00012110 mov r2, 0                     |             r2 = 0;
    0x00012114 str r2, [r3, 0x4c]            |             *((r3 + 0x4c)) = r2;
    0x00012118 ldr r3, [pc, 0x3b8]           |             
    0x0001211c ldr r3, [r3]                  |             r3 = "scgilib:_Out_of_RAM__Emergency_shutdown.";
    0x00012120 cmp r3, 0                     |             
                                             |             if (r3 != 0) {
    0x00012124 beq 0x12148                   |                 
    0x00012128 ldr r3, [pc, 0x3a8]           |                 
    0x0001212c ldr r3, [r3]                  |                 r3 = "scgilib:_Out_of_RAM__Emergency_shutdown.";
    0x00012130 ldr r4, [fp, -0x98]           |                 r4 = var_a4h;
    0x00012134 mov r1, 1                     |                 r1 = 1;
    0x00012138 ldr r0, [fp, -0x10]           |                 r0 = fildes;
    0x0001213c blx r3                        |                 r0 = uint32_t (*r3)(uint32_t, uint32_t, char*) (r0, r1, "scgilib:_Out_of_RAM__Emergency_shutdown.");
    0x00012140 mov r3, r0                    |                 r3 = r0;
    0x00012144 str r3, [r4, 0x38]            |                 *((r4 + 0x38)) = r3;
                                             |             }
    0x00012148 ldr r4, [fp, -0x98]           |             r4 = var_a4h;
    0x0001214c mov r1, 1                     |             r1 = 1;
    0x00012150 ldr r0, [pc, 0x384]           |             r0 = scgi_fd_newfd_cb;
    0x00012154 bl 0x10b64                    |             r0 = calloc (r0, r1);
    0x00012158 mov r3, r0                    |             r3 = r0;
    0x0001215c str r3, [r4, 0x14]            |             *((r4 + 0x14)) = r3;
    0x00012160 ldr r3, [r4, 0x14]            |             r3 = *((r4 + 0x14));
    0x00012164 cmp r3, 0                     |             
                                             |             if (r3 != 0) {
    0x00012168 moveq r3, 1                   |                 r3 = 1;
                                             |             }
                                             |             if (r3 == 0) {
    0x0001216c movne r3, 0                   |                 r3 = 0;
                                             |             }
    0x00012170 and r3, r3, 0xff              |             r3 &= 0xff;
    0x00012174 cmp r3, 0                     |             
                                             |             if (r3 != 0) {
    0x00012178 beq 0x12188                   |                 
    0x0001217c ldr r0, [pc, 0x350]           |                 r0 = "Warning:_scgilib_was_unable_to_set_a_socket_to_non_blocking_mode.__scgilib_hung_up_the_phone_on_this_socket.";
    0x00012180 bl 0x128dc                    |                 scgi_perror ();
    0x00012184 bl 0x10c78                    |                 abort ();
                                             |             }
    0x00012188 ldr r3, [fp, -0x98]           |             r3 = var_a4h;
    0x0001218c mov r2, 0x20000               |             r2 = 0x20000;
    0x00012190 str r2, [r3, 0x18]            |             *((r3 + 0x18)) = r2;
    0x00012194 ldr r3, [fp, -0x98]           |             r3 = var_a4h;
    0x00012198 mov r2, 0                     |             r2 = 0;
    0x0001219c str r2, [r3, 0x1c]            |             *((r3 + 0x1c)) = r2;
    0x000121a0 ldr r3, [fp, -0x98]           |             r3 = var_a4h;
    0x000121a4 ldr r3, [r3, 0x14]            |             r3 = *((r3 + 0x14));
    0x000121a8 mov r2, 0                     |             r2 = 0;
    0x000121ac strb r2, [r3]                 |             *(r3) = r2;
    0x000121b0 ldr r4, [fp, -0x98]           |             r4 = var_a4h;
    0x000121b4 mov r1, 1                     |             r1 = 1;
    0x000121b8 ldr r0, [pc, 0x320]           |             r0 = *(0x124dc);
    0x000121bc bl 0x10b64                    |             r0 = calloc (r0, r1);
    0x000121c0 mov r3, r0                    |             r3 = r0;
    0x000121c4 str r3, [r4, 0x20]            |             *((r4 + 0x20)) = r3;
    0x000121c8 ldr r3, [r4, 0x20]            |             r3 = *((r4 + 0x20));
    0x000121cc cmp r3, 0                     |             
                                             |             if (r3 != 0) {
    0x000121d0 moveq r3, 1                   |                 r3 = 1;
                                             |             }
                                             |             if (r3 == 0) {
    0x000121d4 movne r3, 0                   |                 r3 = 0;
                                             |             }
    0x000121d8 and r3, r3, 0xff              |             r3 &= 0xff;
    0x000121dc cmp r3, 0                     |             
                                             |             if (r3 != 0) {
    0x000121e0 beq 0x121f0                   |                 
    0x000121e4 ldr r0, [pc, 0x2e8]           |                 r0 = "Warning:_scgilib_was_unable_to_set_a_socket_to_non_blocking_mode.__scgilib_hung_up_the_phone_on_this_socket.";
    0x000121e8 bl 0x128dc                    |                 scgi_perror ();
    0x000121ec bl 0x10c78                    |                 abort ();
                                             |             }
    0x000121f0 ldr r3, [fp, -0x98]           |             r3 = var_a4h;
    0x000121f4 mov r2, 0x4000                |             r2 = 0x4000;
    0x000121f8 str r2, [r3, 0x24]            |             *((r3 + 0x24)) = r2;
    0x000121fc ldr r3, [fp, -0x98]           |             r3 = var_a4h;
    0x00012200 mov r2, 0                     |             r2 = 0;
    0x00012204 str r2, [r3, 0x28]            |             *((r3 + 0x28)) = r2;
    0x00012208 ldr r3, [fp, -0x98]           |             r3 = var_a4h;
    0x0001220c ldr r3, [r3, 0x20]            |             r3 = *((r3 + 0x20));
    0x00012210 mov r2, 0                     |             r2 = 0;
    0x00012214 strb r2, [r3]                 |             *(r3) = r2;
    0x00012218 mov r1, 0x6c                  |             r1 = 0x6c;
    0x0001221c mov r0, 1                     |             r0 = 1;
    0x00012220 bl 0x10b64                    |             r0 = calloc (r0, r1);
    0x00012224 mov r3, r0                    |             r3 = r0;
    0x00012228 str r3, [fp, -0x9c]           |             var_a8h = r3;
    0x0001222c ldr r3, [fp, -0x9c]           |             r3 = var_a8h;
    0x00012230 cmp r3, 0                     |             
                                             |             if (r3 != 0) {
    0x00012234 moveq r3, 1                   |                 r3 = 1;
                                             |             }
                                             |             if (r3 == 0) {
    0x00012238 movne r3, 0                   |                 r3 = 0;
                                             |             }
    0x0001223c and r3, r3, 0xff              |             r3 &= 0xff;
    0x00012240 cmp r3, 0                     |             
                                             |             if (r3 != 0) {
    0x00012244 beq 0x12254                   |                 
    0x00012248 ldr r0, [pc, 0x284]           |                 r0 = "Warning:_scgilib_was_unable_to_set_a_socket_to_non_blocking_mode.__scgilib_hung_up_the_phone_on_this_socket.";
    0x0001224c bl 0x128dc                    |                 scgi_perror ();
    0x00012250 bl 0x10c78                    |                 abort ();
                                             |             }
    0x00012254 ldr r3, [fp, -0x9c]           |             r3 = var_a8h;
    0x00012258 mov r2, 0                     |             r2 = 0;
    0x0001225c str r2, [r3]                  |             *(r3) = r2;
    0x00012260 ldr r3, [fp, -0x9c]           |             r3 = var_a8h;
    0x00012264 mov r2, 0                     |             r2 = 0;
    0x00012268 str r2, [r3, 4]               |             *((r3 + 4)) = r2;
    0x0001226c ldr r3, [fp, -0x9c]           |             r3 = var_a8h;
    0x00012270 mov r2, 0                     |             r2 = 0;
    0x00012274 str r2, [r3, 8]               |             *((r3 + 8)) = r2;
    0x00012278 ldr r3, [fp, -0x9c]           |             r3 = var_a8h;
    0x0001227c mov r2, 0                     |             r2 = 0;
    0x00012280 str r2, [r3, 0xc]             |             *((r3 + 0xc)) = r2;
    0x00012284 ldr r3, [fp, -0x9c]           |             r3 = var_a8h;
    0x00012288 ldr r2, [fp, -0x98]           |             r2 = var_a4h;
    0x0001228c str r2, [r3, 0x10]            |             *((r3 + 0x10)) = r2;
    0x00012290 ldr r3, [fp, -0x9c]           |             r3 = var_a8h;
    0x00012294 mov r2, 0                     |             r2 = 0;
    0x00012298 str r2, [r3, 0x14]            |             *((r3 + 0x14)) = r2;
    0x0001229c ldr r3, [fp, -0x9c]           |             r3 = var_a8h;
    0x000122a0 mov r2, 0                     |             r2 = 0;
    0x000122a4 str r2, [r3, 0x18]            |             *((r3 + 0x18)) = r2;
    0x000122a8 ldr r3, [fp, -0x9c]           |             r3 = var_a8h;
    0x000122ac mov r2, 0                     |             r2 = 0;
    0x000122b0 str r2, [r3, 0x1c]            |             *((r3 + 0x1c)) = r2;
    0x000122b4 ldr r3, [fp, -0x9c]           |             r3 = var_a8h;
    0x000122b8 mvn r2, 0                     |             r2 = ~0;
    0x000122bc str r2, [r3, 0x20]            |             *((r3 + 0x20)) = r2;
    0x000122c0 ldr r3, [fp, -0x9c]           |             r3 = var_a8h;
    0x000122c4 mov r2, 0                     |             r2 = 0;
    0x000122c8 strb r2, [r3, 0x24]           |             *((r3 + 0x24)) = r2;
    0x000122cc ldr r3, [fp, -0x9c]           |             r3 = var_a8h;
    0x000122d0 mov r2, 0                     |             r2 = 0;
    0x000122d4 str r2, [r3, 0x28]            |             *((r3 + 0x28)) = r2;
    0x000122d8 ldr r3, [fp, -0x9c]           |             r3 = var_a8h;
    0x000122dc mov r2, 0                     |             r2 = 0;
    0x000122e0 str r2, [r3, 0x2c]            |             *((r3 + 0x2c)) = r2;
    0x000122e4 ldr r3, [fp, -0x9c]           |             r3 = var_a8h;
    0x000122e8 mov r2, 0                     |             r2 = 0;
    0x000122ec str r2, [r3, 0x30]            |             *((r3 + 0x30)) = r2;
    0x000122f0 ldr r3, [fp, -0x9c]           |             r3 = var_a8h;
    0x000122f4 mov r2, 0                     |             r2 = 0;
    0x000122f8 str r2, [r3, 0x34]            |             *((r3 + 0x34)) = r2;
    0x000122fc ldr r3, [fp, -0x9c]           |             r3 = var_a8h;
    0x00012300 mov r2, 0                     |             r2 = 0;
    0x00012304 str r2, [r3, 0x38]            |             *((r3 + 0x38)) = r2;
    0x00012308 ldr r3, [fp, -0x9c]           |             r3 = var_a8h;
    0x0001230c mov r2, 0                     |             r2 = 0;
    0x00012310 str r2, [r3, 0x3c]            |             *((r3 + 0x3c)) = r2;
    0x00012314 ldr r3, [fp, -0x9c]           |             r3 = var_a8h;
    0x00012318 mov r2, 0                     |             r2 = 0;
    0x0001231c str r2, [r3, 0x40]            |             *((r3 + 0x40)) = r2;
    0x00012320 ldr r3, [fp, -0x9c]           |             r3 = var_a8h;
    0x00012324 mov r2, 0                     |             r2 = 0;
    0x00012328 str r2, [r3, 0x44]            |             *((r3 + 0x44)) = r2;
    0x0001232c ldr r3, [fp, -0x9c]           |             r3 = var_a8h;
    0x00012330 mov r2, 0                     |             r2 = 0;
    0x00012334 str r2, [r3, 0x48]            |             *((r3 + 0x48)) = r2;
    0x00012338 ldr r3, [fp, -0x9c]           |             r3 = var_a8h;
    0x0001233c mov r2, 0                     |             r2 = 0;
    0x00012340 str r2, [r3, 0x4c]            |             *((r3 + 0x4c)) = r2;
    0x00012344 ldr r3, [fp, -0x9c]           |             r3 = var_a8h;
    0x00012348 mov r2, 0                     |             r2 = 0;
    0x0001234c str r2, [r3, 0x50]            |             *((r3 + 0x50)) = r2;
    0x00012350 ldr r3, [fp, -0x9c]           |             r3 = var_a8h;
    0x00012354 mov r2, 0                     |             r2 = 0;
    0x00012358 str r2, [r3, 0x54]            |             *((r3 + 0x54)) = r2;
    0x0001235c ldr r3, [fp, -0x9c]           |             r3 = var_a8h;
    0x00012360 mov r2, 0                     |             r2 = 0;
    0x00012364 str r2, [r3, 0x58]            |             *((r3 + 0x58)) = r2;
    0x00012368 ldr r3, [fp, -0x9c]           |             r3 = var_a8h;
    0x0001236c mov r2, 0                     |             r2 = 0;
    0x00012370 str r2, [r3, 0x5c]            |             *((r3 + 0x5c)) = r2;
    0x00012374 ldr r3, [fp, -0x9c]           |             r3 = var_a8h;
    0x00012378 mov r2, 0                     |             r2 = 0;
    0x0001237c str r2, [r3, 0x60]            |             *((r3 + 0x60)) = r2;
    0x00012380 ldr r3, [fp, -0x9c]           |             r3 = var_a8h;
    0x00012384 mov r2, 0                     |             r2 = 0;
    0x00012388 str r2, [r3, 0x64]            |             *((r3 + 0x64)) = r2;
    0x0001238c ldr r3, [fp, -0x9c]           |             r3 = var_a8h;
    0x00012390 mov r2, 0                     |             r2 = 0;
    0x00012394 str r2, [r3, 0x68]            |             *((r3 + 0x68)) = r2;
    0x00012398 ldr r3, [fp, -0x98]           |             r3 = var_a4h;
    0x0001239c ldr r2, [fp, -0x9c]           |             r2 = var_a8h;
    0x000123a0 str r2, [r3, 0xc]             |             *((r3 + 0xc)) = r2;
    0x000123a4 ldr r3, [pc, 0x138]           |             
    0x000123a8 ldr r3, [r3]                  |             r3 = *(0x124e0);
    0x000123ac cmp r3, 0                     |             
                                             |             if (r3 == 0) {
    0x000123b0 bne 0x123d0                   |                 
    0x000123b4 ldr r3, [fp, -0x9c]           |                 r3 = var_a8h;
    0x000123b8 ldr r2, [pc, 0x124]           |                 r2 = *(0x124e0);
    0x000123bc str r3, [r2]                  |                 *(r2) = r3;
    0x000123c0 ldr r3, [fp, -0x9c]           |                 r3 = var_a8h;
    0x000123c4 ldr r2, [pc, 0x11c]           |                 r2 = *(0x124e4);
    0x000123c8 str r3, [r2]                  |                 *(r2) = r3;
    0x000123cc b 0x123e0                     |                 
                                             |             } else {
    0x000123d0 ldr r3, [pc, 0x110]           |                 
    0x000123d4 ldr r3, [r3]                  |                 r3 = *(0x124e4);
    0x000123d8 ldr r2, [fp, -0x9c]           |                 r2 = var_a8h;
    0x000123dc str r2, [r3]                  |                 *(r3) = r2;
                                             |             }
    0x000123e0 ldr r3, [fp, -0x9c]           |             r3 = var_a8h;
    0x000123e4 mov r2, 0                     |             r2 = 0;
    0x000123e8 str r2, [r3]                  |             *(r3) = r2;
    0x000123ec ldr r3, [pc, 0xf0]            |             r3 = *(0x124e0);
    0x000123f0 ldr r2, [r3]                  |             r2 = *(0x124e0);
    0x000123f4 ldr r3, [fp, -0x9c]           |             r3 = var_a8h;
    0x000123f8 cmp r2, r3                    |             
                                             |             if (r2 == r3) {
    0x000123fc bne 0x12410                   |                 
    0x00012400 ldr r3, [fp, -0x9c]           |                 r3 = var_a8h;
    0x00012404 mov r2, 0                     |                 r2 = 0;
    0x00012408 str r2, [r3, 4]               |                 *((r3 + 4)) = r2;
    0x0001240c b 0x12420                     |                 
                                             |             } else {
    0x00012410 ldr r3, [fp, -0x9c]           |                 r3 = var_a8h;
    0x00012414 ldr r2, [pc, 0xcc]            |                 
    0x00012418 ldr r2, [r2]                  |                 r2 = *(0x124e4);
    0x0001241c str r2, [r3, 4]               |                 *((r3 + 4)) = r2;
                                             |             }
    0x00012420 ldr r3, [fp, -0x9c]           |             r3 = var_a8h;
    0x00012424 ldr r2, [pc, 0xbc]            |             r2 = *(0x124e4);
    0x00012428 str r3, [r2]                  |             *(r2) = r3;
    0x0001242c ldr r3, [fp, -0xa8]           |             r3 = var_a8h;
    0x00012430 ldr r3, [r3, 8]               |             r3 = *((r3 + 8));
    0x00012434 cmp r3, 0                     |             
                                             |             if (r3 == 0) {
    0x00012438 bne 0x12458                   |                 
    0x0001243c ldr r2, [fp, -0x98]           |                 r2 = var_a4h;
    0x00012440 ldr r3, [fp, -0xa8]           |                 r3 = var_a8h;
    0x00012444 str r2, [r3, 8]               |                 *((r3 + 8)) = r2;
    0x00012448 ldr r2, [fp, -0x98]           |                 r2 = var_a4h;
    0x0001244c ldr r3, [fp, -0xa8]           |                 r3 = var_a8h;
    0x00012450 str r2, [r3, 0xc]             |                 *((r3 + 0xc)) = r2;
    0x00012454 b 0x12468                     |                 
                                             |             } else {
    0x00012458 ldr r3, [fp, -0xa8]           |                 r3 = var_a8h;
    0x0001245c ldr r3, [r3, 0xc]             |                 r3 = *((r3 + 0xc));
    0x00012460 ldr r2, [fp, -0x98]           |                 r2 = var_a4h;
    0x00012464 str r2, [r3]                  |                 *(r3) = r2;
                                             |             }
    0x00012468 ldr r3, [fp, -0x98]           |             r3 = var_a4h;
    0x0001246c mov r2, 0                     |             r2 = 0;
    0x00012470 str r2, [r3]                  |             *(r3) = r2;
    0x00012474 ldr r3, [fp, -0xa8]           |             r3 = var_a8h;
    0x00012478 ldr r2, [r3, 8]               |             r2 = *((r3 + 8));
    0x0001247c ldr r3, [fp, -0x98]           |             r3 = var_a4h;
    0x00012480 cmp r2, r3                    |             
                                             |             if (r2 == r3) {
    0x00012484 bne 0x12498                   |                 
    0x00012488 ldr r3, [fp, -0x98]           |                 r3 = var_a4h;
    0x0001248c mov r2, 0                     |                 r2 = 0;
    0x00012490 str r2, [r3, 4]               |                 *((r3 + 4)) = r2;
    0x00012494 b 0x124a8                     |                 
                                             |             } else {
    0x00012498 ldr r3, [fp, -0x98]           |                 r3 = var_a4h;
    0x0001249c ldr r2, [fp, -0xa8]           |                 r2 = var_a8h;
    0x000124a0 ldr r2, [r2, 0xc]             |                 r2 = *((r2 + 0xc));
    0x000124a4 str r2, [r3, 4]               |                 *((r3 + 4)) = r2;
                                             |             }
    0x000124a8 ldr r2, [fp, -0x98]           |             r2 = var_a4h;
    0x000124ac ldr r3, [fp, -0xa8]           |             r3 = var_a8h;
    0x000124b0 str r2, [r3, 0xc]             |             *((r3 + 0xc)) = r2;
    0x000124b4 mov r0, r0                    |             
                                             |         }
                                             |     }
    0x000124b8 sub sp, fp, 8                 |     
    0x000124bc pop {r4, fp, pc}              |     
                                             | }
    ; 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 @ 0x137c0 */
                                         | #include <stdint.h>
                                         |  
    ; (fcn) sym.scgi_initialize ()       | void scgi_initialize (int32_t arg1) {
                                         |     int32_t var_c8h;
                                         |     int32_t var_c0h;
                                         |     int32_t var_40h;
                                         |     int32_t var_3ch;
                                         |     int32_t var_38h;
                                         |     int32_t var_34h;
                                         |     int32_t var_1ch;
                                         |     int32_t var_18h;
                                         |     int32_t fildes;
                                         |     int32_t var_10h;
                                         |     int32_t var_0h;
                                         |     char * var_sp_c0h;
                                         |     int32_t var_sp_40h;
                                         |     void * s;
                                         |     int32_t var_sp_38h;
                                         |     int32_t var_sp_1ch;
                                         |     int32_t var_sp_18h;
                                         |     int32_t var_sp_14h;
                                         |     int32_t var_8h;
                                         |     r0 = arg1;
    0x000137c0 push {r4, fp, lr}         |     
    0x000137c4 add fp, sp, 8             |     
    0x000137c8 sub sp, sp, 0xcc          |     
    0x000137cc str r0, [fp, -0xc8]       |     var_c8h = r0;
    0x000137d0 mov r3, 1                 |     r3 = 1;
    0x000137d4 str r3, [fp, -0x1c]       |     var_1ch = r3;
    0x000137d8 sub r3, fp, 0x3c          |     r3 -= s;
    0x000137dc mov r2, 0x20              |     r2 = 0x20;
    0x000137e0 mov r1, 0                 |     r1 = 0;
    0x000137e4 mov r0, r3                |     r0 = r3;
    0x000137e8 bl 0x10c48                |     memset (r0, r1, r2);
    0x000137ec mov r3, 2                 |     r3 = 2;
    0x000137f0 str r3, [fp, -0x38]       |     var_38h = r3;
    0x000137f4 mov r3, 1                 |     r3 = 1;
    0x000137f8 str r3, [fp, -0x34]       |     var_34h = r3;
    0x000137fc mov r3, 1                 |     r3 = 1;
    0x00013800 str r3, [fp, -0x3c]       |     var_3ch = r3;
    0x00013804 sub r3, fp, 0xc0          |     r3 -= var_sp_c0h;
    0x00013808 ldr r2, [fp, -0xc8]       |     r2 = var_c8h;
    0x0001380c ldr r1, [pc, 0x2ac]       |     r1 = *(0x13abc);
    0x00013810 mov r0, r3                |     r0 = r3;
    0x00013814 bl 0x10c84                |     sprintf (r0, r1, r2);
    0x00013818 sub r3, fp, 0x40          |     r3 -= var_sp_40h;
    0x0001381c sub r2, fp, 0x3c          |     r2 -= s;
    0x00013820 sub r1, fp, 0xc0          |     r1 -= var_sp_c0h;
    0x00013824 mov r0, 0                 |     r0 = 0;
    0x00013828 bl 0x10cfc                |     r0 = getaddrinfo ();
    0x0001382c mov r3, r0                |     r3 = r0;
    0x00013830 str r3, [fp, -0x10]       |     var_1ch = r3;
    0x00013834 ldr r3, [fp, -0x10]       |     r3 = var_1ch;
    0x00013838 cmp r3, 0                 |     
                                         |     if (r3 == 0) {
    0x0001383c movne r3, 1               |         r3 = 1;
                                         |     }
                                         |     if (r3 != 0) {
    0x00013840 moveq r3, 0               |         r3 = 0;
                                         |     }
    0x00013844 and r3, r3, 0xff          |     r3 &= 0xff;
    0x00013848 cmp r3, 0                 |     
                                         |     if (r3 != 0) {
    0x0001384c beq 0x13870               |         
    0x00013850 ldr r3, [pc, 0x26c]       |         
    0x00013854 ldr r3, [r3]              |         r3 = "_d";
    0x00013858 mov r2, 0x13              |         r2 = 0x13;
    0x0001385c mov r1, 1                 |         r1 = 1;
    0x00013860 ldr r0, [pc, 0x260]       |         r0 = stderr;
    0x00013864 bl 0x10b7c                |         fwrite (r0, r1, r2, "_d");
    0x00013868 mov r3, 0                 |         r3 = 0;
    0x0001386c b 0x13ab4                 |         
                                         |     } else {
    0x00013870 ldr r3, [fp, -0x40]       |         r3 = var_40h;
    0x00013874 ldr r0, [r3, 4]           |         r0 = *((r3 + 4));
    0x00013878 ldr r3, [fp, -0x40]       |         r3 = var_40h;
    0x0001387c ldr r1, [r3, 8]           |         r1 = *((r3 + 8));
    0x00013880 ldr r3, [fp, -0x40]       |         r3 = var_40h;
    0x00013884 ldr r3, [r3, 0xc]         |         r3 = *((r3 + 0xc));
    0x00013888 mov r2, r3                |         r2 = r3;
    0x0001388c bl 0x10c90                |         socket (r0, r1, r2);
    0x00013890 str r0, [fp, -0x14]       |         fildes = r0;
    0x00013894 ldr r3, [fp, -0x14]       |         r3 = fildes;
    0x00013898 cmn r3, 1                 |         
                                         |         if (r3 == 1) {
    0x0001389c bne 0x138cc               |             
    0x000138a0 ldr r3, [pc, 0x21c]       |             r3 = "_d";
    0x000138a4 ldr r4, [r3]              |             r4 = "_d";
    0x000138a8 bl 0x10b70                |             r0 = errno_location ();
    0x000138ac mov r3, r0                |             r3 = r0;
    0x000138b0 ldr r3, [r3]              |             r3 = *(r3);
    0x000138b4 mov r2, r3                |             r2 = r3;
    0x000138b8 ldr r1, [pc, 0x20c]       |             r1 = "scgi_initialize:_1";
    0x000138bc mov r0, r4                |             r0 = r4;
    0x000138c0 bl 0x10c60                |             fprintf (r0, "scgi_initialize:_1", r2, r3)
    0x000138c4 mov r3, 0                 |             r3 = 0;
    0x000138c8 b 0x13ab4                 |             
                                         |         } else {
    0x000138cc sub r2, fp, 0x1c          |             r2 -= var_sp_1ch;
    0x000138d0 mov r3, 4                 |             r3 = 4;
    0x000138d4 str r3, [sp]              |             *(sp) = r3;
    0x000138d8 mov r3, r2                |             r3 = r2;
    0x000138dc mov r2, 2                 |             r2 = 2;
    0x000138e0 mov r1, 1                 |             r1 = 1;
    0x000138e4 ldr r0, [fp, -0x14]       |             r0 = fildes;
    0x000138e8 bl 0x10c30                |             setsockopt ();
    0x000138ec ldr r3, [fp, -0x40]       |             r3 = var_40h;
    0x000138f0 ldr r1, [r3, 0x14]        |             r1 = *((r3 + 0x14));
    0x000138f4 ldr r3, [fp, -0x40]       |             r3 = var_40h;
    0x000138f8 ldr r3, [r3, 0x10]        |             r3 = *((r3 + 0x10));
    0x000138fc mov r2, r3                |             r2 = r3;
    0x00013900 ldr r0, [fp, -0x14]       |             r0 = fildes;
    0x00013904 bl 0x10b40                |             r0 = bind (r0, r1, r2);
    0x00013908 mov r3, r0                |             r3 = r0;
    0x0001390c cmn r3, 1                 |             
                                         |             if (r3 != 1) {
    0x00013910 beq 0x1392c               |                 
    0x00013914 mov r1, 0x20              |                 r1 = 0x20;
    0x00013918 ldr r0, [fp, -0x14]       |                 r0 = fildes;
    0x0001391c bl 0x10cf0                |                 r0 = listen (r0, r1);
    0x00013920 mov r3, r0                |                 r3 = r0;
    0x00013924 cmn r3, 1                 |                 
                                         |                 if (r3 != 1) {
    0x00013928 bne 0x13934               |                     goto label_0;
                                         |                 }
                                         |             }
    0x0001392c mov r3, 1                 |             r3 = 1;
    0x00013930 b 0x13938                 |             goto label_1;
                                         | label_0:
    0x00013934 mov r3, 0                 |             r3 = 0;
                                         | label_1:
    0x00013938 cmp r3, 0                 |             
                                         |             if (r3 != 0) {
    0x0001393c beq 0x13968               |                 
    0x00013940 ldr r3, [pc, 0x17c]       |                 
    0x00013944 ldr r3, [r3]              |                 r3 = "_d";
    0x00013948 mov r2, 0x13              |                 r2 = 0x13;
    0x0001394c mov r1, 1                 |                 r1 = 1;
    0x00013950 ldr r0, [pc, 0x178]       |                 r0 = "socket_failed:__d";
    0x00013954 bl 0x10b7c                |                 fwrite ("socket_failed:__d", r1, r2, "_d");
    0x00013958 ldr r0, [fp, -0x14]       |                 r0 = fildes;
    0x0001395c bl 0x10c3c                |                 close (r0);
    0x00013960 mov r3, 0                 |                 r3 = 0;
    0x00013964 b 0x13ab4                 |                 
                                         |             } else {
    0x00013968 ldr r3, [fp, -0x40]       |                 r3 = var_40h;
    0x0001396c mov r0, r3                |                 r0 = r3;
    0x00013970 bl 0x10bd0                |                 freeaddrinfo ();
    0x00013974 mov r1, 0x1c              |                 r1 = 0x1c;
    0x00013978 mov r0, 1                 |                 r0 = 1;
    0x0001397c bl 0x10b64                |                 r0 = calloc (r0, r1);
    0x00013980 mov r3, r0                |                 r3 = r0;
    0x00013984 str r3, [fp, -0x18]       |                 var_18h = r3;
    0x00013988 ldr r3, [fp, -0x18]       |                 r3 = var_18h;
    0x0001398c cmp r3, 0                 |                 
                                         |                 if (r3 != 0) {
    0x00013990 moveq r3, 1               |                     r3 = 1;
                                         |                 }
                                         |                 if (r3 == 0) {
    0x00013994 movne r3, 0               |                     r3 = 0;
                                         |                 }
    0x00013998 and r3, r3, 0xff          |                 r3 &= 0xff;
    0x0001399c cmp r3, 0                 |                 
                                         |                 if (r3 != 0) {
    0x000139a0 beq 0x139b0               |                     
    0x000139a4 ldr r0, [pc, 0x128]       |                     r0 = "scgi_initialize:_3";
    0x000139a8 bl 0x128dc                |                     scgi_perror ();
    0x000139ac bl 0x10c78                |                     abort ();
                                         |                 }
    0x000139b0 ldr r3, [fp, -0x18]       |                 r3 = var_18h;
    0x000139b4 mov r2, 0                 |                 r2 = 0;
    0x000139b8 str r2, [r3]              |                 *(r3) = r2;
    0x000139bc ldr r3, [fp, -0x18]       |                 r3 = var_18h;
    0x000139c0 mov r2, 0                 |                 r2 = 0;
    0x000139c4 str r2, [r3, 4]           |                 *((r3 + 4)) = r2;
    0x000139c8 ldr r3, [fp, -0x18]       |                 r3 = var_18h;
    0x000139cc mov r2, 0                 |                 r2 = 0;
    0x000139d0 str r2, [r3, 8]           |                 *((r3 + 8)) = r2;
    0x000139d4 ldr r3, [fp, -0x18]       |                 r3 = var_18h;
    0x000139d8 mov r2, 0                 |                 r2 = 0;
    0x000139dc str r2, [r3, 0xc]         |                 *((r3 + 0xc)) = r2;
    0x000139e0 ldr r3, [fp, -0x18]       |                 r3 = var_18h;
    0x000139e4 ldr r2, [fp, -0xc8]       |                 r2 = var_c8h;
    0x000139e8 str r2, [r3, 0x10]        |                 *((r3 + 0x10)) = r2;
    0x000139ec ldr r3, [fp, -0x18]       |                 r3 = var_18h;
    0x000139f0 ldr r2, [fp, -0x14]       |                 r2 = fildes;
    0x000139f4 str r2, [r3, 0x14]        |                 *((r3 + 0x14)) = r2;
    0x000139f8 ldr r3, [pc, 0xd8]        |                 
    0x000139fc ldr r3, [r3]              |                 r3 = "scgilib:_Out_of_RAM__Emergency_shutdown.";
    0x00013a00 cmp r3, 0                 |                 
                                         |                 if (r3 != 0) {
    0x00013a04 beq 0x13a28               |                     
    0x00013a08 ldr r3, [pc, 0xc8]        |                     
    0x00013a0c ldr r3, [r3]              |                     r3 = "scgilib:_Out_of_RAM__Emergency_shutdown.";
    0x00013a10 ldr r4, [fp, -0x18]       |                     r4 = var_18h;
    0x00013a14 mov r1, 0                 |                     r1 = 0;
    0x00013a18 ldr r0, [fp, -0x14]       |                     r0 = fildes;
    0x00013a1c blx r3                    |                     r0 = uint32_t (*r3)(uint32_t, uint32_t, char*) (r0, r1, "scgilib:_Out_of_RAM__Emergency_shutdown.");
    0x00013a20 mov r3, r0                |                     r3 = r0;
    0x00013a24 str r3, [r4, 0x18]        |                     *((r4 + 0x18)) = r3;
                                         |                 }
    0x00013a28 ldr r3, [pc, 0xac]        |                 
    0x00013a2c ldr r3, [r3]              |                 r3 = scgi_fd_newfd_cb;
    0x00013a30 cmp r3, 0                 |                 
                                         |                 if (r3 == 0) {
    0x00013a34 bne 0x13a54               |                     
    0x00013a38 ldr r3, [fp, -0x18]       |                     r3 = var_18h;
    0x00013a3c ldr r2, [pc, 0x98]        |                     r2 = scgi_fd_newfd_cb;
    0x00013a40 str r3, [r2]              |                     *(r2) = r3;
    0x00013a44 ldr r3, [fp, -0x18]       |                     r3 = var_18h;
    0x00013a48 ldr r2, [pc, 0x90]        |                     r2 = *(0x13adc);
    0x00013a4c str r3, [r2]              |                     *(r2) = r3;
    0x00013a50 b 0x13a64                 |                     
                                         |                 } else {
    0x00013a54 ldr r3, [pc, 0x84]        |                     
    0x00013a58 ldr r3, [r3]              |                     r3 = *(0x13adc);
    0x00013a5c ldr r2, [fp, -0x18]       |                     r2 = var_18h;
    0x00013a60 str r2, [r3]              |                     *(r3) = r2;
                                         |                 }
    0x00013a64 ldr r3, [fp, -0x18]       |                 r3 = var_18h;
    0x00013a68 mov r2, 0                 |                 r2 = 0;
    0x00013a6c str r2, [r3]              |                 *(r3) = r2;
    0x00013a70 ldr r3, [pc, 0x64]        |                 r3 = scgi_fd_newfd_cb;
    0x00013a74 ldr r2, [r3]              |                 r2 = scgi_fd_newfd_cb;
    0x00013a78 ldr r3, [fp, -0x18]       |                 r3 = var_18h;
    0x00013a7c cmp r2, r3                |                 
                                         |                 if (r2 == r3) {
    0x00013a80 bne 0x13a94               |                     
    0x00013a84 ldr r3, [fp, -0x18]       |                     r3 = var_18h;
    0x00013a88 mov r2, 0                 |                     r2 = 0;
    0x00013a8c str r2, [r3, 4]           |                     *((r3 + 4)) = r2;
    0x00013a90 b 0x13aa4                 |                     
                                         |                 } else {
    0x00013a94 ldr r3, [fp, -0x18]       |                     r3 = var_18h;
    0x00013a98 ldr r2, [pc, 0x40]        |                     
    0x00013a9c ldr r2, [r2]              |                     r2 = *(0x13adc);
    0x00013aa0 str r2, [r3, 4]           |                     *((r3 + 4)) = r2;
                                         |                 }
    0x00013aa4 ldr r3, [fp, -0x18]       |                 r3 = var_18h;
    0x00013aa8 ldr r2, [pc, 0x30]        |                 r2 = *(0x13adc);
    0x00013aac str r3, [r2]              |                 *(r2) = r3;
    0x00013ab0 mov r3, 1                 |                 r3 = 1;
                                         |             }
                                         |         }
                                         |     }
    0x00013ab4 mov r0, r3                |     r0 = r3;
    0x00013ab8 sub sp, fp, 8             |     
    0x00013abc pop {r4, fp, pc}          |     
                                         | }
    ; 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 @ 0x125d8 */
                                                 | #include <stdint.h>
                                                 |  
    ; (fcn) sym.scgi_listen_to_request ()        | void scgi_listen_to_request (int32_t arg1) {
                                                 |     int32_t var_30h;
                                                 |     int32_t var_28h;
                                                 |     int32_t var_24h;
                                                 |     int32_t var_20h;
                                                 |     int32_t var_1ch;
                                                 |     int32_t var_15h;
                                                 |     int32_t var_14h;
                                                 |     void * buffer;
                                                 |     int32_t var_sp_28h;
                                                 |     int32_t var_sp_20h;
                                                 |     int8_t var_sp_15h;
                                                 |     int32_t var_8h;
                                                 |     r0 = arg1;
    0x000125d8 push {r4, fp, lr}                 |     
    0x000125dc add fp, sp, 8                     |     
    0x000125e0 sub sp, sp, 0x2c                  |     
    0x000125e4 str r0, [fp, -0x30]               |     var_30h = r0;
    0x000125e8 ldr r3, [fp, -0x30]               |     r3 = var_30h;
    0x000125ec ldr r3, [r3, 0x1c]                |     r3 = *((r3 + 0x1c));
    0x000125f0 str r3, [fp, -0x10]               |     buffer = r3;
    0x000125f4 mov r3, 0                         |     r3 = 0;
    0x000125f8 strb r3, [fp, -0x15]              |     var_15h = r3;
    0x000125fc ldr r3, [fp, -0x30]               |     r3 = var_30h;
    0x00012600 ldr r3, [r3, 0x10]                |     r3 = *((r3 + 0x10));
    0x00012604 str r3, [fp, -0x28]               |     var_28h = r3;
    0x00012608 mov r3, 1                         |     r3 = 1;
    0x0001260c strh r3, [fp, -0x24]              |     var_30h = r3;
                                                 |     do {
    0x00012610 ldr r3, [fp, -0x30]               |         r3 = var_30h;
    0x00012614 ldr r3, [r3, 0x18]                |         r3 = *((r3 + 0x18));
    0x00012618 sub r2, r3, 5                     |         r2 = r3 - 5;
    0x0001261c ldr r3, [fp, -0x10]               |         r3 = buffer;
    0x00012620 sub r3, r2, r3                    |         r3 = r2 - r3;
    0x00012624 cmp r3, 0x20000                   |         
                                                 |         if (r3 > 0x20000) {
    0x00012628 ble 0x12638                       |             
    0x0001262c mov r3, 0x20000                   |             r3 = 0x20000;
    0x00012630 str r3, [fp, -0x1c]               |             var_28h = r3;
    0x00012634 b 0x12650                         |             
                                                 |         } else {
    0x00012638 ldr r3, [fp, -0x30]               |             r3 = var_30h;
    0x0001263c ldr r3, [r3, 0x18]                |             r3 = *((r3 + 0x18));
    0x00012640 sub r2, r3, 5                     |             r2 = r3 - 5;
    0x00012644 ldr r3, [fp, -0x10]               |             r3 = buffer;
    0x00012648 sub r3, r2, r3                    |             r3 = r2 - r3;
    0x0001264c str r3, [fp, -0x1c]               |             var_28h = r3;
                                                 |         }
    0x00012650 sub r3, fp, 0x28                  |         r3 -= var_sp_28h;
    0x00012654 mov r2, 2                         |         r2 = 2;
    0x00012658 mov r1, 1                         |         r1 = 1;
    0x0001265c mov r0, r3                        |         r0 = r3;
    0x00012660 bl 0x10b34                        |         r0 = poll ();
    0x00012664 mov r3, r0                        |         r3 = r0;
    0x00012668 str r3, [fp, -0x20]               |         var_20h = r3;
    0x0001266c ldr r3, [fp, -0x20]               |         r3 = var_20h;
    0x00012670 cmn r3, 1                         |         
                                                 |         if (r3 != 1) {
    0x00012674 beq 0x12684                       |             
    0x00012678 cmp r3, 0                         |             
                                                 |             if (r3 != 0) {
    0x0001267c beq 0x126b4                       |                 
    0x00012680 b 0x126c0                         |                 
                                                 |             } else {
    0x00012684 ldr r3, [pc, 0x18c]               |                 r3 = *(0x12814);
    0x00012688 ldr r4, [r3]                      |                 r4 = *(0x12814);
    0x0001268c bl 0x10b70                        |                 r0 = errno_location ();
    0x00012690 mov r3, r0                        |                 r3 = r0;
    0x00012694 ldr r3, [r3]                      |                 r3 = *(r3);
    0x00012698 mov r2, r3                        |                 r2 = r3;
    0x0001269c ldr r1, [pc, 0x178]               |                 r1 = stderr;
    0x000126a0 mov r0, r4                        |                 r0 = r4;
    0x000126a4 bl 0x10c60                        |                 fprintf (r0, r1, r2, r3)
    0x000126a8 mvn r3, 0                         |                 r3 = ~0;
    0x000126ac str r3, [fp, -0x14]               |                 var_20h = r3;
    0x000126b0 b 0x126f0                         |                 goto label_0;
                                                 |             }
    0x000126b4 mov r3, 0                         |             r3 = 0;
    0x000126b8 str r3, [fp, -0x14]               |             var_20h = r3;
    0x000126bc b 0x126f0                         |             goto label_0;
                                                 |         }
    0x000126c0 ldr r3, [fp, -0x30]               |         r3 = var_30h;
    0x000126c4 ldr r0, [r3, 0x10]                |         r0 = *((r3 + 0x10));
    0x000126c8 ldr r3, [fp, -0x30]               |         r3 = var_30h;
    0x000126cc ldr r2, [r3, 0x14]                |         r2 = *((r3 + 0x14));
    0x000126d0 ldr r3, [fp, -0x10]               |         r3 = buffer;
    0x000126d4 add r1, r2, r3                    |         r1 = r2 + r3;
    0x000126d8 ldr r2, [fp, -0x1c]               |         r2 = var_28h;
    0x000126dc mov r3, 0                         |         r3 = 0;
    0x000126e0 bl 0x10c00                        |         r0 = recv (r0, r1);
    0x000126e4 mov r3, r0                        |         r3 = r0;
    0x000126e8 str r3, [fp, -0x14]               |         var_20h = r3;
    0x000126ec mov r0, r0                        |         
                                                 | label_0:
    0x000126f0 ldr r3, [fp, -0x14]               |         r3 = var_20h;
    0x000126f4 cmp r3, 0                         |         
                                                 |         if (r3 > 0) {
    0x000126f8 ble 0x1277c                       |             
    0x000126fc mov r3, 1                         |             r3 = 1;
    0x00012700 strb r3, [fp, -0x15]              |             var_15h = r3;
    0x00012704 ldr r3, [fp, -0x30]               |             r3 = var_30h;
    0x00012708 ldr r2, [r3, 0x1c]                |             r2 = *((r3 + 0x1c));
    0x0001270c ldr r3, [fp, -0x14]               |             r3 = var_20h;
    0x00012710 add r2, r2, r3                    |             r2 += r3;
    0x00012714 ldr r3, [fp, -0x30]               |             r3 = var_30h;
    0x00012718 str r2, [r3, 0x1c]                |             *((r3 + 0x1c)) = r2;
    0x0001271c ldr r2, [fp, -0x10]               |             r2 = buffer;
    0x00012720 ldr r3, [fp, -0x14]               |             r3 = var_20h;
    0x00012724 add r3, r2, r3                    |             r3 = r2 + r3;
    0x00012728 str r3, [fp, -0x10]               |             buffer = r3;
    0x0001272c ldr r3, [fp, -0x30]               |             r3 = var_30h;
    0x00012730 ldr r3, [r3, 0x18]                |             r3 = *((r3 + 0x18));
    0x00012734 sub r3, r3, 5                     |             r3 -= 5;
    0x00012738 ldr r2, [fp, -0x10]               |             r2 = buffer;
    0x0001273c cmp r2, r3                        |             
                                                 |             if (r2 < r3) {
    0x00012740 blt 0x127ac                       |                 goto label_1;
                                                 |             }
    0x00012744 ldr r3, [fp, -0x30]               |             r3 = var_30h;
    0x00012748 add r3, r3, 0x14                  |             r3 += 0x14;
    0x0001274c mov r1, r3                        |             r1 = r3;
    0x00012750 ldr r0, [fp, -0x30]               |             r0 = var_30h;
    0x00012754 bl 0x124ec                        |             r0 = sym ();
    0x00012758 mov r3, r0                        |             r3 = r0;
    0x0001275c cmp r3, 0                         |             
                                                 |             if (r3 != 0) {
    0x00012760 moveq r3, 1                       |                 r3 = 1;
                                                 |             }
                                                 |             if (r3 == 0) {
    0x00012764 movne r3, 0                       |                 r3 = 0;
                                                 |             }
    0x00012768 and r3, r3, 0xff                  |             r3 &= 0xff;
    0x0001276c cmp r3, 0                         |             
                                                 |             if (r3 == 0) {
    0x00012770 beq 0x127ac                       |                 goto label_1;
                                                 |             }
    0x00012774 mov r3, 0                         |             r3 = 0;
    0x00012778 b 0x1280c                         |             goto label_2;
                                                 |         }
    0x0001277c ldr r3, [fp, -0x14]               |         r3 = var_20h;
    0x00012780 cmp r3, 0                         |         
                                                 |         if (r3 < 0) {
    0x00012784 bge 0x127ac                       |             
    0x00012788 ldr r3, [pc, 0x88]                |             r3 = *(0x12814);
    0x0001278c ldr r4, [r3]                      |             r4 = *(0x12814);
    0x00012790 bl 0x10b70                        |             r0 = errno_location ();
    0x00012794 mov r3, r0                        |             r3 = r0;
    0x00012798 ldr r2, [r3]                      |             r2 = *(r3);
    0x0001279c ldr r3, [fp, -0x14]               |             r3 = var_20h;
    0x000127a0 ldr r1, [pc, 0x78]                |             r1 = "poll__1_error:_d_";
    0x000127a4 mov r0, r4                        |             r0 = r4;
    0x000127a8 bl 0x10c60                        |             fprintf (r0, "poll__1_error:_d_", r2, r3)
                                                 |         }
                                                 | label_1:
    0x000127ac ldr r3, [fp, -0x14]               |         r3 = var_20h;
    0x000127b0 cmp r3, 0                         |         
                                                 |         if (r3 <= 0) {
    0x000127b4 ble 0x127bc                       |             goto label_3;
                                                 |         }
    0x000127b8 b 0x12610                         |         
                                                 |     } while (1);
                                                 | label_3:
    0x000127bc ldrb r3, [fp, -0x15]              |     r3 = var_15h;
    0x000127c0 cmp r3, 0                         |     
                                                 |     if (r3 != 0) {
    0x000127c4 beq 0x127d8                       |         
    0x000127c8 ldr r0, [fp, -0x30]               |         r0 = var_30h;
    0x000127cc bl 0x12918                        |         sym ();
    0x000127d0 mov r3, 1                         |         r3 = 1;
    0x000127d4 b 0x1280c                         |         
                                                 |     } else {
    0x000127d8 ldr r3, [fp, -0x14]               |         r3 = var_20h;
    0x000127dc cmp r3, 0                         |         
                                                 |         if (r3 != 0) {
    0x000127e0 beq 0x127f8                       |             
    0x000127e4 bl 0x10b70                        |             r0 = errno_location ();
    0x000127e8 mov r3, r0                        |             r3 = r0;
    0x000127ec ldr r3, [r3]                      |             r3 = *(r3);
    0x000127f0 cmp r3, 0xb                       |             
                                                 |             if (r3 == 0xb) {
    0x000127f4 beq 0x12808                       |                 goto label_4;
                                                 |             }
                                                 |         }
    0x000127f8 ldr r0, [fp, -0x30]               |         r0 = var_30h;
    0x000127fc bl 0x11bb0                        |         scgi_kill_socket ();
    0x00012800 mov r3, 0                         |         r3 = 0;
    0x00012804 b 0x1280c                         |         goto label_2;
                                                 | label_4:
    0x00012808 mov r3, 0                         |         r3 = 0;
                                                 |     }
                                                 | label_2:
    0x0001280c mov r0, r3                        |     r0 = r3;
    0x00012810 sub sp, fp, 8                     |     
    0x00012814 pop {r4, fp, pc}                  |     
                                                 | }
    ; 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 @ 0x128dc */
                                         | #include <stdint.h>
                                         |  
    ; (fcn) sym.scgi_perror ()           | void scgi_perror (int32_t arg1) {
                                         |     int32_t var_8h;
                                         |     int32_t var_4h_2;
                                         |     int32_t var_4h;
                                         |     r0 = arg1;
    0x000128dc push {fp, lr}             |     
    0x000128e0 add fp, sp, 4             |     
    0x000128e4 sub sp, sp, 8             |     
    0x000128e8 str r0, [fp, -8]          |     var_8h = r0;
    0x000128ec ldr r3, [pc, 0x1c]        |     
    0x000128f0 ldr r3, [r3]              |     r3 = *(0x1290c);
    0x000128f4 ldr r2, [fp, -8]          |     r2 = var_8h;
    0x000128f8 ldr r1, [pc, 0x14]        |     r1 = stderr;
    0x000128fc mov r0, r3                |     r0 = r3;
    0x00012900 bl 0x10c60                |     r0 = fprintf (r0, r1, r2, r3)
    0x00012904 mov r0, r0                |     
    0x00012908 sub sp, fp, 4             |     
    0x0001290c pop {fp, pc}              |     
                                         | }

[*] Function fprintf used 13 times AJAJPost.dll