Function at 0x42f104
Capabilities:
Inspect section memory permissions

Disassembly:
push ebp
mov ebp, esp
sub esp, 0x448
mov eax, dword [0x4d3040]
xor eax, ebp
mov dword [ebp - 8], eax
xor eax, eax
mov dword [ebp - 0x420], 1
push ebx
mov ebx, ecx
mov byte [ebp - 0x415], al
push esi
push edi
mov dword [ebp - 0x448], ebx
mov edi, dword [ebx]
mov ecx, edi
mov byte [ebp - 0x416], al
mov word [ebp - 0x428], ax
mov byte [ebp - 0x426], al
mov dword [ebp - 0x424], eax
mov dword [ebp - 0x430], eax
mov dword [ebp - 0x42c], eax
mov dword [ebp - 0x444], eax
mov dword [ebp - 0x434], eax
mov dword [ebp - 0x438], eax
mov dword [ebx + 8], eax
mov dword [ebx + 4], eax
mov dword [ebx + 0xc], eax
call fcn.0042e0ab
test eax, eax
je 0x42fa50
mov ecx, edi
call fcn.00428d5a
mov ecx, edi
mov esi, eax
call fcn.00428d5a
mov ecx, eax
mov dword [ebp - 0x43c], ecx
cmp ecx, 0x43674249
je 0x42f747
cmp ecx, 0x49444154
je 0x42f6ab
cmp ecx, 0x49454e44
je 0x42f891
cmp ecx, 0x49484452
je 0x42f495
cmp ecx, 0x504c5445
je 0x42f350
cmp ecx, 0x74524e53
je 0x42f233
cmp dword [ebp - 0x420], 0
jne 0x42fa3e
test ecx, 0x20000000
jne 0x42f751
shr eax, 0x18
mov byte [str.XXXX_PNG_chunk_not_known], al
mov eax, ecx
shr eax, 0x10
mov byte [0x4d3e99], al
mov eax, ecx
shr eax, 8
mov byte [0x4d3e9a], al
mov eax, dword fs:[0x2c]
mov byte [0x4d3e9b], cl
mov eax, dword [eax]
mov dword [eax + 0x10], str.XXXX_PNG_chunk_not_known
jmp 0x42fa50
cmp dword [ebp - 0x420], 0
jne 0x42fa3e
cmp dword [ebx + 4], 0
jne 0x42f7ab
cmp byte [ebp - 0x415], 0
je 0x42f2da
mov eax, dword [ebp - 0x42c]
test eax, eax
je 0x42f77d
cmp esi, eax
ja 0x42f766
xor edx, edx
mov byte [ebp - 0x415], 4
mov dword [ebp - 0x41c], edx
test esi, esi
je 0x42f75a
mov eax, dword [edi + 0xa8]
cmp eax, dword [edi + 0xac]
jae 0x42f29d
mov cl, byte [eax]
inc eax
mov dword [edi + 0xa8], eax
jmp 0x42f2c3
cmp dword [edi + 0x20], 0
je 0x42f2c1
mov ecx, edi
call fcn.00428be4
mov eax, dword [edi + 0xa8]
mov edx, dword [ebp - 0x41c]
mov cl, byte [eax]
inc eax
mov dword [edi + 0xa8], eax
jmp 0x42f2c3
xor cl, cl
mov byte [ebp + edx*4 - 0x411], cl
inc edx
mov dword [ebp - 0x41c], edx
cmp edx, esi
jb 0x42f284
jmp 0x42f75a
mov ecx, dword [edi + 8]
test cl, 1
je 0x42f794
lea eax, [ecx + ecx]
cmp esi, eax
jne 0x42f766
xor esi, esi
mov byte [ebp - 0x416], 1
cmp dword [ebx + 0x10], 0x10
jne 0x42f31f
test ecx, ecx
jle 0x42f75a
mov ecx, edi
call fcn.00428ce2
mov word [ebp + esi*2 - 0x10], ax
inc esi
cmp esi, dword [edi + 8]
jl 0x42f308
jmp 0x42f75a
test ecx, ecx
jle 0x42f75a
mov ecx, edi
call fcn.00428ce2
mov ecx, dword [ebx + 0x10]
movzx eax, al
movzx ecx, byte [ecx + 0x4abef4]
imul eax, ecx
mov byte [ebp + esi - 0x428], al
inc esi
cmp esi, dword [edi + 8]
jl 0x42f327
jmp 0x42f75a
cmp dword [ebp - 0x420], 0
jne 0x42fa3e
cmp esi, 0x300
ja 0x42f7c2
push 3
xor edx, edx
mov eax, esi
pop ecx
div ecx
imul ecx, eax, 3
mov dword [ebp - 0x42c], eax
cmp ecx, esi
jne 0x42f7c2
xor edx, edx
mov dword [ebp - 0x41c], edx
test eax, eax
je 0x42f75a
lea esi, [edi + 0x20]
mov ebx, eax
mov eax, dword [edi + 0xa8]
cmp eax, dword [edi + 0xac]
jae 0x42f3b1
mov cl, byte [eax]
inc eax
mov dword [edi + 0xa8], eax
jmp 0x42f3d9
lea esi, [edi + 0x20]
cmp dword [esi], 0
je 0x42f3d7
mov ecx, edi
call fcn.00428be4
mov eax, dword [edi + 0xa8]
mov edx, dword [ebp - 0x41c]
mov cl, byte [eax]
inc eax
mov dword [edi + 0xa8], eax
jmp 0x42f3d9
xor cl, cl
mov dword [ebp - 0x43c], esi
mov byte [ebp + edx*4 - 0x414], cl
cmp eax, dword [edi + 0xac]
jae 0x42f3fc
mov cl, byte [eax]
lea esi, [edi + 0x20]
inc eax
mov dword [edi + 0xa8], eax
jmp 0x42f427
mov ecx, dword [ebp - 0x43c]
cmp dword [ecx], 0
je 0x42f425
mov ecx, edi
call fcn.00428be4
mov eax, dword [edi + 0xa8]
mov edx, dword [ebp - 0x41c]
mov cl, byte [eax]
inc eax
mov dword [edi + 0xa8], eax
jmp 0x42f427
xor cl, cl
mov byte [ebp + edx*4 - 0x413], cl
cmp eax, dword [edi + 0xac]
jae 0x42f441
mov cl, byte [eax]
inc eax
mov dword [edi + 0xa8], eax
jmp 0x42f46c
mov eax, dword [ebp - 0x43c]
cmp dword [eax], 0
je 0x42f46a
mov ecx, edi
call fcn.00428be4
mov eax, dword [edi + 0xa8]
mov edx, dword [ebp - 0x41c]
mov cl, byte [eax]
inc eax
mov dword [edi + 0xa8], eax
jmp 0x42f46c
xor cl, cl
mov byte [ebp + edx*4 - 0x412], cl
mov byte [ebp + edx*4 - 0x411], 0xff
inc edx
mov dword [ebp - 0x41c], edx
cmp edx, ebx
jb 0x42f398
mov ebx, dword [ebp - 0x448]
jmp 0x42f75a
cmp dword [ebp - 0x420], 0
je 0x42f87a
and dword [ebp - 0x420], 0
cmp esi, 0xd
jne 0x42f863
mov ecx, edi
call fcn.00428d5a
mov esi, 0x1000000
mov dword [edi], eax
cmp eax, esi
ja 0x42f694
mov ecx, edi
call fcn.00428d5a
mov dword [edi + 4], eax
cmp eax, esi
ja 0x42f694
mov eax, dword [edi + 0xa8]
cmp eax, dword [edi + 0xac]
jae 0x42f4f3
mov cl, byte [eax]
inc eax
mov dword [edi + 0xa8], eax
jmp 0x42f50a
cmp dword [edi + 0x20], 0
je 0x42f508
mov ecx, edi
call fcn.00428be4
mov eax, dword [edi + 0xa8]
jmp 0x42f4e8
xor cl, cl
push 0x20
movzx eax, cl
mov esi, edi
mov dword [ebx + 0x10], eax
pop edx
mov dword [ebp - 0x41c], edx
cmp eax, 1
je 0x42f538
cmp eax, 2
je 0x42f538
cmp eax, 4
je 0x42f538
cmp eax, 8
je 0x42f538
cmp eax, 0x10
jne 0x42f7d9
mov eax, dword [edi + 0xa8]
cmp eax, dword [edi + 0xac]
jae 0x42f551
mov cl, byte [eax]
inc eax
mov dword [edi + 0xa8], eax
jmp 0x42f568
cmp dword [edx + esi], 0
je 0x42f566
mov ecx, edi
call fcn.00428be4
mov eax, dword [edi + 0xa8]
jmp 0x42f546
xor cl, cl
movzx ecx, cl
mov dword [ebp - 0x434], ecx
cmp ecx, 6
ja 0x42f7f0
push 3
pop edx
cmp ecx, edx
jne 0x42f593
cmp dword [ebx + 0x10], 0x10
je 0x42f7f0
mov byte [ebp - 0x415], dl
jmp 0x42f59c
test cl, 1
jne 0x42f7f0
cmp eax, dword [edi + 0xac]
jb 0x42f5bd
mov ecx, dword [ebp - 0x41c]
cmp dword [ecx + esi], 0
je 0x42f5d4
mov ecx, edi
call fcn.00428be4
mov eax, dword [edi + 0xa8]
mov cl, byte [eax]
inc eax
mov dword [edi + 0xa8], eax
test cl, cl
jne 0x42f807
mov ecx, dword [ebp - 0x41c]
cmp eax, dword [edi + 0xac]
jb 0x42f5ef
cmp dword [ecx + esi], 0
je 0x42f606
mov ecx, edi
call fcn.00428be4
mov eax, dword [edi + 0xa8]
mov cl, byte [eax]
inc eax
mov dword [edi + 0xa8], eax
test cl, cl
jne 0x42f81e
mov ecx, dword [ebp - 0x41c]
cmp eax, dword [edi + 0xac]
jae 0x42f619
mov cl, byte [eax]
inc eax
mov dword [edi + 0xa8], eax
jmp 0x42f630
cmp dword [ecx + esi], 0
je 0x42f62e
mov ecx, edi
call fcn.00428be4
mov eax, dword [edi + 0xa8]
jmp 0x42f60e
xor cl, cl
movzx eax, cl
xor ecx, ecx
inc ecx
mov dword [ebp - 0x444], eax
cmp eax, ecx
ja 0x42f84c
cmp dword [edi], 0
je 0x42f835
mov esi, dword [edi + 4]
test esi, esi
je 0x42f835
xor edx, edx
mov eax, 0x40000000
div dword [edi]
cmp byte [ebp - 0x415], 0
jne 0x42f686
mov ecx, dword [ebp - 0x434]
mov edx, ecx
shr edx, 2
and ecx, 2
and edx, 1
or ecx, 1
add ecx, edx
xor edx, edx
div ecx
jmp 0x42f689
shr eax, 2
mov dword [edi + 8], ecx
cmp eax, esi
jae 0x42f75a
mov eax, dword fs:[0x2c]
mov eax, dword [eax]
mov dword [eax + 0x10], str.too_large
jmp 0x42fa50
cmp dword [ebp - 0x420], 0
jne 0x42fa3e
cmp byte [ebp - 0x415], 0
je 0x42f6ce
cmp dword [ebp - 0x42c], 0
je 0x42fa02
mov ecx, dword [ebp - 0x424]
lea eax, [esi + ecx]
cmp eax, ecx
jl 0x42fa50
mov ecx, dword [ebp - 0x430]
cmp eax, ecx
jbe 0x42f725
test ecx, ecx
jne 0x42f6ff
mov edx, 0x1000
cmp esi, edx
mov ecx, edx
cmova ecx, esi
mov dword [ebp - 0x430], ecx
cmp eax, ecx
jbe 0x42f70f
add ecx, ecx
cmp eax, ecx
ja 0x42f703
mov dword [ebp - 0x430], ecx
push ecx
push dword [ebx + 4]
call fcn.0048ff58
pop ecx
pop ecx
test eax, eax
je 0x42fa16
mov dword [ebx + 4], eax
mov edx, dword [ebx + 4]
mov ecx, edi
add edx, dword [ebp - 0x424]
push esi
call fcn.00428c61
pop ecx
test eax, eax
je 0x42fa2a
add dword [ebp - 0x424], esi
jmp 0x42f75a
mov dword [ebp - 0x438], 1
mov edx, esi
mov ecx, edi
call fcn.00428c23
mov ecx, edi
call fcn.00428d5a
jmp 0x42f185
mov eax, dword fs:[0x2c]
mov eax, dword [eax]
mov dword [eax + 0x10], str.bad_tRNS_len
jmp 0x42fa50
mov eax, dword fs:[0x2c]
mov eax, dword [eax]
mov dword [eax + 0x10], str.tRNS_before_PLTE
jmp 0x42fa50
mov eax, dword fs:[0x2c]
mov eax, dword [eax]
mov dword [eax + 0x10], str.tRNS_with_alpha
jmp 0x42fa50
mov eax, dword fs:[0x2c]
mov eax, dword [eax]
mov dword [eax + 0x10], str.tRNS_after_IDAT
jmp 0x42fa50
mov eax, dword fs:[0x2c]
mov eax, dword [eax]
mov dword [eax + 0x10], str.invalid_PLTE
jmp 0x42fa50
mov eax, dword fs:[0x2c]
mov eax, dword [eax]
mov dword [eax + 0x10], str.1_2_4_8_16_bit_only
jmp 0x42fa50
mov eax, dword fs:[0x2c]
mov eax, dword [eax]
mov dword [eax + 0x10], str.bad_ctype
jmp 0x42fa50
mov eax, dword fs:[0x2c]
mov eax, dword [eax]
mov dword [eax + 0x10], str.bad_comp_method
jmp 0x42fa50
mov eax, dword fs:[0x2c]
mov eax, dword [eax]
mov dword [eax + 0x10], str.bad_filter_method
jmp 0x42fa50
mov eax, dword fs:[0x2c]
mov eax, dword [eax]
mov dword [eax + 0x10], str.0_pixel_image
jmp 0x42fa50
mov eax, dword fs:[0x2c]
mov eax, dword [eax]
mov dword [eax + 0x10], str.bad_interlace_method
jmp 0x42fa50
mov eax, dword fs:[0x2c]
mov eax, dword [eax]
mov dword [eax + 0x10], str.bad_IHDR_len
jmp 0x42fa50
mov eax, dword fs:[0x2c]
mov eax, dword [eax]
mov dword [eax + 0x10], str.multiple_IHDR
jmp 0x42fa50
cmp dword [ebp - 0x420], 0
jne 0x42fa3e
mov ecx, dword [ebx + 4]
test ecx, ecx
jne 0x42f8bc
mov eax, dword fs:[0x2c]
mov eax, dword [eax]
mov dword [eax + 0x10], str.no_IDAT
jmp 0x42fa50
mov esi, dword [edi]
xor eax, eax
imul esi, dword [ebx + 0x10]
mov edx, dword [ebp - 0x424]
add esi, 7
shr esi, 3
imul esi, dword [edi + 8]
inc esi
imul esi, dword [edi + 4]
cmp dword [ebp - 0x438], eax
sete al
push eax
lea eax, [ebp - 0x43c]
mov dword [ebp - 0x43c], esi
push eax
push esi
call fcn.0042e01c
add esp, 0xc
mov dword [ebx + 8], eax
test eax, eax
je 0x42fa50
push dword [ebx + 4]
call fcn.004886fc
and dword [ebx + 4], 0
pop ecx
mov ecx, dword [edi + 8]
lea eax, [ecx + 1]
cmp eax, 4
jne 0x42f925
cmp byte [ebp - 0x415], 0
je 0x42f930
cmp byte [ebp - 0x416], 0
jne 0x42f930
mov eax, ecx
mov ecx, dword [ebp - 0x444]
push ecx
push dword [ebp - 0x434]
mov dword [edi + 0xc], eax
mov ecx, ebx
push dword [ebx + 0x10]
mov edx, dword [ebx + 8]
push eax
push dword [ebp - 0x43c]
call fcn.0042ec8b
add esp, 0x14
test eax, eax
je 0x42fa50
cmp byte [ebp - 0x416], 0
je 0x42f991
cmp dword [ebx + 0x10], 0x10
mov ecx, ebx
push dword [edi + 0xc]
jne 0x42f97d
lea edx, [ebp - 0x10]
call fcn.0042ef14
jmp 0x42f988
lea edx, [ebp - 0x428]
call fcn.0042eebb
pop ecx
test eax, eax
je 0x42fa50
cmp dword [ebp - 0x438], 0
je 0x42f9b0
cmp dword [0x4d6820], 0
je 0x42f9b0
cmp dword [edi + 0xc], 2
jle 0x42f9b0
mov ecx, ebx
call fcn.0042f048
mov al, byte [ebp - 0x415]
test al, al
je 0x42f9dd
movzx eax, al
lea edx, [ebp - 0x414]
push 4
mov dword [edi + 8], eax
pop eax
push eax
push ecx
mov ecx, ebx
mov dword [edi + 0xc], eax
call fcn.0042ef7d
pop ecx
pop ecx
test eax, eax
je 0x42fa50
jmp 0x42f9e9
cmp byte [ebp - 0x416], 0
je 0x42f9e9
inc dword [edi + 8]
push dword [ebx + 8]
call fcn.004886fc
and dword [ebx + 8], 0
pop ecx
mov ecx, edi
call fcn.00428d5a
xor eax, eax
inc eax
jmp 0x42fa52
mov eax, dword fs:[0x2c]
mov eax, dword [eax]
mov dword [eax + 0x10], str.no_PLTE
jmp 0x42fa50
mov eax, dword fs:[0x2c]
mov eax, dword [eax]
mov dword [eax + 0x10], str.outofmem
jmp 0x42fa50
mov eax, dword fs:[0x2c]
mov eax, dword [eax]
mov dword [eax + 0x10], str.outofdata
jmp 0x42fa50
mov eax, dword fs:[0x2c]
mov eax, dword [eax]
mov dword [eax + 0x10], str.first_not_IHDR
xor eax, eax
mov ecx, dword [ebp - 8]
pop edi
pop esi
xor ecx, ebp
pop ebx
call fcn.004820f4
leave
ret