// File: phillip-h[P]fractal-gen/lodepng.cpp
// Function: lodepng_error_text(unsigned int)
const char* lodepng_error_text(unsigned code)
{
  switch(code)
  {
    case 0: return "no error, everything went ok";
    case 1: return "nothing done yet"; /*the Encoder/Decoder has done nothing yet, error checking makes no sense yet*/
    case 10: return "end of input memory reached without huffman end code"; /*while huffman decoding*/
    case 11: return "error in code tree made it jump outside of huffman tree"; /*while huffman decoding*/
    case 13: return "problem while processing dynamic deflate block";
    case 14: return "problem while processing dynamic deflate block";
    case 15: return "problem while processing dynamic deflate block";
    case 16: return "unexisting code while processing dynamic deflate block";
    case 17: return "end of out buffer memory reached while inflating";
    case 18: return "invalid distance code while inflating";
    case 19: return "end of out buffer memory reached while inflating";
    case 20: return "invalid deflate block BTYPE encountered while decoding";
    case 21: return "NLEN is not ones complement of LEN in a deflate block";
     /*end of out buffer memory reached while inflating:
     This can happen if the inflated deflate data is longer than the amount of bytes required to fill up
     all the pixels of the image, given the color depth and image dimensions. Something that doesn't
     happen in a normal, well encoded, PNG image.*/
    case 22: return "end of out buffer memory reached while inflating";
    case 23: return "end of in buffer memory reached while inflating";
    case 24: return "invalid FCHECK in zlib header";
    case 25: return "invalid compression method in zlib header";
    case 26: return "FDICT encountered in zlib header while it's not used for PNG";
    case 27: return "PNG file is smaller than a PNG header";
    /*Checks the magic file header, the first 8 bytes of the PNG file*/
    case 28: return "incorrect PNG signature, it's no PNG or corrupted";
    case 29: return "first chunk is not the header chunk";
    case 30: return "chunk length too large, chunk broken off at end of file";
    case 31: return "illegal PNG color type or bpp";
    case 32: return "illegal PNG compression method";
    case 33: return "illegal PNG filter method";
    case 34: return "illegal PNG interlace method";
    case 35: return "chunk length of a chunk is too large or the chunk too small";
    case 36: return "illegal PNG filter type encountered";
    case 37: return "illegal bit depth for this color type given";
    case 38: return "the palette is too big"; /*more than 256 colors*/
    case 39: return "more palette alpha values given in tRNS chunk than there are colors in the palette";
    case 40: return "tRNS chunk has wrong size for greyscale image";
    case 41: return "tRNS chunk has wrong size for RGB image";
    case 42: return "tRNS chunk appeared while it was not allowed for this color type";
    case 43: return "bKGD chunk has wrong size for palette image";
    case 44: return "bKGD chunk has wrong size for greyscale image";
    case 45: return "bKGD chunk has wrong size for RGB image";
    case 48: return "empty input buffer given to decoder. Maybe caused by non-existing file?";
    case 49: return "jumped past memory while generating dynamic huffman tree";
    case 50: return "jumped past memory while generating dynamic huffman tree";
    case 51: return "jumped past memory while inflating huffman block";
    case 52: return "jumped past memory while inflating";
    case 53: return "size of zlib data too small";
    case 54: return "repeat symbol in tree while there was no value symbol yet";
    /*jumped past tree while generating huffman tree, this could be when the
    tree will have more leaves than symbols after generating it out of the
    given lenghts. They call this an oversubscribed dynamic bit lengths tree in zlib.*/
    case 55: return "jumped past tree while generating huffman tree";
    case 56: return "given output image colortype or bitdepth not supported for color conversion";
    case 57: return "invalid CRC encountered (checking CRC can be disabled)";
    case 58: return "invalid ADLER32 encountered (checking ADLER32 can be disabled)";
    case 59: return "requested color conversion not supported";
    case 60: return "invalid window size given in the settings of the encoder (must be 0-32768)";
    case 61: return "invalid BTYPE given in the settings of the encoder (only 0, 1 and 2 are allowed)";
    /*LodePNG leaves the choice of RGB to greyscale conversion formula to the user.*/
    case 62: return "conversion from color to greyscale not supported";
    case 63: return "length of a chunk too long, max allowed for PNG is 2147483647 bytes per chunk"; /*(2^31-1)*/
    /*this would result in the inability of a deflated block to ever contain an end code. It must be at least 1.*/
    case 64: return "the length of the END symbol 256 in the Huffman tree is 0";
    case 66: return "the length of a text chunk keyword given to the encoder is longer than the maximum of 79 bytes";
    case 67: return "the length of a text chunk keyword given to the encoder is smaller than the minimum of 1 byte";
    case 68: return "tried to encode a PLTE chunk with a palette that has less than 1 or more than 256 colors";
    case 69: return "unknown chunk type with 'critical' flag encountered by the decoder";
    case 71: return "unexisting interlace mode given to encoder (must be 0 or 1)";
    case 72: return "while decoding, unexisting compression method encountering in zTXt or iTXt chunk (it must be 0)";
    case 73: return "invalid tIME chunk size";
    case 74: return "invalid pHYs chunk size";
    /*length could be wrong, or data chopped off*/
    case 75: return "no null termination char found while decoding text chunk";
    case 76: return "iTXt chunk too short to contain required bytes";
    case 77: return "integer overflow in buffer size";
    case 78: return "failed to open file for reading"; /*file doesn't exist or couldn't be opened for reading*/
    case 79: return "failed to open file for writing";
    case 80: return "tried creating a tree of 0 symbols";
    case 81: return "lazy matching at pos 0 is impossible";
    case 82: return "color conversion to palette requested while a color isn't in palette";
    case 83: return "memory allocation failed";
    case 84: return "given image too small to contain all pixels to be encoded";
    case 86: return "impossible offset in lz77 encoding (internal bug)";
    case 87: return "must provide custom zlib function pointer if LODEPNG_COMPILE_ZLIB is not defined";
    case 88: return "invalid filter strategy given for LodePNGEncoderSettings.filter_strategy";
    case 89: return "text chunk keyword too short or long: must have size 1-79";
    /*the windowsize in the LodePNGCompressSettings. Requiring POT(==> & instead of %) makes encoding 12% faster.*/
    case 90: return "windowsize must be a power of two";
    case 91: return "invalid decompressed idat size";
    case 92: return "too many pixels, not supported";
    case 93: return "zero width or height is invalid";
    case 94: return "header chunk must have a size of 13 bytes";
  }
  return "unknown error code";
}

