// File: matthewarcus[P]mmps/transform.cpp
// Function: Transform::DoCommands(Image&, TransformParams const&, std::vector<std::vector<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char>>, std::allocator<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char>>>>, std::allocator<std::vector<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char>>, std::allocator<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char>>>>>>) const
void Transform::DoCommands (Image& image, 
			    const TransformParams& params,
			    const vector<vector<string> > cmdlist) const
{
  CmdParams cmdparams;
  cmdparams.color = params.gridcolor;
  for (size_t i = 0; i < cmdlist.size(); i++) {
    string cmd = cmdlist[i][0];
    if (cmd == "grid") {
      DrawGrid(image,params,cmdparams);
    } else if (cmd == "gridx") {
      cmdparams.gridx = atoi(cmdlist[i][1].c_str());
    } else if (cmd == "gridy") {
      cmdparams.gridy = atoi(cmdlist[i][1].c_str());
    } else if (cmd == "gridoff") {
      cmdparams.gridoff = atoi(cmdlist[i][1].c_str());
    } else if (cmd == "temporaryhours") {
      DrawTemporaryHours(image,params,cmdparams);
    } else if (cmd == "localhours") {
      DrawLocalHours(image,params,cmdparams);
    } else if (cmd == "altitudes") {
      DrawAltitudes(image,params,cmdparams);
    } else if (cmd == "analemma") {
      DrawAnalemma(image,params,cmdparams);
    } else if (cmd == "tropics") {
      DrawTropics(image,params,cmdparams);
    } else if (cmd == "arctics") {
      DrawArctics(image,params,cmdparams);
    } else if (cmd == "dateline") {
      double p = strtod(cmdlist[i][1].c_str(),NULL);
      DrawDateline(image,params,cmdparams, p);
    } else if (cmd == "datetime") {
      double p = strtod(cmdlist[i][1].c_str(),NULL);
      DrawDatetime(image,params,cmdparams, p);
    } else if (cmd == "dlat") {
      double p = strtod(cmdlist[i][1].c_str(),NULL);
      cmdparams.dlat = radians(p);
    } else if (cmd == "dlong") {
      double p = strtod(cmdlist[i][1].c_str(),NULL);
      cmdparams.dlon = radians(p);
    } else if (cmd == "color") {
      cmdparams.color = Rgb(cmdlist[i][1].c_str());
    } else {
      fprintf(stderr,"Unknown command: %s\n", cmd.c_str());
    }
  }
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0x110, %rsp            # imm = 0x110
movq %rcx, -0xb8(%rbp)
movq %rdi, -0x8(%rbp)
movq %rsi, -0x10(%rbp)
movq %rdx, -0x18(%rbp)
movq %rcx, -0x20(%rbp)
movq -0x8(%rbp), %rax
movq %rax, -0xb0(%rbp)
leaq -0x48(%rbp), %rdi
callq 0xe2f0
movq -0x18(%rbp), %rax
movw 0xcc(%rax), %cx
movw %cx, -0x48(%rbp)
movb 0xce(%rax), %al
movb %al, -0x46(%rbp)
movq $0x0, -0x50(%rbp)
movq -0xb8(%rbp), %rdi
movq -0x50(%rbp), %rax
movq %rax, -0xc0(%rbp)
callq 0xe340
movq %rax, %rcx
movq -0xc0(%rbp), %rax
cmpq %rcx, %rax
jae 0xd51e
movq -0xb8(%rbp), %rdi
movq -0x50(%rbp), %rsi
callq 0xe370
movq %rax, %rdi
xorl %eax, %eax
movl %eax, %esi
callq 0xe390
movq %rax, %rsi
leaq -0x70(%rbp), %rdi
movq %rdi, -0xd0(%rbp)
callq 0x50f0
movq -0xd0(%rbp), %rdi
leaq 0x8453(%rip), %rsi      # 0x15390
callq 0xe3b0
movb %al, -0xc1(%rbp)
jmp 0xcf4a
movb -0xc1(%rbp), %al
testb $0x1, %al
jne 0xcf56
jmp 0xcf8f
movq -0xb0(%rbp), %rdi
movq -0x10(%rbp), %rsi
movq -0x18(%rbp), %rdx
leaq -0x48(%rbp), %rcx
callq 0xcc20
jmp 0xcf70
jmp 0xd504
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x78(%rbp)
movl %eax, -0x7c(%rbp)
leaq -0x70(%rbp), %rdi
callq 0x5180
jmp 0xd527
leaq 0x8400(%rip), %rsi      # 0x15396
leaq -0x70(%rbp), %rdi
callq 0xe3b0
movb %al, -0xd1(%rbp)
jmp 0xcfa7
movb -0xd1(%rbp), %al
testb $0x1, %al
jne 0xcfb3
jmp 0xcfe8
movq -0xb8(%rbp), %rdi
movq -0x50(%rbp), %rsi
callq 0xe370
movq %rax, %rdi
movl $0x1, %esi
callq 0xe390
movq %rax, %rdi
callq 0x50e0
movq %rax, %rdi
callq 0x5390
movl %eax, -0x44(%rbp)
jmp 0xd502
leaq 0x83ae(%rip), %rsi      # 0x1539d
leaq -0x70(%rbp), %rdi
callq 0xe3b0
movb %al, -0xd2(%rbp)
jmp 0xd000
movb -0xd2(%rbp), %al
testb $0x1, %al
jne 0xd00c
jmp 0xd041
movq -0xb8(%rbp), %rdi
movq -0x50(%rbp), %rsi
callq 0xe370
movq %rax, %rdi
movl $0x1, %esi
callq 0xe390
movq %rax, %rdi
callq 0x50e0
movq %rax, %rdi
callq 0x5390
movl %eax, -0x40(%rbp)
jmp 0xd500
leaq 0x8528(%rip), %rsi      # 0x15570
leaq -0x70(%rbp), %rdi
callq 0xe3b0
movb %al, -0xd3(%rbp)
jmp 0xd059
movb -0xd3(%rbp), %al
testb $0x1, %al
jne 0xd065
jmp 0xd0a0
movq -0xb8(%rbp), %rdi
movq -0x50(%rbp), %rsi
callq 0xe370
movq %rax, %rdi
movl $0x1, %esi
callq 0xe390
movq %rax, %rdi
callq 0x50e0
movq %rax, %rdi
callq 0x5390
cvtsi2sd %eax, %xmm0
movsd %xmm0, -0x38(%rbp)
jmp 0xd4fe
leaq 0x84d1(%rip), %rsi      # 0x15578
leaq -0x70(%rbp), %rdi
callq 0xe3b0
movb %al, -0xd4(%rbp)
jmp 0xd0b8
movb -0xd4(%rbp), %al
testb $0x1, %al
jne 0xd0c4
jmp 0xd0e3
movq -0xb0(%rbp), %rdi
movq -0x10(%rbp), %rsi
movq -0x18(%rbp), %rdx
leaq -0x48(%rbp), %rcx
callq 0xd530
jmp 0xd0de
jmp 0xd4fc
leaq 0x849d(%rip), %rsi      # 0x15587
leaq -0x70(%rbp), %rdi
callq 0xe3b0
movb %al, -0xd5(%rbp)
jmp 0xd0fb
movb -0xd5(%rbp), %al
testb $0x1, %al
jne 0xd107
jmp 0xd126
movq -0xb0(%rbp), %rdi
movq -0x10(%rbp), %rsi
movq -0x18(%rbp), %rdx
leaq -0x48(%rbp), %rcx
callq 0xd600
jmp 0xd121
jmp 0xd4fa
leaq 0x8465(%rip), %rsi      # 0x15592
leaq -0x70(%rbp), %rdi
callq 0xe3b0
movb %al, -0xd6(%rbp)
jmp 0xd13e
movb -0xd6(%rbp), %al
testb $0x1, %al
jne 0xd14a
jmp 0xd169
movq -0xb0(%rbp), %rdi
movq -0x10(%rbp), %rsi
movq -0x18(%rbp), %rdx
leaq -0x48(%rbp), %rcx
callq 0xd700
jmp 0xd164
jmp 0xd4f8
leaq 0x842c(%rip), %rsi      # 0x1559c
leaq -0x70(%rbp), %rdi
callq 0xe3b0
movb %al, -0xd7(%rbp)
jmp 0xd181
movb -0xd7(%rbp), %al
testb $0x1, %al
jne 0xd18d
jmp 0xd1ac
movq -0xb0(%rbp), %rdi
movq -0x10(%rbp), %rsi
movq -0x18(%rbp), %rdx
leaq -0x48(%rbp), %rcx
callq 0xd7e0
jmp 0xd1a7
jmp 0xd4f6
leaq 0x83f2(%rip), %rsi      # 0x155a5
leaq -0x70(%rbp), %rdi
callq 0xe3b0
movb %al, -0xd8(%rbp)
jmp 0xd1c4
movb -0xd8(%rbp), %al
testb $0x1, %al
jne 0xd1d0
jmp 0xd1ef
movq -0xb0(%rbp), %rdi
movq -0x10(%rbp), %rsi
movq -0x18(%rbp), %rdx
leaq -0x48(%rbp), %rcx
callq 0xd8d0
jmp 0xd1ea
jmp 0xd4f4
leaq 0x83b7(%rip), %rsi      # 0x155ad
leaq -0x70(%rbp), %rdi
callq 0xe3b0
movb %al, -0xd9(%rbp)
jmp 0xd207
movb -0xd9(%rbp), %al
testb $0x1, %al
jne 0xd213
jmp 0xd232
movq -0xb0(%rbp), %rdi
movq -0x10(%rbp), %rsi
movq -0x18(%rbp), %rdx
leaq -0x48(%rbp), %rcx
callq 0xd9b0
jmp 0xd22d
jmp 0xd4f2
leaq 0x837c(%rip), %rsi      # 0x155b5
leaq -0x70(%rbp), %rdi
callq 0xe3b0
movb %al, -0xda(%rbp)
jmp 0xd24a
movb -0xda(%rbp), %al
testb $0x1, %al
jne 0xd256
jmp 0xd2b6
movq -0xb8(%rbp), %rdi
movq -0x50(%rbp), %rsi
callq 0xe370
movq %rax, %rdi
movl $0x1, %esi
callq 0xe390
movq %rax, %rdi
callq 0x50e0
movq %rax, %rdi
xorl %eax, %eax
movl %eax, %esi
callq 0x51e0
movq -0xb0(%rbp), %rdi
movsd %xmm0, -0x88(%rbp)
movq -0x10(%rbp), %rsi
movq -0x18(%rbp), %rdx
movsd -0x88(%rbp), %xmm0
leaq -0x48(%rbp), %rcx
callq 0xda80
jmp 0xd2b1
jmp 0xd4f0
leaq 0x8301(%rip), %rsi      # 0x155be
leaq -0x70(%rbp), %rdi
callq 0xe3b0
movb %al, -0xdb(%rbp)
jmp 0xd2ce
movb -0xdb(%rbp), %al
testb $0x1, %al
jne 0xd2da
jmp 0xd33a
movq -0xb8(%rbp), %rdi
movq -0x50(%rbp), %rsi
callq 0xe370
movq %rax, %rdi
movl $0x1, %esi
callq 0xe390
movq %rax, %rdi
callq 0x50e0
movq %rax, %rdi
xorl %eax, %eax
movl %eax, %esi
callq 0x51e0
movq -0xb0(%rbp), %rdi
movsd %xmm0, -0x90(%rbp)
movq -0x10(%rbp), %rsi
movq -0x18(%rbp), %rdx
movsd -0x90(%rbp), %xmm0
leaq -0x48(%rbp), %rcx
callq 0xdba0
jmp 0xd335
jmp 0xd4ee
leaq 0x8286(%rip), %rsi      # 0x155c7
leaq -0x70(%rbp), %rdi
callq 0xe3b0
movb %al, -0xdc(%rbp)
jmp 0xd352
movb -0xdc(%rbp), %al
testb $0x1, %al
jne 0xd35e
jmp 0xd3c0
movq -0xb8(%rbp), %rdi
movq -0x50(%rbp), %rsi
callq 0xe370
movq %rax, %rdi
movl $0x1, %esi
callq 0xe390
movq %rax, %rdi
callq 0x50e0
movq %rax, %rdi
xorl %eax, %eax
movl %eax, %esi
callq 0x51e0
movsd %xmm0, -0x98(%rbp)
movsd -0x98(%rbp), %xmm0
callq 0xdd80
movsd %xmm0, -0xe8(%rbp)
jmp 0xd3ae
movsd -0xe8(%rbp), %xmm0
movsd %xmm0, -0x30(%rbp)
jmp 0xd4ec
leaq 0x8205(%rip), %rsi      # 0x155cc
leaq -0x70(%rbp), %rdi
callq 0xe3b0
movb %al, -0xe9(%rbp)
jmp 0xd3d8
movb -0xe9(%rbp), %al
testb $0x1, %al
jne 0xd3e4
jmp 0xd446
movq -0xb8(%rbp), %rdi
movq -0x50(%rbp), %rsi
callq 0xe370
movq %rax, %rdi
movl $0x1, %esi
callq 0xe390
movq %rax, %rdi
callq 0x50e0
movq %rax, %rdi
xorl %eax, %eax
movl %eax, %esi
callq 0x51e0
movsd %xmm0, -0xa0(%rbp)
movsd -0xa0(%rbp), %xmm0
callq 0xdd80
movsd %xmm0, -0xf8(%rbp)
jmp 0xd434
movsd -0xf8(%rbp), %xmm0
movsd %xmm0, -0x28(%rbp)
jmp 0xd4ea
leaq 0x7f5b(%rip), %rsi      # 0x153a8
leaq -0x70(%rbp), %rdi
callq 0xe3b0
movb %al, -0xf9(%rbp)
jmp 0xd45e
movb -0xf9(%rbp), %al
testb $0x1, %al
jne 0xd46a
jmp 0xd4b6
movq -0xb8(%rbp), %rdi
movq -0x50(%rbp), %rsi
callq 0xe370
movq %rax, %rdi
movl $0x1, %esi
callq 0xe390
movq %rax, %rdi
callq 0x50e0
movq %rax, %rsi
leaq -0xa3(%rbp), %rdi
callq 0x12a30
jmp 0xd4a0
movw -0xa3(%rbp), %ax
movw %ax, -0x48(%rbp)
movb -0xa1(%rbp), %al
movb %al, -0x46(%rbp)
jmp 0xd4e8
movq 0xfb23(%rip), %rax      # 0x1cfe0
movq (%rax), %rax
movq %rax, -0x108(%rbp)
leaq -0x70(%rbp), %rdi
callq 0x50e0
movq -0x108(%rbp), %rdi
movq %rax, %rdx
leaq 0x80f1(%rip), %rsi      # 0x155d2
movb $0x0, %al
callq 0x5370
jmp 0xd4ea
jmp 0xd4ec
jmp 0xd4ee
jmp 0xd4f0
jmp 0xd4f2
jmp 0xd4f4
jmp 0xd4f6
jmp 0xd4f8
jmp 0xd4fa
jmp 0xd4fc
jmp 0xd4fe
jmp 0xd500
jmp 0xd502
jmp 0xd504
leaq -0x70(%rbp), %rdi
callq 0x5180
movq -0x50(%rbp), %rax
addq $0x1, %rax
movq %rax, -0x50(%rbp)
jmp 0xced6
addq $0x110, %rsp            # imm = 0x110
popq %rbp
retq
movq -0x78(%rbp), %rdi
callq 0x5420