Function at 0x1004e550
Capabilities:
Read file on windows

Disassembly:
push ebp
mov ebp, esp
mov eax, 0x1428
call fcn.100c72f0
mov eax, dword [0x1013b3dc]
xor eax, ebp
mov dword [ebp - 8], eax
push ebx
xor eax, eax
mov byte [ebp - 0x13fd], 0
push esi
mov ebx, edx
mov byte [ebp - 0x13fe], 0
mov esi, ecx
mov dword [ebp - 0x1414], ebx
push edi
mov dword [ebp - 0x1418], esi
xor edi, edi
mov dword [ebp - 0x1410], eax
mov dword [ebp - 0x1408], eax
mov dword [ebp - 0x140c], eax
mov dword [ebp - 0x1404], 1
mov eax, dword [esi + 0x10]
test eax, eax
je 0x1004e5c4
push eax
call fcn.100cf22c
mov ecx, eax
add esp, 4
xor eax, eax
cmp ecx, 0xffffffff
cmove ecx, eax
jmp 0x1004e5d7
mov eax, dword [esi + 0x14]
cmp eax, dword [esi + 0x18]
jae 0x1004e5d5
movzx ecx, byte [eax]
inc eax
mov dword [esi + 0x14], eax
jmp 0x1004e5d7
xor ecx, ecx
movzx eax, byte [edi + 0x1010e538]
cmp ecx, eax
jne 0x1004eed6
inc edi
cmp edi, 8
jl 0x1004e5a8
cmp ebx, 1
je 0x1004ee00
mov ecx, esi
call fcn.1004a250
mov ecx, esi
mov ebx, eax
call fcn.1004a250
shl ebx, 0x10
mov ecx, esi
add ebx, eax
call fcn.1004a250
mov ecx, esi
mov edi, eax
call fcn.1004a250
shl edi, 0x10
lea ecx, [edi + eax]
mov eax, dword [ebp - 0x1404]
test eax, eax
je 0x1004e636
cmp ecx, 0x49484452
jne 0x1004e816
cmp ecx, 0x49484452
ja 0x1004ea3e
je 0x1004e853
cmp ecx, 0x49444154
je 0x1004e78f
cmp ecx, 0x49454e44
jne 0x1004ea52
cmp dword [ebp - 0x1414], 0
jne 0x1004ee00
mov edi, dword [esi + 0x1c]
test edi, edi
je 0x1004e816
push 0x4000
call fcn.100d54d4
mov ecx, eax
add esp, 4
test ecx, ecx
je 0x1004ee24
mov eax, dword [ebp - 0x1410]
add eax, edi
mov dword [ebp - 0x13e8], ecx
mov dword [ebp - 0x13f8], eax
lea eax, [ecx + 0x4000]
mov dword [ebp - 0x13ec], ecx
lea ecx, [ebp - 0x13fc]
mov dword [ebp - 0x13fc], edi
mov dword [ebp - 0x13e4], eax
mov dword [ebp - 0x13e0], 1
call fcn.1004d750
test eax, eax
je 0x1004ee16
mov eax, dword [ebp - 0x13e8]
mov edi, dword [ebp - 0x13ec]
sub edi, eax
mov dword [esi + 0x20], eax
test eax, eax
je 0x1004eee0
push dword [esi + 0x1c]
call fcn.100cfa7f
mov dword [esi + 0x1c], 0
add esp, 4
mov ecx, dword [esi + 8]
lea eax, [ecx + 1]
cmp dword [ebp + 8], eax
jne 0x1004e717
cmp byte [ebp - 0x13fd], 0
je 0x1004e722
cmp byte [ebp - 0x13fe], 0
jne 0x1004e722
mov eax, ecx
mov ecx, 0xc
mov ebx, esi
push eax
push edi
mov dword [ecx + ebx], eax
mov ecx, esi
mov edx, dword [esi + 0x20]
call fcn.1004d8e0
add esp, 8
test eax, eax
je 0x1004eee0
cmp byte [ebp - 0x13fe], 0
mov eax, 0xc
je 0x1004ecd2
mov edx, dword [esi + 4]
imul edx, dword [esi]
mov ecx, dword [esi + 0x24]
mov edi, dword [eax + ebx]
test edx, edx
je 0x1004ecd2
cmp edi, 2
jne 0x1004ec9f
mov bl, byte [ebp - 0x410]
cmp byte [ecx], bl
lea ecx, [ecx + 2]
sete al
dec al
mov byte [ecx - 1], al
sub edx, 1
jne 0x1004e778
jmp 0x1004eccb
cmp byte [ebp - 0x13fd], 0
je 0x1004e7a1
cmp dword [ebp - 0x140c], 0
je 0x1004e816
mov ecx, dword [ebp - 0x1410]
mov eax, dword [ebp - 0x1408]
lea edi, [ebx + ecx]
cmp edi, eax
jbe 0x1004e7f9
test eax, eax
jne 0x1004e7d0
mov eax, 0x1000
cmp ebx, eax
cmova eax, ebx
mov dword [ebp - 0x1408], eax
cmp edi, eax
jbe 0x1004e7dc
nop dword [eax]
add eax, eax
cmp edi, eax
ja 0x1004e7d0
mov dword [ebp - 0x1408], eax
push eax
push dword [esi + 0x1c]
call fcn.100d63f4
add esp, 8
test eax, eax
je 0x1004ed25
mov ecx, dword [ebp - 0x1410]
mov dword [esi + 0x1c], eax
mov eax, dword [esi + 0x10]
test eax, eax
je 0x1004e833
push eax
mov eax, dword [esi + 0x1c]
push ebx
add eax, ecx
push 1
push eax
call fcn.100cfe9a
add esp, 0x10
cmp eax, ebx
je 0x1004e848
mov dword [0x10190c54], str.Corrupt_PNG
xor eax, eax
pop edi
pop esi
pop ebx
mov ecx, dword [ebp - 8]
xor ecx, ebp
call fcn.100c55b5
mov esp, ebp
pop ebp
ret
mov eax, dword [esi + 0x1c]
push ebx
push dword [esi + 0x14]
add eax, ecx
push eax
call fcn.100c7fd0
add esp, 0xc
add dword [esi + 0x14], ebx
mov dword [ebp - 0x1410], edi
jmp 0x1004ec82
test eax, eax
je 0x1004e816
cmp ebx, 0xd
jne 0x1004e816
mov ecx, esi
call fcn.1004a250
mov ecx, esi
mov edi, eax
call fcn.1004a250
shl edi, 0x10
add eax, edi
mov dword [esi], eax
cmp eax, 0x1000000
ja 0x1004ee78
mov ecx, esi
call fcn.1004a250
mov ecx, esi
mov edi, eax
call fcn.1004a250
shl edi, 0x10
add eax, edi
mov dword [esi + 4], eax
cmp eax, 0x1000000
ja 0x1004ee78
mov eax, dword [esi + 0x10]
test eax, eax
je 0x1004e8bd
push eax
call fcn.100cf22c
mov ecx, eax
add esp, 4
xor eax, eax
cmp ecx, 0xffffffff
cmove ecx, eax
jmp 0x1004e8d0
mov eax, dword [esi + 0x14]
cmp eax, dword [esi + 0x18]
jae 0x1004ee5b
movzx ecx, byte [eax]
inc eax
mov dword [esi + 0x14], eax
cmp ecx, 8
jne 0x1004ee5b
mov eax, dword [esi + 0x10]
test eax, eax
je 0x1004e8f5
push eax
call fcn.100cf22c
mov edi, eax
add esp, 4
xor eax, eax
cmp edi, 0xffffffff
cmove edi, eax
jmp 0x1004e904
mov eax, dword [esi + 0x14]
cmp eax, dword [esi + 0x18]
jae 0x1004e929
movzx edi, byte [eax]
inc eax
mov dword [esi + 0x14], eax
mov eax, edi
cmp edi, 6
jg 0x1004e816
cmp edi, 3
jne 0x1004e91d
mov byte [ebp - 0x13fd], 3
jmp 0x1004e92b
mov edi, eax
test al, 1
jne 0x1004e816
jmp 0x1004e92b
xor edi, edi
mov eax, dword [esi + 0x10]
test eax, eax
je 0x1004e947
push eax
call fcn.100cf22c
mov ecx, eax
add esp, 4
xor eax, eax
cmp ecx, 0xffffffff
cmove ecx, eax
jmp 0x1004e956
mov eax, dword [esi + 0x14]
cmp eax, dword [esi + 0x18]
jae 0x1004e95e
movzx ecx, byte [eax]
inc eax
mov dword [esi + 0x14], eax
test ecx, ecx
jne 0x1004e816
mov eax, dword [esi + 0x10]
test eax, eax
je 0x1004e97a
push eax
call fcn.100cf22c
mov ecx, eax
add esp, 4
xor eax, eax
cmp ecx, 0xffffffff
cmove ecx, eax
jmp 0x1004e989
mov eax, dword [esi + 0x14]
cmp eax, dword [esi + 0x18]
jae 0x1004e991
movzx ecx, byte [eax]
inc eax
mov dword [esi + 0x14], eax
test ecx, ecx
jne 0x1004e816
mov eax, dword [esi + 0x10]
test eax, eax
je 0x1004e9ad
push eax
call fcn.100cf22c
mov ecx, eax
add esp, 4
xor eax, eax
cmp ecx, 0xffffffff
cmove ecx, eax
jmp 0x1004e9bc
mov eax, dword [esi + 0x14]
cmp eax, dword [esi + 0x18]
jae 0x1004e9c4
movzx ecx, byte [eax]
inc eax
mov dword [esi + 0x14], eax
test ecx, ecx
jne 0x1004ee3e
mov ecx, dword [esi]
test ecx, ecx
je 0x1004e816
mov ebx, dword [esi + 4]
test ebx, ebx
je 0x1004e816
xor edx, edx
mov eax, 0x40000000
div ecx
cmp byte [ebp - 0x13fd], 0
jne 0x1004ea27
mov ecx, edi
xor edx, edx
shr ecx, 2
and edi, 2
and ecx, 1
or edi, 1
add ecx, edi
div ecx
mov dword [esi + 8], ecx
cmp eax, ebx
jae 0x1004ec82
mov dword [0x10190c54], str.Image_too_large_to_decode
xor eax, eax
pop edi
pop esi
pop ebx
mov ecx, dword [ebp - 8]
xor ecx, ebp
call fcn.100c55b5
mov esp, ebp
pop ebp
ret
shr eax, 2
mov dword [esi + 8], 1
cmp eax, ebx
jb 0x1004e816
jmp 0x1004ec82
cmp ecx, 0x504c5445
je 0x1004eb39
cmp ecx, 0x74524e53
je 0x1004ea7e
test ecx, 0x20000000
je 0x1004ee95
mov eax, dword [esi + 0x10]
test eax, eax
je 0x1004ea76
push 1
push ebx
push eax
call fcn.100d02ea
add esp, 0xc
jmp 0x1004ec82
add dword [esi + 0x14], ebx
jmp 0x1004ec82
cmp dword [esi + 0x1c], 0
jne 0x1004e816
cmp byte [ebp - 0x13fd], 0
je 0x1004eaf8
mov eax, dword [ebp - 0x140c]
test eax, eax
je 0x1004e816
cmp ebx, eax
ja 0x1004e816
xor edi, edi
mov byte [ebp - 0x13fd], 4
test ebx, ebx
je 0x1004ec82
mov eax, dword [esi + 0x10]
test eax, eax
je 0x1004ead4
push eax
call fcn.100cf22c
mov ecx, eax
add esp, 4
xor eax, eax
cmp ecx, 0xffffffff
cmove ecx, eax
jmp 0x1004eae7
mov eax, dword [esi + 0x14]
cmp eax, dword [esi + 0x18]
jae 0x1004eae5
movzx ecx, byte [eax]
inc eax
mov dword [esi + 0x14], eax
jmp 0x1004eae7
xor ecx, ecx
mov byte [ebp + edi*4 - 0x409], cl
inc edi
cmp edi, ebx
jb 0x1004eab8
jmp 0x1004ec82
mov ecx, dword [esi + 8]
test cl, 1
je 0x1004e816
lea eax, [ecx + ecx]
cmp ebx, eax
jne 0x1004e816
xor edi, edi
mov byte [ebp - 0x13fe], 1
test ecx, ecx
jle 0x1004ec82
mov ecx, esi
call fcn.1004a250
mov byte [ebp + edi - 0x410], al
inc edi
cmp edi, dword [esi + 8]
jl 0x1004eb20
jmp 0x1004ec82
cmp ebx, 0x300
ja 0x1004e816
mov eax, 0xaaaaaaab
mul ebx
mov ecx, edx
shr ecx, 1
mov dword [ebp - 0x140c], ecx
lea eax, [ecx + ecx*2]
cmp eax, ebx
jne 0x1004e816
mov dword [ebp - 0x1404], 0
test ecx, ecx
je 0x1004ec82
lea ebx, [esi + 0x18]
lea edi, [esi + 0x14]
nop dword [eax]
mov eax, dword [esi + 0x10]
mov edx, edi
mov dword [ebp - 0x141c], edi
mov dword [ebp - 0x1428], ebx
mov dword [ebp - 0x1420], edx
mov dword [ebp - 0x1424], ebx
test eax, eax
je 0x1004ebb8
push eax
call fcn.100cf22c
mov ecx, eax
add esp, 4
xor eax, eax
mov edx, edi
cmp ecx, 0xffffffff
cmove ecx, eax
jmp 0x1004ebc8
mov eax, dword [edi]
cmp eax, dword [ebx]
jae 0x1004ebc6
movzx ecx, byte [eax]
inc eax
mov dword [edi], eax
jmp 0x1004ebc8
xor ecx, ecx
mov eax, dword [ebp - 0x1404]
mov byte [ebp + eax*4 - 0x40c], cl
mov eax, dword [esi + 0x10]
test eax, eax
je 0x1004ebf7
push eax
call fcn.100cf22c
mov ecx, eax
lea ebx, [esi + 0x18]
xor eax, eax
lea edi, [esi + 0x14]
add esp, 4
cmp ecx, 0xffffffff
cmove ecx, eax
jmp 0x1004ec11
mov ecx, dword [ebp - 0x1424]
mov edi, edx
mov eax, dword [edx]
mov ebx, ecx
cmp eax, dword [ecx]
jae 0x1004ec0f
movzx ecx, byte [eax]
inc eax
mov dword [edx], eax
jmp 0x1004ec11
xor ecx, ecx
mov eax, dword [ebp - 0x1404]
mov byte [ebp + eax*4 - 0x40b], cl
mov eax, dword [esi + 0x10]
test eax, eax
je 0x1004ec3a
push eax
call fcn.100cf22c
mov ecx, eax
add esp, 4
xor eax, eax
cmp ecx, 0xffffffff
cmove ecx, eax
jmp 0x1004ec5a
mov edx, dword [ebp - 0x141c]
mov edi, edx
mov ecx, dword [ebp - 0x1428]
mov ebx, ecx
mov eax, dword [edx]
cmp eax, dword [ecx]
jae 0x1004ec58
movzx ecx, byte [eax]
inc eax
mov dword [edx], eax
jmp 0x1004ec5a
xor ecx, ecx
mov eax, dword [ebp - 0x1404]
mov byte [ebp + eax*4 - 0x40a], cl
mov byte [ebp + eax*4 - 0x409], 0xff
inc eax
mov dword [ebp - 0x1404], eax
cmp eax, dword [ebp - 0x140c]
jb 0x1004eb80
mov ecx, esi
call fcn.1004a250
mov ecx, esi
call fcn.1004a250
mov dword [ebp - 0x1404], 0
jmp 0x1004e5f5
mov al, byte [ebp - 0x40e]
mov bl, byte [ebp - 0x40f]
mov ah, byte [ebp - 0x410]
cmp byte [ecx], ah
jne 0x1004ecc3
cmp byte [ecx + 1], bl
jne 0x1004ecc3
cmp byte [ecx + 2], al
jne 0x1004ecc3
mov byte [ecx + 3], 0
add ecx, 4
sub edx, 1
jne 0x1004ecb1
mov eax, 0xc
mov ebx, esi
mov cl, byte [ebp - 0x13fd]
test cl, cl
je 0x1004edee
movzx edi, cl
mov ecx, dword [ebp + 8]
mov dword [esi + 8], edi
mov dword [eax + ebx], edi
cmp ecx, 3
jl 0x1004ecf6
mov dword [eax + ebx], ecx
mov edi, ecx
mov ebx, dword [esi + 4]
xor ecx, ecx
imul ebx, dword [esi]
mov eax, dword [esi + 0x24]
mov dword [ebp - 0x1408], eax
mov eax, ebx
mul edi
seto cl
neg ecx
or ecx, eax
push ecx
call fcn.100d54d4
add esp, 4
mov dword [ebp - 0x1414], eax
test eax, eax
jne 0x1004ed42
mov dword [0x10190c54], str.Out_of_memory
xor eax, eax
pop edi
pop esi
pop ebx
mov ecx, dword [ebp - 8]
xor ecx, ebp
call fcn.100c55b5
mov esp, ebp
pop ebp
ret
cmp edi, 3
jne 0x1004ed8c
xor edi, edi
test ebx, ebx
je 0x1004edda
mov esi, dword [ebp - 0x1408]
lea edx, [eax + 2]
nop word [eax + eax]
movzx ecx, byte [edi + esi]
lea edx, [edx + 3]
inc edi
mov al, byte [ebp + ecx*4 - 0x40c]
mov byte [edx - 5], al
mov al, byte [ebp + ecx*4 - 0x40b]
mov byte [edx - 4], al
mov al, byte [ebp + ecx*4 - 0x40a]
mov byte [edx - 3], al
cmp edi, ebx
jb 0x1004ed60
jmp 0x1004edd4
xor edi, edi
test ebx, ebx
je 0x1004edda
mov esi, dword [ebp - 0x1408]
lea edx, [eax + 2]
nop dword [eax + eax]
movzx ecx, byte [edi + esi]
lea edx, [edx + 4]
inc edi
mov al, byte [ebp + ecx*4 - 0x40c]
mov byte [edx - 6], al
mov al, byte [ebp + ecx*4 - 0x40b]
mov byte [edx - 5], al
mov al, byte [ebp + ecx*4 - 0x40a]
mov byte [edx - 4], al
mov al, byte [ebp + ecx*4 - 0x409]
mov byte [edx - 3], al
cmp edi, ebx
jb 0x1004eda0
mov esi, dword [ebp - 0x1418]
push dword [esi + 0x24]
call fcn.100cfa7f
mov eax, dword [ebp - 0x1414]
add esp, 4
mov dword [esi + 0x24], eax
push dword [esi + 0x20]
call fcn.100cfa7f
add esp, 4
mov dword [esi + 0x20], 0
mov eax, 1
pop edi
pop esi
pop ebx
mov ecx, dword [ebp - 8]
xor ecx, ebp
call fcn.100c55b5
mov esp, ebp
pop ebp
ret
push dword [ebp - 0x13e8]
call fcn.100cfa7f
add esp, 4
mov dword [esi + 0x20], 0
xor eax, eax
pop edi
pop esi
pop ebx
mov ecx, dword [ebp - 8]
xor ecx, ebp
call fcn.100c55b5
mov esp, ebp
pop ebp
ret
mov dword [0x10190c54], str.PNG_not_supported:_interlaced_mode
xor eax, eax
pop edi
pop esi
pop ebx
mov ecx, dword [ebp - 8]
xor ecx, ebp
call fcn.100c55b5
mov esp, ebp
pop ebp
ret
mov dword [0x10190c54], str.PNG_not_supported:_8_bit_only
xor eax, eax
pop edi
pop esi
pop ebx
mov ecx, dword [ebp - 8]
xor ecx, ebp
call fcn.100c55b5
mov esp, ebp
pop ebp
ret
mov dword [0x10190c54], str.Very_large_image__corrupt__
xor eax, eax
pop edi
pop esi
pop ebx
mov ecx, dword [ebp - 8]
xor ecx, ebp
call fcn.100c55b5
mov esp, ebp
pop ebp
ret
mov eax, ecx
mov byte [0x10189eff], cl
shr eax, 0x18
mov byte [str.XXXX_chunk_not_known], al
mov eax, ecx
shr eax, 0x10
mov byte [0x10189efd], al
mov eax, ecx
shr eax, 8
mov byte [0x10189efe], al
xor eax, eax
mov dword [0x10190c54], 0x1010e368
pop edi
pop esi
pop ebx
mov ecx, dword [ebp - 8]
xor ecx, ebp
call fcn.100c55b5
mov esp, ebp
pop ebp
ret
mov dword [0x10190c54], str.Not_a_PNG
mov ecx, dword [ebp - 8]
xor eax, eax
pop edi
pop esi
xor ecx, ebp
pop ebx
call fcn.100c55b5
mov esp, ebp
pop ebp
ret