// File: lvandeve[P]lodepng/lodepng_unittest.cpp
// Function: doCodecTestC(Image&)
void doCodecTestC(Image& image) {
  unsigned char* encoded = 0;
  size_t encoded_size = 0;
  unsigned char* decoded = 0;
  unsigned decoded_w;
  unsigned decoded_h;

  struct OnExitScope {
    unsigned char** a;
    unsigned char** b;
    OnExitScope(unsigned char** ca, unsigned char** cb) : a(ca), b(cb) {}
    ~OnExitScope() { free(*a); free(*b); }
  } onExitScope(&encoded, &decoded);

  unsigned error_enc = lodepng_encode_memory(&encoded, &encoded_size, &image.data[0],
                                             image.width, image.height, image.colorType, image.bitDepth);

  if(error_enc != 0) std::cout << "Error: " << lodepng_error_text(error_enc) << std::endl;
  ASSERT_NO_PNG_ERROR_MSG(error_enc, "encoder error C");

  //if the image is large enough, compressing it should result in smaller size
  if(image.data.size() > 512) assertTrue(encoded_size < image.data.size(), "compressed size");

  unsigned error_dec = lodepng_decode_memory(&decoded, &decoded_w, &decoded_h,
                                             encoded, encoded_size, image.colorType, image.bitDepth);

  if(error_dec != 0) std::cout << "Error: " << lodepng_error_text(error_dec) << std::endl;
  ASSERT_NO_PNG_ERROR_MSG(error_dec, "decoder error C");

  ASSERT_EQUALS(image.width, decoded_w);
  ASSERT_EQUALS(image.height, decoded_h);
  assertPixels(image, decoded, "Pixels C");
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0x570, %rsp            # imm = 0x570
movq %rdi, -0x8(%rbp)
movq $0x0, -0x10(%rbp)
movq $0x0, -0x18(%rbp)
movq $0x0, -0x20(%rbp)
leaq -0x38(%rbp), %rdi
leaq -0x10(%rbp), %rsi
leaq -0x20(%rbp), %rdx
callq 0x2b9d0
movq -0x8(%rbp), %rdi
xorl %eax, %eax
movl %eax, %esi
callq 0x1a5f0
movq %rax, -0x428(%rbp)
jmp 0x2a9ce
movq -0x428(%rbp), %rdx
movq -0x8(%rbp), %rax
movl 0x18(%rax), %ecx
movl 0x1c(%rax), %r8d
movl 0x20(%rax), %r9d
movl 0x24(%rax), %esi
movq %rsp, %rax
movl %esi, (%rax)
leaq -0x10(%rbp), %rdi
leaq -0x18(%rbp), %rsi
callq 0x10c80
movl %eax, -0x42c(%rbp)
jmp 0x2aa01
movl -0x42c(%rbp), %eax
movl %eax, -0x3c(%rbp)
cmpl $0x0, -0x3c(%rbp)
je 0x2aa81
movq 0xcd5c1(%rip), %rdi     # 0xf7fd8
leaq 0x886ef(%rip), %rsi     # 0xb310d
callq 0x3230
movq %rax, -0x438(%rbp)
jmp 0x2aa2c
movl -0x3c(%rbp), %edi
callq 0x10eb0
movq %rax, -0x440(%rbp)
jmp 0x2aa3d
movq -0x440(%rbp), %rsi
movq -0x438(%rbp), %rdi
callq 0x3230
movq %rax, -0x448(%rbp)
jmp 0x2aa59
movq -0x448(%rbp), %rdi
movq 0xcd559(%rip), %rsi     # 0xf7fc0
callq 0x3280
jmp 0x2aa6e
jmp 0x2aa81
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x48(%rbp)
movl %eax, -0x4c(%rbp)
jmp 0x2b9a9
movl -0x3c(%rbp), %eax
movl %eax, -0x454(%rbp)
leaq -0xb1(%rbp), %rdi
movq %rdi, -0x450(%rbp)
callq 0x3440
movq -0x450(%rbp), %rdx
leaq 0x8866a(%rip), %rsi     # 0xb3115
leaq -0xb0(%rbp), %rdi
callq 0x3340
jmp 0x2aab9
leaq 0x8b71b(%rip), %rdx     # 0xb61db
leaq -0x90(%rbp), %rdi
leaq -0xb0(%rbp), %rsi
callq 0xaa1b0
jmp 0x2aad5
leaq -0xf9(%rbp), %rdi
movq %rdi, -0x460(%rbp)
callq 0x3440
movq -0x460(%rbp), %rdx
movb $0x0, -0xfb(%rbp)
movb $0x0, -0x122(%rbp)
movb $0x0, -0x123(%rbp)
leaq 0x88610(%rip), %rsi     # 0xb311b
leaq -0xf8(%rbp), %rdi
callq 0x3340
jmp 0x2ab19
leaq -0xf8(%rbp), %rdi
callq 0x33f0
movb %al, -0x461(%rbp)
jmp 0x2ab2d
movb -0x461(%rbp), %al
testb $0x1, %al
jne 0x2ab39
jmp 0x2ab71
leaq -0xfa(%rbp), %rdi
movq %rdi, -0x470(%rbp)
callq 0x3440
movq -0x470(%rbp), %rdx
movb $0x1, -0xfb(%rbp)
leaq 0x899a3(%rip), %rsi     # 0xb4504
leaq -0xd8(%rbp), %rdi
callq 0x3340
jmp 0x2ab6f
jmp 0x2abcc
leaq -0x121(%rbp), %rdi
movq %rdi, -0x478(%rbp)
callq 0x3440
movq -0x478(%rbp), %rdx
movb $0x1, -0x122(%rbp)
leaq 0x88582(%rip), %rsi     # 0xb311b
leaq -0x120(%rbp), %rdi
callq 0x3340
jmp 0x2aba7
movb $0x1, -0x123(%rbp)
leaq 0x8bb2e(%rip), %rsi     # 0xb66e3
leaq -0xd8(%rbp), %rdi
leaq -0x120(%rbp), %rdx
callq 0xaa6d0
jmp 0x2abca
jmp 0x2abcc
leaq -0x70(%rbp), %rdi
leaq -0x90(%rbp), %rsi
leaq -0xd8(%rbp), %rdx
callq 0xaa240
jmp 0x2abe5
movl -0x454(%rbp), %edi
leaq -0x70(%rbp), %rsi
callq 0x28d30
jmp 0x2abf6
leaq -0x70(%rbp), %rdi
callq 0x34a8
jmp 0x2ac01
leaq -0xd8(%rbp), %rdi
callq 0x34a8
jmp 0x2ac0f
testb $0x1, -0x123(%rbp)
jne 0x2ac1a
jmp 0x2ac2a
leaq -0x120(%rbp), %rdi
callq 0x34a8
jmp 0x2ac28
jmp 0x2ac2a
testb $0x1, -0x122(%rbp)
jne 0x2ac35
jmp 0x2ac41
leaq -0x121(%rbp), %rdi
callq 0x3290
testb $0x1, -0xfb(%rbp)
jne 0x2ac4c
jmp 0x2ac58
leaq -0xfa(%rbp), %rdi
callq 0x3290
leaq -0xf8(%rbp), %rdi
callq 0x34a8
jmp 0x2ac66
leaq -0xf9(%rbp), %rdi
callq 0x3290
leaq -0x90(%rbp), %rdi
callq 0x34a8
jmp 0x2ac80
leaq -0xb0(%rbp), %rdi
callq 0x34a8
jmp 0x2ac8e
leaq -0xb1(%rbp), %rdi
callq 0x3290
movq -0x8(%rbp), %rdi
callq 0x1a400
movq %rax, -0x480(%rbp)
jmp 0x2acac
movq -0x480(%rbp), %rax
cmpq $0x200, %rax            # imm = 0x200
jbe 0x2aedd
movq -0x18(%rbp), %rax
movq %rax, -0x490(%rbp)
movq -0x8(%rbp), %rdi
callq 0x1a400
movq %rax, -0x488(%rbp)
jmp 0x2acdc
movq -0x488(%rbp), %rcx
movq -0x490(%rbp), %rax
subq %rcx, %rax
setb %al
movb %al, -0x499(%rbp)
leaq -0x149(%rbp), %rdi
movq %rdi, -0x498(%rbp)
callq 0x3440
movq -0x498(%rbp), %rdx
leaq 0x88414(%rip), %rsi     # 0xb312b
leaq -0x148(%rbp), %rdi
callq 0x3340
jmp 0x2ad25
movb -0x499(%rbp), %al
movzbl %al, %edi
andl $0x1, %edi
leaq -0x148(%rbp), %rsi
callq 0x28cc0
jmp 0x2ad3f
leaq -0x148(%rbp), %rdi
callq 0x34a8
jmp 0x2ad4d
leaq -0x149(%rbp), %rdi
callq 0x3290
jmp 0x2aedd
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x48(%rbp)
movl %eax, -0x4c(%rbp)
jmp 0x2ae91
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x48(%rbp)
movl %eax, -0x4c(%rbp)
jmp 0x2ae81
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x48(%rbp)
movl %eax, -0x4c(%rbp)
jmp 0x2ae65
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x48(%rbp)
movl %eax, -0x4c(%rbp)
jmp 0x2ae55
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x48(%rbp)
movl %eax, -0x4c(%rbp)
jmp 0x2ae3c
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x48(%rbp)
movl %eax, -0x4c(%rbp)
jmp 0x2ae23
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x48(%rbp)
movl %eax, -0x4c(%rbp)
jmp 0x2ae06
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x48(%rbp)
movl %eax, -0x4c(%rbp)
jmp 0x2adf6
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x48(%rbp)
movl %eax, -0x4c(%rbp)
leaq -0x70(%rbp), %rdi
callq 0x34a8
jmp 0x2adf4
jmp 0x2adf6
leaq -0xd8(%rbp), %rdi
callq 0x34a8
jmp 0x2ae04
jmp 0x2ae06
testb $0x1, -0x123(%rbp)
jne 0x2ae11
jmp 0x2ae21
leaq -0x120(%rbp), %rdi
callq 0x34a8
jmp 0x2ae1f
jmp 0x2ae21
jmp 0x2ae23
testb $0x1, -0x122(%rbp)
jne 0x2ae2e
jmp 0x2ae3a
leaq -0x121(%rbp), %rdi
callq 0x3290
jmp 0x2ae3c
testb $0x1, -0xfb(%rbp)
jne 0x2ae47
jmp 0x2ae53
leaq -0xfa(%rbp), %rdi
callq 0x3290
jmp 0x2ae55
leaq -0xf8(%rbp), %rdi
callq 0x34a8
jmp 0x2ae63
jmp 0x2ae65
leaq -0xf9(%rbp), %rdi
callq 0x3290
leaq -0x90(%rbp), %rdi
callq 0x34a8
jmp 0x2ae7f
jmp 0x2ae81
leaq -0xb0(%rbp), %rdi
callq 0x34a8
jmp 0x2ae8f
jmp 0x2ae91
leaq -0xb1(%rbp), %rdi
callq 0x3290
jmp 0x2b9a9
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x48(%rbp)
movl %eax, -0x4c(%rbp)
jmp 0x2aecc
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x48(%rbp)
movl %eax, -0x4c(%rbp)
leaq -0x148(%rbp), %rdi
callq 0x34a8
jmp 0x2aeca
jmp 0x2aecc
leaq -0x149(%rbp), %rdi
callq 0x3290
jmp 0x2b9a9
movq -0x10(%rbp), %rcx
movq -0x18(%rbp), %r8
movq -0x8(%rbp), %rax
movl 0x20(%rax), %r9d
movl 0x24(%rax), %edx
movq %rsp, %rax
movl %edx, (%rax)
leaq -0x20(%rbp), %rdi
leaq -0x24(%rbp), %rsi
leaq -0x28(%rbp), %rdx
callq 0xd200
movl %eax, -0x4a0(%rbp)
jmp 0x2af0e
movl -0x4a0(%rbp), %eax
movl %eax, -0x150(%rbp)
cmpl $0x0, -0x150(%rbp)
je 0x2af86
movq 0xcd0ae(%rip), %rdi     # 0xf7fd8
leaq 0x881dc(%rip), %rsi     # 0xb310d
callq 0x3230
movq %rax, -0x4a8(%rbp)
jmp 0x2af3f
movl -0x150(%rbp), %edi
callq 0x10eb0
movq %rax, -0x4b0(%rbp)
jmp 0x2af53
movq -0x4b0(%rbp), %rsi
movq -0x4a8(%rbp), %rdi
callq 0x3230
movq %rax, -0x4b8(%rbp)
jmp 0x2af6f
movq -0x4b8(%rbp), %rdi
movq 0xcd043(%rip), %rsi     # 0xf7fc0
callq 0x3280
jmp 0x2af84
jmp 0x2af86
movl -0x150(%rbp), %eax
movl %eax, -0x4c4(%rbp)
leaq -0x1b1(%rbp), %rdi
movq %rdi, -0x4c0(%rbp)
callq 0x3440
movq -0x4c0(%rbp), %rdx
leaq 0x88162(%rip), %rsi     # 0xb3115
leaq -0x1b0(%rbp), %rdi
callq 0x3340
jmp 0x2afc1
leaq 0x88173(%rip), %rdx     # 0xb313b
leaq -0x190(%rbp), %rdi
leaq -0x1b0(%rbp), %rsi
callq 0xaa1b0
jmp 0x2afdd
leaq -0x1f9(%rbp), %rdi
movq %rdi, -0x4d0(%rbp)
callq 0x3440
movq -0x4d0(%rbp), %rdx
movb $0x0, -0x1fb(%rbp)
movb $0x0, -0x222(%rbp)
movb $0x0, -0x223(%rbp)
leaq 0x8812c(%rip), %rsi     # 0xb313f
leaq -0x1f8(%rbp), %rdi
callq 0x3340
jmp 0x2b021
leaq -0x1f8(%rbp), %rdi
callq 0x33f0
movb %al, -0x4d1(%rbp)
jmp 0x2b035
movb -0x4d1(%rbp), %al
testb $0x1, %al
jne 0x2b041
jmp 0x2b079
leaq -0x1fa(%rbp), %rdi
movq %rdi, -0x4e0(%rbp)
callq 0x3440
movq -0x4e0(%rbp), %rdx
movb $0x1, -0x1fb(%rbp)
leaq 0x8949b(%rip), %rsi     # 0xb4504
leaq -0x1d8(%rbp), %rdi
callq 0x3340
jmp 0x2b077
jmp 0x2b0d4
leaq -0x221(%rbp), %rdi
movq %rdi, -0x4e8(%rbp)
callq 0x3440
movq -0x4e8(%rbp), %rdx
movb $0x1, -0x222(%rbp)
leaq 0x8809e(%rip), %rsi     # 0xb313f
leaq -0x220(%rbp), %rdi
callq 0x3340
jmp 0x2b0af
movb $0x1, -0x223(%rbp)
leaq 0x8b626(%rip), %rsi     # 0xb66e3
leaq -0x1d8(%rbp), %rdi
leaq -0x220(%rbp), %rdx
callq 0xaa6d0
jmp 0x2b0d2
jmp 0x2b0d4
leaq -0x170(%rbp), %rdi
leaq -0x190(%rbp), %rsi
leaq -0x1d8(%rbp), %rdx
callq 0xaa240
jmp 0x2b0f0
movl -0x4c4(%rbp), %edi
leaq -0x170(%rbp), %rsi
callq 0x28d30
jmp 0x2b104
leaq -0x170(%rbp), %rdi
callq 0x34a8
jmp 0x2b112
leaq -0x1d8(%rbp), %rdi
callq 0x34a8
jmp 0x2b120
testb $0x1, -0x223(%rbp)
jne 0x2b12b
jmp 0x2b13b
leaq -0x220(%rbp), %rdi
callq 0x34a8
jmp 0x2b139
jmp 0x2b13b
testb $0x1, -0x222(%rbp)
jne 0x2b146
jmp 0x2b152
leaq -0x221(%rbp), %rdi
callq 0x3290
testb $0x1, -0x1fb(%rbp)
jne 0x2b15d
jmp 0x2b169
leaq -0x1fa(%rbp), %rdi
callq 0x3290
leaq -0x1f8(%rbp), %rdi
callq 0x34a8
jmp 0x2b177
leaq -0x1f9(%rbp), %rdi
callq 0x3290
leaq -0x190(%rbp), %rdi
callq 0x34a8
jmp 0x2b191
leaq -0x1b0(%rbp), %rdi
callq 0x34a8
jmp 0x2b19f
leaq -0x1b1(%rbp), %rdi
callq 0x3290
movq -0x8(%rbp), %rax
movl 0x18(%rax), %eax
cmpl -0x24(%rbp), %eax
je 0x2b5ec
leaq -0x2c9(%rbp), %rdi
movq %rdi, -0x4f0(%rbp)
callq 0x3440
movq -0x4f0(%rbp), %rdx
leaq 0x87f39(%rip), %rsi     # 0xb3115
leaq -0x2c8(%rbp), %rdi
callq 0x3340
jmp 0x2b1ea
leaq 0x87f5e(%rip), %rdx     # 0xb314f
leaq -0x2a8(%rbp), %rdi
leaq -0x2c8(%rbp), %rsi
callq 0xaa1b0
jmp 0x2b206
leaq 0x8b4d6(%rip), %rdx     # 0xb66e3
leaq -0x288(%rbp), %rdi
leaq -0x2a8(%rbp), %rsi
callq 0xaa1b0
jmp 0x2b222
leaq 0x87f2a(%rip), %rdx     # 0xb3153
leaq -0x268(%rbp), %rdi
leaq -0x288(%rbp), %rsi
callq 0xaa1b0
jmp 0x2b23e
leaq 0x87f18(%rip), %rdx     # 0xb315d
leaq -0x248(%rbp), %rdi
leaq -0x268(%rbp), %rsi
callq 0xaa1b0
jmp 0x2b25a
movq 0xccd77(%rip), %rdi     # 0xf7fd8
leaq -0x248(%rbp), %rsi
callq 0x3200
jmp 0x2b26f
leaq -0x248(%rbp), %rdi
callq 0x34a8
jmp 0x2b27d
leaq -0x268(%rbp), %rdi
callq 0x34a8
jmp 0x2b28b
leaq -0x288(%rbp), %rdi
callq 0x34a8
jmp 0x2b299
leaq -0x2a8(%rbp), %rdi
callq 0x34a8
jmp 0x2b2a7
leaq -0x2c8(%rbp), %rdi
callq 0x34a8
jmp 0x2b2b5
leaq -0x2c9(%rbp), %rdi
callq 0x3290
movq 0xccd10(%rip), %rdi     # 0xf7fd8
leaq 0xb0b7c(%rip), %rsi     # 0xdbe4b
callq 0x3230
movq %rax, -0x4f8(%rbp)
jmp 0x2b2dd
movq -0x8(%rbp), %rsi
addq $0x18, %rsi
leaq -0x2f0(%rbp), %rdi
callq 0xaa7f0
jmp 0x2b2f3
movq -0x4f8(%rbp), %rdi
leaq -0x2f0(%rbp), %rsi
callq 0x3200
movq %rax, -0x500(%rbp)
jmp 0x2b30f
movq -0x500(%rbp), %rdi
leaq 0x87e58(%rip), %rsi     # 0xb3175
callq 0x3230
movq %rax, -0x508(%rbp)
jmp 0x2b32b
leaq -0x310(%rbp), %rdi
leaq -0x24(%rbp), %rsi
callq 0xaa7f0
jmp 0x2b33d
movq -0x508(%rbp), %rdi
leaq -0x310(%rbp), %rsi
callq 0x3200
movq %rax, -0x510(%rbp)
jmp 0x2b359
movq -0x510(%rbp), %rdi
leaq 0x87cf5(%rip), %rsi     # 0xb305c
callq 0x3230
movq %rax, -0x518(%rbp)
jmp 0x2b375
movq -0x518(%rbp), %rdi
movq 0xccc3d(%rip), %rsi     # 0xf7fc0
callq 0x3280
jmp 0x2b38a
leaq -0x310(%rbp), %rdi
callq 0x34a8
jmp 0x2b398
leaq -0x2f0(%rbp), %rdi
callq 0x34a8
jmp 0x2b3a6
callq 0x28bd0
jmp 0x2b3ad
jmp 0x2b5ec
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x48(%rbp)
movl %eax, -0x4c(%rbp)
jmp 0x2b4e8
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x48(%rbp)
movl %eax, -0x4c(%rbp)
jmp 0x2b4d8
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x48(%rbp)
movl %eax, -0x4c(%rbp)
jmp 0x2b4bc
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x48(%rbp)
movl %eax, -0x4c(%rbp)
jmp 0x2b4ac
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x48(%rbp)
movl %eax, -0x4c(%rbp)
jmp 0x2b493
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x48(%rbp)
movl %eax, -0x4c(%rbp)
jmp 0x2b47a
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x48(%rbp)
movl %eax, -0x4c(%rbp)
jmp 0x2b45d
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x48(%rbp)
movl %eax, -0x4c(%rbp)
jmp 0x2b44d
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x48(%rbp)
movl %eax, -0x4c(%rbp)
leaq -0x170(%rbp), %rdi
callq 0x34a8
jmp 0x2b44b
jmp 0x2b44d
leaq -0x1d8(%rbp), %rdi
callq 0x34a8
jmp 0x2b45b
jmp 0x2b45d
testb $0x1, -0x223(%rbp)
jne 0x2b468
jmp 0x2b478
leaq -0x220(%rbp), %rdi
callq 0x34a8
jmp 0x2b476
jmp 0x2b478
jmp 0x2b47a
testb $0x1, -0x222(%rbp)
jne 0x2b485
jmp 0x2b491
leaq -0x221(%rbp), %rdi
callq 0x3290
jmp 0x2b493
testb $0x1, -0x1fb(%rbp)
jne 0x2b49e
jmp 0x2b4aa
leaq -0x1fa(%rbp), %rdi
callq 0x3290
jmp 0x2b4ac
leaq -0x1f8(%rbp), %rdi
callq 0x34a8
jmp 0x2b4ba
jmp 0x2b4bc
leaq -0x1f9(%rbp), %rdi
callq 0x3290
leaq -0x190(%rbp), %rdi
callq 0x34a8
jmp 0x2b4d6
jmp 0x2b4d8
leaq -0x1b0(%rbp), %rdi
callq 0x34a8
jmp 0x2b4e6
jmp 0x2b4e8
leaq -0x1b1(%rbp), %rdi
callq 0x3290
jmp 0x2b9a9
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x48(%rbp)
movl %eax, -0x4c(%rbp)
jmp 0x2b59e
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x48(%rbp)
movl %eax, -0x4c(%rbp)
jmp 0x2b58e
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x48(%rbp)
movl %eax, -0x4c(%rbp)
jmp 0x2b57e
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x48(%rbp)
movl %eax, -0x4c(%rbp)
jmp 0x2b56e
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x48(%rbp)
movl %eax, -0x4c(%rbp)
jmp 0x2b55e
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x48(%rbp)
movl %eax, -0x4c(%rbp)
leaq -0x248(%rbp), %rdi
callq 0x34a8
jmp 0x2b55c
jmp 0x2b55e
leaq -0x268(%rbp), %rdi
callq 0x34a8
jmp 0x2b56c
jmp 0x2b56e
leaq -0x288(%rbp), %rdi
callq 0x34a8
jmp 0x2b57c
jmp 0x2b57e
leaq -0x2a8(%rbp), %rdi
callq 0x34a8
jmp 0x2b58c
jmp 0x2b58e
leaq -0x2c8(%rbp), %rdi
callq 0x34a8
jmp 0x2b59c
jmp 0x2b59e
leaq -0x2c9(%rbp), %rdi
callq 0x3290
jmp 0x2b9a9
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x48(%rbp)
movl %eax, -0x4c(%rbp)
jmp 0x2b5d9
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x48(%rbp)
movl %eax, -0x4c(%rbp)
leaq -0x310(%rbp), %rdi
callq 0x34a8
jmp 0x2b5d7
jmp 0x2b5d9
leaq -0x2f0(%rbp), %rdi
callq 0x34a8
jmp 0x2b5e7
jmp 0x2b9a9
movq -0x8(%rbp), %rax
movl 0x1c(%rax), %eax
cmpl -0x28(%rbp), %eax
je 0x2b8e6
leaq -0x3b1(%rbp), %rdi
movq %rdi, -0x520(%rbp)
callq 0x3440
movq -0x520(%rbp), %rdx
leaq 0x87af8(%rip), %rsi     # 0xb3115
leaq -0x3b0(%rbp), %rdi
callq 0x3340
jmp 0x2b62b
leaq 0x87b4d(%rip), %rdx     # 0xb317f
leaq -0x390(%rbp), %rdi
leaq -0x3b0(%rbp), %rsi
callq 0xaa1b0
jmp 0x2b647
leaq 0x8b095(%rip), %rdx     # 0xb66e3
leaq -0x370(%rbp), %rdi
leaq -0x390(%rbp), %rsi
callq 0xaa1b0
jmp 0x2b663
leaq 0x87b19(%rip), %rdx     # 0xb3183
leaq -0x350(%rbp), %rdi
leaq -0x370(%rbp), %rsi
callq 0xaa1b0
jmp 0x2b67f
leaq 0x87ad7(%rip), %rdx     # 0xb315d
leaq -0x330(%rbp), %rdi
leaq -0x350(%rbp), %rsi
callq 0xaa1b0
jmp 0x2b69b
movq 0xcc936(%rip), %rdi     # 0xf7fd8
leaq -0x330(%rbp), %rsi
callq 0x3200
jmp 0x2b6b0
leaq -0x330(%rbp), %rdi
callq 0x34a8
jmp 0x2b6be
leaq -0x350(%rbp), %rdi
callq 0x34a8
jmp 0x2b6cc
leaq -0x370(%rbp), %rdi
callq 0x34a8
jmp 0x2b6da
leaq -0x390(%rbp), %rdi
callq 0x34a8
jmp 0x2b6e8
leaq -0x3b0(%rbp), %rdi
callq 0x34a8
jmp 0x2b6f6
leaq -0x3b1(%rbp), %rdi
callq 0x3290
movq 0xcc8cf(%rip), %rdi     # 0xf7fd8
leaq 0xb073b(%rip), %rsi     # 0xdbe4b
callq 0x3230
movq %rax, -0x528(%rbp)
jmp 0x2b71e
movq -0x8(%rbp), %rsi
addq $0x1c, %rsi
leaq -0x3d8(%rbp), %rdi
callq 0xaa7f0
jmp 0x2b734
movq -0x528(%rbp), %rdi
leaq -0x3d8(%rbp), %rsi
callq 0x3200
movq %rax, -0x530(%rbp)
jmp 0x2b750
movq -0x530(%rbp), %rdi
leaq 0x87a17(%rip), %rsi     # 0xb3175
callq 0x3230
movq %rax, -0x538(%rbp)
jmp 0x2b76c
leaq -0x3f8(%rbp), %rdi
leaq -0x28(%rbp), %rsi
callq 0xaa7f0
jmp 0x2b77e
movq -0x538(%rbp), %rdi
leaq -0x3f8(%rbp), %rsi
callq 0x3200
movq %rax, -0x540(%rbp)
jmp 0x2b79a
movq -0x540(%rbp), %rdi
leaq 0x878b4(%rip), %rsi     # 0xb305c
callq 0x3230
movq %rax, -0x548(%rbp)
jmp 0x2b7b6
movq -0x548(%rbp), %rdi
movq 0xcc7fc(%rip), %rsi     # 0xf7fc0
callq 0x3280
jmp 0x2b7cb
leaq -0x3f8(%rbp), %rdi
callq 0x34a8
jmp 0x2b7d9
leaq -0x3d8(%rbp), %rdi
callq 0x34a8
jmp 0x2b7e7
callq 0x28bd0
jmp 0x2b7ee
jmp 0x2b8e6
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x48(%rbp)
movl %eax, -0x4c(%rbp)
jmp 0x2b898
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x48(%rbp)
movl %eax, -0x4c(%rbp)
jmp 0x2b888
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x48(%rbp)
movl %eax, -0x4c(%rbp)
jmp 0x2b878
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x48(%rbp)
movl %eax, -0x4c(%rbp)
jmp 0x2b868
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x48(%rbp)
movl %eax, -0x4c(%rbp)
jmp 0x2b858
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x48(%rbp)
movl %eax, -0x4c(%rbp)
leaq -0x330(%rbp), %rdi
callq 0x34a8
jmp 0x2b856
jmp 0x2b858
leaq -0x350(%rbp), %rdi
callq 0x34a8
jmp 0x2b866
jmp 0x2b868
leaq -0x370(%rbp), %rdi
callq 0x34a8
jmp 0x2b876
jmp 0x2b878
leaq -0x390(%rbp), %rdi
callq 0x34a8
jmp 0x2b886
jmp 0x2b888
leaq -0x3b0(%rbp), %rdi
callq 0x34a8
jmp 0x2b896
jmp 0x2b898
leaq -0x3b1(%rbp), %rdi
callq 0x3290
jmp 0x2b9a9
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x48(%rbp)
movl %eax, -0x4c(%rbp)
jmp 0x2b8d3
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x48(%rbp)
movl %eax, -0x4c(%rbp)
leaq -0x3f8(%rbp), %rdi
callq 0x34a8
jmp 0x2b8d1
jmp 0x2b8d3
leaq -0x3d8(%rbp), %rdi
callq 0x34a8
jmp 0x2b8e1
jmp 0x2b9a9
movq -0x8(%rbp), %rax
movq %rax, -0x560(%rbp)
movq -0x20(%rbp), %rax
movq %rax, -0x558(%rbp)
leaq -0x419(%rbp), %rdi
movq %rdi, -0x550(%rbp)
callq 0x3440
movq -0x550(%rbp), %rdx
leaq 0x87870(%rip), %rsi     # 0xb318d
leaq -0x418(%rbp), %rdi
callq 0x3340
jmp 0x2b92b
movq -0x558(%rbp), %rsi
movq -0x560(%rbp), %rdi
leaq -0x418(%rbp), %rdx
callq 0x2a730
jmp 0x2b947
leaq -0x418(%rbp), %rdi
callq 0x34a8
jmp 0x2b955
leaq -0x419(%rbp), %rdi
callq 0x3290
leaq -0x38(%rbp), %rdi
callq 0x2ba00
addq $0x570, %rsp            # imm = 0x570
popq %rbp
retq
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x48(%rbp)
movl %eax, -0x4c(%rbp)
jmp 0x2b99d
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x48(%rbp)
movl %eax, -0x4c(%rbp)
leaq -0x418(%rbp), %rdi
callq 0x34a8
jmp 0x2b99b
jmp 0x2b99d
leaq -0x419(%rbp), %rdi
callq 0x3290
leaq -0x38(%rbp), %rdi
callq 0x2ba00
jmp 0x2b9b4
jmp 0x2b9b6
movq -0x48(%rbp), %rdi
callq 0x3430
movq %rax, %rdi
callq 0x1a490
nopw (%rax,%rax)