// File: /workspace/github_cpp_makefile_star2_O1/lvandeve[P]lodepng/lodepng_util.cpp
// Function: lodepng::getChrm(float*, float*, unsigned int, lodepng::LodePNGICC const*, LodePNGInfo const*)
static unsigned getChrm(float m[9], float whitepoint[3], unsigned use_icc,
                        const LodePNGICC* icc, const LodePNGInfo* info) {
  size_t i;
  if(use_icc) {
    if(getICCChrm(m, whitepoint, icc)) return 1;  /* error in the matrix computations */
  } else if(info->chrm_defined && !info->srgb_defined) {
    float wx = info->chrm_white_x / 100000.0f, wy = info->chrm_white_y / 100000.0f;
    float rx = info->chrm_red_x / 100000.0f, ry = info->chrm_red_y / 100000.0f;
    float gx = info->chrm_green_x / 100000.0f, gy = info->chrm_green_y / 100000.0f;
    float bx = info->chrm_blue_x / 100000.0f, by = info->chrm_blue_y / 100000.0f;
    if(getChrmMatrixXY(m, wx, wy, rx, ry, gx, gy, bx, by)) return 1; /* returns if error */
    /* Output whitepoint, xyY to XYZ: */
    whitepoint[0] = wx / wy;
    whitepoint[1] = 1;
    whitepoint[2] = (1 - wx - wy) / wy;
  } else {
    /* the standard linear sRGB to XYZ matrix */
    static const float srgb[9] = {
        0.4124564f, 0.3575761f, 0.1804375f,
        0.2126729f, 0.7151522f, 0.0721750f,
        0.0193339f, 0.1191920f, 0.9503041f
    };
    for(i = 0; i < 9; i++) m[i] = srgb[i];
    /* sRGB's whitepoint xyY "0.3127,0.3290,1" in XYZ: */
    whitepoint[0] = 0.9504559270516716f;
    whitepoint[1] = 1;
    whitepoint[2] = 1.0890577507598784f;
  }
  return 0;
}

