Function at 0x41e470
Capabilities:
Read file on windows

Disassembly:
push ebp
lea ebp, [esp - 0x68]
sub esp, 0x68
push 0xffffffffffffffff
push 0x47c294
mov eax, dword fs:[0]
push eax
sub esp, 0xb8
push ebx
push esi
push edi
mov eax, dword [0x49b058]
xor eax, ebp
push eax
lea eax, [ebp - 0xc]
mov dword fs:[0], eax
mov dword [ebp + 0xc], 0
mov eax, dword [ebp + 0x70]
mov dword [eax], 0
lea eax, [ebp + 0x20]
mov dword [ebp + 0xc], 1
push eax
lea eax, [ebp - 0x14]
mov dword [ebp + 0x10], 0
xorps xmm0, xmm0
mov dword [ebp + 0x14], 0
push eax
mov dword [ebp + 0x18], 0
mov dword [ebp + 0x1c], vtable.std::exception.0
movq qword [ebp + 0x20], xmm0
mov dword [ebp - 0x14], str.Error_reading_PNG.
mov byte [ebp - 0x10], 1
call fcn.004390fb
mov dword [ebp + 0x1c], vtable.util::image::ParseError.0
lea eax, [ebp + 0x64]
mov dword [ebp - 4], 1
mov dword [ebp - 0x20], eax
lea eax, [ebp + 0x5c]
mov dword [ebp + 0x64], 0
mov dword [ebp + 0x5c], 0
mov byte [ebp - 0x28], 0
mov dword [ebp - 0x24], 0x460d70
mov dword [ebp - 0x1c], eax
mov dword [ebp - 0x18], 0
push 8
mov byte [ebp - 4], 2
mov dword [ebp + 0x3c], 0
mov dword [ebp + 0x40], 0
mov dword [ebp + 0x44], 0
call fcn.0042228e
mov dword [ebp + 0x3c], eax
lea esi, [eax + 8]
mov ecx, esi
mov dword [ebp + 0x44], esi
sub ecx, eax
push ecx
push 0
push eax
call fcn.00439b50
add esp, 0x18
mov dword [ebp + 0x40], esi
mov ecx, dword [ebp + 0x74]
mov byte [ebp - 4], 3
test ecx, ecx
je 0x41e58b
mov eax, dword [ebp + 0x3c]
sub esi, eax
push ecx
push esi
push 1
push eax
call fcn.0043d31b
add esp, 0x10
mov dword [ebp + 0x34], eax
jmp 0x41e5b0
mov eax, dword [ebp + 0x78]
mov ecx, dword [ebp + 0x3c]
sub esi, ecx
mov dword [ebp + 0x34], esi
mov edx, dword [eax]
mov eax, dword [eax + 4]
sub eax, edx
cmp esi, eax
ja 0x41e9ed
push esi
push edx
push ecx
call fcn.004395d0
add esp, 0xc
mov eax, dword [ebp + 0x40]
mov ecx, dword [ebp + 0x3c]
sub eax, ecx
push eax
push 0
push ecx
call fcn.00460870
add esp, 0xc
test eax, eax
jne 0x41ea08
push eax
push eax
push eax
push str.1.6.39
call fcn.00460d20
add esp, 0x10
mov dword [ebp + 0x64], eax
test eax, eax
je 0x41ea23
push eax
call fcn.0045f3c0
add esp, 4
mov dword [ebp + 0x5c], eax
test eax, eax
je 0x41ea3d
push 0x40
push 0x439e8b
push dword [ebp + 0x64]
call fcn.00463130
mov ecx, dword [ebp - 4]
push 0x497be8
push ecx
push 0x43959f
push 3
push eax
call fcn.00439ea0
add esp, 0x20
test eax, eax
jne 0x41ea57
mov eax, dword [ebp + 0x74]
mov esi, dword [ebp + 0x34]
test eax, eax
je 0x41e643
push eax
push dword [ebp + 0x64]
call fcn.00460660
add esp, 8
jmp 0x41e673
mov eax, dword [ebp + 0x78]
push 0x41eaa0
mov dword [ebp + 0x18], 0
mov ecx, dword [eax]
mov edx, dword [eax + 4]
sub edx, ecx
sub edx, esi
lea eax, [ecx + esi]
mov dword [ebp + 0x14], edx
mov dword [ebp + 0x10], eax
lea eax, [ebp + 0x10]
push eax
push dword [ebp + 0x64]
call fcn.004633c0
add esp, 0xc
push esi
push dword [ebp + 0x64]
call fcn.00460840
push 0
push 0x8006
push dword [ebp + 0x5c]
push dword [ebp + 0x64]
call fcn.00461510
push dword [ebp + 0x5c]
push dword [ebp + 0x64]
call fcn.004634b0
push dword [ebp + 0x5c]
mov ebx, eax
push dword [ebp + 0x64]
mov dword [ebp + 0x38], ebx
call fcn.00463490
push dword [ebp + 0x5c]
mov esi, eax
push dword [ebp + 0x64]
mov dword [ebp + 0x50], esi
call fcn.00463450
push dword [ebp + 0x5c]
push dword [ebp + 0x64]
call fcn.00463470
push dword [ebp + 0x5c]
mov byte [ebp + 0x63], al
push dword [ebp + 0x64]
call fcn.004634d0
mov edi, eax
add esp, 0x40
mov al, byte [ebp + 0x63]
cmp al, 3
jne 0x41e890
lea eax, [ebp + 0x48]
mov dword [ebp + 0x4c], 0
push eax
lea eax, [ebp + 0x4c]
mov dword [ebp + 0x48], 0
push eax
push dword [ebp + 0x5c]
push dword [ebp + 0x64]
call fcn.00463410
mov eax, dword [ebp + 0x48]
xor ebx, ebx
add esp, 0x10
mov dword [ebp + 0x58], eax
mov dword [ebp + 0x28], 0
mov dword [ebp + 0x54], ebx
mov dword [ebp + 0x2c], ebx
mov dword [ebp + 0x30], ebx
test eax, eax
je 0x41e75d
cmp eax, 0x55555555
ja 0x41ea71
push eax
lea ecx, [ebp + 0x28]
call fcn.004152e0
mov eax, dword [ebp + 0x58]
mov ebx, dword [ebp + 0x28]
mov dword [ebp + 0x54], ebx
test eax, eax
je 0x41e757
mov word [ebx], 0
mov byte [ebx + 2], 0
add ebx, 3
sub eax, 1
jne 0x41e743
mov dword [ebp + 0x54], ebx
mov eax, dword [ebp + 0x48]
mov dword [ebp + 0x2c], ebx
xor edx, edx
mov byte [ebp - 4], 4
test eax, eax
jle 0x41e79d
mov esi, dword [ebp + 0x28]
xor ecx, ecx
nop dword [eax]
mov eax, dword [ebp + 0x4c]
lea ecx, [ecx + 3]
inc edx
mov al, byte [ecx + eax - 3]
mov byte [esi + ecx - 3], al
mov eax, dword [ebp + 0x4c]
mov al, byte [ecx + eax - 2]
mov byte [esi + ecx - 2], al
mov eax, dword [ebp + 0x4c]
mov al, byte [ecx + eax - 1]
mov byte [esi + ecx - 1], al
cmp edx, dword [ebp + 0x48]
jl 0x41e770
mov esi, dword [ebp + 0x50]
push esi
push dword [ebp + 0x38]
lea ecx, [ebp - 0xc4]
call fcn.0041dc70
mov byte [ebp - 4], 5
test esi, esi
je 0x41e800
mov ebx, dword [ebp + 0x38]
xor ecx, ecx
mov eax, dword [ebp + 0x50]
mov dword [ebp + 0x58], ecx
nop
xor esi, esi
test ebx, ebx
je 0x41e7ec
nop word [eax + eax]
mov eax, dword [ebp - 0xb4]
mov edx, dword [edi]
mov ecx, dword [ecx + eax]
mov al, byte [esi + edx]
mov byte [esi + ecx], al
inc esi
mov ecx, dword [ebp + 0x58]
cmp esi, ebx
jb 0x41e7d0
mov eax, dword [ebp + 0x50]
add ecx, 0xc
add edi, 4
sub eax, 1
mov dword [ebp + 0x58], ecx
mov dword [ebp + 0x50], eax
jne 0x41e7c0
mov ebx, dword [ebp + 0x54]
mov ecx, dword [ebp + 0x28]
mov eax, 0x55555556
sub ebx, ecx
imul ebx
mov eax, edx
shr eax, 0x1f
add eax, edx
push eax
push ecx
lea ecx, [ebp - 0xa8]
call fcn.0041d6b0
lea eax, [ebp - 0xc4]
push eax
lea eax, [ebp + 8]
push eax
call fcn.0041d8b0
mov esi, dword [ebp + 0x70]
add esp, 8
mov edx, dword [eax]
mov dword [eax], 0
mov ecx, dword [esi]
mov dword [esi], edx
test ecx, ecx
je 0x41e84c
mov eax, dword [ecx]
push 1
call dword [eax]
mov ecx, dword [ebp + 8]
test ecx, ecx
je 0x41e859
mov eax, dword [ecx]
push 1
call dword [eax]
lea ecx, [ebp - 0xa8]
call fcn.004106c0
lea ecx, [ebp - 0xb4]
mov dword [ebp - 0xc0], vtable.util::Matrix_unsigned_char__class_std::vector_class_std::vector_unsigned_char__class_std::allocator_unsigned_char____class_std::allocator_class_std::vector_unsigned_char__class_std::allocator_unsigned_char_____.0
call fcn.004105c0
lea ecx, [ebp + 0x28]
mov dword [ebp - 0xc4], vtable.util::image::Image.0
call fcn.004106c0
jmp 0x41e973
cmp al, 2
je 0x41e89c
cmp al, 6
jne 0x41ea76
push esi
push ebx
lea ecx, [ebp - 0x94]
call fcn.0041deb0
xor eax, eax
mov byte [ebp - 4], 6
cmp byte [ebp + 0x63], 6
sete al
add eax, 3
mov dword [ebp + 4], eax
test esi, esi
je 0x41e91b
xor ecx, ecx
mov dword [ebp + 0x54], ecx
test ebx, ebx
je 0x41e90a
xor edx, edx
mov dword [ebp + 0x58], ebx
xor esi, esi
mov eax, dword [ebp - 0x84]
lea esi, [esi + 3]
mov ecx, dword [ecx + eax]
mov eax, dword [edi]
mov al, byte [edx + eax]
mov byte [ecx + esi - 3], al
mov eax, dword [edi]
mov al, byte [edx + eax + 1]
mov byte [ecx + esi - 2], al
mov eax, dword [edi]
mov al, byte [edx + eax + 2]
add edx, dword [ebp + 4]
mov byte [ecx + esi - 1], al
mov ecx, dword [ebp + 0x54]
sub ebx, 1
jne 0x41e8d0
mov ebx, dword [ebp + 0x38]
mov esi, dword [ebp + 0x50]
add ecx, 0xc
add edi, 4
sub esi, 1
mov dword [ebp + 0x54], ecx
mov dword [ebp + 0x50], esi
jne 0x41e8c5
lea eax, [ebp - 0x94]
push eax
lea eax, [ebp]
push eax
call fcn.0041da50
mov esi, dword [ebp + 0x70]
add esp, 8
mov edx, dword [eax]
mov dword [eax], 0
mov ecx, dword [esi]
mov dword [esi], edx
test ecx, ecx
je 0x41e947
mov eax, dword [ecx]
push 1
call dword [eax]
mov ecx, dword [ebp]
test ecx, ecx
je 0x41e954
mov eax, dword [ecx]
push 1
call dword [eax]
lea ecx, [ebp - 0x84]
mov dword [ebp - 0x90], 0x4808ac
call fcn.0041e2b0
mov dword [ebp - 0x94], vtable.util::image::Image.0
mov ecx, dword [ebp + 0x3c]
test ecx, ecx
je 0x41e9bc
mov edx, dword [ebp + 0x44]
mov eax, ecx
sub edx, ecx
cmp edx, 0x1000
jb 0x41e99d
mov ecx, dword [eax - 4]
add edx, 0x23
sub eax, ecx
add eax, 0xfffffffc
cmp eax, 0x1f
ja 0x41ea91
push edx
push ecx
call fcn.004222be
add esp, 8
mov dword [ebp + 0x3c], 0
mov dword [ebp + 0x40], 0
mov dword [ebp + 0x44], 0
lea eax, [ebp - 0x28]
push eax
call fcn.0041d640
lea eax, [ebp + 0x20]
mov dword [ebp + 0x1c], vtable.std::exception.0
push eax
call fcn.0043915e
add esp, 8
mov eax, esi
mov ecx, dword [ebp - 0xc]
mov dword fs:[0], ecx
pop ecx
pop edi
pop esi
pop ebx
lea esp, [ebp + 0x68]
pop ebp
ret
push str.Not_a_PNG_file.
lea ecx, [ebp - 0x34]
call fcn.0041de60
push 0x497cf4
lea eax, [ebp - 0x34]
push eax
call fcn.0043917d
push str.Not_a_PNG_file.
lea ecx, [ebp - 0x40]
call fcn.0041de60
push 0x497cf4
lea eax, [ebp - 0x40]
push eax
call fcn.0043917d
lea eax, [ebp + 0x1c]
push eax
lea ecx, [ebp - 0x4c]
call fcn.0041de30
push 0x497cf4
lea eax, [ebp - 0x4c]
push eax
call fcn.0043917d
lea eax, [ebp + 0x1c]
push eax
lea ecx, [ebp - 0x58]
call fcn.0041de30
push 0x497cf4
lea eax, [ebp - 0x58]
push eax
call fcn.0043917d
lea eax, [ebp + 0x1c]
push eax
lea ecx, [ebp - 0x64]
call fcn.0041de30
push 0x497cf4
lea eax, [ebp - 0x64]
push eax
call fcn.0043917d
call fcn.00410740
push str.Unsupported_PNG_type.
lea ecx, [ebp - 0x70]
call fcn.0041dfd0
push 0x497d30
lea eax, [ebp - 0x70]
push eax
call fcn.0043917d
call fcn.0043d0aa
int3