// File: matthewarcus[P]mmps/transform.cpp
// Function: Transform::GetTransform(char const*)
Transform* Transform::GetTransform(const char *type)
{
 Transform* transform = NULL;
  if (strcmp(type, "latlong") == 0) {
    transform = new LatLong();
  } else if (strcmp(type, "equalarea") == 0) {
    transform = new EqualArea();
  } else if (strcmp(type, "sinusoidal") == 0) {
    transform = new Sinusoidal();
  } else if (strcmp(type, "sinusoidal2") == 0) {
    transform = new Sinusoidal2();
  } else if (strcmp(type, "mollweide") == 0) {
    transform = new Mollweide();
  } else if (strcmp(type, "mercator") == 0) {
    transform = new Mercator();
  } else if (strcmp(type, "cylindrical") == 0) {
    transform = new Cylindrical();
  } else if (strcmp(type, "azimuthal") == 0) {
    transform = new Azimuthal();
  } else if (strcmp(type, "orthographic") == 0) {
    transform = new Rectilinear();
  } else if (strcmp(type, "rectilinear") == 0) {
    transform = new Rectilinear();
  } else if (strcmp(type, "stereographic") == 0) {
    transform = new Stereographic();
  } else if (strcmp(type, "gnomonic") == 0) {
    transform = new Gnomonic();
  } else if (strcmp(type, "perspective") == 0) {
    transform = new Perspective();
  } else if (strcmp(type, "bonne") == 0) {
    transform = new Bonne();
  } else if (strcmp(type, "hammer") == 0) {
    transform = new Hammer();
  }
  return transform;
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0x200, %rsp            # imm = 0x200
movq %rdi, -0x8(%rbp)
movq $0x0, -0x10(%rbp)
movq -0x8(%rbp), %rdi
leaq 0xbe5e(%rip), %rsi      # 0x154d0
callq 0x5350
cmpl $0x0, %eax
jne 0x9714
movl $0xd0, %edi
callq 0x52b0
movq %rax, %rdi
movq %rdi, -0x40(%rbp)
movq %rdi, %rax
movq %rax, -0x38(%rbp)
xorps %xmm0, %xmm0
movaps %xmm0, -0x30(%rbp)
movaps %xmm0, 0xc0(%rdi)
movaps %xmm0, 0xb0(%rdi)
movaps %xmm0, 0xa0(%rdi)
movaps %xmm0, 0x90(%rdi)
movaps %xmm0, 0x80(%rdi)
movaps %xmm0, 0x70(%rdi)
movaps %xmm0, 0x60(%rdi)
movaps %xmm0, 0x50(%rdi)
movaps %xmm0, 0x40(%rdi)
movaps %xmm0, 0x30(%rdi)
movaps %xmm0, 0x20(%rdi)
movaps %xmm0, 0x10(%rdi)
movaps %xmm0, (%rdi)
callq 0xde50
jmp 0x96e8
movq -0x38(%rbp), %rax
movq %rax, -0x10(%rbp)
jmp 0xa152
movq -0x38(%rbp), %rdi
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x18(%rbp)
movl %eax, -0x1c(%rbp)
movl $0xd0, %esi
callq 0x52c0
jmp 0xa15f
movq -0x8(%rbp), %rdi
leaq 0xbdb9(%rip), %rsi      # 0x154d8
callq 0x5350
cmpl $0x0, %eax
jne 0x97c1
movl $0xd0, %edi
callq 0x52b0
movq %rax, %rdi
movq %rdi, -0x60(%rbp)
movq %rdi, %rax
movq %rax, -0x58(%rbp)
xorps %xmm0, %xmm0
movaps %xmm0, -0x50(%rbp)
movaps %xmm0, 0xc0(%rdi)
movaps %xmm0, 0xb0(%rdi)
movaps %xmm0, 0xa0(%rdi)
movaps %xmm0, 0x90(%rdi)
movaps %xmm0, 0x80(%rdi)
movaps %xmm0, 0x70(%rdi)
movaps %xmm0, 0x60(%rdi)
movaps %xmm0, 0x50(%rdi)
movaps %xmm0, 0x40(%rdi)
movaps %xmm0, 0x30(%rdi)
movaps %xmm0, 0x20(%rdi)
movaps %xmm0, 0x10(%rdi)
movaps %xmm0, (%rdi)
callq 0xde90
jmp 0x9795
movq -0x58(%rbp), %rax
movq %rax, -0x10(%rbp)
jmp 0xa150
movq -0x58(%rbp), %rdi
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x18(%rbp)
movl %eax, -0x1c(%rbp)
movl $0xd0, %esi
callq 0x52c0
jmp 0xa15f
movq -0x8(%rbp), %rdi
leaq 0xbd16(%rip), %rsi      # 0x154e2
callq 0x5350
cmpl $0x0, %eax
jne 0x986e
movl $0xd0, %edi
callq 0x52b0
movq %rax, %rdi
movq %rdi, -0x80(%rbp)
movq %rdi, %rax
movq %rax, -0x78(%rbp)
xorps %xmm0, %xmm0
movaps %xmm0, -0x70(%rbp)
movaps %xmm0, 0xc0(%rdi)
movaps %xmm0, 0xb0(%rdi)
movaps %xmm0, 0xa0(%rdi)
movaps %xmm0, 0x90(%rdi)
movaps %xmm0, 0x80(%rdi)
movaps %xmm0, 0x70(%rdi)
movaps %xmm0, 0x60(%rdi)
movaps %xmm0, 0x50(%rdi)
movaps %xmm0, 0x40(%rdi)
movaps %xmm0, 0x30(%rdi)
movaps %xmm0, 0x20(%rdi)
movaps %xmm0, 0x10(%rdi)
movaps %xmm0, (%rdi)
callq 0xded0
jmp 0x9842
movq -0x78(%rbp), %rax
movq %rax, -0x10(%rbp)
jmp 0xa14e
movq -0x78(%rbp), %rdi
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x18(%rbp)
movl %eax, -0x1c(%rbp)
movl $0xd0, %esi
callq 0x52c0
jmp 0xa15f
movq -0x8(%rbp), %rdi
leaq 0xbc74(%rip), %rsi      # 0x154ed
callq 0x5350
cmpl $0x0, %eax
jne 0x993c
movl $0xe8, %edi
callq 0x52b0
movq %rax, %rdi
movq %rdi, -0xa0(%rbp)
movq %rdi, %rax
movq %rax, -0x98(%rbp)
xorps %xmm0, %xmm0
movaps %xmm0, -0x90(%rbp)
movaps %xmm0, 0xd0(%rdi)
movaps %xmm0, 0xc0(%rdi)
movaps %xmm0, 0xb0(%rdi)
movaps %xmm0, 0xa0(%rdi)
movaps %xmm0, 0x90(%rdi)
movaps %xmm0, 0x80(%rdi)
movaps %xmm0, 0x70(%rdi)
movaps %xmm0, 0x60(%rdi)
movaps %xmm0, 0x50(%rdi)
movaps %xmm0, 0x40(%rdi)
movaps %xmm0, 0x30(%rdi)
movaps %xmm0, 0x20(%rdi)
movaps %xmm0, 0x10(%rdi)
movaps %xmm0, (%rdi)
movq $0x0, 0xe0(%rdi)
callq 0xdf10
jmp 0x990a
movq -0x98(%rbp), %rax
movq %rax, -0x10(%rbp)
jmp 0xa14c
movq -0x98(%rbp), %rdi
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x18(%rbp)
movl %eax, -0x1c(%rbp)
movl $0xe8, %esi
callq 0x52c0
jmp 0xa15f
movq -0x8(%rbp), %rdi
leaq 0xbbb2(%rip), %rsi      # 0x154f9
callq 0x5350
cmpl $0x0, %eax
jne 0x9a03
movl $0xd8, %edi
callq 0x52b0
movq %rax, %rdi
movq %rdi, -0xc0(%rbp)
movq %rdi, %rax
movq %rax, -0xb8(%rbp)
xorps %xmm0, %xmm0
movaps %xmm0, -0xb0(%rbp)
movaps %xmm0, 0xc0(%rdi)
movaps %xmm0, 0xb0(%rdi)
movaps %xmm0, 0xa0(%rdi)
movaps %xmm0, 0x90(%rdi)
movaps %xmm0, 0x80(%rdi)
movaps %xmm0, 0x70(%rdi)
movaps %xmm0, 0x60(%rdi)
movaps %xmm0, 0x50(%rdi)
movaps %xmm0, 0x40(%rdi)
movaps %xmm0, 0x30(%rdi)
movaps %xmm0, 0x20(%rdi)
movaps %xmm0, 0x10(%rdi)
movaps %xmm0, (%rdi)
movq $0x0, 0xd0(%rdi)
callq 0xdf50
jmp 0x99d1
movq -0xb8(%rbp), %rax
movq %rax, -0x10(%rbp)
jmp 0xa14a
movq -0xb8(%rbp), %rdi
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x18(%rbp)
movl %eax, -0x1c(%rbp)
movl $0xd8, %esi
callq 0x52c0
jmp 0xa15f
movq -0x8(%rbp), %rdi
leaq 0xbaf5(%rip), %rsi      # 0x15503
callq 0x5350
cmpl $0x0, %eax
jne 0x9ac3
movl $0xc8, %edi
callq 0x52b0
movq %rax, %rdi
movq %rdi, -0xe0(%rbp)
movq %rdi, %rax
movq %rax, -0xd8(%rbp)
xorps %xmm0, %xmm0
movaps %xmm0, -0xd0(%rbp)
movaps %xmm0, 0xb0(%rdi)
movaps %xmm0, 0xa0(%rdi)
movaps %xmm0, 0x90(%rdi)
movaps %xmm0, 0x80(%rdi)
movaps %xmm0, 0x70(%rdi)
movaps %xmm0, 0x60(%rdi)
movaps %xmm0, 0x50(%rdi)
movaps %xmm0, 0x40(%rdi)
movaps %xmm0, 0x30(%rdi)
movaps %xmm0, 0x20(%rdi)
movaps %xmm0, 0x10(%rdi)
movaps %xmm0, (%rdi)
movq $0x0, 0xc0(%rdi)
callq 0xdf90
jmp 0x9a91
movq -0xd8(%rbp), %rax
movq %rax, -0x10(%rbp)
jmp 0xa148
movq -0xd8(%rbp), %rdi
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x18(%rbp)
movl %eax, -0x1c(%rbp)
movl $0xc8, %esi
callq 0x52c0
jmp 0xa15f
movq -0x8(%rbp), %rdi
leaq 0xba3e(%rip), %rsi      # 0x1550c
callq 0x5350
cmpl $0x0, %eax
jne 0x9b83
movl $0xc8, %edi
callq 0x52b0
movq %rax, %rdi
movq %rdi, -0x100(%rbp)
movq %rdi, %rax
movq %rax, -0xf8(%rbp)
xorps %xmm0, %xmm0
movaps %xmm0, -0xf0(%rbp)
movaps %xmm0, 0xb0(%rdi)
movaps %xmm0, 0xa0(%rdi)
movaps %xmm0, 0x90(%rdi)
movaps %xmm0, 0x80(%rdi)
movaps %xmm0, 0x70(%rdi)
movaps %xmm0, 0x60(%rdi)
movaps %xmm0, 0x50(%rdi)
movaps %xmm0, 0x40(%rdi)
movaps %xmm0, 0x30(%rdi)
movaps %xmm0, 0x20(%rdi)
movaps %xmm0, 0x10(%rdi)
movaps %xmm0, (%rdi)
movq $0x0, 0xc0(%rdi)
callq 0xdfd0
jmp 0x9b51
movq -0xf8(%rbp), %rax
movq %rax, -0x10(%rbp)
jmp 0xa146
movq -0xf8(%rbp), %rdi
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x18(%rbp)
movl %eax, -0x1c(%rbp)
movl $0xc8, %esi
callq 0x52c0
jmp 0xa15f
movq -0x8(%rbp), %rdi
leaq 0xb98a(%rip), %rsi      # 0x15518
callq 0x5350
cmpl $0x0, %eax
jne 0x9c43
movl $0xc8, %edi
callq 0x52b0
movq %rax, %rdi
movq %rdi, -0x120(%rbp)
movq %rdi, %rax
movq %rax, -0x118(%rbp)
xorps %xmm0, %xmm0
movaps %xmm0, -0x110(%rbp)
movaps %xmm0, 0xb0(%rdi)
movaps %xmm0, 0xa0(%rdi)
movaps %xmm0, 0x90(%rdi)
movaps %xmm0, 0x80(%rdi)
movaps %xmm0, 0x70(%rdi)
movaps %xmm0, 0x60(%rdi)
movaps %xmm0, 0x50(%rdi)
movaps %xmm0, 0x40(%rdi)
movaps %xmm0, 0x30(%rdi)
movaps %xmm0, 0x20(%rdi)
movaps %xmm0, 0x10(%rdi)
movaps %xmm0, (%rdi)
movq $0x0, 0xc0(%rdi)
callq 0xe010
jmp 0x9c11
movq -0x118(%rbp), %rax
movq %rax, -0x10(%rbp)
jmp 0xa144
movq -0x118(%rbp), %rdi
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x18(%rbp)
movl %eax, -0x1c(%rbp)
movl $0xc8, %esi
callq 0x52c0
jmp 0xa15f
movq -0x8(%rbp), %rdi
leaq 0xb8d4(%rip), %rsi      # 0x15522
callq 0x5350
cmpl $0x0, %eax
jne 0x9d03
movl $0xc8, %edi
callq 0x52b0
movq %rax, %rdi
movq %rdi, -0x140(%rbp)
movq %rdi, %rax
movq %rax, -0x138(%rbp)
xorps %xmm0, %xmm0
movaps %xmm0, -0x130(%rbp)
movaps %xmm0, 0xb0(%rdi)
movaps %xmm0, 0xa0(%rdi)
movaps %xmm0, 0x90(%rdi)
movaps %xmm0, 0x80(%rdi)
movaps %xmm0, 0x70(%rdi)
movaps %xmm0, 0x60(%rdi)
movaps %xmm0, 0x50(%rdi)
movaps %xmm0, 0x40(%rdi)
movaps %xmm0, 0x30(%rdi)
movaps %xmm0, 0x20(%rdi)
movaps %xmm0, 0x10(%rdi)
movaps %xmm0, (%rdi)
movq $0x0, 0xc0(%rdi)
callq 0xe050
jmp 0x9cd1
movq -0x138(%rbp), %rax
movq %rax, -0x10(%rbp)
jmp 0xa142
movq -0x138(%rbp), %rdi
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x18(%rbp)
movl %eax, -0x1c(%rbp)
movl $0xc8, %esi
callq 0x52c0
jmp 0xa15f
movq -0x8(%rbp), %rdi
leaq 0xb821(%rip), %rsi      # 0x1552f
callq 0x5350
cmpl $0x0, %eax
jne 0x9dc3
movl $0xc8, %edi
callq 0x52b0
movq %rax, %rdi
movq %rdi, -0x160(%rbp)
movq %rdi, %rax
movq %rax, -0x158(%rbp)
xorps %xmm0, %xmm0
movaps %xmm0, -0x150(%rbp)
movaps %xmm0, 0xb0(%rdi)
movaps %xmm0, 0xa0(%rdi)
movaps %xmm0, 0x90(%rdi)
movaps %xmm0, 0x80(%rdi)
movaps %xmm0, 0x70(%rdi)
movaps %xmm0, 0x60(%rdi)
movaps %xmm0, 0x50(%rdi)
movaps %xmm0, 0x40(%rdi)
movaps %xmm0, 0x30(%rdi)
movaps %xmm0, 0x20(%rdi)
movaps %xmm0, 0x10(%rdi)
movaps %xmm0, (%rdi)
movq $0x0, 0xc0(%rdi)
callq 0xe050
jmp 0x9d91
movq -0x158(%rbp), %rax
movq %rax, -0x10(%rbp)
jmp 0xa140
movq -0x158(%rbp), %rdi
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x18(%rbp)
movl %eax, -0x1c(%rbp)
movl $0xc8, %esi
callq 0x52c0
jmp 0xa15f
movq -0x8(%rbp), %rdi
leaq 0xb76d(%rip), %rsi      # 0x1553b
callq 0x5350
cmpl $0x0, %eax
jne 0x9e83
movl $0xc8, %edi
callq 0x52b0
movq %rax, %rdi
movq %rdi, -0x180(%rbp)
movq %rdi, %rax
movq %rax, -0x178(%rbp)
xorps %xmm0, %xmm0
movaps %xmm0, -0x170(%rbp)
movaps %xmm0, 0xb0(%rdi)
movaps %xmm0, 0xa0(%rdi)
movaps %xmm0, 0x90(%rdi)
movaps %xmm0, 0x80(%rdi)
movaps %xmm0, 0x70(%rdi)
movaps %xmm0, 0x60(%rdi)
movaps %xmm0, 0x50(%rdi)
movaps %xmm0, 0x40(%rdi)
movaps %xmm0, 0x30(%rdi)
movaps %xmm0, 0x20(%rdi)
movaps %xmm0, 0x10(%rdi)
movaps %xmm0, (%rdi)
movq $0x0, 0xc0(%rdi)
callq 0xe090
jmp 0x9e51
movq -0x178(%rbp), %rax
movq %rax, -0x10(%rbp)
jmp 0xa13e
movq -0x178(%rbp), %rdi
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x18(%rbp)
movl %eax, -0x1c(%rbp)
movl $0xc8, %esi
callq 0x52c0
jmp 0xa15f
movq -0x8(%rbp), %rdi
leaq 0xb6bb(%rip), %rsi      # 0x15549
callq 0x5350
cmpl $0x0, %eax
jne 0x9f43
movl $0xc8, %edi
callq 0x52b0
movq %rax, %rdi
movq %rdi, -0x1a0(%rbp)
movq %rdi, %rax
movq %rax, -0x198(%rbp)
xorps %xmm0, %xmm0
movaps %xmm0, -0x190(%rbp)
movaps %xmm0, 0xb0(%rdi)
movaps %xmm0, 0xa0(%rdi)
movaps %xmm0, 0x90(%rdi)
movaps %xmm0, 0x80(%rdi)
movaps %xmm0, 0x70(%rdi)
movaps %xmm0, 0x60(%rdi)
movaps %xmm0, 0x50(%rdi)
movaps %xmm0, 0x40(%rdi)
movaps %xmm0, 0x30(%rdi)
movaps %xmm0, 0x20(%rdi)
movaps %xmm0, 0x10(%rdi)
movaps %xmm0, (%rdi)
movq $0x0, 0xc0(%rdi)
callq 0xe0d0
jmp 0x9f11
movq -0x198(%rbp), %rax
movq %rax, -0x10(%rbp)
jmp 0xa13c
movq -0x198(%rbp), %rdi
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x18(%rbp)
movl %eax, -0x1c(%rbp)
movl $0xc8, %esi
callq 0x52c0
jmp 0xa15f
movq -0x8(%rbp), %rdi
leaq 0xb39c(%rip), %rsi      # 0x152ea
callq 0x5350
cmpl $0x0, %eax
jne 0x9fcb
movl $0x148, %edi            # imm = 0x148
movq %rdi, -0x1b8(%rbp)
callq 0x52b0
movq -0x1b8(%rbp), %rdx
movq %rax, %rdi
movq %rdi, -0x1a8(%rbp)
movq %rdi, %rax
movq %rax, -0x1b0(%rbp)
xorl %esi, %esi
callq 0x5140
movq -0x1a8(%rbp), %rdi
callq 0xe110
jmp 0x9f99
movq -0x1b0(%rbp), %rax
movq %rax, -0x10(%rbp)
jmp 0xa13a
movq -0x1b0(%rbp), %rdi
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x18(%rbp)
movl %eax, -0x1c(%rbp)
movl $0x148, %esi            # imm = 0x148
callq 0x52c0
jmp 0xa15f
movq -0x8(%rbp), %rdi
leaq 0xb57c(%rip), %rsi      # 0x15552
callq 0x5350
cmpl $0x0, %eax
jne 0xa087
movl $0xd0, %edi
callq 0x52b0
movq %rax, %rdi
movq %rdi, -0x1e0(%rbp)
movq %rdi, %rax
movq %rax, -0x1d8(%rbp)
xorps %xmm0, %xmm0
movaps %xmm0, -0x1d0(%rbp)
movaps %xmm0, 0xc0(%rdi)
movaps %xmm0, 0xb0(%rdi)
movaps %xmm0, 0xa0(%rdi)
movaps %xmm0, 0x90(%rdi)
movaps %xmm0, 0x80(%rdi)
movaps %xmm0, 0x70(%rdi)
movaps %xmm0, 0x60(%rdi)
movaps %xmm0, 0x50(%rdi)
movaps %xmm0, 0x40(%rdi)
movaps %xmm0, 0x30(%rdi)
movaps %xmm0, 0x20(%rdi)
movaps %xmm0, 0x10(%rdi)
movaps %xmm0, (%rdi)
callq 0xe150
jmp 0xa055
movq -0x1d8(%rbp), %rax
movq %rax, -0x10(%rbp)
jmp 0xa138
movq -0x1d8(%rbp), %rdi
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x18(%rbp)
movl %eax, -0x1c(%rbp)
movl $0xd0, %esi
callq 0x52c0
jmp 0xa15f
movq -0x8(%rbp), %rdi
leaq 0xb4c6(%rip), %rsi      # 0x15558
callq 0x5350
cmpl $0x0, %eax
jne 0xa136
movl $0xc0, %edi
callq 0x52b0
movq %rax, %rdi
movq %rdi, -0x200(%rbp)
movq %rdi, %rax
movq %rax, -0x1f8(%rbp)
xorps %xmm0, %xmm0
movaps %xmm0, -0x1f0(%rbp)
movaps %xmm0, 0xb0(%rdi)
movaps %xmm0, 0xa0(%rdi)
movaps %xmm0, 0x90(%rdi)
movaps %xmm0, 0x80(%rdi)
movaps %xmm0, 0x70(%rdi)
movaps %xmm0, 0x60(%rdi)
movaps %xmm0, 0x50(%rdi)
movaps %xmm0, 0x40(%rdi)
movaps %xmm0, 0x30(%rdi)
movaps %xmm0, 0x20(%rdi)
movaps %xmm0, 0x10(%rdi)
movaps %xmm0, (%rdi)
callq 0xe190
jmp 0xa10a
movq -0x1f8(%rbp), %rax
movq %rax, -0x10(%rbp)
jmp 0xa136
movq -0x1f8(%rbp), %rdi
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x18(%rbp)
movl %eax, -0x1c(%rbp)
movl $0xc0, %esi
callq 0x52c0
jmp 0xa15f
jmp 0xa138
jmp 0xa13a
jmp 0xa13c
jmp 0xa13e
jmp 0xa140
jmp 0xa142
jmp 0xa144
jmp 0xa146
jmp 0xa148
jmp 0xa14a
jmp 0xa14c
jmp 0xa14e
jmp 0xa150
jmp 0xa152
movq -0x10(%rbp), %rax
addq $0x200, %rsp            # imm = 0x200
popq %rbp
retq
movq -0x18(%rbp), %rdi
callq 0x5420
nopl (%rax,%rax)