// Assembly:
pushq %rbp
pushq %r15
pushq %r14
pushq %rbx
subq $0x78, %rsp
movq %rsi, %rbx
movq %rdi, %r14
testl %edx, %edx
je 0x14323
movq %rcx, %r15
cmpl $0x2, (%rcx)
jne 0x14373
xorps %xmm0, %xmm0
movaps %xmm0, 0x30(%rsp)
movaps %xmm0, 0x40(%rsp)
movl $0x3f800000, %eax       # imm = 0x3F800000
movl %eax, 0x30(%rsp)
movl %eax, 0x40(%rsp)
movl %eax, 0x50(%rsp)
movl 0x1c(%r15), %ebp
testl %ebp, %ebp
je 0x143ad
movl 0x40(%r15), %eax
leaq 0x30(%rsp), %rdi
movl %eax, 0x20(%rdi)
movups 0x20(%r15), %xmm0
movups 0x30(%r15), %xmm1
movaps %xmm1, 0x10(%rdi)
movaps %xmm0, (%rdi)
callq 0x14943
jmp 0x143db
cmpl $0x0, 0xd0(%r8)
je 0x1433b
cmpl $0x0, 0xf4(%r8)
je 0x1473e
movaps 0x619ae(%rip), %xmm0    # 0x75cf0
movups %xmm0, 0x10(%r14)
movaps 0x61992(%rip), %xmm0    # 0x75ce0
movups %xmm0, (%r14)
movl $0x3f734721, 0x20(%r14) # imm = 0x3F734721
movabsq $0x3f8000003f735114, %rax # imm = 0x3F8000003F735114
movq %rax, (%rbx)
movl $0x3f8b663f, 0x8(%rbx)  # imm = 0x3F8B663F
jmp 0x1472d
movl $0x3f800000, %eax       # imm = 0x3F800000
movl %eax, (%r14)
movabsq $0x3f80000000000000, %rcx # imm = 0x3F80000000000000
movq %rcx, 0x1c(%r14)
xorl %r15d, %r15d
movq %r15, 0x14(%r14)
movq %rcx, 0xc(%r14)
movq %r15, 0x4(%r14)
movl %eax, 0x8(%rbx)
movabsq $0x3f8000003f800000, %rax # imm = 0x3F8000003F800000
movq %rax, (%rbx)
jmp 0x14730
movss 0x10(%r15), %xmm0
movss 0x14(%r15), %xmm1
movss 0x18(%r15), %xmm2
movss 0x48(%r15), %xmm3
movss 0x4c(%r15), %xmm4
movss 0x50(%r15), %xmm5
leaq 0x30(%rsp), %rdi
callq 0x14b0b
movss 0x4c(%r15), %xmm3
testl %ebp, %ebp
je 0x144b5
xorps %xmm1, %xmm1
cvtss2sd 0x48(%r15), %xmm1
xorps %xmm0, %xmm0
cvtss2sd 0x50(%r15), %xmm0
xorps %xmm2, %xmm2
cvtss2sd 0x30(%rsp), %xmm2
cvtss2sd %xmm3, %xmm3
xorps %xmm4, %xmm4
cvtss2sd 0x34(%rsp), %xmm4
mulsd %xmm3, %xmm4
mulsd %xmm1, %xmm2
addsd %xmm4, %xmm2
xorps %xmm4, %xmm4
cvtss2sd 0x38(%rsp), %xmm4
mulsd %xmm0, %xmm4
addsd %xmm2, %xmm4
xorps %xmm2, %xmm2
cvtsd2ss %xmm4, %xmm2
movss %xmm2, 0x24(%rsp)
xorps %xmm2, %xmm2
cvtss2sd 0x3c(%rsp), %xmm2
xorps %xmm4, %xmm4
cvtss2sd 0x40(%rsp), %xmm4
mulsd %xmm3, %xmm4
mulsd %xmm1, %xmm2
addsd %xmm4, %xmm2
xorps %xmm4, %xmm4
cvtss2sd 0x44(%rsp), %xmm4
mulsd %xmm0, %xmm4
addsd %xmm2, %xmm4
xorps %xmm2, %xmm2
cvtsd2ss %xmm4, %xmm2
movss %xmm2, 0x2c(%rsp)
xorps %xmm2, %xmm2
cvtss2sd 0x48(%rsp), %xmm2
xorps %xmm4, %xmm4
cvtss2sd 0x4c(%rsp), %xmm4
mulsd %xmm3, %xmm4
mulsd %xmm1, %xmm2
addsd %xmm4, %xmm2
xorps %xmm1, %xmm1
cvtss2sd 0x50(%rsp), %xmm1
mulsd %xmm0, %xmm1
addsd %xmm2, %xmm1
xorps %xmm0, %xmm0
cvtsd2ss %xmm1, %xmm0
movss %xmm0, 0x28(%rsp)
jmp 0x144d3
movss 0x48(%r15), %xmm0
movss %xmm0, 0x24(%rsp)
movss 0x50(%r15), %xmm0
movss %xmm0, 0x28(%rsp)
movss %xmm3, 0x2c(%rsp)
cvtss2sd 0x58(%r15), %xmm12
cvtss2sd 0x5c(%r15), %xmm11
cvtss2sd 0x60(%r15), %xmm9
xorps %xmm3, %xmm3
cvtss2sd 0x30(%rsp), %xmm3
cvtss2sd 0x34(%rsp), %xmm6
movaps %xmm11, %xmm1
mulsd %xmm6, %xmm1
movaps %xmm12, %xmm4
mulsd %xmm3, %xmm4
addsd %xmm1, %xmm4
xorps %xmm2, %xmm2
cvtss2sd 0x38(%rsp), %xmm2
movaps %xmm9, %xmm0
mulsd %xmm2, %xmm0
xorps %xmm5, %xmm5
cvtss2sd 0x3c(%rsp), %xmm5
cvtss2sd 0x40(%rsp), %xmm7
addsd %xmm4, %xmm0
movsd %xmm0, 0x70(%rsp)
movaps %xmm11, %xmm4
mulsd %xmm7, %xmm4
movaps %xmm12, %xmm10
mulsd %xmm5, %xmm10
addsd %xmm4, %xmm10
cvtss2sd 0x44(%rsp), %xmm8
movaps %xmm9, %xmm4
mulsd %xmm8, %xmm4
xorps %xmm0, %xmm0
cvtss2sd 0x48(%rsp), %xmm0
movsd %xmm0, 0x68(%rsp)
addsd %xmm10, %xmm4
xorps %xmm10, %xmm10
cvtss2sd 0x4c(%rsp), %xmm10
mulsd %xmm10, %xmm11
mulsd %xmm0, %xmm12
addsd %xmm11, %xmm12
xorps %xmm0, %xmm0
cvtss2sd 0x50(%rsp), %xmm0
movsd %xmm0, 0x60(%rsp)
mulsd %xmm0, %xmm9
addsd %xmm12, %xmm9
xorps %xmm0, %xmm0
cvtss2sd 0x64(%r15), %xmm0
xorps %xmm1, %xmm1
cvtss2sd 0x68(%r15), %xmm1
movapd %xmm6, %xmm13
mulsd %xmm1, %xmm13
movaps %xmm0, %xmm14
mulsd %xmm3, %xmm14
xorps %xmm12, %xmm12
cvtss2sd 0x6c(%r15), %xmm12
addsd %xmm13, %xmm14
movaps %xmm12, %xmm13
mulsd %xmm2, %xmm13
addsd %xmm14, %xmm13
movapd %xmm7, %xmm14
mulsd %xmm1, %xmm14
movaps %xmm0, %xmm15
mulsd %xmm5, %xmm15
addsd %xmm14, %xmm15
movaps %xmm12, %xmm14
mulsd %xmm8, %xmm14
addsd %xmm15, %xmm14
mulsd %xmm10, %xmm1
movsd 0x68(%rsp), %xmm11
mulsd %xmm11, %xmm0
addsd %xmm1, %xmm0
mulsd 0x60(%rsp), %xmm12
addsd %xmm0, %xmm12
xorps %xmm0, %xmm0
cvtss2sd 0x74(%r15), %xmm0
mulsd %xmm0, %xmm6
xorps %xmm1, %xmm1
cvtss2sd 0x70(%r15), %xmm1
mulsd %xmm1, %xmm3
addsd %xmm6, %xmm3
xorps %xmm15, %xmm15
cvtss2sd 0x78(%r15), %xmm15
mulsd %xmm15, %xmm2
addsd %xmm3, %xmm2
mulsd %xmm0, %xmm7
mulsd %xmm1, %xmm5
addsd %xmm7, %xmm5
mulsd %xmm15, %xmm8
addsd %xmm5, %xmm8
mulsd %xmm0, %xmm10
mulsd %xmm11, %xmm1
addsd %xmm10, %xmm1
mulsd 0x60(%rsp), %xmm15
addsd %xmm1, %xmm15
xorps %xmm3, %xmm3
cvtsd2ss 0x70(%rsp), %xmm3
cvtsd2ss %xmm4, %xmm4
xorps %xmm5, %xmm5
cvtsd2ss %xmm9, %xmm5
xorps %xmm6, %xmm6
cvtsd2ss %xmm13, %xmm6
xorps %xmm7, %xmm7
cvtsd2ss %xmm14, %xmm7
xorps %xmm0, %xmm0
cvtsd2ss %xmm12, %xmm0
xorps %xmm1, %xmm1
cvtsd2ss %xmm2, %xmm1
xorps %xmm2, %xmm2
cvtsd2ss %xmm8, %xmm2
xorps %xmm8, %xmm8
cvtsd2ss %xmm15, %xmm8
movss %xmm8, 0x18(%rsp)
movss %xmm2, 0x10(%rsp)
movss %xmm1, 0x8(%rsp)
movss %xmm0, (%rsp)
movq %r14, %rdi
movss 0x24(%rsp), %xmm0
movss 0x2c(%rsp), %xmm1
movss 0x28(%rsp), %xmm2
callq 0x14c1a
testl %eax, %eax
je 0x1470d
movl $0x1, %r15d
jmp 0x14730
movss 0x24(%rsp), %xmm0
movss %xmm0, (%rbx)
movss 0x2c(%rsp), %xmm0
movss %xmm0, 0x4(%rbx)
movss 0x28(%rsp), %xmm0
movss %xmm0, 0x8(%rbx)
xorl %r15d, %r15d
movl %r15d, %eax
addq $0x78, %rsp
popq %rbx
popq %r14
popq %r15
popq %rbp
retq
movl 0xd8(%r8), %eax
movss 0x6162b(%rip), %xmm1    # 0x75d78
cvtsi2ss %rax, %xmm5
divss %xmm1, %xmm5
xorps %xmm3, %xmm3
ucomiss %xmm3, %xmm5
movl $0x1, %r15d
jne 0x14766
jnp 0x14730
movl 0xe0(%r8), %eax
cvtsi2ss %rax, %xmm9
divss %xmm1, %xmm9
ucomiss %xmm3, %xmm9
jne 0x1477f
jnp 0x14730
movl 0xe8(%r8), %eax
cvtsi2ss %rax, %xmm4
divss %xmm1, %xmm4
ucomiss %xmm3, %xmm4
jne 0x14796
jnp 0x14730
movl 0xf0(%r8), %eax
cvtsi2ss %rax, %xmm7
divss %xmm1, %xmm7
ucomiss %xmm3, %xmm7
jne 0x147ad
jnp 0x14730
movl 0xd4(%r8), %eax
cvtsi2ss %rax, %xmm0
divss %xmm1, %xmm0
movl 0xec(%r8), %eax
cvtsi2ss %rax, %xmm8
movl 0xe4(%r8), %eax
cvtsi2ss %rax, %xmm6
movl 0xdc(%r8), %eax
xorps %xmm3, %xmm3
cvtsi2ss %rax, %xmm3
divss %xmm1, %xmm8
divss %xmm1, %xmm6
divss %xmm1, %xmm3
movss 0x6156b(%rip), %xmm1    # 0x75d64
movaps %xmm1, %xmm2
subss %xmm0, %xmm2
divss %xmm5, %xmm0
subss %xmm5, %xmm2
divss %xmm5, %xmm2
movaps %xmm1, %xmm5
subss %xmm3, %xmm5
divss %xmm9, %xmm3
subss %xmm9, %xmm5
divss %xmm9, %xmm5
movaps %xmm1, %xmm9
subss %xmm6, %xmm9
divss %xmm4, %xmm6
subss %xmm4, %xmm9
divss %xmm4, %xmm9
movaps %xmm1, %xmm4
subss %xmm8, %xmm4
divss %xmm7, %xmm8
subss %xmm7, %xmm4
divss %xmm7, %xmm4
movss %xmm8, 0x8(%rsp)
movss %xmm4, 0x18(%rsp)
movss %xmm9, (%rsp)
movl $0x3f800000, 0x10(%rsp) # imm = 0x3F800000
movq %r14, %rdi
movss %xmm0, 0x60(%rsp)
movss %xmm2, 0x24(%rsp)
movaps %xmm1, %xmm4
movaps %xmm1, %xmm7
callq 0x14c1a
testl %eax, %eax
jne 0x14730
movss 0x60(%rsp), %xmm0
movss %xmm0, (%rbx)
movl $0x3f800000, 0x4(%rbx)  # imm = 0x3F800000
movss 0x24(%rsp), %xmm0
jmp 0x14728