[*] Binary protection state of ptzcoordcalc.cgi

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


[*] Function fprintf tear down of ptzcoordcalc.cgi

    ; assembly                           | /* r2dec pseudo code output */
                                         | /* /logs/firmware/unblob_extracted/firmware_extract/4325012-58052244.squashfs_v4_le_extract/usr/html/axis-cgi/ptzcoordcalc.cgi @ 0x2400 */
                                         | #include <stdint.h>
                                         |  
    ; (fcn) fcn.00002400 ()              | void fcn_00002400 () {
    0x00002400 lui gp, 2                 |     
    0x00002404 addiu gp, gp, -0x33f0     |     
    0x00002408 addu gp, gp, t9           |     gp += t9;
    0x0000240c addiu sp, sp, -0x30       |     
    0x00002410 sw gp, 0x18(sp)           |     *(var_18h) = gp;
    0x00002414 sw s1, 0x24(sp)           |     *(var_24h) = s1;
    0x00002418 sw ra, 0x2c(sp)           |     *(var_2ch) = ra;
    0x0000241c sw s2, 0x28(sp)           |     *(var_28h) = s2;
    0x00002420 sw s0, 0x20(sp)           |     *(var_20h) = s0;
    0x00002424 move s1, a0               |     s1 = a0;
                                         |     if (a1 != 0) {
    0x00002428 beqz a1, 0x2488           |         
    0x0000242c move s0, a3               |         s0 = a3;
    0x00002430 move s2, a2               |         s2 = a2;
    0x00002434 move a3, a2               |         a3 = a2;
    0x00002438 lw a2, -0x7fdc(gp)        |         a2 = *((gp - 8183));
    0x0000243c lw t9, -0x7e9c(gp)        |         t9 = sym.imp.__fprintf_chk
    0x00002440 addiu a2, a2, 0x5c44      |         a2 += str.Status:__s_r_nCache_Control:_no_cache_r_nPragma:_no_cache_r_nExpires:_Thu__01_Dec_1994_16:00:00_GMT_r_nContent_Type:_text_plain_r_n_r_n;
    0x00002444 addiu a1, zero, 1         |         a1 = 1;
    0x00002448 jalr t9                   |         t9 ();
    0x0000244c lw gp, 0x18(sp)           |         gp = *(var_18h);
    0x00002450 sw s0, 0x10(sp)           |         *(var_10h) = s0;
    0x00002454 move a3, s2               |         a3 = s2;
    0x00002458 lw a2, -0x7fdc(gp)        |         a2 = *((gp - 8183));
    0x0000245c lw t9, -0x7e9c(gp)        |         t9 = sym.imp.__fprintf_chk
    0x00002460 move a0, s1               |         a0 = s1;
    0x00002464 addiu a2, a2, 0x5cc0      |         a2 += str._s_r_n_r_n_s_r_n;
    0x00002468 addiu a1, zero, 1         |         a1 = 1;
    0x0000246c jalr t9                   |         t9 ();
    0x00002470 lw ra, 0x2c(sp)           |         ra = *(var_2ch);
    0x00002474 lw s2, 0x28(sp)           |         s2 = *(var_28h);
    0x00002478 lw s1, 0x24(sp)           |         s1 = *(var_24h);
    0x0000247c lw s0, 0x20(sp)           |         s0 = *(var_20h);
    0x00002480 addiu sp, sp, 0x30        |         
    0x00002484 jr ra                     |         return;
                                         |     }
    0x00002488 lw ra, 0x2c(sp)           |     ra = *(var_2ch);
    0x0000248c lw s2, 0x28(sp)           |     s2 = *(var_28h);
    0x00002490 lw s1, 0x24(sp)           |     s1 = *(var_24h);
    0x00002494 lw s0, 0x20(sp)           |     s0 = *(var_20h);
    0x00002498 lw t9, -0x7e90(gp)        |     t9 = sym.imp.fputs;
    0x0000249c move a1, a0               |     a1 = a0;
    0x000024a0 move a0, a3               |     a0 = a3;
    0x000024a4 addiu sp, sp, 0x30        |     
    0x000024a8 jr t9                     |     return t9 ();
                                         | }
    ; assembly                           | /* r2dec pseudo code output */
                                         | /* /logs/firmware/unblob_extracted/firmware_extract/4325012-58052244.squashfs_v4_le_extract/usr/html/axis-cgi/ptzcoordcalc.cgi @ 0x12f0 */
                                         | #include <stdint.h>
                                         |  
    ; (fcn) main ()                      | int32_t main () {
                                         |     /* [13] -r-x section size 17904 named .text */
    0x000012f0 lui gp, 2                 |     
    0x000012f4 addiu gp, gp, -0x22e0     |     
    0x000012f8 addu gp, gp, t9           |     gp += t9;
    0x000012fc lw v0, -0x7f04(gp)        |     v0 = *((gp - 8129));
    0x00001300 addiu sp, sp, -0xd8       |     
    0x00001304 lw t9, -0x7ea8(gp)        |     t9 = sym.imp.g_key_file_new;
    0x00001308 sw s0, 0xb0(sp)           |     *(var_b0h) = s0;
    0x0000130c sw v0, 0x50(sp)           |     *(var_50h) = v0;
    0x00001310 lw s0, -0x7f3c(gp)        |     s0 = *((gp - 8143));
    0x00001314 lw v0, (v0)               |     v0 = *(v0);
    0x00001318 sw gp, 0x28(sp)           |     *(var_28h) = gp;
    0x0000131c sw ra, 0xd4(sp)           |     *(var_d4h) = ra;
    0x00001320 sw s4, 0xc0(sp)           |     *(var_c0h) = s4;
    0x00001324 sw s2, 0xb8(sp)           |     *(var_b8h) = s2;
    0x00001328 sw s1, 0xb4(sp)           |     *(var_b4h) = s1;
    0x0000132c sw fp, 0xd0(sp)           |     *(var_d0h) = fp;
    0x00001330 sw s7, 0xcc(sp)           |     *(var_cch) = s7;
    0x00001334 sw s6, 0xc8(sp)           |     *(var_c8h) = s6;
    0x00001338 sw s5, 0xc4(sp)           |     *(var_c4h) = s5;
    0x0000133c sw s3, 0xbc(sp)           |     *(var_bch) = s3;
    0x00001340 sw v0, 0xac(sp)           |     *(var_ach) = v0;
    0x00001344 sw zero, 0x80(sp)         |     *(var_80h) = 0;
    0x00001348 lw s2, (s0)               |     s2 = *(s0);
    0x0000134c jalr t9                   |     t9 ();
    0x00001350 lw gp, 0x28(sp)           |     gp = *(var_28h);
    0x00001354 addiu s4, sp, 0x80        |     s4 = sp + 0x80;
    0x00001358 move a3, s4               |     a3 = s4;
    0x0000135c lw a1, -0x7fdc(gp)        |     a1 = *((gp - 8183));
    0x00001360 lw t9, -0x7f20(gp)        |     t9 = sym.imp.g_key_file_load_from_file;
    0x00001364 move a2, zero             |     a2 = 0;
    0x00001368 addiu a1, a1, 0x5d4c      |     a1 += str._etc_ptzcoordcalc_ptzcoordcalc.conf;
    0x0000136c move a0, v0               |     a0 = v0;
    0x00001370 move s1, v0               |     s1 = v0;
    0x00001374 jalr t9                   |     t9 ();
    0x00001378 lw gp, 0x28(sp)           |     gp = *(var_28h);
                                         |     if (v0 == 0) {
    0x0000137c beqz v0, 0x21ac           |         goto label_26;
                                         |     }
    0x00001380 lw s3, -0x7fdc(gp)        |     s3 = *((gp - 8183));
    0x00001384 lw a2, -0x7fdc(gp)        |     a2 = *((gp - 8183));
    0x00001388 lw t9, -0x7f00(gp)        |     t9 = sym.imp.g_key_file_get_boolean;
    0x0000138c addiu a1, s3, 0x5da4      |     a1 = s3 + str.Config;
    0x00001390 move a0, s1               |     a0 = s1;
    0x00001394 move a3, zero             |     a3 = 0;
    0x00001398 addiu a2, a2, 0x5d94      |     a2 += str.OnlyUpdateZoom;
    0x0000139c jalr t9                   |     t9 ();
    0x000013a0 lw gp, 0x28(sp)           |     gp = *(var_28h);
    0x000013a4 addiu a1, s3, 0x5da4      |     a1 = s3 + str.Config;
    0x000013a8 move a0, s1               |     a0 = s1;
    0x000013ac lw a2, -0x7fdc(gp)        |     a2 = *((gp - 8183));
    0x000013b0 lw t9, -0x7f00(gp)        |     t9 = sym.imp.g_key_file_get_boolean;
    0x000013b4 move a3, zero             |     a3 = 0;
    0x000013b8 addiu a2, a2, 0x5dac      |     a2 += str.CameraIsRemote;
    0x000013bc move s2, v0               |     s2 = v0;
    0x000013c0 jalr t9                   |     t9 ();
    0x000013c4 lw gp, 0x28(sp)           |     gp = *(var_28h);
    0x000013c8 addiu a1, s3, 0x5da4      |     a1 = s3 + str.Config;
    0x000013cc move a3, zero             |     a3 = 0;
    0x000013d0 lw a2, -0x7fdc(gp)        |     a2 = *((gp - 8183));
    0x000013d4 lw t9, -0x7ee4(gp)        |     t9 = sym.imp.g_key_file_get_integer;
    0x000013d8 addiu a2, a2, 0x5dbc      |     a2 += str.NumCameras;
    0x000013dc move a0, s1               |     a0 = s1;
    0x000013e0 sw v0, 0x3c(sp)           |     *(var_3ch) = v0;
    0x000013e4 jalr t9                   |     t9 ();
    0x000013e8 lw gp, 0x28(sp)           |     gp = *(var_28h);
    0x000013ec move a0, s1               |     a0 = s1;
    0x000013f0 sw v0, 0x48(sp)           |     *(var_48h) = v0;
    0x000013f4 lw t9, -0x7f50(gp)        |     t9 = sym.imp.g_key_file_free;
    0x000013f8 addiu s5, zero, 1         |     s5 = 1;
    0x000013fc jalr t9                   |     t9 ();
    0x00001400 lw gp, 0x28(sp)           |     gp = *(var_28h);
    0x00001404 sb s5, 0x8c(sp)           |     *(var_8ch) = s5;
    0x00001408 sw zero, 0xa4(sp)         |     *(var_a4h) = 0;
    0x0000140c lw t9, -0x7eb4(gp)        |     t9 = sym.imp.CGI_save_env;
    0x00001410 sw zero, 0xa0(sp)         |     *(var_a0h) = 0;
    0x00001414 lw s3, (s0)               |     s3 = *(s0);
    0x00001418 jalr t9                   |     t9 ();
    0x0000141c move s1, v0               |     s1 = v0;
    0x00001420 lw gp, 0x28(sp)           |     gp = *(var_28h);
                                         |     if (v0 != 0) {
    0x00001424 bnez v0, 0x21f8           |         goto label_27;
                                         |     }
    0x00001428 lw a0, -0x7fdc(gp)        |     a0 = *((gp - 8183));
    0x0000142c lw t9, -0x7f28(gp)        |     t9 = sym.imp.CGI_get_value;
    0x00001430 addiu a0, a0, 0x5e04      |     a0 += str.generate_header;
    0x00001434 jalr t9                   |     t9 ();
    0x00001438 move s6, v0               |     s6 = v0;
    0x0000143c lw gp, 0x28(sp)           |     gp = *(var_28h);
                                         |     if (v0 != 0) {
    0x00001440 beqz v0, 0x1488           |         
    0x00001444 lw a1, -0x7fdc(gp)        |         a1 = *((gp - 8183));
    0x00001448 lw t9, -0x7f58(gp)        |         t9 = sym.imp.strncmp;
    0x0000144c addiu a2, zero, 3         |         a2 = 3;
    0x00001450 addiu a1, a1, 0x5e14      |         a1 += 0x5e14;
    0x00001454 move a0, v0               |         a0 = v0;
    0x00001458 jalr t9                   |         t9 ();
    0x0000145c lw gp, 0x28(sp)           |         gp = *(var_28h);
                                         |         if (v0 == 0) {
    0x00001460 beqz v0, 0x15f4           |             goto label_28;
                                         |         }
    0x00001464 lw a1, -0x7fdc(gp)        |         a1 = *((gp - 8183));
    0x00001468 lw t9, -0x7f58(gp)        |         t9 = sym.imp.strncmp;
    0x0000146c addiu a2, zero, 2         |         a2 = 2;
    0x00001470 addiu a1, a1, 0x5e18      |         a1 += 0x5e18;
    0x00001474 move a0, s6               |         a0 = s6;
    0x00001478 jalr t9                   |         t9 ();
    0x0000147c lw gp, 0x28(sp)           |         gp = *(var_28h);
                                         |         if (v0 != 0) {
    0x00001480 bnez v0, 0x17f4           |             goto label_29;
                                         |         }
    0x00001484 sb zero, 0x8c(sp)         |         *(var_8ch) = 0;
                                         |     }
                                         | label_0:
    0x00001488 lw a0, -0x7fdc(gp)        |     a0 = *((gp - 8183));
    0x0000148c lw t9, -0x7f28(gp)        |     t9 = sym.imp.CGI_get_value;
    0x00001490 addiu a0, a0, 0x5e54      |     a0 += str.responseformat;
    0x00001494 jalr t9                   |     t9 ();
    0x00001498 move s5, v0               |     s5 = v0;
    0x0000149c lw gp, 0x28(sp)           |     gp = *(var_28h);
                                         |     if (v0 == 0) {
    0x000014a0 beqz v0, 0x17e4           |         goto label_30;
                                         |     }
    0x000014a4 lw a1, -0x7fdc(gp)        |     a1 = *((gp - 8183));
    0x000014a8 lw t9, -0x7f58(gp)        |     t9 = sym.imp.strncmp;
    0x000014ac addiu a2, zero, 5         |     a2 = 5;
    0x000014b0 addiu a1, a1, 0x5e84      |     a1 += str.plain;
    0x000014b4 move a0, v0               |     a0 = v0;
    0x000014b8 jalr t9                   |     t9 ();
    0x000014bc lw gp, 0x28(sp)           |     gp = *(var_28h);
                                         |     if (v0 == 0) {
    0x000014c0 beqz v0, 0x15ec           |         goto label_31;
                                         |     }
    0x000014c4 lw a1, -0x7fdc(gp)        |     a1 = *((gp - 8183));
    0x000014c8 lw t9, -0x7f58(gp)        |     t9 = sym.imp.strncmp;
    0x000014cc addiu a2, zero, 3         |     a2 = 3;
    0x000014d0 addiu a1, a1, 0x5e8c      |     a1 += 0x5e8c;
    0x000014d4 move a0, s5               |     a0 = s5;
    0x000014d8 jalr t9                   |     t9 ();
    0x000014dc lw gp, 0x28(sp)           |     gp = *(var_28h);
                                         |     if (v0 != 0) {
    0x000014e0 bnez v0, 0x1804           |         goto label_32;
                                         |     }
    0x000014e4 addiu v0, zero, 1         |     v0 = 1;
    0x000014e8 sw v0, 0x88(sp)           |     *(var_88h) = v0;
                                         |     do {
    0x000014ec lw a0, -0x7fdc(gp)        |         a0 = *((gp - 8183));
    0x000014f0 lw t9, -0x7f28(gp)        |         t9 = sym.imp.CGI_get_value;
    0x000014f4 addiu a0, a0, 0x5eac      |         a0 += str.action;
    0x000014f8 jalr t9                   |         t9 ();
    0x000014fc move s5, v0               |         s5 = v0;
    0x00001500 lw gp, 0x28(sp)           |         gp = *(var_28h);
                                         |         if (v0 == 0) {
    0x00001504 beqz v0, 0x1ff0           |             goto label_33;
                                         |         }
    0x00001508 lw a1, -0x7fdc(gp)        |         a1 = *((gp - 8183));
    0x0000150c lw t9, -0x7f58(gp)        |         t9 = sym.imp.strncmp;
    0x00001510 addiu a2, zero, 8         |         a2 = 8;
    0x00001514 addiu a1, a1, 0x5ecc      |         a1 += str.getpixel;
    0x00001518 move a0, v0               |         a0 = v0;
    0x0000151c jalr t9                   |         t9 ();
    0x00001520 lw gp, 0x28(sp)           |         gp = *(var_28h);
                                         |         if (v0 != 0) {
    0x00001524 bnez v0, 0x15fc           |             goto label_34;
                                         |         }
    0x00001528 sw zero, 0x84(sp)         |         *(var_84h) = 0;
                                         | label_1:
    0x0000152c lw a0, -0x7fdc(gp)        |         a0 = *((gp - 8183));
    0x00001530 lw t9, -0x7f28(gp)        |         t9 = sym.imp.CGI_get_value;
    0x00001534 addiu a0, a0, 0x5f00      |         a0 += str.imageresolution;
    0x00001538 jalr t9                   |         t9 ();
    0x0000153c lw gp, 0x28(sp)           |         gp = *(var_28h);
                                         |         if (v0 == 0) {
    0x00001540 beqz v0, 0x17b0           |             goto label_35;
                                         |         }
    0x00001544 lw a1, -0x7fdc(gp)        |         a1 = *((gp - 8183));
    0x00001548 lw t9, -0x7ea4(gp)        |         t9 = sym.imp.__isoc99_sscanf;
    0x0000154c addiu a3, sp, 0x94        |         a3 = sp + 0x94;
    0x00001550 addiu a2, sp, 0x90        |         a2 = sp + 0x90;
    0x00001554 addiu a1, a1, 0x5f30      |         a1 += str._dx_d;
    0x00001558 move a0, v0               |         a0 = v0;
    0x0000155c jalr t9                   |         t9 ();
    0x00001560 addiu v1, zero, 2         |         v1 = 2;
    0x00001564 lw gp, 0x28(sp)           |         gp = *(var_28h);
                                         |         if (v0 == v1) {
    0x00001568 beq v0, v1, 0x1628        |             goto label_36;
                                         |         }
    0x0000156c lw a3, -0x7fdc(gp)        |         a3 = *((gp - 8183));
    0x00001570 lbu a1, 0x8c(sp)          |         a1 = *(var_8ch);
    0x00001574 addiu a3, a3, 0x5f38      |         a3 += str.Error_parsing_image_resolution.;
                                         | label_2:
    0x00001578 lw a2, -0x7fdc(gp)        |         a2 = *((gp - 8183));
    0x0000157c lw t9, -0x7fdc(gp)        |         t9 = *((gp - 8183));
    0x00001580 addiu a2, a2, 0x5e44      |         a2 += str.400_Bad_Request;
    0x00001584 addiu t9, t9, 0x2400      |         t9 += fcn.00002400;
    0x00001588 move a0, s3               |         a0 = s3;
    0x0000158c bal 0x2400                |         fcn_00002400 ();
    0x00001590 lw gp, 0x28(sp)           |         gp = *(var_28h);
    0x00001594 addiu v0, zero, 1         |         v0 = 1;
    0x00001598 lw t9, -0x7f1c(gp)        |         t9 = sym.imp.CGI_cleanup;
    0x0000159c sw v0, 0x54(sp)           |         *(var_54h) = v0;
    0x000015a0 jalr t9                   |         t9 ();
    0x000015a4 lw gp, 0x28(sp)           |         gp = *(var_28h);
                                         | label_14:
    0x000015a8 lw v0, 0x50(sp)           |         v0 = *(var_50h);
    0x000015ac lw a0, 0xac(sp)           |         a0 = *(var_ach);
    0x000015b0 lw v1, (v0)               |         v1 = *(v0);
    0x000015b4 lw v0, 0x54(sp)           |         v0 = *(var_54h);
                                         |         if (a0 != v1) {
    0x000015b8 bne a0, v1, 0x2284        |             goto label_37;
                                         |         }
    0x000015bc lw ra, 0xd4(sp)           |         ra = *(var_d4h);
    0x000015c0 lw fp, 0xd0(sp)           |         fp = *(var_d0h);
    0x000015c4 lw s7, 0xcc(sp)           |         s7 = *(var_cch);
    0x000015c8 lw s6, 0xc8(sp)           |         s6 = *(var_c8h);
    0x000015cc lw s5, 0xc4(sp)           |         s5 = *(var_c4h);
    0x000015d0 lw s4, 0xc0(sp)           |         s4 = *(var_c0h);
    0x000015d4 lw s3, 0xbc(sp)           |         s3 = *(var_bch);
    0x000015d8 lw s2, 0xb8(sp)           |         s2 = *(var_b8h);
    0x000015dc lw s1, 0xb4(sp)           |         s1 = *(var_b4h);
    0x000015e0 lw s0, 0xb0(sp)           |         s0 = *(var_b0h);
    0x000015e4 addiu sp, sp, 0xd8        |         
    0x000015e8 jr ra                     |         return v0;
                                         | label_31:
    0x000015ec sw zero, 0x88(sp)         |         *(var_88h) = 0;
    0x000015f0 b 0x14ec                  |         
                                         |     } while (1);
                                         | label_28:
    0x000015f4 sb s5, 0x8c(sp)           |     *(var_8ch) = s5;
    0x000015f8 b 0x1488                  |     goto label_0;
                                         | label_34:
    0x000015fc lw a1, -0x7fdc(gp)        |     a1 = *((gp - 8183));
    0x00001600 lw t9, -0x7f58(gp)        |     t9 = sym.imp.strncmp;
    0x00001604 addiu a2, zero, 0xa       |     a2 = 0xa;
    0x00001608 addiu a1, a1, 0x5ed8      |     a1 += str.getpantilt;
    0x0000160c move a0, s5               |     a0 = s5;
    0x00001610 jalr t9                   |     t9 ();
    0x00001614 lw gp, 0x28(sp)           |     gp = *(var_28h);
                                         |     if (v0 != 0) {
    0x00001618 bnez v0, 0x1fe0           |         goto label_38;
                                         |     }
    0x0000161c addiu v0, zero, 1         |     v0 = 1;
    0x00001620 sw v0, 0x84(sp)           |     *(var_84h) = v0;
    0x00001624 b 0x152c                  |     goto label_1;
                                         | label_36:
    0x00001628 lw a0, -0x7fdc(gp)        |     a0 = *((gp - 8183));
    0x0000162c lw t9, -0x7f28(gp)        |     t9 = sym.imp.CGI_get_value;
    0x00001630 addiu a0, a0, 0x5f58      |     a0 += str.imagerotation;
    0x00001634 jalr t9                   |     t9 ();
    0x00001638 lw gp, 0x28(sp)           |     gp = *(var_28h);
                                         |     if (v0 != 0) {
    0x0000163c beqz v0, 0x1698           |         
    0x00001640 lw a1, -0x7fdc(gp)        |         a1 = *((gp - 8183));
    0x00001644 lw t9, -0x7ea4(gp)        |         t9 = sym.imp.__isoc99_sscanf;
    0x00001648 addiu a2, sp, 0x98        |         a2 = sp + 0x98;
    0x0000164c addiu a1, a1, 0x5f68      |         a1 += 0x5f68;
    0x00001650 move a0, v0               |         a0 = v0;
    0x00001654 jalr t9                   |         t9 ();
    0x00001658 addiu v1, zero, 1         |         v1 = 1;
    0x0000165c lw gp, 0x28(sp)           |         gp = *(var_28h);
                                         |         if (v0 != v1) {
    0x00001660 bne v0, v1, 0x17c8        |             goto label_39;
                                         |         }
    0x00001664 lw v0, 0x98(sp)           |         v0 = *(var_98h);
                                         |         if (v0 != 0) {
    0x00001668 beql v0, zero, 0x1690     |             
    0x0000166c addiu v0, zero, 1         |             v0 = 1;
    0x00001670 addiu v1, zero, 0x5a      |             v1 = 0x5a;
    0x00001674 addiu v1, zero, 0xb4      |             v1 = 0xb4;
                                         |             if (v0 != v1) {
    0x00001678 beq v0, v1, 0x168c        |                 
    0x0000167c addiu v1, zero, 0x10e     |                 v1 = 0x10e;
                                         |                 if (v0 == v1) {
    0x00001680 beq v0, v1, 0x168c        |                     goto label_40;
                                         |                 }
    0x00001684 lw a3, -0x7fdc(gp)        |                 a3 = *((gp - 8183));
                                         |                 if (v0 != v1) {
    0x00001688 bne v0, v1, 0x2268        |                     goto label_41;
                                         |                 }
                                         |             }
                                         | label_40:
    0x0000168c addiu v0, zero, 1         |             v0 = 1;
                                         |         }
    0x00001690 sw v0, 0x4c(sp)           |         *(var_4ch) = v0;
    0x00001694 b 0x16a0                  |         
                                         |     } else {
    0x00001698 sw zero, 0x98(sp)         |         *(var_98h) = 0;
    0x0000169c sw zero, 0x4c(sp)         |         *(var_4ch) = 0;
                                         |     }
    0x000016a0 lw a0, -0x7fdc(gp)        |     a0 = *((gp - 8183));
    0x000016a4 lw t9, -0x7f28(gp)        |     t9 = sym.imp.CGI_get_value;
    0x000016a8 addiu a0, a0, 0x5fb0      |     a0 += str.camera;
    0x000016ac jalr t9                   |     t9 ();
    0x000016b0 move s5, v0               |     s5 = v0;
    0x000016b4 lw gp, 0x28(sp)           |     gp = *(var_28h);
                                         |     if (v0 == 0) {
    0x000016b8 beqz v0, 0x2014           |         goto label_42;
                                         |     }
    0x000016bc lw v0, 0x3c(sp)           |     v0 = *(var_3ch);
    0x000016c0 lw a1, -0x7fdc(gp)        |     a1 = *((gp - 8183));
                                         |     if (v0 != 0) {
    0x000016c4 beqz v0, 0x16fc           |         
    0x000016c8 lw t9, -0x7f08(gp)        |         t9 = sym.imp.strcasecmp;
    0x000016cc addiu a1, a1, 0x5fb8      |         a1 += str.quad;
    0x000016d0 move a0, s5               |         a0 = s5;
    0x000016d4 jalr t9                   |         t9 ();
    0x000016d8 lw gp, 0x28(sp)           |         gp = *(var_28h);
                                         |         if (v0 == 0) {
    0x000016dc beqz v0, 0x17d8           |             goto label_43;
                                         |         }
    0x000016e0 lw a1, -0x7fdc(gp)        |         a1 = *((gp - 8183));
    0x000016e4 lw t9, -0x7f08(gp)        |         t9 = sym.imp.strcasecmp;
    0x000016e8 addiu a1, a1, 0x5fc0      |         a1 += 0x5fc0;
    0x000016ec move a0, s5               |         a0 = s5;
    0x000016f0 jalr t9                   |         t9 ();
    0x000016f4 lw gp, 0x28(sp)           |         gp = *(var_28h);
                                         |         if (v0 == 0) {
    0x000016f8 beqz v0, 0x17d8           |             goto label_43;
                                         |         }
                                         |     }
    0x000016fc lw a1, -0x7fdc(gp)        |     a1 = *((gp - 8183));
    0x00001700 lw t9, -0x7ea4(gp)        |     t9 = sym.imp.__isoc99_sscanf;
    0x00001704 move a2, s4               |     a2 = s4;
    0x00001708 addiu a1, a1, 0x5f68      |     a1 += 0x5f68;
    0x0000170c move a0, s5               |     a0 = s5;
    0x00001710 jalr t9                   |     t9 ();
    0x00001714 addiu v1, zero, 1         |     v1 = 1;
    0x00001718 lw gp, 0x28(sp)           |     gp = *(var_28h);
                                         |     if (v0 != v1) {
    0x0000171c bne v0, v1, 0x2030        |         goto label_44;
                                         |     }
    0x00001720 lw v0, 0x80(sp)           |     v0 = *(var_80h);
    0x00001724 lw v1, 0x3c(sp)           |     v1 = *(var_3ch);
                                         |     if (v0 <= 0) {
    0x00001728 blez v0, 0x2030           |         goto label_44;
                                         |     }
                                         |     if (v1 != 0) {
    0x0000172c beql v1, zero, 0x1748     |         
    0x00001730 lw a0, -0x7fdc(gp)        |         a0 = *((gp - 8183));
    0x00001734 lw v1, 0x48(sp)           |         v1 = *(var_48h);
    0x00001738 slt v0, v1, v0            |         v0 = (v1 < v0) ? 1 : 0;
    0x0000173c lw a3, -0x7fdc(gp)        |         a3 = *((gp - 8183));
                                         |         if (v0 != 0) {
    0x00001740 bnez v0, 0x2034           |             goto label_45;
                                         |         }
                                         | label_4:
    0x00001744 lw a0, -0x7fdc(gp)        |         a0 = *((gp - 8183));
                                         |     }
    0x00001748 lw t9, -0x7f28(gp)        |     t9 = sym.imp.CGI_get_value;
    0x0000174c addiu a0, a0, 0x5fe4      |     a0 += str.coordinates;
    0x00001750 jalr t9                   |     t9 ();
    0x00001754 move fp, v0               |     fp = v0;
    0x00001758 lw gp, 0x28(sp)           |     gp = *(var_28h);
    0x0000175c lw v0, 0x84(sp)           |     v0 = *(var_84h);
                                         |     if (fp == 0) {
    0x00001760 beqz fp, 0x2020           |         goto label_46;
                                         |     }
    0x00001764 addiu a0, zero, 1         |     a0 = 1;
                                         |     if (v0 == 0) {
    0x00001768 beqz v0, 0x2060           |         goto label_47;
                                         |     }
    0x0000176c lw a3, -0x7fdc(gp)        |     a3 = *((gp - 8183));
                                         |     if (v0 != a0) {
    0x00001770 bne v0, a0, 0x2274        |         goto label_48;
                                         |     }
    0x00001774 lw t9, -0x7ef4(gp)        |     t9 = sym.imp.strlen;
    0x00001778 move a0, fp               |     a0 = fp;
    0x0000177c jalr t9                   |     t9 ();
    0x00001780 lw gp, 0x28(sp)           |     gp = *(var_28h);
    0x00001784 move a0, zero             |     a0 = 0;
    0x00001788 addiu a3, zero, 1         |     a3 = 1;
    0x0000178c addiu a2, zero, 0x3a      |     a2 = 0x3a;
                                         |     do {
                                         | label_3:
    0x00001790 slt a1, a0, v0            |         a1 = (a0 < v0) ? 1 : 0;
    0x00001794 addu a1, fp, a0           |         a1 = fp + a0;
                                         |         if (a1 == 0) {
    0x00001798 beqz a1, 0x1814           |             goto label_49;
                                         |         }
    0x0000179c lb a1, (a1)               |         a1 = *(a1);
                                         |         if (a1 == a2) {
    0x000017a0 beql a1, a2, 0x17c0       |             goto label_50;
                                         |         }
    0x000017a4 addiu a3, a3, 1           |         a3++;
    0x000017a8 addiu a0, a0, 1           |         a0++;
    0x000017ac b 0x1790                  |         
                                         |     } while (1);
                                         | label_35:
    0x000017b0 lw a3, -0x7fdc(gp)        |     a3 = *((gp - 8183));
    0x000017b4 lbu a1, 0x8c(sp)          |     a1 = *(var_8ch);
    0x000017b8 addiu a3, a3, 0x5f10      |     a3 += str.No_image_resolution_specified.;
    0x000017bc b 0x1578                  |     goto label_2;
                                         | label_50:
    0x000017c0 addiu a0, a0, 1           |     a0++;
    0x000017c4 b 0x1790                  |     goto label_3;
                                         | label_39:
    0x000017c8 lw a3, -0x7fdc(gp)        |     a3 = *((gp - 8183));
    0x000017cc lbu a1, 0x8c(sp)          |     a1 = *(var_8ch);
    0x000017d0 addiu a3, a3, 0x5f6c      |     a3 += str.Error_parsing_image_rotation.;
    0x000017d4 b 0x1578                  |     goto label_2;
                                         | label_43:
    0x000017d8 addiu v0, zero, -1        |     v0 = -1;
    0x000017dc sw v0, 0x80(sp)           |     *(var_80h) = v0;
    0x000017e0 b 0x1744                  |     goto label_4;
                                         | label_30:
    0x000017e4 lw a3, -0x7fdc(gp)        |     a3 = *((gp - 8183));
    0x000017e8 lbu a1, 0x8c(sp)          |     a1 = *(var_8ch);
    0x000017ec addiu a3, a3, 0x5e64      |     a3 += str.No_response_format_specified.;
    0x000017f0 b 0x1578                  |     goto label_2;
                                         | label_29:
    0x000017f4 lw a3, -0x7fdc(gp)        |     a3 = *((gp - 8183));
    0x000017f8 lbu a1, 0x8c(sp)          |     a1 = *(var_8ch);
    0x000017fc addiu a3, a3, 0x5e1c      |     a3 += str.generate_header_set_to_illegal_value.;
    0x00001800 b 0x1578                  |     goto label_2;
                                         | label_32:
    0x00001804 lw a3, -0x7fdc(gp)        |     a3 = *((gp - 8183));
    0x00001808 lbu a1, 0x8c(sp)          |     a1 = *(var_8ch);
    0x0000180c addiu a3, a3, 0x5e90      |     a3 += str.Illegal_response_format.;
    0x00001810 b 0x1578                  |     goto label_2;
                                         | label_49:
    0x00001814 move s5, zero             |     s5 = 0;
    0x00001818 move a0, zero             |     a0 = 0;
    0x0000181c addiu a2, zero, 0x2c      |     a2 = 0x2c;
                                         |     do {
                                         | label_5:
    0x00001820 slt a1, a0, v0            |         a1 = (a0 < v0) ? 1 : 0;
    0x00001824 addu a1, fp, a0           |         a1 = fp + a0;
                                         |         if (a1 == 0) {
    0x00001828 beqz a1, 0x1848           |             goto label_51;
                                         |         }
    0x0000182c lb a1, (a1)               |         a1 = *(a1);
                                         |         if (a1 == a2) {
    0x00001830 beql a1, a2, 0x1840       |             goto label_52;
                                         |         }
    0x00001834 addiu s5, s5, 1           |         s5++;
    0x00001838 addiu a0, a0, 1           |         a0++;
    0x0000183c b 0x1820                  |         
                                         |     } while (1);
                                         | label_52:
    0x00001840 addiu a0, a0, 1           |     a0++;
    0x00001844 b 0x1820                  |     goto label_5;
                                         | label_51:
    0x00001848 lw t9, -0x7f18(gp)        |     t9 = sym.imp.malloc;
                                         |     if (s5 != a3) {
    0x0000184c bne s5, a3, 0x2050        |         goto label_53;
                                         |     }
    0x00001850 sll v0, s5, 1             |     v0 = s5 << 1;
    0x00001854 sw v0, 0x9c(sp)           |     *(var_9ch) = v0;
    0x00001858 sll a0, s5, 3             |     a0 = s5 << 3;
    0x0000185c jalr t9                   |     t9 ();
    0x00001860 lw gp, 0x28(sp)           |     gp = *(var_28h);
    0x00001864 sw v0, 0xa4(sp)           |     *(var_a4h) = v0;
    0x00001868 lw a1, -0x7fdc(gp)        |     a1 = *((gp - 8183));
    0x0000186c addiu s6, a1, 0x5f68      |     s6 = a1 + 0x5f68;
                                         |     do {
    0x00001870 lw a2, 0xa4(sp)           |         a2 = *(var_a4h);
    0x00001874 lw t9, -0x7ea4(gp)        |         t9 = sym.imp.__isoc99_sscanf;
    0x00001878 sll s4, s1, 3             |         s4 = s1 << 3;
    0x0000187c addu a2, a2, s4           |         a2 += s4;
    0x00001880 move a1, s6               |         a1 = s6;
    0x00001884 move a0, fp               |         a0 = fp;
    0x00001888 jalr t9                   |         t9 ();
    0x0000188c addiu v1, zero, 1         |         v1 = 1;
    0x00001890 lw gp, 0x28(sp)           |         gp = *(var_28h);
                                         |         if (v0 != v1) {
    0x00001894 bne v0, v1, 0x2040        |             goto label_54;
                                         |         }
    0x00001898 lw t9, -0x7eb0(gp)        |         t9 = sym.imp.strchr;
    0x0000189c addiu a1, zero, 0x2c      |         a1 = 0x2c;
    0x000018a0 move a0, fp               |         a0 = fp;
    0x000018a4 jalr t9                   |         t9 ();
    0x000018a8 lw gp, 0x28(sp)           |         gp = *(var_28h);
    0x000018ac lw a2, 0xa4(sp)           |         a2 = *(var_a4h);
    0x000018b0 addiu s7, v0, 1           |         s7 = v0 + 1;
    0x000018b4 lw t9, -0x7ea4(gp)        |         t9 = sym.imp.__isoc99_sscanf;
    0x000018b8 addiu s4, s4, 4           |         s4 += 4;
    0x000018bc addu a2, a2, s4           |         a2 += s4;
    0x000018c0 move a1, s6               |         a1 = s6;
    0x000018c4 move a0, s7               |         a0 = s7;
    0x000018c8 jalr t9                   |         t9 ();
    0x000018cc addiu v1, zero, 1         |         v1 = 1;
    0x000018d0 lw gp, 0x28(sp)           |         gp = *(var_28h);
                                         |         if (v0 != v1) {
    0x000018d4 bne v0, v1, 0x2040        |             goto label_54;
                                         |         }
    0x000018d8 lw t9, -0x7eb0(gp)        |         t9 = sym.imp.strchr;
    0x000018dc move a0, s7               |         a0 = s7;
    0x000018e0 addiu a1, zero, 0x3a      |         a1 = 0x3a;
    0x000018e4 addiu s1, s1, 1           |         s1++;
    0x000018e8 jalr t9                   |         t9 ();
    0x000018ec slt a0, s1, s5            |         a0 = (s1 < s5) ? 1 : 0;
    0x000018f0 lw gp, 0x28(sp)           |         gp = *(var_28h);
    0x000018f4 addiu fp, v0, 1           |         fp = v0 + 1;
    0x000018f8 bnez a0, 0x1870           |         
                                         |     } while (a0 != 0);
                                         | label_20:
    0x000018fc lw a0, -0x7fdc(gp)        |     a0 = *((gp - 8183));
                                         | label_23:
    0x00001900 lw t9, -0x7f28(gp)        |     t9 = sym.imp.CGI_get_value;
    0x00001904 addiu a0, a0, 0x6058      |     a0 += str.mode;
    0x00001908 jalr t9                   |     t9 ();
    0x0000190c lw gp, 0x28(sp)           |     gp = *(var_28h);
                                         |     if (v0 == 0) {
    0x00001910 beqz v0, 0x2194           |         goto label_55;
                                         |     }
    0x00001914 lw a1, -0x7fdc(gp)        |     a1 = *((gp - 8183));
    0x00001918 lw t9, -0x7f58(gp)        |     t9 = sym.imp.strncmp;
    0x0000191c addiu a2, zero, 8         |     a2 = 8;
    0x00001920 addiu a1, a1, 0x6060      |     a1 += str.overview;
    0x00001924 move a0, v0               |     a0 = v0;
    0x00001928 jalr t9                   |     t9 ();
    0x0000192c sltiu v0, v0, 1           |     v0 = (v0 < 1) ? 1 : 0;
    0x00001930 lw gp, 0x28(sp)           |     gp = *(var_28h);
    0x00001934 sw v0, 0xa8(sp)           |     *(var_a8h) = v0;
                                         | label_24:
    0x00001938 lw t9, -0x7f1c(gp)        |     t9 = sym.imp.CGI_cleanup;
    0x0000193c jalr t9                   |     t9 ();
    0x00001940 nop                       |     
    0x00001944 lw a0, 0x80(sp)           |     a0 = *(var_80h);
    0x00001948 addiu v0, zero, -1        |     v0 = -1;
    0x0000194c lw gp, 0x28(sp)           |     gp = *(var_28h);
                                         |     if (a0 == v0) {
    0x00001950 bne a0, v0, 0x1958        |         
    0x00001954 addiu a0, zero, 1         |         a0 = 1;
                                         |     }
    0x00001958 move v1, zero             |     v1 = 0;
                                         |     if (s2 != 0) {
    0x0000195c beqz s2, 0x1968           |         
    0x00001960 lw v0, 0x3c(sp)           |         v0 = *(var_3ch);
    0x00001964 sltiu v1, v0, 1           |         v1 = (v0 < 1) ? 1 : 0;
                                         |     }
    0x00001968 lw v0, (s0)               |     v0 = *(s0);
    0x0000196c lw t9, -0x7fc0(gp)        |     t9 = sym.get_cur_ptz_pos;
    0x00001970 sw v0, 0x1c(sp)           |     *(var_1ch) = v0;
    0x00001974 addiu v0, sp, 0x6c        |     v0 = sp + 0x6c;
    0x00001978 sw v0, 0x14(sp)           |     *(var_14h_2) = v0;
    0x0000197c addiu s3, sp, 0x60        |     s3 = sp + 0x60;
    0x00001980 addiu v0, sp, 0x68        |     v0 = sp + 0x68;
    0x00001984 addiu s4, sp, 0x5c        |     s4 = sp + 0x5c;
    0x00001988 sw v1, 0x18(sp)           |     *(var_18h_2) = v1;
    0x0000198c sw v0, 0x10(sp)           |     *(var_10h_2) = v0;
    0x00001990 addiu a3, sp, 0x64        |     a3 = sp + 0x64;
    0x00001994 move a2, s3               |     a2 = s3;
    0x00001998 move a1, s4               |     a1 = s4;
    0x0000199c bal 0x27c0                |     sym_get_cur_ptz_pos ();
    0x000019a0 sw v0, 0x54(sp)           |     *(var_54h) = v0;
    0x000019a4 lw gp, 0x28(sp)           |     gp = *(var_28h);
                                         |     if (v0 != 0) {
    0x000019a8 bnez v0, 0x1f44           |         goto label_56;
                                         |     }
    0x000019ac lw v1, 0xa8(sp)           |     v1 = *(var_a8h);
    0x000019b0 addiu v0, zero, 1         |     v0 = 1;
    0x000019b4 lw t9, -0x7fbc(gp)        |     t9 = sym.get_cur_imagesource_orientation;
                                         |     if (v1 == v0) {
    0x000019b8 beq v1, v0, 0x1f80        |         goto label_57;
                                         |     }
    0x000019bc addiu s5, zero, -0x5a     |     s5 = -0x5a;
                                         | label_17:
    0x000019c0 lw t9, -0x7ebc(gp)        |     t9 = sym.imp.ptzmath_context_create;
    0x000019c4 jalr t9                   |     t9 ();
    0x000019c8 nop                       |     
    0x000019cc move s1, v0               |     s1 = v0;
    0x000019d0 lw gp, 0x28(sp)           |     gp = *(var_28h);
                                         |     if (v0 == 0) {
    0x000019d4 beqz v0, 0x2000           |         goto label_58;
                                         |     }
    0x000019d8 lw t9, -0x7fb8(gp)        |     t9 = sym.compensate_ptz_pos;
                                         |     if (s2 != 0) {
    0x000019dc bnez s2, 0x1f28           |         goto label_59;
                                         |     }
                                         | label_16:
    0x000019e0 lw t9, -0x7fb4(gp)        |     t9 = sym.compensate_ptz_pos_orientation;
    0x000019e4 move a3, s5               |     a3 = s5;
    0x000019e8 move a2, s3               |     a2 = s3;
    0x000019ec move a1, s4               |     a1 = s4;
    0x000019f0 move a0, s1               |     a0 = s1;
    0x000019f4 bal 0x318c                |     sym_compensate_ptz_pos_orientation ();
    0x000019f8 lw gp, 0x28(sp)           |     gp = *(var_28h);
    0x000019fc lw a2, 0x94(sp)           |     a2 = *(var_94h);
    0x00001a00 lw a1, 0x90(sp)           |     a1 = *(var_90h);
    0x00001a04 lw t9, -0x7e94(gp)        |     t9 = sym.imp.ptzmath_set_pic_dim;
    0x00001a08 move a0, s1               |     a0 = s1;
    0x00001a0c jalr t9                   |     t9 ();
    0x00001a10 lw gp, 0x28(sp)           |     gp = *(var_28h);
    0x00001a14 lw a2, 0x60(sp)           |     a2 = *(var_60h);
    0x00001a18 lw a1, 0x5c(sp)           |     a1 = *(var_5ch);
    0x00001a1c lw t9, -0x7f48(gp)        |     t9 = sym.imp.ptzmath_set_pantilt_f;
    0x00001a20 move a0, s1               |     a0 = s1;
    0x00001a24 jalr t9                   |     t9 ();
    0x00001a28 lw v0, 0x3c(sp)           |     v0 = *(var_3ch);
    0x00001a2c lw gp, 0x28(sp)           |     gp = *(var_28h);
                                         |     if (v0 == 0) {
    0x00001a30 beqz v0, 0x1e94           |         goto label_60;
                                         |     }
    0x00001a34 lw t9, -0x7ecc(gp)        |     t9 = sym.imp.ptzmath_get_remote_fov;
    0x00001a38 move a0, s1               |     a0 = s1;
    0x00001a3c jalr t9                   |     t9 ();
    0x00001a40 lw gp, 0x28(sp)           |     gp = *(var_28h);
    0x00001a44 lw a1, 0x98(sp)           |     a1 = *(var_98h);
    0x00001a48 lw t9, -0x7f14(gp)        |     t9 = sym.imp.ptzmath_set_pic_rot;
    0x00001a4c move a0, s1               |     a0 = s1;
    0x00001a50 jalr t9                   |     t9 ();
    0x00001a54 lbu v0, 0x8c(sp)          |     v0 = *(var_8ch);
    0x00001a58 lw gp, 0x28(sp)           |     gp = *(var_28h);
                                         |     if (v0 != 0) {
    0x00001a5c bnez v0, 0x1f94           |         goto label_61;
                                         |     }
                                         | label_18:
    0x00001a60 lw s2, 0x80(sp)           |     s2 = *(var_80h);
    0x00001a64 addiu v0, zero, -1        |     v0 = -1;
    0x00001a68 lw v0, 0x48(sp)           |     v0 = *(var_48h);
                                         |     if (s2 == v0) {
    0x00001a6c beq s2, v0, 0x1cb4        |         goto label_62;
                                         |     }
                                         | label_15:
    0x00001a70 sw s2, 0x48(sp)           |     *(var_48h) = s2;
                                         | label_10:
    0x00001a74 lw v0, 0x3c(sp)           |     v0 = *(var_3ch);
    0x00001a78 lw s3, -0x7fdc(gp)        |     s3 = *((gp - 8183));
    0x00001a7c lw s6, -0x7fdc(gp)        |     s6 = *((gp - 8183));
    0x00001a80 lw s5, -0x7fdc(gp)        |     s5 = *((gp - 8183));
    0x00001a84 sltu s4, zero, v0         |     s4 = (0 < v0) ? 1 : 0;
    0x00001a88 addiu v0, s3, 0x24ac      |     v0 = s3 + 0x24ac;
    0x00001a8c sw v0, 0x38(sp)           |     *(var_38h) = v0;
    0x00001a90 addiu s6, s6, 0x61d8      |     s6 += 0x61d8;
    0x00001a94 addiu s5, s5, 0x5ccc      |     s5 += 0x5ccc;
    0x00001a98 b 0x1ac8                  |     
                                         |     while (v0 == 0) {
    0x00001a9c lw v0, 0x60(sp)           |         v0 = *(var_60h);
                                         |         if (v0 == 0) {
    0x00001aa0 beqz v0, 0x1e24           |             goto label_63;
                                         |         }
                                         | label_6:
    0x00001aa4 lw a0, -0x7fdc(gp)        |         a0 = *((gp - 8183));
                                         | label_7:
    0x00001aa8 lw t9, -0x7f40(gp)        |         t9 = sym.imp.puts;
    0x00001aac addiu a0, a0, 0x60b4      |         a0 += 0x60b4;
    0x00001ab0 jalr t9                   |         t9 ();
    0x00001ab4 lw v0, 0x48(sp)           |         v0 = *(var_48h);
    0x00001ab8 addiu s2, s2, 1           |         s2++;
    0x00001abc slt v0, v0, s2            |         v0 = (v0 < s2) ? 1 : 0;
    0x00001ac0 lw gp, 0x28(sp)           |         gp = *(var_28h);
                                         |         if (v0 != 0) {
    0x00001ac4 bnez v0, 0x1e5c           |             goto label_64;
                                         |         }
    0x00001ac8 lw v0, 0x3c(sp)           |         v0 = *(var_3ch);
    0x00001acc lw v0, 0x9c(sp)           |         v0 = *(var_9ch);
                                         |         if (v0 != 0) {
    0x00001ad0 beqz v0, 0x1af8           |             
    0x00001ad4 lw v0, 0x4c(sp)           |             v0 = *(var_4ch);
    0x00001ad8 lw t9, -0x7fc8(gp)        |             t9 = sym.get_cur_image_rotation;
                                         |             if (v0 == 0) {
    0x00001adc beqz v0, 0x1e00           |                 goto label_65;
                                         |             }
    0x00001ae0 lw t9, -0x7f14(gp)        |             t9 = sym.imp.ptzmath_set_pic_rot;
    0x00001ae4 lw a1, 0x98(sp)           |             a1 = *(var_98h);
    0x00001ae8 move a0, s1               |             a0 = s1;
    0x00001aec jalr t9                   |             t9 ();
    0x00001af0 lw gp, 0x28(sp)           |             gp = *(var_28h);
                                         | label_12:
    0x00001af4 lw v0, 0x9c(sp)           |             v0 = *(var_9ch);
                                         |         }
    0x00001af8 beql v0, zero, 0x1a9c     |         
                                         |     }
    0x00001afc lw v0, 0x84(sp)           |     v0 = *(var_84h);
                                         | label_13:
    0x00001b00 move fp, zero             |     fp = 0;
                                         |     if (v0 <= 0) {
    0x00001b04 blez v0, 0x1aa4           |         goto label_6;
                                         |     }
    0x00001b08 lw v0, -0x7fdc(gp)        |     v0 = *((gp - 8183));
    0x00001b0c sw v0, 0x40(sp)           |     *(var_40h) = v0;
    0x00001b10 lw v0, -0x7fdc(gp)        |     v0 = *((gp - 8183));
    0x00001b14 sw v0, 0x44(sp)           |     *(var_44h) = v0;
    0x00001b18 b 0x1b70                  |     goto label_66;
                                         | label_8:
    0x00001b1c lw v1, 0xa0(sp)           |     v1 = *(var_a0h);
    0x00001b20 sll v0, fp, 2             |     v0 = fp << 2;
    0x00001b24 addu v0, v1, v0           |     v0 = v1 + v0;
    0x00001b28 sw fp, 0x1c(sp)           |     *(var_1ch) = fp;
    0x00001b2c sw s2, 0x18(sp)           |     *(var_18h_2) = s2;
    0x00001b30 lw v1, 4(v0)              |     v1 = *((v0 + 1));
    0x00001b34 lw a1, 0xa8(sp)           |     a1 = *(var_a8h);
    0x00001b38 sw v1, 0x14(sp)           |     *(var_14h_2) = v1;
    0x00001b3c lw v0, (v0)               |     v0 = *(v0);
    0x00001b40 lw t9, 0x38(sp)           |     t9 = *(var_38h);
    0x00001b44 move a3, s4               |     a3 = s4;
    0x00001b48 sw v0, 0x10(sp)           |     *(var_10h_2) = v0;
    0x00001b4c move a2, s1               |     a2 = s1;
    0x00001b50 addiu a0, sp, 0x88        |     a0 = sp + 0x88;
    0x00001b54 jalr t9                   |     t9 ();
    0x00001b58 lw gp, 0x28(sp)           |     gp = *(var_28h);
                                         | label_9:
    0x00001b5c lw v0, 0x9c(sp)           |     v0 = *(var_9ch);
    0x00001b60 addiu fp, fp, 2           |     fp += 2;
    0x00001b64 slt v0, fp, v0            |     v0 = (fp < v0) ? 1 : 0;
                                         |     if (v0 == 0) {
    0x00001b68 beql v0, zero, 0x1aa8     |         goto label_7;
                                         |     }
    0x00001b6c lw a0, -0x7fdc(gp)        |     a0 = *((gp - 8183));
                                         | label_66:
    0x00001b70 lw v0, 0x84(sp)           |     v0 = *(var_84h);
    0x00001b74 addiu v1, zero, 1         |     v1 = 1;
                                         |     if (v0 == 0) {
    0x00001b78 beqz v0, 0x1b1c           |         goto label_8;
                                         |     }
    0x00001b7c sll v1, fp, 2             |     v1 = fp << 2;
                                         |     if (v0 != v1) {
    0x00001b80 bne v0, v1, 0x1fbc        |         goto label_67;
                                         |     }
    0x00001b84 lw a0, 0xa4(sp)           |     a0 = *(var_a4h);
    0x00001b88 addu v1, a0, v1           |     v1 = a0 + v1;
    0x00001b8c lw a0, 0xa8(sp)           |     a0 = *(var_a8h);
    0x00001b90 lw s3, (v1)               |     s3 = *(v1);
    0x00001b94 lw s7, 4(v1)              |     s7 = *((v1 + 1));
                                         |     if (a0 != 0) {
    0x00001b98 bnez a0, 0x1cc4           |         goto label_68;
                                         |     }
    0x00001b9c lw v0, 0x3c(sp)           |     v0 = *(var_3ch);
    0x00001ba0 lw t9, -0x7ee0(gp)        |     t9 = sym.imp.ptzmath_to_ptz_f;
                                         |     if (v0 == 0) {
    0x00001ba4 beqz v0, 0x1ddc           |         goto label_69;
                                         |     }
    0x00001ba8 lw t9, -0x7efc(gp)        |     t9 = sym.imp.ptzmath_get_remote_center;
    0x00001bac move a1, s2               |     a1 = s2;
    0x00001bb0 move a0, s1               |     a0 = s1;
    0x00001bb4 jalr t9                   |     t9 ();
    0x00001bb8 lw gp, 0x28(sp)           |     gp = *(var_28h);
    0x00001bbc move a3, s3               |     a3 = s3;
    0x00001bc0 addiu a2, sp, 0x7c        |     a2 = sp + 0x7c;
    0x00001bc4 lw t9, -0x7f68(gp)        |     t9 = sym.imp.ptzmath_to_remote_ptz;
    0x00001bc8 addiu a1, sp, 0x78        |     a1 = sp + 0x78;
    0x00001bcc move a0, s1               |     a0 = s1;
    0x00001bd0 sw s7, 0x10(sp)           |     *(var_10h_2) = s7;
    0x00001bd4 jalr t9                   |     t9 ();
    0x00001bd8 lw gp, 0x28(sp)           |     gp = *(var_28h);
    0x00001bdc lw a0, 0x78(sp)           |     a0 = *(var_78h);
    0x00001be0 lw v0, -0x7f2c(gp)        |     v0 = *((gp - 8139));
    0x00001be4 lw t9, -0x7fb0(gp)        |     t9 = *(gp);
    0x00001be8 lw s0, 0x40(v0)           |     s0 = *((v0 + 16));
    0x00001bec bal 0x3d30                |     fcn_00003d30 ();
    0x00001bf0 lw gp, 0x28(sp)           |     gp = *(var_28h);
    0x00001bf4 move a1, s0               |     a1 = s0;
    0x00001bf8 lw t9, -0x7fd8(gp)        |     t9 = *(gp);
    0x00001bfc move a0, v0               |     a0 = v0;
    0x00001c00 bal 0x3990                |     fcn_00003990 ();
    0x00001c04 lw gp, 0x28(sp)           |     gp = *(var_28h);
    0x00001c08 lw a0, 0x7c(sp)           |     a0 = *(var_7ch);
    0x00001c0c sw v0, 0x70(sp)           |     *(var_70h) = v0;
    0x00001c10 lw t9, -0x7fb0(gp)        |     t9 = *(gp);
    0x00001c14 sw v0, 0x30(sp)           |     *(var_30h) = v0;
    0x00001c18 bal 0x3d30                |     fcn_00003d30 ();
    0x00001c1c lw gp, 0x28(sp)           |     gp = *(var_28h);
    0x00001c20 move a1, s0               |     a1 = s0;
    0x00001c24 lw t9, -0x7fd8(gp)        |     t9 = *(gp);
    0x00001c28 move a0, v0               |     a0 = v0;
    0x00001c2c bal 0x3990                |     fcn_00003990 ();
    0x00001c30 lw gp, 0x28(sp)           |     gp = *(var_28h);
    0x00001c34 lw v1, 0x30(sp)           |     v1 = *(var_30h);
    0x00001c38 sw v0, 0x74(sp)           |     *(var_74h) = v0;
                                         | label_11:
    0x00001c3c lw t9, -0x7fac(gp)        |     t9 = *(gp);
    0x00001c40 move a0, v1               |     a0 = v1;
    0x00001c44 bal 0x54d0                |     fcn_000054d0 ();
    0x00001c48 lw a0, 0x88(sp)           |     a0 = *(var_88h);
    0x00001c4c lw gp, 0x28(sp)           |     gp = *(var_28h);
    0x00001c50 move t2, v0               |     t2 = v0;
                                         |     if (a0 != 0) {
    0x00001c54 bnez a0, 0x1d7c           |         goto label_70;
                                         |     }
                                         |     do {
    0x00001c58 lw t9, -0x7fac(gp)        |         t9 = *(gp);
    0x00001c5c lw a0, 0x74(sp)           |         a0 = *(var_74h);
    0x00001c60 sw v0, 0x30(sp)           |         *(var_30h) = v0;
    0x00001c64 sw v1, 0x34(sp)           |         *(var_34h) = v1;
    0x00001c68 bal 0x54d0                |         fcn_000054d0 ();
    0x00001c6c lw gp, 0x28(sp)           |         gp = *(var_28h);
    0x00001c70 lw t2, 0x30(sp)           |         t2 = *(var_30h);
    0x00001c74 lw t3, 0x34(sp)           |         t3 = *(var_34h);
    0x00001c78 lw a1, -0x7fdc(gp)        |         a1 = *((gp - 8183));
    0x00001c7c sw v0, 0x20(sp)           |         *(var_20h) = v0;
    0x00001c80 lw t9, -0x7eac(gp)        |         t9 = sym.imp.__printf_chk;
    0x00001c84 addiu v0, zero, 0x2c      |         v0 = 0x2c;
    0x00001c88 move a2, s5               |         a2 = s5;
    0x00001c8c sw v1, 0x24(sp)           |         *(var_24h) = v1;
    0x00001c90 sw v0, 0x18(sp)           |         *(var_18h_2) = v0;
    0x00001c94 sw t2, 0x10(sp)           |         *(var_10h_2) = t2;
    0x00001c98 sw t3, 0x14(sp)           |         *(var_14h_2) = t3;
                                         |         if (fp != 0) {
    0x00001c9c movz a2, s6, fp           |             a2 = s6;
                                         |         }
    0x00001ca0 addiu a1, a1, 0x60b8      |         a1 += str._s_f_c_f;
    0x00001ca4 addiu a0, zero, 1         |         a0 = 1;
    0x00001ca8 jalr t9                   |         t9 ();
    0x00001cac lw gp, 0x28(sp)           |         gp = *(var_28h);
    0x00001cb0 b 0x1b5c                  |         goto label_9;
                                         | label_62:
    0x00001cb4 lw t9, -0x7ec8(gp)        |         t9 = sym.imp.ptzmath_context_delete;
                                         |         if (v0 <= 0) {
    0x00001cb8 blez v0, 0x1e60           |             goto label_71;
                                         |         }
    0x00001cbc addiu s2, zero, 1         |         s2 = 1;
    0x00001cc0 b 0x1a74                  |         goto label_10;
                                         | label_68:
    0x00001cc4 lw a3, -0x7fdc(gp)        |         a3 = *((gp - 8183));
                                         |         if (a0 != v0) {
    0x00001cc8 bne a0, v0, 0x222c        |             goto label_72;
                                         |         }
    0x00001ccc lw t9, -0x7f0c(gp)        |         t9 = sym.imp.ptzmath_panops_context_create;
    0x00001cd0 jalr t9                   |         t9 ();
    0x00001cd4 nop                       |         
    0x00001cd8 lw gp, 0x28(sp)           |         gp = *(var_28h);
    0x00001cdc addiu a0, zero, 1         |         a0 = 1;
    0x00001ce0 lw t9, -0x7fc8(gp)        |         t9 = sym.get_cur_image_rotation;
    0x00001ce4 move s0, v0               |         s0 = v0;
    0x00001ce8 bal 0x2c90                |         sym_get_cur_image_rotation ();
    0x00001cec lw gp, 0x28(sp)           |         gp = *(var_28h);
    0x00001cf0 move a1, v0               |         a1 = v0;
    0x00001cf4 lw t9, -0x7ec0(gp)        |         t9 = sym.imp.ptz_set_panops_rotation;
    0x00001cf8 move a0, s0               |         a0 = s0;
    0x00001cfc jalr t9                   |         t9 ();
    0x00001d00 lw gp, 0x28(sp)           |         gp = *(var_28h);
    0x00001d04 lw t9, -0x7fc4(gp)        |         t9 = sym.get_cur_image_mirror;
    0x00001d08 addiu a0, zero, 1         |         a0 = 1;
    0x00001d0c bal 0x2d08                |         sym_get_cur_image_mirror ();
    0x00001d10 lw gp, 0x28(sp)           |         gp = *(var_28h);
    0x00001d14 move a1, v0               |         a1 = v0;
    0x00001d18 lw t9, -0x7eec(gp)        |         t9 = sym.imp.ptz_set_panops_mirror;
    0x00001d1c move a0, s0               |         a0 = s0;
    0x00001d20 jalr t9                   |         t9 ();
    0x00001d24 lw gp, 0x28(sp)           |         gp = *(var_28h);
    0x00001d28 addiu a3, sp, 0x74        |         a3 = sp + 0x74;
    0x00001d2c addiu a2, sp, 0x70        |         a2 = sp + 0x70;
    0x00001d30 lw t9, -0x7eb8(gp)        |         t9 = sym.imp.ptzmath_panops_to_ptz_f;
    0x00001d34 move a1, s1               |         a1 = s1;
    0x00001d38 move a0, s0               |         a0 = s0;
    0x00001d3c sw s7, 0x14(sp)           |         *(var_14h_2) = s7;
    0x00001d40 sw s3, 0x10(sp)           |         *(var_10h_2) = s3;
    0x00001d44 jalr t9                   |         t9 ();
    0x00001d48 lw gp, 0x28(sp)           |         gp = *(var_28h);
    0x00001d4c lw t9, -0x7f70(gp)        |         t9 = sym.imp.ptzmath_panops_context_delete;
    0x00001d50 move a0, s0               |         a0 = s0;
    0x00001d54 jalr t9                   |         t9 ();
    0x00001d58 lw gp, 0x28(sp)           |         gp = *(var_28h);
    0x00001d5c lw v1, 0x70(sp)           |         v1 = *(var_70h);
    0x00001d60 lw t9, -0x7fac(gp)        |         t9 = *(gp);
    0x00001d64 move a0, v1               |         a0 = v1;
    0x00001d68 bal 0x54d0                |         fcn_000054d0 ();
    0x00001d6c lw a0, 0x88(sp)           |         a0 = *(var_88h);
    0x00001d70 lw gp, 0x28(sp)           |         gp = *(var_28h);
    0x00001d74 move t2, v0               |         t2 = v0;
    0x00001d78 beqz a0, 0x1c58           |         
                                         |     } while (a0 == 0);
                                         | label_70:
    0x00001d7c lw v0, 0x40(sp)           |     v0 = *(var_40h);
    0x00001d80 lw t9, -0x7eac(gp)        |     t9 = sym.imp.__printf_chk;
    0x00001d84 sra s0, fp, 1             |     s0 = fp >> 1;
    0x00001d88 move a2, s0               |     a2 = s0;
    0x00001d8c addiu a1, v0, 0x60c4      |     a1 = v0 + str.____set_var_ptzcoord_pan_d__val__f_____;
    0x00001d90 sw t2, 0x10(sp)           |     *(var_10h_2) = t2;
    0x00001d94 addiu a0, zero, 1         |     a0 = 1;
    0x00001d98 sw v1, 0x14(sp)           |     *(var_14h_2) = v1;
    0x00001d9c jalr t9                   |     t9 ();
    0x00001da0 lw gp, 0x28(sp)           |     gp = *(var_28h);
    0x00001da4 lw t9, -0x7fac(gp)        |     t9 = *(gp);
    0x00001da8 lw a0, 0x74(sp)           |     a0 = *(var_74h);
    0x00001dac bal 0x54d0                |     fcn_000054d0 ();
    0x00001db0 lw gp, 0x28(sp)           |     gp = *(var_28h);
    0x00001db4 sw v0, 0x10(sp)           |     *(var_10h_2) = v0;
    0x00001db8 lw v0, 0x44(sp)           |     v0 = *(var_44h);
    0x00001dbc lw t9, -0x7eac(gp)        |     t9 = sym.imp.__printf_chk;
    0x00001dc0 sw v1, 0x14(sp)           |     *(var_14h_2) = v1;
    0x00001dc4 move a2, s0               |     a2 = s0;
    0x00001dc8 addiu a1, v0, 0x60f0      |     a1 = v0 + str.____set_var_ptzcoord_tilt_d__val__f_____;
    0x00001dcc addiu a0, zero, 1         |     a0 = 1;
    0x00001dd0 jalr t9                   |     t9 ();
    0x00001dd4 lw gp, 0x28(sp)           |     gp = *(var_28h);
    0x00001dd8 b 0x1b5c                  |     goto label_9;
                                         | label_69:
    0x00001ddc sw s7, 0x10(sp)           |     *(var_10h_2) = s7;
    0x00001de0 move a3, s3               |     a3 = s3;
    0x00001de4 addiu a2, sp, 0x74        |     a2 = sp + 0x74;
    0x00001de8 addiu a1, sp, 0x70        |     a1 = sp + 0x70;
    0x00001dec move a0, s1               |     a0 = s1;
    0x00001df0 jalr t9                   |     t9 ();
    0x00001df4 lw gp, 0x28(sp)           |     gp = *(var_28h);
    0x00001df8 lw v1, 0x70(sp)           |     v1 = *(var_70h);
    0x00001dfc b 0x1c3c                  |     goto label_11;
                                         | label_65:
    0x00001e00 move a0, s2               |     a0 = s2;
    0x00001e04 bal 0x2c90                |     sym_get_cur_image_rotation ();
    0x00001e08 lw gp, 0x28(sp)           |     gp = *(var_28h);
    0x00001e0c move a1, v0               |     a1 = v0;
    0x00001e10 lw t9, -0x7f14(gp)        |     t9 = sym.imp.ptzmath_set_pic_rot;
    0x00001e14 move a0, s1               |     a0 = s1;
    0x00001e18 jalr t9                   |     t9 ();
    0x00001e1c lw gp, 0x28(sp)           |     gp = *(var_28h);
    0x00001e20 b 0x1af4                  |     goto label_12;
                                         | label_63:
    0x00001e24 lw a1, 0xa8(sp)           |     a1 = *(var_a8h);
    0x00001e28 sw v0, 0x14(sp)           |     *(var_14h_2) = v0;
    0x00001e2c lw v0, 0x5c(sp)           |     v0 = *(var_5ch);
    0x00001e30 lw t9, 0x38(sp)           |     t9 = *(var_38h);
    0x00001e34 sw v0, 0x10(sp)           |     *(var_10h_2) = v0;
    0x00001e38 sw zero, 0x1c(sp)         |     *(var_1ch) = 0;
    0x00001e3c sw s2, 0x18(sp)           |     *(var_18h_2) = s2;
    0x00001e40 move a3, s4               |     a3 = s4;
    0x00001e44 move a2, s1               |     a2 = s1;
    0x00001e48 addiu a0, sp, 0x88        |     a0 = sp + 0x88;
    0x00001e4c jalr t9                   |     t9 ();
    0x00001e50 lw gp, 0x28(sp)           |     gp = *(var_28h);
    0x00001e54 lw v0, 0x9c(sp)           |     v0 = *(var_9ch);
    0x00001e58 b 0x1b00                  |     goto label_13;
                                         | label_64:
    0x00001e5c lw t9, -0x7ec8(gp)        |     t9 = sym.imp.ptzmath_context_delete;
                                         | label_71:
    0x00001e60 move a0, s1               |     a0 = s1;
    0x00001e64 jalr t9                   |     t9 ();
    0x00001e68 lw gp, 0x28(sp)           |     gp = *(var_28h);
    0x00001e6c lw a0, 0xa0(sp)           |     a0 = *(var_a0h);
    0x00001e70 lw t9, -0x7ed8(gp)        |     t9 = sym.imp.free;
                                         |     do {
    0x00001e74 jalr t9                   |         t9 ();
    0x00001e78 nop                       |         
    0x00001e7c lw gp, 0x28(sp)           |         gp = *(var_28h);
    0x00001e80 lw t9, -0x7ed8(gp)        |         t9 = sym.imp.free;
    0x00001e84 lw a0, 0xa4(sp)           |         a0 = *(var_a4h);
    0x00001e88 jalr t9                   |         t9 ();
    0x00001e8c lw gp, 0x28(sp)           |         gp = *(var_28h);
    0x00001e90 b 0x15a8                  |         goto label_14;
                                         | label_60:
    0x00001e94 lw t9, -0x7f6c(gp)        |         t9 = sym.imp.ptzmath_set_horiz_fov_f;
    0x00001e98 lw a1, 0x64(sp)           |         a1 = *(var_64h);
    0x00001e9c move a0, s1               |         a0 = s1;
    0x00001ea0 jalr t9                   |         t9 ();
    0x00001ea4 lw gp, 0x28(sp)           |         gp = *(var_28h);
    0x00001ea8 lw s2, 0x68(sp)           |         s2 = *(var_68h);
    0x00001eac move a1, zero             |         a1 = 0;
    0x00001eb0 lw t9, -0x7fd4(gp)        |         t9 = *(gp);
    0x00001eb4 move a0, s2               |         a0 = s2;
    0x00001eb8 bal 0x3870                |         fcn_00003870 ();
    0x00001ebc lw gp, 0x28(sp)           |         gp = *(var_28h);
                                         |         if (v0 > 0) {
    0x00001ec0 blez v0, 0x1ed8           |             
    0x00001ec4 lw t9, -0x7f4c(gp)        |             t9 = sym.imp.ptzmath_set_vert_fov_f;
    0x00001ec8 move a1, s2               |             a1 = s2;
    0x00001ecc move a0, s1               |             a0 = s1;
    0x00001ed0 jalr t9                   |             t9 ();
    0x00001ed4 lw gp, 0x28(sp)           |             gp = *(var_28h);
                                         |         }
    0x00001ed8 lw t9, -0x7f14(gp)        |         t9 = sym.imp.ptzmath_set_pic_rot;
    0x00001edc lw a1, 0x98(sp)           |         a1 = *(var_98h);
    0x00001ee0 move a0, s1               |         a0 = s1;
    0x00001ee4 jalr t9                   |         t9 ();
    0x00001ee8 lbu v0, 0x8c(sp)          |         v0 = *(var_8ch);
    0x00001eec lw gp, 0x28(sp)           |         gp = *(var_28h);
                                         |         if (v0 == 0) {
    0x00001ef0 bnez v0, 0x1efc           |             
    0x00001ef4 lw s2, 0x80(sp)           |             s2 = *(var_80h);
    0x00001ef8 b 0x1a70                  |             goto label_15;
                                         |         }
    0x00001efc lw a3, -0x7fdc(gp)        |         a3 = *((gp - 8183));
    0x00001f00 lw a2, -0x7fdc(gp)        |         a2 = *((gp - 8183));
    0x00001f04 lw t9, -0x7e9c(gp)        |         t9 = sym.imp.__fprintf_chk
    0x00001f08 lw a0, (s0)               |         a0 = *(s0);
    0x00001f0c addiu a3, a3, 0x611c      |         a3 += str.200_OK;
    0x00001f10 addiu a2, a2, 0x5c44      |         a2 += str.Status:__s_r_nCache_Control:_no_cache_r_nPragma:_no_cache_r_nExpires:_Thu__01_Dec_1994_16:00:00_GMT_r_nContent_Type:_text_plain_r_n_r_n;
    0x00001f14 addiu a1, zero, 1         |         a1 = 1;
    0x00001f18 jalr t9                   |         t9 ();
    0x00001f1c lw gp, 0x28(sp)           |         gp = *(var_28h);
    0x00001f20 lw s2, 0x80(sp)           |         s2 = *(var_80h);
    0x00001f24 b 0x1a70                  |         goto label_15;
                                         | label_59:
    0x00001f28 lw a3, 0x6c(sp)           |         a3 = *(var_6ch);
    0x00001f2c move a2, s3               |         a2 = s3;
    0x00001f30 move a1, s4               |         a1 = s4;
    0x00001f34 move a0, v0               |         a0 = v0;
    0x00001f38 bal 0x2f24                |         sym_compensate_ptz_pos ();
    0x00001f3c lw gp, 0x28(sp)           |         gp = *(var_28h);
    0x00001f40 b 0x19e0                  |         goto label_16;
                                         | label_56:
    0x00001f44 lw a3, -0x7fdc(gp)        |         a3 = *((gp - 8183));
    0x00001f48 lbu a1, 0x8c(sp)          |         a1 = *(var_8ch);
    0x00001f4c lw a0, (s0)               |         a0 = *(s0);
    0x00001f50 addiu a3, a3, 0x606c      |         a3 += str.Could_not_fetch_current_ptz_position.;
                                         | label_19:
    0x00001f54 lw a2, -0x7fdc(gp)        |         a2 = *((gp - 8183));
    0x00001f58 lw t9, -0x7fdc(gp)        |         t9 = *((gp - 8183));
    0x00001f5c addiu t9, t9, 0x2400      |         t9 += fcn.00002400;
    0x00001f60 addiu a2, a2, 0x5de8      |         a2 += str.500_Internal_Server_Error;
    0x00001f64 bal 0x2400                |         fcn_00002400 ();
    0x00001f68 lw gp, 0x28(sp)           |         gp = *(var_28h);
    0x00001f6c addiu v0, zero, 1         |         v0 = 1;
    0x00001f70 lw a0, 0xa0(sp)           |         a0 = *(var_a0h);
    0x00001f74 lw t9, -0x7ed8(gp)        |         t9 = sym.imp.free;
    0x00001f78 sw v0, 0x54(sp)           |         *(var_54h) = v0;
    0x00001f7c b 0x1e74                  |         
                                         |     } while (1);
                                         | label_57:
    0x00001f80 bal 0x2c1c                |     sym_get_cur_imagesource_orientation ();
    0x00001f84 nop                       |     
    0x00001f88 move s5, v0               |     s5 = v0;
    0x00001f8c lw gp, 0x28(sp)           |     gp = *(var_28h);
    0x00001f90 b 0x19c0                  |     goto label_17;
                                         | label_61:
    0x00001f94 lw a3, -0x7fdc(gp)        |     a3 = *((gp - 8183));
    0x00001f98 lw a2, -0x7fdc(gp)        |     a2 = *((gp - 8183));
    0x00001f9c lw t9, -0x7e9c(gp)        |     t9 = sym.imp.__fprintf_chk
    0x00001fa0 lw a0, (s0)               |     a0 = *(s0);
    0x00001fa4 addiu a3, a3, 0x611c      |     a3 += str.200_OK;
    0x00001fa8 addiu a2, a2, 0x5c44      |     a2 += str.Status:__s_r_nCache_Control:_no_cache_r_nPragma:_no_cache_r_nExpires:_Thu__01_Dec_1994_16:00:00_GMT_r_nContent_Type:_text_plain_r_n_r_n;
    0x00001fac addiu a1, zero, 1         |     a1 = 1;
    0x00001fb0 jalr t9                   |     t9 ();
    0x00001fb4 lw gp, 0x28(sp)           |     gp = *(var_28h);
    0x00001fb8 b 0x1a60                  |     goto label_18;
                                         | label_67:
    0x00001fbc lw a3, -0x7fdc(gp)        |     a3 = *((gp - 8183));
    0x00001fc0 lw t9, -0x7ed0(gp)        |     t9 = sym.imp.__assert_fail;
    0x00001fc4 addiu a3, a3, 0x6170      |     a3 += str.main;
    0x00001fc8 addiu a2, zero, 0x30b     |     a2 = 0x30b;
                                         | label_25:
    0x00001fcc lw a1, -0x7fdc(gp)        |     a1 = *((gp - 8183));
    0x00001fd0 lw a0, -0x7fdc(gp)        |     a0 = *((gp - 8183));
    0x00001fd4 addiu a1, a1, 0x5cd0      |     a1 += str.ptzcoordcalc.c;
    0x00001fd8 addiu a0, a0, 0x5ce0      |     a0 += str.false;
    0x00001fdc jalr t9                   |     t9 ();
                                         | label_38:
    0x00001fe0 lw a3, -0x7fdc(gp)        |     a3 = *((gp - 8183));
    0x00001fe4 lbu a1, 0x8c(sp)          |     a1 = *(var_8ch);
    0x00001fe8 addiu a3, a3, 0x5ee4      |     a3 += str.Illegal_action_specified.;
    0x00001fec b 0x1578                  |     goto label_2;
                                         | label_33:
    0x00001ff0 lw a3, -0x7fdc(gp)        |     a3 = *((gp - 8183));
    0x00001ff4 lbu a1, 0x8c(sp)          |     a1 = *(var_8ch);
    0x00001ff8 addiu a3, a3, 0x5eb4      |     a3 += str.No_action_specified.;
    0x00001ffc b 0x1578                  |     goto label_2;
                                         | label_58:
    0x00002000 lw a3, -0x7fdc(gp)        |     a3 = *((gp - 8183));
    0x00002004 lbu a1, 0x8c(sp)          |     a1 = *(var_8ch);
    0x00002008 lw a0, (s0)               |     a0 = *(s0);
    0x0000200c addiu a3, a3, 0x6094      |     a3 += str.Could_not_initialize_ptzmath.;
    0x00002010 b 0x1f54                  |     goto label_19;
                                         | label_42:
    0x00002014 addiu v0, zero, 1         |     v0 = 1;
    0x00002018 sw v0, 0x80(sp)           |     *(var_80h) = v0;
    0x0000201c b 0x1744                  |     goto label_4;
                                         | label_46:
    0x00002020 lw a3, -0x7fdc(gp)        |     a3 = *((gp - 8183));
                                         |     if (v0 != 0) {
    0x00002024 bnez v0, 0x223c           |         goto label_73;
                                         |     }
    0x00002028 sw zero, 0x9c(sp)         |     *(var_9ch) = 0;
    0x0000202c b 0x18fc                  |     goto label_20;
                                         | label_44:
    0x00002030 lw a3, -0x7fdc(gp)        |     a3 = *((gp - 8183));
                                         | label_45:
    0x00002034 lbu a1, 0x8c(sp)          |     a1 = *(var_8ch);
    0x00002038 addiu a3, a3, 0x5fc4      |     a3 += str.Error_parsing_camera_number.;
    0x0000203c b 0x1578                  |     goto label_2;
                                         | label_54:
    0x00002040 lw t9, -0x7ed8(gp)        |     t9 = sym.imp.free;
    0x00002044 lw a0, 0xa4(sp)           |     a0 = *(var_a4h);
    0x00002048 jalr t9                   |     t9 ();
    0x0000204c lw gp, 0x28(sp)           |     gp = *(var_28h);
                                         | label_53:
    0x00002050 lw a3, -0x7fdc(gp)        |     a3 = *((gp - 8183));
    0x00002054 lbu a1, 0x8c(sp)          |     a1 = *(var_8ch);
    0x00002058 addiu a3, a3, 0x6034      |     a3 += str.Error_parsing_pixel_coordinates.;
    0x0000205c b 0x1578                  |     goto label_2;
                                         | label_47:
    0x00002060 lw t9, -0x7ef4(gp)        |     t9 = sym.imp.strlen;
    0x00002064 move a0, fp               |     a0 = fp;
    0x00002068 jalr t9                   |     t9 ();
    0x0000206c lw gp, 0x28(sp)           |     gp = *(var_28h);
    0x00002070 move a0, zero             |     a0 = 0;
    0x00002074 addiu a1, zero, 1         |     a1 = 1;
    0x00002078 addiu a2, zero, 0x3a      |     a2 = 0x3a;
                                         |     do {
                                         | label_21:
    0x0000207c slt a3, a0, v0            |         a3 = (a0 < v0) ? 1 : 0;
    0x00002080 addu a3, fp, a0           |         a3 = fp + a0;
                                         |         if (a3 == 0) {
    0x00002084 beqz a3, 0x20a4           |             goto label_74;
                                         |         }
    0x00002088 lb a3, (a3)               |         a3 = *(a3);
                                         |         if (a3 == a2) {
    0x0000208c beql a3, a2, 0x209c       |             goto label_75;
                                         |         }
    0x00002090 addiu a1, a1, 1           |         a1++;
    0x00002094 addiu a0, a0, 1           |         a0++;
    0x00002098 b 0x207c                  |         
                                         |     } while (1);
                                         | label_75:
    0x0000209c addiu a0, a0, 1           |     a0++;
    0x000020a0 b 0x207c                  |     goto label_21;
                                         | label_74:
    0x000020a4 move s4, zero             |     s4 = 0;
    0x000020a8 move a0, zero             |     a0 = 0;
    0x000020ac addiu a2, zero, 0x2c      |     a2 = 0x2c;
                                         |     do {
                                         | label_22:
    0x000020b0 slt a3, a0, v0            |         a3 = (a0 < v0) ? 1 : 0;
    0x000020b4 addu a3, fp, a0           |         a3 = fp + a0;
                                         |         if (a3 == 0) {
    0x000020b8 beqz a3, 0x20d8           |             goto label_76;
                                         |         }
    0x000020bc lb a3, (a3)               |         a3 = *(a3);
                                         |         if (a3 == a2) {
    0x000020c0 beql a3, a2, 0x20d0       |             goto label_77;
                                         |         }
    0x000020c4 addiu s4, s4, 1           |         s4++;
    0x000020c8 addiu a0, a0, 1           |         a0++;
    0x000020cc b 0x20b0                  |         
                                         |     } while (1);
                                         | label_77:
    0x000020d0 addiu a0, a0, 1           |     a0++;
    0x000020d4 b 0x20b0                  |     goto label_22;
                                         | label_76:
    0x000020d8 lw t9, -0x7f18(gp)        |     t9 = sym.imp.malloc;
                                         |     if (s4 != a1) {
    0x000020dc bne s4, a1, 0x2258        |         goto label_78;
                                         |     }
    0x000020e0 sll v0, s4, 1             |     v0 = s4 << 1;
    0x000020e4 sw v0, 0x9c(sp)           |     *(var_9ch) = v0;
    0x000020e8 sll a0, s4, 3             |     a0 = s4 << 3;
    0x000020ec jalr t9                   |     t9 ();
    0x000020f0 lw gp, 0x28(sp)           |     gp = *(var_28h);
    0x000020f4 sw v0, 0xa0(sp)           |     *(var_a0h) = v0;
    0x000020f8 lw s6, -0x7fdc(gp)        |     s6 = *((gp - 8183));
    0x000020fc addiu s6, s6, 0x600c      |     s6 += 0x600c;
                                         |     do {
    0x00002100 lw a2, 0xa0(sp)           |         a2 = *(var_a0h);
    0x00002104 lw t9, -0x7ea4(gp)        |         t9 = sym.imp.__isoc99_sscanf;
    0x00002108 sll s5, s1, 3             |         s5 = s1 << 3;
    0x0000210c addu a2, a2, s5           |         a2 += s5;
    0x00002110 move a1, s6               |         a1 = s6;
    0x00002114 move a0, fp               |         a0 = fp;
    0x00002118 jalr t9                   |         t9 ();
    0x0000211c addiu v1, zero, 1         |         v1 = 1;
    0x00002120 lw gp, 0x28(sp)           |         gp = *(var_28h);
                                         |         if (v0 != v1) {
    0x00002124 bne v0, v1, 0x2248        |             goto label_79;
                                         |         }
    0x00002128 lw t9, -0x7eb0(gp)        |         t9 = sym.imp.strchr;
    0x0000212c addiu a1, zero, 0x2c      |         a1 = 0x2c;
    0x00002130 move a0, fp               |         a0 = fp;
    0x00002134 jalr t9                   |         t9 ();
    0x00002138 lw gp, 0x28(sp)           |         gp = *(var_28h);
    0x0000213c lw a2, 0xa0(sp)           |         a2 = *(var_a0h);
    0x00002140 addiu s7, v0, 1           |         s7 = v0 + 1;
    0x00002144 lw t9, -0x7ea4(gp)        |         t9 = sym.imp.__isoc99_sscanf;
    0x00002148 addiu s5, s5, 4           |         s5 += 4;
    0x0000214c addu a2, a2, s5           |         a2 += s5;
    0x00002150 move a1, s6               |         a1 = s6;
    0x00002154 move a0, s7               |         a0 = s7;
    0x00002158 jalr t9                   |         t9 ();
    0x0000215c addiu v1, zero, 1         |         v1 = 1;
    0x00002160 lw gp, 0x28(sp)           |         gp = *(var_28h);
                                         |         if (v0 != v1) {
    0x00002164 bne v0, v1, 0x2248        |             goto label_79;
                                         |         }
    0x00002168 lw t9, -0x7eb0(gp)        |         t9 = sym.imp.strchr;
    0x0000216c move a0, s7               |         a0 = s7;
    0x00002170 addiu a1, zero, 0x3a      |         a1 = 0x3a;
    0x00002174 addiu s1, s1, 1           |         s1++;
    0x00002178 jalr t9                   |         t9 ();
    0x0000217c slt a0, s1, s4            |         a0 = (s1 < s4) ? 1 : 0;
    0x00002180 lw gp, 0x28(sp)           |         gp = *(var_28h);
    0x00002184 addiu fp, v0, 1           |         fp = v0 + 1;
    0x00002188 bnez a0, 0x2100           |         
                                         |     } while (a0 != 0);
    0x0000218c lw a0, -0x7fdc(gp)        |     a0 = *((gp - 8183));
    0x00002190 b 0x1900                  |     goto label_23;
                                         | label_55:
    0x00002194 lw t9, -0x7fa8(gp)        |     t9 = sym.get_cur_ptz_mode;
    0x00002198 bal 0x2e7c                |     sym_get_cur_ptz_mode ();
    0x0000219c nop                       |     
    0x000021a0 sw v0, 0xa8(sp)           |     *(var_a8h) = v0;
    0x000021a4 lw gp, 0x28(sp)           |     gp = *(var_28h);
    0x000021a8 b 0x1938                  |     goto label_24;
                                         | label_26:
    0x000021ac lw a0, -0x7fdc(gp)        |     a0 = *((gp - 8183));
    0x000021b0 lw t9, -0x7f10(gp)        |     t9 = sym.imp.fwrite;
    0x000021b4 move a3, s2               |     a3 = s2;
    0x000021b8 addiu a2, zero, 0x23      |     a2 = 0x23;
    0x000021bc addiu a1, zero, 1         |     a1 = 1;
    0x000021c0 addiu a0, a0, 0x5d70      |     a0 += str.Error_parsing_configuration_file._r_n;
    0x000021c4 jalr t9                   |     t9 ();
    0x000021c8 lw gp, 0x28(sp)           |     gp = *(var_28h);
    0x000021cc lw t9, -0x7f50(gp)        |     t9 = sym.imp.g_key_file_free;
    0x000021d0 move a0, s1               |     a0 = s1;
    0x000021d4 jalr t9                   |     t9 ();
    0x000021d8 lw gp, 0x28(sp)           |     gp = *(var_28h);
    0x000021dc addiu v0, zero, 1         |     v0 = 1;
    0x000021e0 lw a0, 0x80(sp)           |     a0 = *(var_80h);
    0x000021e4 lw t9, -0x7f5c(gp)        |     t9 = sym.imp.g_error_free;
    0x000021e8 sw v0, 0x54(sp)           |     *(var_54h) = v0;
    0x000021ec jalr t9                   |     t9 ();
    0x000021f0 lw gp, 0x28(sp)           |     gp = *(var_28h);
    0x000021f4 b 0x15a8                  |     goto label_14;
                                         | label_27:
    0x000021f8 lw a3, -0x7fdc(gp)        |     a3 = *((gp - 8183));
    0x000021fc lw a2, -0x7fdc(gp)        |     a2 = *((gp - 8183));
    0x00002200 lw t9, -0x7fdc(gp)        |     t9 = *((gp - 8183));
    0x00002204 lbu a1, 0x8c(sp)          |     a1 = *(var_8ch);
    0x00002208 addiu a3, a3, 0x5dc8      |     a3 += str.Error_parsing_request_string.;
    0x0000220c addiu a2, a2, 0x5de8      |     a2 += str.500_Internal_Server_Error;
    0x00002210 addiu t9, t9, 0x2400      |     t9 += fcn.00002400;
    0x00002214 move a0, s3               |     a0 = s3;
    0x00002218 bal 0x2400                |     fcn_00002400 ();
    0x0000221c addiu v0, zero, 1         |     v0 = 1;
    0x00002220 lw gp, 0x28(sp)           |     gp = *(var_28h);
    0x00002224 sw v0, 0x54(sp)           |     *(var_54h) = v0;
    0x00002228 b 0x15a8                  |     goto label_14;
                                         | label_72:
    0x0000222c lw t9, -0x7ed0(gp)        |     t9 = sym.imp.__assert_fail;
    0x00002230 addiu a3, a3, 0x6130      |     a3 += str.calculate_getpantilt;
    0x00002234 addiu a2, zero, 0x285     |     a2 = 0x285;
    0x00002238 b 0x1fcc                  |     goto label_25;
                                         | label_73:
    0x0000223c lbu a1, 0x8c(sp)          |     a1 = *(var_8ch);
    0x00002240 addiu a3, a3, 0x5ff0      |     a3 += str.No_coordinates_specified.;
    0x00002244 b 0x1578                  |     goto label_2;
                                         | label_79:
    0x00002248 lw t9, -0x7ed8(gp)        |     t9 = sym.imp.free;
    0x0000224c lw a0, 0xa0(sp)           |     a0 = *(var_a0h);
    0x00002250 jalr t9                   |     t9 ();
    0x00002254 lw gp, 0x28(sp)           |     gp = *(var_28h);
                                         | label_78:
    0x00002258 lw a3, -0x7fdc(gp)        |     a3 = *((gp - 8183));
    0x0000225c lbu a1, 0x8c(sp)          |     a1 = *(var_8ch);
    0x00002260 addiu a3, a3, 0x6010      |     a3 += str.Error_parsing_pan_tilt_coordinates.;
    0x00002264 b 0x1578                  |     goto label_2;
                                         | label_41:
    0x00002268 lbu a1, 0x8c(sp)          |     a1 = *(var_8ch);
    0x0000226c addiu a3, a3, 0x5f8c      |     a3 += str.Illegal_image_rotation_specified.;
    0x00002270 b 0x1578                  |     goto label_2;
                                         | label_48:
    0x00002274 lw t9, -0x7ed0(gp)        |     t9 = sym.imp.__assert_fail;
    0x00002278 addiu a3, a3, 0x615c      |     a3 += str.get_req_parameters;
    0x0000227c addiu a2, zero, 0x15f     |     a2 = 0x15f;
    0x00002280 b 0x1fcc                  |     goto label_25;
                                         | label_37:
    0x00002284 lw t9, -0x7f24(gp)        |     t9 = sym.imp.__stack_chk_fail;
    0x00002288 jalr t9                   |     t9 ();
    0x0000228c nop                       |     
                                         | }
    ; assembly                           | /* r2dec pseudo code output */
                                         | /* /logs/firmware/unblob_extracted/firmware_extract/4325012-58052244.squashfs_v4_le_extract/usr/html/axis-cgi/ptzcoordcalc.cgi @ 0x27c0 */
                                         | #include <stdint.h>
                                         |  
    ; (fcn) sym.get_cur_ptz_pos ()       | void get_cur_ptz_pos () {
    0x000027c0 lui gp, 2                 |     
    0x000027c4 addiu gp, gp, -0x37b0     |     
    0x000027c8 addu gp, gp, t9           |     gp += t9;
    0x000027cc addiu sp, sp, -0xe8       |     
    0x000027d0 lw v1, -0x7fdc(gp)        |     v1 = *((gp - 8183));
    0x000027d4 sw s0, 0xc0(sp)           |     *(var_c0h) = s0;
    0x000027d8 lw s0, -0x7f04(gp)        |     s0 = *((gp - 8129));
    0x000027dc addiu v0, v1, 0x627c      |     v0 = v1 + str.PTZ_POSITION_ISXX;
    0x000027e0 lw t0, 0x104(sp)          |     t0 = *(arg_104h);
    0x000027e4 lw t5, 0x627c(v1)         |     t5 = *(v1);
    0x000027e8 lw t4, 4(v0)              |     t4 = *((v0 + 1));
    0x000027ec lhu v1, 0x10(v0)          |     v1 = *((v0 + 8));
    0x000027f0 lw t6, (s0)               |     t6 = *(s0);
    0x000027f4 lw t3, 8(v0)              |     t3 = *((v0 + 2));
    0x000027f8 sw gp, 0x18(sp)           |     *(var_18h) = gp;
    0x000027fc sw t0, 0x24(sp)           |     *(var_24h) = t0;
    0x00002800 move t0, zero             |     t0 = 0;
    0x00002804 lw t2, 0xc(v0)            |     t2 = *((v0 + 3));
    0x00002808 sw s7, 0xdc(sp)           |     *(var_dch) = s7;
    0x0000280c sw s5, 0xd4(sp)           |     *(var_d4h) = s5;
    0x00002810 sw s4, 0xd0(sp)           |     *(var_d0h) = s4;
    0x00002814 sw s3, 0xcc(sp)           |     *(var_cch) = s3;
    0x00002818 sw ra, 0xe4(sp)           |     *(var_e4h) = ra;
    0x0000281c sw fp, 0xe0(sp)           |     *(var_e0h) = fp;
    0x00002820 sw s6, 0xd8(sp)           |     *(var_d8h) = s6;
    0x00002824 sw s2, 0xc8(sp)           |     *(var_c8h) = s2;
    0x00002828 sw s1, 0xc4(sp)           |     *(var_c4h) = s1;
    0x0000282c lw s5, 0xf8(sp)           |     s5 = *(arg_f8h);
    0x00002830 lw s4, 0xfc(sp)           |     s4 = *(arg_fch);
    0x00002834 lbu s3, 0x100(sp)         |     s3 = *(arg_100h);
    0x00002838 sw t6, 0xbc(sp)           |     *(var_bch) = t6;
    0x0000283c sw t0, 0x28(sp)           |     *(var_28h) = t0;
    0x00002840 sw t0, 0x2c(sp)           |     *(var_2ch) = t0;
    0x00002844 sw t0, 0x30(sp)           |     *(var_30h) = t0;
    0x00002848 sw t0, 0x34(sp)           |     *(var_34h) = t0;
    0x0000284c sw t0, 0x38(sp)           |     *(var_38h) = t0;
    0x00002850 sw t5, 0xa8(sp)           |     *(var_a8h) = t5;
    0x00002854 sw t4, 0xac(sp)           |     *(var_ach) = t4;
    0x00002858 sw t3, 0xb0(sp)           |     *(var_b0h) = t3;
    0x0000285c sh v1, 0xb8(sp)           |     *(var_b8h) = v1;
    0x00002860 lw v1, -0x7fdc(gp)        |     v1 = *((gp - 8183));
    0x00002864 addiu v0, zero, 4         |     v0 = 4;
    0x00002868 addiu v1, v1, 0x618c      |     v1 += 0x618c;
    0x0000286c sw v1, 0x40(sp)           |     *(var_40h) = v1;
    0x00002870 addiu v1, sp, 0x28        |     v1 = sp + 0x28;
    0x00002874 sw v1, 0x48(sp)           |     *(var_48h) = v1;
    0x00002878 lw v1, -0x7fdc(gp)        |     v1 = *((gp - 8183));
    0x0000287c sw v0, 0x44(sp)           |     *(var_44h) = v0;
    0x00002880 addiu v1, v1, 0x6194      |     v1 += str.TILT_DEG;
    0x00002884 sw v1, 0x50(sp)           |     *(var_50h) = v1;
    0x00002888 addiu v1, sp, 0x2c        |     v1 = sp + 0x2c;
    0x0000288c sw v1, 0x58(sp)           |     *(var_58h) = v1;
    0x00002890 lw v1, -0x7fdc(gp)        |     v1 = *((gp - 8183));
    0x00002894 sw v0, 0x54(sp)           |     *(var_54h) = v0;
    0x00002898 addiu v1, v1, 0x61a0      |     v1 += str.ZOOM_MAG;
    0x0000289c sw v1, 0x60(sp)           |     *(var_60h) = v1;
    0x000028a0 addiu v1, sp, 0x30        |     v1 = sp + 0x30;
    0x000028a4 sw v1, 0x68(sp)           |     *(var_68h) = v1;
    0x000028a8 lw v1, -0x7fdc(gp)        |     v1 = *((gp - 8183));
    0x000028ac sw v0, 0x64(sp)           |     *(var_64h) = v0;
    0x000028b0 sw v0, 0x74(sp)           |     *(var_74h) = v0;
    0x000028b4 sw v0, 0x84(sp)           |     *(var_84h) = v0;
    0x000028b8 addiu v0, sp, 0x38        |     v0 = sp + 0x38;
    0x000028bc addiu v1, v1, 0x61ac      |     v1 += str.ZOOM_HFOV;
    0x000028c0 sw v0, 0x88(sp)           |     *(var_88h) = v0;
    0x000028c4 addiu v0, sp, 0x40        |     v0 = sp + 0x40;
    0x000028c8 sw v1, 0x70(sp)           |     *(var_70h) = v1;
    0x000028cc sw v0, 0x90(sp)           |     *(var_90h) = v0;
    0x000028d0 addiu v1, sp, 0x34        |     v1 = sp + 0x34;
    0x000028d4 addiu v0, sp, 0x50        |     v0 = sp + 0x50;
    0x000028d8 sw v1, 0x78(sp)           |     *(var_78h) = v1;
    0x000028dc sw v0, 0x94(sp)           |     *(var_94h) = v0;
    0x000028e0 lw v1, -0x7fdc(gp)        |     v1 = *((gp - 8183));
    0x000028e4 addiu v0, sp, 0x70        |     v0 = sp + 0x70;
    0x000028e8 move s7, a0               |     s7 = a0;
    0x000028ec sw v0, 0x98(sp)           |     *(var_98h) = v0;
    0x000028f0 addiu a0, a0, -1          |     a0 += -1;
    0x000028f4 addiu v0, sp, 0x80        |     v0 = sp + 0x80;
    0x000028f8 addiu v1, v1, 0x61b8      |     v1 += str.ZOOM_VFOV;
    0x000028fc sw v0, 0x9c(sp)           |     *(var_9ch) = v0;
    0x00002900 sltiu t1, a0, 0x63        |     t1 = (a0 < 0x63) ? 1 : 0;
    0x00002904 addiu v0, sp, 0x60        |     v0 = sp + 0x60;
    0x00002908 sw t2, 0xb4(sp)           |     *(var_b4h) = t2;
    0x0000290c sw zero, 0x4c(sp)         |     *(var_4ch) = 0;
    0x00002910 sw zero, 0x5c(sp)         |     *(var_5ch) = 0;
    0x00002914 sw zero, 0x6c(sp)         |     *(var_6ch) = 0;
    0x00002918 sw zero, 0x7c(sp)         |     *(var_7ch) = 0;
    0x0000291c sw zero, 0x8c(sp)         |     *(var_8ch) = 0;
    0x00002920 sw v1, 0x80(sp)           |     *(var_80h) = v1;
    0x00002924 sw v0, 0xa0(sp)           |     *(var_a0h) = v0;
    0x00002928 sw zero, 0xa4(sp)         |     *(var_a4h) = 0;
                                         |     if (t1 == 0) {
    0x0000292c beqz t1, 0x2b98           |         goto label_4;
                                         |     }
    0x00002930 move s2, a1               |     s2 = a1;
    0x00002934 lw a1, -0x7fdc(gp)        |     a1 = *((gp - 8183));
    0x00002938 lw t9, -0x7f34(gp)        |     t9 = sym.imp.ptz_parhand_get_bool;
    0x0000293c move s1, a2               |     s1 = a2;
    0x00002940 addiu a1, a1, 0x61dc      |     a1 += str.root.Properties.PTZ.DigitalPTZ;
    0x00002944 move a2, a0               |     a2 = a0;
    0x00002948 sw zero, 0x3c(sp)         |     *(var_3ch) = 0;
    0x0000294c addiu a0, sp, 0x3c        |     a0 = sp + 0x3c;
    0x00002950 move s6, a3               |     s6 = a3;
    0x00002954 jalr t9                   |     t9 ();
    0x00002958 lw v0, 0x3c(sp)           |     v0 = *(var_3ch);
    0x0000295c lw gp, 0x18(sp)           |     gp = *(var_18h);
                                         |     if (v0 != 0) {
    0x00002960 bnez v0, 0x2a64           |         goto label_5;
                                         |     }
    0x00002964 move fp, zero             |     fp = 0;
                                         |     do {
    0x00002968 lw a3, -0x7fdc(gp)        |         a3 = *((gp - 8183));
    0x0000296c lw t9, -0x7f54(gp)        |         t9 = sym.imp.__sprintf_chk;
    0x00002970 addiu a3, a3, 0x5f68      |         a3 += 0x5f68;
    0x00002974 addiu a2, zero, 3         |         a2 = 3;
    0x00002978 addiu a1, zero, 1         |         a1 = 1;
    0x0000297c addiu a0, sp, 0xb7        |         a0 = sp + 0xb7;
    0x00002980 sw s7, 0x10(sp)           |         *(var_10h_2) = s7;
    0x00002984 jalr t9                   |         t9 ();
    0x00002988 lw gp, 0x18(sp)           |         gp = *(var_18h);
    0x0000298c move a2, zero             |         a2 = 0;
    0x00002990 addiu a1, sp, 0x90        |         a1 = sp + 0x90;
    0x00002994 lw t9, -0x7f64(gp)        |         t9 = sym.imp.sc_get_group;
    0x00002998 addiu a0, sp, 0xa8        |         a0 = sp + 0xa8;
    0x0000299c jalr t9                   |         t9 ();
    0x000029a0 lw gp, 0x18(sp)           |         gp = *(var_18h);
                                         |         if (v0 < 0) {
    0x000029a4 bltz v0, 0x2be8           |             goto label_6;
                                         |         }
    0x000029a8 lw a0, 0x64(sp)           |         a0 = *(var_64h);
                                         |         if (s3 == 0) {
    0x000029ac beqz s3, 0x2a84           |             goto label_7;
                                         |         }
    0x000029b0 lw a0, 0x44(sp)           |         a0 = *(var_44h);
    0x000029b4 addiu v1, zero, -1        |         v1 = -1;
    0x000029b8 addiu v0, v0, -1          |         v0 += -1;
                                         |         if (a0 != v1) {
    0x000029bc bnel a0, v1, 0x29c0       |             
                                         |         }
    0x000029c0 lw a0, 0x54(sp)           |         a0 = *(var_54h);
    0x000029c4 addiu v1, zero, -1        |         v1 = -1;
    0x000029c8 addiu v0, v0, -1          |         v0 += -1;
                                         |         if (a0 != v1) {
    0x000029cc bnel a0, v1, 0x29d0       |             
                                         |         }
    0x000029d0 addiu v1, zero, 1         |         v1 = 1;
    0x000029d4 addiu v1, zero, 3         |         v1 = 3;
                                         |         if (v0 == v1) {
    0x000029d8 beq v0, v1, 0x2b00        |             goto label_8;
                                         |         }
    0x000029dc lw v1, 0x74(sp)           |         v1 = *(var_74h);
                                         |         if (v0 != v1) {
    0x000029e0 bne v0, v1, 0x2bc0        |             goto label_9;
                                         |         }
    0x000029e4 addiu v0, zero, -1        |         v0 = -1;
    0x000029e8 lw v1, 0x84(sp)           |         v1 = *(var_84h);
                                         |         if (v1 == v0) {
    0x000029ec beq v1, v0, 0x2b70        |             goto label_10;
                                         |         }
    0x000029f0 lw v1, 0x64(sp)           |         v1 = *(var_64h);
                                         |         if (v1 == v0) {
    0x000029f4 beq v1, v0, 0x2b70        |             goto label_10;
                                         |         }
    0x000029f8 lw a0, -0x7fdc(gp)        |         a0 = *((gp - 8183));
                                         |         if (v1 == v0) {
    0x000029fc beq v1, v0, 0x2b74        |             goto label_11;
                                         |         }
    0x00002a00 lw v0, 0x34(sp)           |         v0 = *(var_34h);
    0x00002a04 sw v0, (s6)               |         *(s6) = v0;
    0x00002a08 lw v0, 0x38(sp)           |         v0 = *(var_38h);
    0x00002a0c sw v0, (s5)               |         *(s5) = v0;
    0x00002a10 lw v0, 0x30(sp)           |         v0 = *(var_30h);
    0x00002a14 sw v0, (s4)               |         *(s4) = v0;
                                         | label_2:
    0x00002a18 move v1, zero             |         v1 = 0;
                                         | label_0:
    0x00002a1c sw v1, (s2)               |         *(s2) = v1;
    0x00002a20 move v0, zero             |         v0 = 0;
    0x00002a24 sw v1, (s1)               |         *(s1) = v1;
                                         | label_1:
    0x00002a28 lw a0, 0xbc(sp)           |         a0 = *(var_bch);
    0x00002a2c lw v1, (s0)               |         v1 = *(s0);
    0x00002a30 lw ra, 0xe4(sp)           |         ra = *(var_e4h);
                                         |         if (a0 != v1) {
    0x00002a34 bne a0, v1, 0x2c10        |             goto label_12;
                                         |         }
    0x00002a38 lw fp, 0xe0(sp)           |         fp = *(var_e0h);
    0x00002a3c lw s7, 0xdc(sp)           |         s7 = *(var_dch);
    0x00002a40 lw s6, 0xd8(sp)           |         s6 = *(var_d8h);
    0x00002a44 lw s5, 0xd4(sp)           |         s5 = *(var_d4h);
    0x00002a48 lw s4, 0xd0(sp)           |         s4 = *(var_d0h);
    0x00002a4c lw s3, 0xcc(sp)           |         s3 = *(var_cch);
    0x00002a50 lw s2, 0xc8(sp)           |         s2 = *(var_c8h);
    0x00002a54 lw s1, 0xc4(sp)           |         s1 = *(var_c4h);
    0x00002a58 lw s0, 0xc0(sp)           |         s0 = *(var_c0h);
    0x00002a5c addiu sp, sp, 0xe8        |         
    0x00002a60 jr ra                     |         return v0;
                                         | label_5:
    0x00002a64 lw v0, -0x7fdc(gp)        |         v0 = *((gp - 8183));
    0x00002a68 addiu fp, zero, 1         |         fp = 1;
    0x00002a6c addiu v0, v0, 0x61fc      |         v0 += str.ZOOM_MASK_HFOV;
    0x00002a70 sw v0, 0x70(sp)           |         *(var_70h) = v0;
    0x00002a74 lw v0, -0x7fdc(gp)        |         v0 = *((gp - 8183));
    0x00002a78 addiu v0, v0, 0x620c      |         v0 += str.ZOOM_MASK_VFOV;
    0x00002a7c sw v0, 0x80(sp)           |         *(var_80h) = v0;
    0x00002a80 b 0x2968                  |         
                                         |     } while (1);
                                         | label_7:
    0x00002a84 addiu v1, zero, -1        |     v1 = -1;
    0x00002a88 addiu v0, v0, -1          |     v0 += -1;
                                         |     if (a0 != v1) {
    0x00002a8c bnel a0, v1, 0x2a90       |         
                                         |     }
    0x00002a90 addiu v1, zero, 3         |     v1 = 3;
    0x00002a94 addiu v1, zero, 4         |     v1 = 4;
                                         |     if (v0 == v1) {
    0x00002a98 beq v0, v1, 0x2b28        |         goto label_13;
                                         |     }
    0x00002a9c lw v1, 0x44(sp)           |     v1 = *(var_44h);
                                         |     if (v0 != v1) {
    0x00002aa0 bne v0, v1, 0x2bc0        |         goto label_9;
                                         |     }
    0x00002aa4 addiu v0, zero, -1        |     v0 = -1;
    0x00002aa8 lw v1, 0x54(sp)           |     v1 = *(var_54h);
                                         |     if (v1 == v0) {
    0x00002aac beq v1, v0, 0x2b70        |         goto label_10;
                                         |     }
    0x00002ab0 lw v1, 0x74(sp)           |     v1 = *(var_74h);
                                         |     if (v1 == v0) {
    0x00002ab4 beq v1, v0, 0x2b70        |         goto label_10;
                                         |     }
    0x00002ab8 lw v1, 0x84(sp)           |     v1 = *(var_84h);
                                         |     if (v1 == v0) {
    0x00002abc beq v1, v0, 0x2b70        |         goto label_10;
                                         |     }
    0x00002ac0 lw a0, -0x7fdc(gp)        |     a0 = *((gp - 8183));
                                         |     if (v1 == v0) {
    0x00002ac4 beq v1, v0, 0x2b74        |         goto label_11;
                                         |     }
    0x00002ac8 lw v0, 0x28(sp)           |     v0 = *(var_28h);
    0x00002acc sw v0, (s2)               |     *(s2) = v0;
    0x00002ad0 lw v0, 0x2c(sp)           |     v0 = *(var_2ch);
    0x00002ad4 sw v0, (s1)               |     *(s1) = v0;
    0x00002ad8 lw v0, 0x34(sp)           |     v0 = *(var_34h);
    0x00002adc sw v0, (s6)               |     *(s6) = v0;
    0x00002ae0 lw v0, 0x38(sp)           |     v0 = *(var_38h);
    0x00002ae4 sw v0, (s5)               |     *(s5) = v0;
    0x00002ae8 move v0, zero             |     v0 = 0;
    0x00002aec sw v0, (s4)               |     *(s4) = v0;
                                         | label_3:
    0x00002af0 move v1, zero             |     v1 = 0;
                                         |     if (fp != 0) {
    0x00002af4 bnez fp, 0x2a1c           |         goto label_0;
                                         |     }
    0x00002af8 move v0, zero             |     v0 = 0;
    0x00002afc b 0x2a28                  |     goto label_1;
                                         | label_8:
    0x00002b00 lw v1, 0x74(sp)           |     v1 = *(var_74h);
    0x00002b04 addiu v0, zero, -1        |     v0 = -1;
    0x00002b08 lw a0, -0x7fdc(gp)        |     a0 = *((gp - 8183));
                                         |     if (v1 != v0) {
    0x00002b0c beq v1, v0, 0x2b74        |         
    0x00002b10 lw v0, 0x34(sp)           |         v0 = *(var_34h);
    0x00002b14 sw v0, (s6)               |         *(s6) = v0;
    0x00002b18 move v0, zero             |         v0 = 0;
    0x00002b1c sw v0, (s5)               |         *(s5) = v0;
    0x00002b20 sw v0, (s4)               |         *(s4) = v0;
    0x00002b24 b 0x2a18                  |         goto label_2;
                                         | label_13:
    0x00002b28 lw v1, 0x44(sp)           |         v1 = *(var_44h);
    0x00002b2c addiu v0, zero, -1        |         v0 = -1;
    0x00002b30 lw v1, 0x54(sp)           |         v1 = *(var_54h);
                                         |         if (v1 != v0) {
    0x00002b34 beq v1, v0, 0x2b70        |             
    0x00002b38 lw v1, 0x74(sp)           |             v1 = *(var_74h);
                                         |             if (v1 == v0) {
    0x00002b3c beq v1, v0, 0x2b70        |                 goto label_10;
                                         |             }
    0x00002b40 lw a0, -0x7fdc(gp)        |             a0 = *((gp - 8183));
                                         |             if (v1 == v0) {
    0x00002b44 beq v1, v0, 0x2b74        |                 goto label_11;
                                         |             }
    0x00002b48 lw v0, 0x28(sp)           |             v0 = *(var_28h);
    0x00002b4c sw v0, (s2)               |             *(s2) = v0;
    0x00002b50 lw v0, 0x2c(sp)           |             v0 = *(var_2ch);
    0x00002b54 sw v0, (s1)               |             *(s1) = v0;
    0x00002b58 lw v0, 0x34(sp)           |             v0 = *(var_34h);
    0x00002b5c sw v0, (s6)               |             *(s6) = v0;
    0x00002b60 move v0, zero             |             v0 = 0;
    0x00002b64 sw v0, (s5)               |             *(s5) = v0;
    0x00002b68 sw v0, (s4)               |             *(s4) = v0;
    0x00002b6c b 0x2af0                  |             goto label_3;
                                         |         }
                                         | label_10:
    0x00002b70 lw a0, -0x7fdc(gp)        |         a0 = *((gp - 8183));
                                         |     }
                                         | label_11:
    0x00002b74 lw t9, -0x7f10(gp)        |     t9 = sym.imp.fwrite;
    0x00002b78 lw a3, 0x24(sp)           |     a3 = *(var_24h);
    0x00002b7c addiu a2, zero, 0x20      |     a2 = 0x20;
    0x00002b80 addiu a1, zero, 1         |     a1 = 1;
    0x00002b84 addiu a0, a0, 0x6234      |     a0 += str.Error_getting_data_from_cache._r_n;
    0x00002b88 jalr t9                   |     t9 ();
    0x00002b8c lw gp, 0x18(sp)           |     gp = *(var_18h);
    0x00002b90 addiu v0, zero, -1        |     v0 = -1;
    0x00002b94 b 0x2a28                  |     goto label_1;
                                         | label_4:
    0x00002b98 lw a2, -0x7fdc(gp)        |     a2 = *((gp - 8183));
    0x00002b9c lw t9, -0x7e9c(gp)        |     t9 = sym.imp.__fprintf_chk
    0x00002ba0 lw a0, 0x24(sp)           |     a0 = *(var_24h);
    0x00002ba4 move a3, s7               |     a3 = s7;
    0x00002ba8 addiu a2, a2, 0x61c4      |     a2 += str.Invalid_camera__d._r_n;
    0x00002bac addiu a1, zero, 1         |     a1 = 1;
    0x00002bb0 jalr t9                   |     t9 ();
    0x00002bb4 lw gp, 0x18(sp)           |     gp = *(var_18h);
    0x00002bb8 addiu v0, zero, -1        |     v0 = -1;
    0x00002bbc b 0x2a28                  |     goto label_1;
                                         | label_9:
    0x00002bc0 lw a0, -0x7fdc(gp)        |     a0 = *((gp - 8183));
    0x00002bc4 lw t9, -0x7f10(gp)        |     t9 = sym.imp.fwrite;
    0x00002bc8 lw a3, 0x24(sp)           |     a3 = *(var_24h);
    0x00002bcc addiu a2, zero, 0x22      |     a2 = 0x22;
    0x00002bd0 addiu a1, zero, 1         |     a1 = 1;
    0x00002bd4 addiu a0, a0, 0x6258      |     a0 += str.Wrong_amount_of_data_from_cache._r_n;
    0x00002bd8 jalr t9                   |     t9 ();
    0x00002bdc lw gp, 0x18(sp)           |     gp = *(var_18h);
    0x00002be0 addiu v0, zero, -1        |     v0 = -1;
    0x00002be4 b 0x2a28                  |     goto label_1;
                                         | label_6:
    0x00002be8 lw a0, -0x7fdc(gp)        |     a0 = *((gp - 8183));
    0x00002bec lw t9, -0x7f10(gp)        |     t9 = sym.imp.fwrite;
    0x00002bf0 lw a3, 0x24(sp)           |     a3 = *(var_24h);
    0x00002bf4 addiu a2, zero, 0x15      |     a2 = 0x15;
    0x00002bf8 addiu a1, zero, 1         |     a1 = 1;
    0x00002bfc addiu a0, a0, 0x621c      |     a0 += str.No_data_from_cache._r_n;
    0x00002c00 jalr t9                   |     t9 ();
    0x00002c04 lw gp, 0x18(sp)           |     gp = *(var_18h);
    0x00002c08 addiu v0, zero, -1        |     v0 = -1;
    0x00002c0c b 0x2a28                  |     goto label_1;
                                         | label_12:
    0x00002c10 lw t9, -0x7f24(gp)        |     t9 = sym.imp.__stack_chk_fail;
    0x00002c14 jalr t9                   |     t9 ();
    0x00002c18 nop                       |     
                                         | }

[*] Function fprintf used 6 times ptzcoordcalc.cgi