Function at 0x402b10
Capabilities:
Read file on windows

Disassembly:
mov eax, dword [ebx]
sub esp, 0x30
push esi
push 0x423514
push eax
call dword [sym.imp.MSVCR71.dll_fopen]
mov esi, eax
add esp, 8
test esi, esi
jne 0x402b4e
mov ecx, dword [ebx]
mov edx, dword [sym.imp.MSVCR71.dll__iob]
push ecx
add edx, 0x40
push str.ERR:_Unable_to_open_file__s_n
push edx
call dword [sym.imp.MSVCR71.dll_fprintf]
add esp, 0xc
or eax, 0xffffffff
pop esi
add esp, 0x30
ret
push esi
push 8
lea eax, [esp + 0x34]
push 1
push eax
call dword [sym.imp.MSVCR71.dll_fread]
push 8
lea ecx, [esp + 0x40]
push 0
push ecx
call fcn.0040ddc8
add esp, 0x1c
test eax, eax
je 0x402b9c
mov edx, dword [ebx]
mov eax, dword [sym.imp.MSVCR71.dll__iob]
push edx
add eax, 0x40
push str.ERR:_File__s_isnt_a_png_n
push eax
call dword [sym.imp.MSVCR71.dll_fprintf]
push esi
call dword [sym.imp.MSVCR71.dll_fclose]
add esp, 0x10
or eax, 0xffffffff
pop esi
add esp, 0x30
ret
push 0
push 0
push 0
push 0x4234d0
call fcn.0040bf84
add esp, 0x10
test eax, eax
mov dword [esp + 4], eax
jne 0x402bde
mov ecx, dword [sym.imp.MSVCR71.dll__iob]
add ecx, 0x40
push str.ERR:_Initializing_png_n
push ecx
call dword [sym.imp.MSVCR71.dll_fprintf]
push esi
call dword [sym.imp.MSVCR71.dll_fclose]
add esp, 0xc
or eax, 0xffffffff
pop esi
add esp, 0x30
ret
push eax
call fcn.0040df30
add esp, 4
test eax, eax
mov dword [esp + 0xc], eax
jne 0x402c24
mov edx, dword [sym.imp.MSVCR71.dll__iob]
add edx, 0x40
push str.ERR:_Initializing_png_n
push edx
call dword [sym.imp.MSVCR71.dll_fprintf]
push 0
lea eax, [esp + 0x10]
push 0
push eax
call fcn.0040d7b0
push esi
call dword [sym.imp.MSVCR71.dll_fclose]
add esp, 0x18
or eax, 0xffffffff
pop esi
add esp, 0x30
ret
mov ecx, dword [esp + 4]
push edi
push esi
push ecx
call fcn.0040e47c
mov edx, dword [esp + 0x10]
push 8
push edx
call fcn.0040dd94
mov eax, dword [esp + 0x20]
mov ecx, dword [esp + 0x18]
push 0
push 0x15
push eax
push ecx
call fcn.0040dbb0
mov edx, dword [esp + 0x30]
mov eax, dword [esp + 0x28]
push edx
push eax
call fcn.0040bde8
push 0
push 0
push 0
lea ecx, [esp + 0x58]
push ecx
mov dword [esp + 0x60], eax
lea edx, [esp + 0x64]
push edx
mov edx, dword [esp + 0x4c]
lea eax, [esp + 0x5c]
push eax
mov eax, dword [esp + 0x48]
lea ecx, [esp + 0x58]
push ecx
push edx
push eax
call fcn.0040be1c
mov ecx, dword [esp + 0x5c]
mov edx, dword [esp + 0x54]
add esp, 0x4c
push ecx
push edx
call fcn.0040be04
push esi
movzx edi, al
call dword [sym.imp.MSVCR71.dll_fclose]
mov al, byte [esp + 0x30]
add esp, 0xc
test al, 2
je 0x402cb7
sub edi, 3
jmp 0x402cb8
dec edi
test al, 4
mov dword [esp + 0x14], edi
je 0x402cc5
dec edi
mov dword [esp + 0x14], edi
mov eax, dword [esp + 0x18]
cmp eax, 0x2d0
mov ecx, dword [esp + 0x20]
ja 0x402dc5
cmp ecx, 0x240
ja 0x402dc5
push ecx
mov edi, ebx
call fcn.00402a30
mov eax, dword [esp + 0x24]
xor ecx, ecx
add esp, 4
test eax, eax
mov dword [esp + 0x1c], ecx
jbe 0x402d8d
mov eax, dword [esp + 0x18]
push ebp
mov edx, dword [esp + 0x2c]
mov ebp, dword [edx + ecx*4]
xor edi, edi
test eax, eax
jbe 0x402d7b
mov al, byte [ebp]
mov dl, byte [esp + 0x28]
inc ebp
test dl, 2
mov byte [esp + 0x10], al
je 0x402d32
mov al, byte [ebp]
inc ebp
mov byte [esp + 0x11], al
mov al, byte [ebp]
inc ebp
jmp 0x402d36
mov byte [esp + 0x11], al
test dl, 4
mov byte [esp + 0x12], al
je 0x402d49
mov dl, byte [ebp]
mov byte [esp + 0x13], dl
inc ebp
jmp 0x402d4e
mov byte [esp + 0x13], 0xff
mov eax, dword [ebx + 0x40c]
mov esi, dword [esp + 0x18]
imul eax, ecx
add eax, edi
push eax
add ebp, esi
lea esi, [esp + 0x14]
mov eax, ebx
call fcn.004029b0
mov eax, dword [esp + 0x20]
mov ecx, dword [esp + 0x24]
add esp, 4
inc edi
cmp edi, eax
jb 0x402d13
mov edx, dword [esp + 0x24]
inc ecx
cmp ecx, edx
mov dword [esp + 0x20], ecx
jb 0x402d06
pop ebp
push 0
lea ecx, [esp + 0x14]
push ecx
lea edx, [esp + 0x10]
push edx
call fcn.0040d7b0
mov eax, dword [ebx + 0x408]
mov ecx, dword [sym.imp.MSVCR71.dll__iob]
push eax
add ecx, 0x40
push str.INFO:_PNG_had__d_colors_n
push ecx
call dword [sym.imp.MSVCR71.dll_fprintf]
add esp, 0x18
pop edi
xor eax, eax
pop esi
add esp, 0x30
ret
mov edx, dword [ebx]
push ecx
push eax
mov eax, dword [sym.imp.MSVCR71.dll__iob]
push edx
add eax, 0x40
push str.ERR:_PNG__s_is_too_big:__lux_lu_n
push eax
call dword [sym.imp.MSVCR71.dll_fprintf]
push 0
lea ecx, [esp + 0x28]
push ecx
lea edx, [esp + 0x24]
push edx
call fcn.0040d7b0
add esp, 0x20
pop edi
or eax, 0xffffffff
pop esi
add esp, 0x30
ret