Function at 0x409520
Capabilities:
Resolve function by parsing pe exports

Disassembly:
sub esp, 0x60
mov eax, dword [0x47fa30]
xor eax, esp
mov dword [esp + 0x5c], eax
push ebx
push ebp
push esi
mov esi, edx
mov eax, dword [esi + 0x6c]
push edi
mov edi, dword [esp + 0x74]
mov ebx, ecx
mov dword [esp + 0x44], esi
mov dword [esp + 0x3c], edi
test al, 1
jne 0x409559
push str.Missing_IHDR_before_cHRM
push esi
call fcn.00408540
add esp, 8
jmp 0x409593
test al, 4
je 0x409585
mov ecx, str.Invalid_cHRM_after_IDAT
call fcn.004085b0
push ebx
mov ecx, esi
call fcn.00408850
add esp, 4
pop edi
pop esi
pop ebp
pop ebx
mov ecx, dword [esp + 0x5c]
xor ecx, esp
call fcn.00450655
add esp, 0x60
ret
test al, 2
je 0x409593
mov ecx, str.Missing_PLTE_before_cHRM
call fcn.004085b0
test edi, edi
je 0x4095ac
mov eax, dword [edi + 8]
test al, 4
je 0x4095ac
test eax, 0x800
jne 0x4095ac
mov ecx, str.Duplicate_cHRM_chunk
jmp 0x409562
cmp ebx, 0x20
je 0x4095b8
mov ecx, str.Incorrect_cHRM_chunk_length
jmp 0x409562
mov ebx, 0x20
lea edi, [esp + 0x4c]
call fcn.004087e0
push 0
mov ecx, esi
call fcn.00408850
add esp, 4
test eax, eax
jne 0x4098fe
movzx edi, byte [esp + 0x4c]
movzx eax, byte [esp + 0x4d]
movzx ecx, byte [esp + 0x4e]
movzx ebx, byte [esp + 0x50]
movzx edx, byte [esp + 0x4f]
movzx ebp, byte [esp + 0x54]
shl edi, 8
add edi, eax
movzx eax, byte [esp + 0x51]
shl ebx, 8
add ebx, eax
movzx eax, byte [esp + 0x55]
shl edi, 8
add edi, ecx
movzx ecx, byte [esp + 0x52]
shl ebp, 8
add ebp, eax
movzx eax, byte [esp + 0x58]
shl ebx, 8
add ebx, ecx
movzx ecx, byte [esp + 0x56]
shl edi, 8
add edi, edx
movzx edx, byte [esp + 0x53]
shl ebp, 8
add ebp, ecx
movzx ecx, byte [esp + 0x59]
shl ebx, 8
add ebx, edx
movzx edx, byte [esp + 0x57]
shl eax, 8
add eax, ecx
movzx ecx, byte [esp + 0x5b]
movzx esi, byte [esp + 0x61]
shl ebp, 8
add ebp, edx
movzx edx, byte [esp + 0x5a]
shl eax, 8
add eax, edx
movzx edx, byte [esp + 0x5d]
shl eax, 8
add eax, ecx
movzx ecx, byte [esp + 0x5c]
shl ecx, 8
add ecx, edx
movzx edx, byte [esp + 0x5e]
shl ecx, 8
add ecx, edx
movzx edx, byte [esp + 0x5f]
shl ecx, 8
add ecx, edx
movzx edx, byte [esp + 0x60]
shl edx, 8
add edx, esi
movzx esi, byte [esp + 0x62]
shl edx, 8
add edx, esi
movzx esi, byte [esp + 0x63]
shl edx, 8
add edx, esi
movzx esi, byte [esp + 0x65]
mov dword [esp + 0x1c], edx
movzx edx, byte [esp + 0x64]
shl edx, 8
add edx, esi
movzx esi, byte [esp + 0x66]
shl edx, 8
add edx, esi
movzx esi, byte [esp + 0x67]
shl edx, 8
add edx, esi
movzx esi, byte [esp + 0x69]
mov dword [esp + 0x20], edx
movzx edx, byte [esp + 0x68]
shl edx, 8
mov dword [esp + 0x18], edi
mov dword [esp + 0x14], ebx
mov dword [esp + 0x10], ebp
mov dword [esp + 0x34], eax
mov dword [esp + 0x2c], ecx
add edx, esi
fild dword [esp + 0x18]
movzx esi, byte [esp + 0x6a]
fld qword [0x477678]
shl edx, 8
add edx, esi
fdiv st(1), st(0)
movzx esi, byte [esp + 0x6b]
shl edx, 8
add edx, esi
mov dword [esp + 0x28], edx
mov esi, dword [esp + 0x3c]
fxch st(1)
fstp dword [esp + 0x18]
fild dword [esp + 0x14]
fdiv st(1)
fstp dword [esp + 0x14]
fild dword [esp + 0x10]
fdiv st(1)
fstp dword [esp + 0x10]
fild dword [esp + 0x34]
fdiv st(1)
fstp dword [esp + 0x48]
fild dword [esp + 0x2c]
fdiv st(1)
fstp dword [esp + 0x30]
fild dword [esp + 0x1c]
fdiv st(1)
fstp dword [esp + 0x38]
fild dword [esp + 0x20]
fdiv st(1)
fstp dword [esp + 0x24]
fidivr dword [esp + 0x28]
fstp dword [esp + 0x40]
test esi, esi
je 0x409889
test dword [esi + 8], 0x800
je 0x409889
add edi, 0xffff89c2
cmp edi, 0x7d0
ja 0x4097fb
add ebx, 0xffff8364
cmp ebx, 0x7d0
ja 0x4097fb
add ebp, 0xffff09e8
cmp ebp, 0x7d0
ja 0x4097fb
add eax, 0xffff8300
cmp eax, 0x7d0
ja 0x4097fb
add ecx, 0xffff8eb8
cmp ecx, 0x7d0
ja 0x4097fb
mov eax, dword [esp + 0x1c]
add eax, 0xffff1988
cmp eax, 0x7d0
ja 0x4097fb
mov ecx, dword [esp + 0x20]
add ecx, 0xffffc950
cmp ecx, 0x7d0
ja 0x4097fb
cmp edx, 0x1388
jl 0x4097fb
cmp edx, 0x1b58
jle 0x4098fe
mov esi, dword [esp + 0x44]
mov ecx, str.Ignoring_incorrect_cHRM_value_when_sRGB_is_also_present
call fcn.004085b0
fld dword [esp + 0x48]
sub esp, 0x20
fstp qword [esp + 0x18]
fld dword [esp + 0x30]
fstp qword [esp + 0x10]
fld dword [esp + 0x34]
fstp qword [esp + 8]
fld dword [esp + 0x38]
fstp qword [esp]
push str.wx_f__wy_f__rx_f__ry_f_n
call fcn.00455651
add eax, 0x40
push eax
call fcn.00455806
fld dword [esp + 0x68]
fstp qword [esp + 0x20]
add esp, 8
fld dword [esp + 0x44]
fstp qword [esp + 0x10]
fld dword [esp + 0x58]
fstp qword [esp + 8]
fld dword [esp + 0x50]
fstp qword [esp]
push str.gx_f__gy_f__bx_f__by_f_n
call fcn.00455651
add eax, 0x40
push eax
call fcn.00455806
add esp, 0x28
pop edi
pop esi
pop ebp
pop ebx
mov ecx, dword [esp + 0x5c]
xor ecx, esp
call fcn.00450655
add esp, 0x60
ret
fld dword [esp + 0x40]
sub esp, 0x40
fstp qword [esp + 0x38]
fld dword [esp + 0x64]
fstp qword [esp + 0x30]
fld dword [esp + 0x78]
fstp qword [esp + 0x28]
fld dword [esp + 0x70]
fstp qword [esp + 0x20]
fld dword [esp + 0x88]
fstp qword [esp + 0x18]
fld dword [esp + 0x50]
fstp qword [esp + 0x10]
fld dword [esp + 0x54]
fstp qword [esp + 8]
fld dword [esp + 0x58]
fstp qword [esp]
call fcn.0040ce90
mov edx, dword [esp + 0x68]
mov eax, dword [esp + 0x60]
mov ecx, dword [esp + 0x5c]
push edx
mov edx, dword [esp + 0x70]
push eax
mov eax, dword [esp + 0x7c]
push ecx
push edx
push eax
mov eax, dword [esp + 0x98]
push ebp
push ebx
push edi
call fcn.0040cf90
add esp, 0x60
mov ecx, dword [esp + 0x6c]
pop edi
pop esi
pop ebp
pop ebx
xor ecx, esp
call fcn.00450655
add esp, 0x60
ret