// Assembly:
movl %edi, -0xc(%rsp)
movl -0xc(%rsp), %eax
movq %rax, -0x18(%rsp)
subq $0x5e, %rax
ja 0x10d12
movq -0x18(%rsp), %rax
leaq 0xbba5(%rip), %rcx      # 0x1c368
movslq (%rcx,%rax,4), %rax
addq %rcx, %rax
jmpq *%rax
leaq 0xc0b2(%rip), %rax      # 0x1c885
movq %rax, -0x8(%rsp)
jmp 0x10d1e
leaq 0xc0be(%rip), %rax      # 0x1c8a2
movq %rax, -0x8(%rsp)
jmp 0x10d1e
leaq 0xc0be(%rip), %rax      # 0x1c8b3
movq %rax, -0x8(%rsp)
jmp 0x10d1e
leaq 0xc0e2(%rip), %rax      # 0x1c8e8
movq %rax, -0x8(%rsp)
jmp 0x10d1e
leaq 0xc109(%rip), %rax      # 0x1c920
movq %rax, -0x8(%rsp)
jmp 0x10d1e
leaq 0xc0f8(%rip), %rax      # 0x1c920
movq %rax, -0x8(%rsp)
jmp 0x10d1e
leaq 0xc0e7(%rip), %rax      # 0x1c920
movq %rax, -0x8(%rsp)
jmp 0x10d1e
leaq 0xc105(%rip), %rax      # 0x1c94f
movq %rax, -0x8(%rsp)
jmp 0x10d1e
leaq 0xc12b(%rip), %rax      # 0x1c986
movq %rax, -0x8(%rsp)
jmp 0x10d1e
leaq 0xc14b(%rip), %rax      # 0x1c9b7
movq %rax, -0x8(%rsp)
jmp 0x10d1e
leaq 0xc109(%rip), %rax      # 0x1c986
movq %rax, -0x8(%rsp)
jmp 0x10d1e
leaq 0xc14f(%rip), %rax      # 0x1c9dd
movq %rax, -0x8(%rsp)
jmp 0x10d1e
leaq 0xc175(%rip), %rax      # 0x1ca14
movq %rax, -0x8(%rsp)
jmp 0x10d1e
leaq 0xc0d6(%rip), %rax      # 0x1c986
movq %rax, -0x8(%rsp)
jmp 0x10d1e
leaq 0xc189(%rip), %rax      # 0x1ca4a
movq %rax, -0x8(%rsp)
jmp 0x10d1e
leaq 0xc1a8(%rip), %rax      # 0x1ca7a
movq %rax, -0x8(%rsp)
jmp 0x10d1e
leaq 0xc1b5(%rip), %rax      # 0x1ca98
movq %rax, -0x8(%rsp)
jmp 0x10d1e
leaq 0xc1ce(%rip), %rax      # 0x1cac2
movq %rax, -0x8(%rsp)
jmp 0x10d1e
leaq 0xc1fa(%rip), %rax      # 0x1caff
movq %rax, -0x8(%rsp)
jmp 0x10d1e
leaq 0xc20f(%rip), %rax      # 0x1cb25
movq %rax, -0x8(%rsp)
jmp 0x10d1e
leaq 0xc230(%rip), %rax      # 0x1cb57
movq %rax, -0x8(%rsp)
jmp 0x10d1e
leaq 0xc243(%rip), %rax      # 0x1cb7b
movq %rax, -0x8(%rsp)
jmp 0x10d1e
leaq 0xc26a(%rip), %rax      # 0x1cbb3
movq %rax, -0x8(%rsp)
jmp 0x10d1e
leaq 0xc277(%rip), %rax      # 0x1cbd1
movq %rax, -0x8(%rsp)
jmp 0x10d1e
leaq 0xc285(%rip), %rax      # 0x1cbf0
movq %rax, -0x8(%rsp)
jmp 0x10d1e
leaq 0xc28e(%rip), %rax      # 0x1cc0a
movq %rax, -0x8(%rsp)
jmp 0x10d1e
leaq 0xc29a(%rip), %rax      # 0x1cc27
movq %rax, -0x8(%rsp)
jmp 0x10d1e
leaq 0xc2c5(%rip), %rax      # 0x1cc63
movq %rax, -0x8(%rsp)
jmp 0x10d1e
leaq 0xc2d8(%rip), %rax      # 0x1cc87
movq %rax, -0x8(%rsp)
jmp 0x10d1e
leaq 0xc2f3(%rip), %rax      # 0x1ccb3
movq %rax, -0x8(%rsp)
jmp 0x10d1e
leaq 0xc2f9(%rip), %rax      # 0x1ccca
movq %rax, -0x8(%rsp)
jmp 0x10d1e
leaq 0xc33b(%rip), %rax      # 0x1cd1d
movq %rax, -0x8(%rsp)
jmp 0x10d1e
leaq 0xc358(%rip), %rax      # 0x1cd4b
movq %rax, -0x8(%rsp)
jmp 0x10d1e
leaq 0xc36f(%rip), %rax      # 0x1cd73
movq %rax, -0x8(%rsp)
jmp 0x10d1e
leaq 0xc39f(%rip), %rax      # 0x1cdb4
movq %rax, -0x8(%rsp)
jmp 0x10d1e
leaq 0xc3ba(%rip), %rax      # 0x1cde0
movq %rax, -0x8(%rsp)
jmp 0x10d1e
leaq 0xc3d7(%rip), %rax      # 0x1ce0e
movq %rax, -0x8(%rsp)
jmp 0x10d1e
leaq 0xc3ee(%rip), %rax      # 0x1ce36
movq %rax, -0x8(%rsp)
jmp 0x10d1e
leaq 0xc425(%rip), %rax      # 0x1ce7e
movq %rax, -0x8(%rsp)
jmp 0x10d1e
leaq 0xc414(%rip), %rax      # 0x1ce7e
movq %rax, -0x8(%rsp)
jmp 0x10d1e
leaq 0xc43c(%rip), %rax      # 0x1ceb7
movq %rax, -0x8(%rsp)
jmp 0x10d1e
leaq 0xc45c(%rip), %rax      # 0x1cee8
movq %rax, -0x8(%rsp)
jmp 0x10d1e
leaq 0xc46e(%rip), %rax      # 0x1cf0b
movq %rax, -0x8(%rsp)
jmp 0x10d1e
leaq 0xc479(%rip), %rax      # 0x1cf27
movq %rax, -0x8(%rsp)
jmp 0x10d1e
leaq 0xc4a2(%rip), %rax      # 0x1cf61
movq %rax, -0x8(%rsp)
jmp 0x10d1e
leaq 0xc4c0(%rip), %rax      # 0x1cf90
movq %rax, -0x8(%rsp)
jmp 0x10d1e
leaq 0xc4fb(%rip), %rax      # 0x1cfdc
movq %rax, -0x8(%rsp)
jmp 0x10d1e
leaq 0xc521(%rip), %rax      # 0x1d013
movq %rax, -0x8(%rsp)
jmp 0x10d1e
leaq 0xc54f(%rip), %rax      # 0x1d052
movq %rax, -0x8(%rsp)
jmp 0x10d1e
leaq 0xc567(%rip), %rax      # 0x1d07b
movq %rax, -0x8(%rsp)
jmp 0x10d1e
leaq 0xc5a1(%rip), %rax      # 0x1d0c6
movq %rax, -0x8(%rsp)
jmp 0x10d1e
leaq 0xc5e1(%rip), %rax      # 0x1d117
movq %rax, -0x8(%rsp)
jmp 0x10d1e
leaq 0xc601(%rip), %rax      # 0x1d148
movq %rax, -0x8(%rsp)
jmp 0x10d1e
leaq 0xc63e(%rip), %rax      # 0x1d196
movq %rax, -0x8(%rsp)
jmp 0x10d1e
leaq 0xc667(%rip), %rax      # 0x1d1d0
movq %rax, -0x8(%rsp)
jmp 0x10d1e
leaq 0xc6b5(%rip), %rax      # 0x1d22f
movq %rax, -0x8(%rsp)
jmp 0x10d1e
leaq 0xc702(%rip), %rax      # 0x1d28d
movq %rax, -0x8(%rsp)
jmp 0x10d1e
leaq 0xc74a(%rip), %rax      # 0x1d2e6
movq %rax, -0x8(%rsp)
jmp 0x10d1e
leaq 0xc77c(%rip), %rax      # 0x1d329
movq %rax, -0x8(%rsp)
jmp 0x10d1e
leaq 0xc7a7(%rip), %rax      # 0x1d365
movq %rax, -0x8(%rsp)
jmp 0x10d1e
leaq 0xc7f6(%rip), %rax      # 0x1d3c5
movq %rax, -0x8(%rsp)
jmp 0x10d1e
leaq 0xc7fd(%rip), %rax      # 0x1d3dd
movq %rax, -0x8(%rsp)
jmp 0x10d1e
leaq 0xc804(%rip), %rax      # 0x1d3f5
movq %rax, -0x8(%rsp)
jmp 0x10d1e
leaq 0xc82c(%rip), %rax      # 0x1d42e
movq %rax, -0x8(%rsp)
jmp 0x10d1e
leaq 0xc84a(%rip), %rax      # 0x1d45d
movq %rax, -0x8(%rsp)
jmp 0x10d1e
leaq 0xc859(%rip), %rax      # 0x1d47d
movq %rax, -0x8(%rsp)
jmp 0x10d1e
leaq 0xc868(%rip), %rax      # 0x1d49d
movq %rax, -0x8(%rsp)
jmp 0x10d1e
leaq 0xc877(%rip), %rax      # 0x1d4bd
movq %rax, -0x8(%rsp)
jmp 0x10d1e
leaq 0xc889(%rip), %rax      # 0x1d4e0
movq %rax, -0x8(%rsp)
jmp 0x10d1e
leaq 0xc89d(%rip), %rax      # 0x1d505
movq %rax, -0x8(%rsp)
jmp 0x10d1e
leaq 0xc8d1(%rip), %rax      # 0x1d54a
movq %rax, -0x8(%rsp)
jmp 0x10d1e
leaq 0xc8d9(%rip), %rax      # 0x1d563
movq %rax, -0x8(%rsp)
jmp 0x10d1e
leaq 0xc902(%rip), %rax      # 0x1d59d
movq %rax, -0x8(%rsp)
jmp 0x10d1e
leaq 0xc926(%rip), %rax      # 0x1d5cf
movq %rax, -0x8(%rsp)
jmp 0x10d1e
leaq 0xc969(%rip), %rax      # 0x1d620
movq %rax, -0x8(%rsp)
jmp 0x10d1e
leaq 0xc9a4(%rip), %rax      # 0x1d669
movq %rax, -0x8(%rsp)
jmp 0x10d1e
leaq 0xc9d0(%rip), %rax      # 0x1d6a3
movq %rax, -0x8(%rsp)
jmp 0x10d1e
leaq 0xc9e4(%rip), %rax      # 0x1d6c5
movq %rax, -0x8(%rsp)
jmp 0x10d1e
leaq 0xc9f5(%rip), %rax      # 0x1d6e4
movq %rax, -0x8(%rsp)
jmp 0x10d1e
leaq 0xca06(%rip), %rax      # 0x1d703
movq %rax, -0x8(%rsp)
jmp 0x10d1e
leaq 0xca18(%rip), %rax      # 0x1d723
movq %rax, -0x8(%rsp)
jmp 0x10d1e
leaq 0xca34(%rip), %rax      # 0x1d74d
movq %rax, -0x8(%rsp)
movq -0x8(%rsp), %rax
retq
nopw %cs:(%rax,%rax)