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

Disassembly:
push ebp
mov ebp, esp
and esp, 0xffffffc0
sub esp, 0xb4
mov eax, dword [0x4a704c]
xor eax, esp
mov dword [esp + 0xb0], eax
push ebx
push esi
push edi
mov edi, dword [ebp + 8]
mov ebx, ecx
mov dword [esp + 0x4c], edi
test edi, edi
je 0x417bd4
mov eax, dword [edi]
mov ecx, edi
call dword [eax + 0x14]
mov edx, dword [edi]
mov esi, eax
push 1
push 0xe
lea eax, [esp + 0x98]
mov dword [esp + 0x48], esi
push eax
mov ecx, edi
call dword [edx + 8]
test eax, eax
jne 0x416f11
push 0xff
push str.Not_a_BMP
jmp 0x417b55
mov al, byte [ebx + 0x1b6]
test al, al
je 0x416f24
mov edx, dword [esp + 0x92]
jmp 0x416f57
mov ecx, dword [esp + 0x92]
mov edx, ecx
and edx, 0xff00
mov eax, ecx
shl eax, 0x10
or edx, eax
mov eax, ecx
sar eax, 8
and eax, 0xff00
shl edx, 8
or edx, eax
sar ecx, 0x18
movzx eax, cl
or edx, eax
mov al, byte [ebx + 0x1b6]
mov dword [esp + 0x92], edx
test al, al
je 0x416f6b
mov edx, dword [esp + 0x9a]
jmp 0x416f98
mov ecx, dword [esp + 0x9a]
mov edx, ecx
and edx, 0xff00
mov eax, ecx
shl eax, 0x10
or edx, eax
mov eax, ecx
sar eax, 8
and eax, 0xff00
shl edx, 8
sar ecx, 0x18
or edx, eax
movzx eax, cl
or edx, eax
mov eax, 0x4d42
mov dword [esp + 0x9a], edx
cmp word [esp + 0x90], ax
je 0x416fc3
mov eax, dword [edi]
mov ecx, edi
push 0
push esi
mov dword [esp + 0xa2], 0
call dword [eax + 0x10]
mov eax, dword [edi]
lea ecx, [esp + 0x68]
push 1
push 0x28
push ecx
mov ecx, edi
call dword [eax + 8]
test eax, eax
je 0x417b4b
lea eax, [esp + 0x68]
mov ecx, ebx
push eax
call fcn.00412b20
mov ecx, dword [esp + 0x68]
cmp ecx, 0xc
je 0x417075
cmp ecx, 0x28
je 0x417100
cmp ecx, 0x40
je 0x41706c
cmp ecx, 0x28
jbe 0x417b4b
movzx eax, word [esp + 0x76]
imul eax, dword [esp + 0x6c]
add eax, 0x1f
cdq
and edx, 0x1f
add eax, edx
mov edx, dword [esp + 0x70]
sar eax, 5
imul eax, edx
shl eax, 2
cmp dword [esp + 0x7c], eax
jb 0x417b4b
cmp word [esp + 0x74], 1
jne 0x417b4b
cmp dword [esp + 0x88], 0
jne 0x417b4b
cmp dword [esp + 0x78], 0
jne 0x417104
mov edx, dword [edi]
lea eax, [ecx - 0x28]
push 1
push eax
mov ecx, edi
call dword [edx + 0x10]
jmp 0x417100
push 1
push 0x18
jmp 0x4170f9
movq xmm0, qword [esp + 0x68]
movzx eax, word [esp + 0x6c]
mov ecx, dword [esp + 0x70]
mov dword [esp + 0x6c], eax
movq qword [esp + 0xb0], xmm0
mov eax, dword [esp + 0xb4]
shr eax, 0x10
mov dword [esp + 0x70], eax
mov ax, cx
mov dword [esp + 0xb8], ecx
shr ecx, 0x10
push 1
mov word [esp + 0x78], ax
mov word [esp + 0x7a], cx
mov dword [esp + 0x7c], 0
mov dword [esp + 0x80], 0
mov dword [esp + 0x84], 0
mov dword [esp + 0x88], 0
mov dword [esp + 0x8c], 0
mov dword [esp + 0x90], 0
push 0xffffffffffffffe4
mov eax, dword [edi]
mov ecx, edi
call dword [eax + 0x10]
mov edx, dword [esp + 0x70]
cmp dword [esp + 0x7c], 0
jne 0x417127
movzx eax, word [esp + 0x76]
imul eax, dword [esp + 0x6c]
add eax, 0x1f
shr eax, 3
and eax, 0x1ffffffc
imul eax, edx
mov dword [esp + 0x7c], eax
cmp dword [esp + 0x88], 0
mov eax, 1
jne 0x41714b
cmp word [esp + 0x76], 8
ja 0x41714b
mov cl, byte [esp + 0x76]
shl eax, cl
mov dword [esp + 0x88], eax
cmp dword [esp + 0x68], 0xc
movzx eax, word [esp + 0x76]
mov esi, dword [esp + 0x78]
sete byte [esp + 0x31]
test edx, edx
mov dword [esp + 0x38], esi
mov dword [esp + 0x44], eax
sets byte [esp + 0x4b]
test edx, edx
jns 0x417177
neg edx
mov dword [esp + 0x70], edx
cmp dword [ebx + 0x148], 0xffffffff
jne 0x4171a0
mov eax, dword [esp + 0x6c]
push 0xff
mov dword [ebx + 0xc], eax
mov dword [ebx + 0x10], edx
mov dword [ebx + 0x40], 1
push str.output_dimensions_returned
jmp 0x417b55
push 1
push eax
push edx
push dword [esp + 0x78]
mov ecx, ebx
call fcn.00412320
test eax, eax
jne 0x4171bb
lea esi, [ebx + 0x44]
jmp 0x417b61
movd xmm0, dword [esp + 0x80]
sub esp, 8
cvtdq2pd xmm0, xmm0
mulsd xmm0, qword [0x4a3410]
divsd xmm0, qword [0x4a3420]
addsd xmm0, qword [0x4a33d8]
movsd qword [esp + 0xa8], xmm0
fld qword [esp + 0xa8]
fstp qword [esp]
call fcn.0046bf70
add esp, 8
call fcn.00469b40
push eax
mov ecx, ebx
call fcn.00412940
movd xmm0, dword [esp + 0x84]
sub esp, 8
cvtdq2pd xmm0, xmm0
mulsd xmm0, qword [0x4a3410]
divsd xmm0, qword [0x4a3420]
addsd xmm0, qword [0x4a33d8]
movsd qword [esp + 0xa8], xmm0
fld qword [esp + 0xa8]
fstp qword [esp]
call fcn.0046bf70
add esp, 8
call fcn.00469b40
push eax
mov ecx, ebx
call fcn.004129b0
cmp dword [ebx + 0x148], 0
je 0x417273
push 0xff
push str.Cancelled
jmp 0x417b55
mov ecx, ebx
call fcn.00412db0
mov dword [esp + 0xa0], eax
test eax, eax
je 0x417327
cmp byte [esp + 0x31], 0
je 0x41733f
mov esi, dword [esp + 0x88]
test esi, esi
jne 0x4172b2
cmp word [esp + 0x76], 8
ja 0x4172b2
mov cl, byte [esp + 0x76]
mov esi, 1
shl esi, cl
mov edx, dword [edi]
lea eax, [esi + esi*2]
push 1
push eax
push dword [esp + 0xa8]
mov ecx, edi
call dword [edx + 8]
mov esi, dword [ebx + 0x28]
test esi, esi
jne 0x4172df
movzx eax, word [ebx + 0x16]
cmp eax, 8
ja 0x4172df
mov esi, 1
mov cl, al
shl esi, cl
add esi, 0xffffffff
js 0x417323
mov eax, dword [esp + 0xa0]
lea edx, [eax + 1]
lea ecx, [eax + 1]
lea edx, [edx + esi*2]
lea ecx, [ecx + esi*4]
add edx, esi
nop dword [eax]
movzx eax, byte [edx + 1]
lea ecx, [ecx - 4]
mov byte [ecx + 5], al
movzx eax, byte [edx - 1]
mov byte [ecx + 3], al
movzx eax, byte [edx]
sub edx, 3
sub esi, 1
mov byte [ecx + 4], al
mov byte [ecx + 6], 0
jns 0x417300
mov esi, dword [esp + 0x38]
cmp dword [ebx + 0x148], 0
je 0x417390
push 0xff
push str.Cancelled
jmp 0x417b55
mov eax, dword [esp + 0x88]
test eax, eax
jne 0x41735d
cmp word [esp + 0x76], 8
ja 0x41735d
mov cl, byte [esp + 0x76]
mov eax, 1
shl eax, cl
mov edx, dword [edi]
mov ecx, edi
push 1
shl eax, 2
push eax
push dword [esp + 0xa8]
call dword [edx + 8]
xor ecx, ecx
cmp dword [ebx + 0x28], ecx
jbe 0x417327
mov eax, dword [esp + 0xa0]
add eax, 3
mov byte [eax], 0
lea eax, [eax + 4]
inc ecx
cmp ecx, dword [ebx + 0x28]
jb 0x417382
jmp 0x417327
mov eax, dword [esp + 0x44]
dec eax
cmp eax, 0x1f
ja case.0x4173a5.2
movzx eax, byte [eax + 0x417c04]
jmp dword [eax*4 + 0x417bf0]
cmp esi, 3
jne 0x4173c6
mov eax, dword [edi]
lea ecx, [esp + 0xb0]
push 1
push 0xc
push ecx
mov ecx, edi
call dword [eax + 8]
jmp 0x4173e7
mov dword [esp + 0xb0], 0xff0000
mov dword [esp + 0xb4], 0xff00
mov dword [esp + 0xb8], 0xff
mov eax, dword [esp + 0x9a]
test eax, eax
je 0x417400
mov edx, dword [edi]
mov ecx, edi
add eax, dword [esp + 0x40]
push 0
push eax
call dword [edx + 0x10]
cmp esi, 3
je 0x417418
test esi, esi
je 0x417418
push 0xff
push str.unknown_compression
jmp 0x417b55
mov eax, dword [ebx + 0xc]
imul eax, dword [ebx + 0x10]
shl eax, 2
push eax
mov dword [esp + 0x48], eax
call fcn.00453d0f
add esp, 4
mov dword [esp + 0x38], eax
test eax, eax
je 0x41758b
mov edx, dword [edi]
mov ecx, edi
push 1
push dword [esp + 0x48]
push eax
call dword [edx + 8]
test esi, esi
jne 0x41755a
mov ecx, ebx
call fcn.00414fe0
cmp dword [ebx + 0x1bc], esi
je 0x41755a
mov eax, dword [ebx + 0x10]
xor dl, dl
mov dword [esp + 0xa0], esi
test eax, eax
jle 0x4174de
mov ecx, dword [ebx + 0xc]
mov eax, ecx
mov edi, dword [esp + 0x38]
imul eax, esi
add edi, 3
xor esi, esi
lea edi, [edi + eax*4]
test ecx, ecx
jle 0x4174c0
nop dword [eax]
mov al, byte [edi]
mov ecx, 1
push eax
push dword [esp + 0xa4]
test al, al
movzx edx, dl
push esi
cmovne edx, ecx
mov ecx, ebx
mov dword [esp + 0x4c], edx
call fcn.00415060
mov edx, dword [esp + 0x40]
lea edi, [edi + 4]
inc esi
cmp esi, dword [ebx + 0xc]
jl 0x417490
mov esi, dword [esp + 0xa0]
mov eax, dword [ebx + 0x10]
inc esi
mov dword [esp + 0xa0], esi
cmp esi, eax
jl 0x417474
test dl, dl
jne 0x41755a
mov ecx, dword [ebx + 0x1bc]
test ecx, ecx
je 0x41755a
mov edx, dword [ebx + 0xc]
xor esi, esi
imul edx, eax
test edx, edx
jle 0x41755a
cmp edx, 0x40
jb 0x41754a
mov eax, edx
and eax, 0x8000003f
jns 0x417507
dec eax
or eax, 0xffffffc0
inc eax
movups xmm1, xmmword [0x4a3490]
mov edi, edx
sub edi, eax
movups xmm0, xmmword [ecx]
add esi, 0x40
pandn xmm0, xmm1
movups xmmword [ecx], xmm0
movups xmm0, xmmword [ecx + 0x10]
pandn xmm0, xmm1
movups xmmword [ecx + 0x10], xmm0
movups xmm0, xmmword [ecx + 0x20]
pandn xmm0, xmm1
movups xmmword [ecx + 0x20], xmm0
movups xmm0, xmmword [ecx + 0x30]
pandn xmm0, xmm1
movups xmmword [ecx + 0x30], xmm0
add ecx, 0x40
cmp esi, edi
jl 0x417512
cmp esi, edx
jge 0x41755a
sub edx, esi
not byte [ecx]
lea ecx, [ecx + 1]
sub edx, 1
jne 0x417550
mov esi, dword [esp + 0x38]
mov ecx, ebx
push 0x20
push dword [esp + 0xbc]
push dword [esp + 0xbc]
push dword [esp + 0xbc]
push esi
call fcn.00412710
push esi
call fcn.00453d0a
add esp, 4
jmp case.0x4173a5.2
push 0xff
push str.cant_allocate_memory
jmp 0x417b55
mov eax, dword [esp + 0x9a]
test eax, eax
je 0x4175b3
mov edx, dword [edi]
mov ecx, edi
add eax, dword [esp + 0x40]
push 0
push eax
call dword [edx + 0x10]
test esi, esi
je 0x417b0e
push 0xff
push str.unknown_compression
jmp 0x417b55
cmp esi, 3
jne 0x4175e4
mov eax, dword [edi]
lea ecx, [esp + 0xa0]
push 1
push 0xc
push ecx
mov ecx, edi
call dword [eax + 8]
jmp 0x417605
mov dword [esp + 0xa0], 0x7c00
mov dword [esp + 0xa4], 0x3e0
mov dword [esp + 0xa8], 0x1f
mov eax, dword [esp + 0x9a]
test eax, eax
je 0x41761e
mov edx, dword [edi]
mov ecx, edi
add eax, dword [esp + 0x40]
push 0
push eax
call dword [edx + 0x10]
mov eax, dword [ebx + 0xc]
mov ecx, edi
mov esi, dword [edi]
inc eax
cdq
sub eax, edx
sar eax, 1
imul eax, dword [ebx + 0x10]
push 1
shl eax, 2
push eax
push dword [ebx + 0x34]
call dword [esi + 8]
push 0x10
push dword [esp + 0xac]
mov ecx, ebx
push dword [esp + 0xac]
push dword [esp + 0xac]
push dword [ebx + 0x34]
call fcn.00412710
jmp case.0x4173a5.2
mov eax, dword [esp + 0x9a]
test eax, eax
je 0x41767a
mov edx, dword [edi]
mov ecx, edi
add eax, dword [esp + 0x40]
push 0
push eax
call dword [edx + 0x10]
sub esi, 0
je 0x417b0e
sub esi, 1
je 0x417957
sub esi, 1
je 0x4176a0
push 0xff
push str.compression_type_not_supported
jmp 0x417b55
xor edx, edx
mov byte [esp + 0x31], 0
xor esi, esi
mov byte [esp + 0x32], 0
push ebx
lea ecx, [esp + 0x54]
mov dword [esp + 0x38], edx
mov dword [esp + 0x3c], esi
mov dword [esp + 0x44], edx
call fcn.00413810
mov eax, dword [esp + 0x60]
mov dword [esp + 0xa0], eax
nop
mov eax, dword [edi]
lea ecx, [esp + 0x31]
push 1
push 1
push ecx
mov ecx, edi
call dword [eax + 8]
test eax, eax
je case.0x4173a5.2
cmp byte [esp + 0x31], 0
je 0x4177c8
mov eax, dword [esp + 0x34]
test eax, eax
js 0x41772c
mov ecx, dword [esp + 0x64]
cmp eax, dword [ecx + 0x10]
jg 0x41772c
mov edx, dword [ecx + 4]
test edx, edx
je 0x417715
mov eax, dword [ecx + 0x28]
lea ecx, [edx + eax*4]
add ecx, dword [edx]
jmp 0x417717
xor ecx, ecx
mov eax, dword [esp + 0x64]
mov eax, dword [eax + 0x30]
imul eax, dword [esp + 0x34]
add eax, ecx
mov dword [esp + 0xa0], eax
mov eax, dword [edi]
lea ecx, [esp + 0x32]
push 1
push 1
push ecx
mov ecx, edi
call dword [eax + 8]
xor edx, edx
cmp byte [esp + 0x31], dl
jbe 0x4176d0
mov ecx, dword [esp + 0xa0]
mov edi, dword [esp + 0x40]
lea eax, [ecx + esi]
mov dword [esp + 0x38], eax
mov eax, dword [ebx + 0x1c]
add eax, dword [ebx + 0x34]
cmp dword [esp + 0x38], eax
jae 0x4177a4
mov eax, edx
and eax, 1
test edi, edi
je 0x417792
test eax, eax
mov al, byte [esp + 0x32]
je 0x417782
and al, 0xf
or al, byte [esi + ecx]
mov byte [esi + ecx], al
inc esi
inc dword [esp + 0x38]
jmp 0x4177a4
shr al, 4
or al, byte [esi + ecx]
mov byte [esi + ecx], al
inc esi
inc dword [esp + 0x38]
jmp 0x4177a4
test eax, eax
mov al, byte [esp + 0x32]
je 0x41779f
shl al, 4
jmp 0x4177a1
and al, 0xf0
mov byte [esi + ecx], al
xor eax, eax
test edi, edi
sete al
inc edx
mov edi, eax
movzx eax, byte [esp + 0x31]
cmp edx, eax
jb 0x417756
mov dword [esp + 0x40], edi
mov edi, dword [esp + 0x4c]
mov dword [esp + 0x38], esi
jmp 0x4176d0
mov eax, dword [edi]
lea ecx, [esp + 0x31]
push 1
push 1
push ecx
mov ecx, edi
call dword [eax + 8]
movzx eax, byte [esp + 0x31]
sub eax, 0
je 0x417944
sub eax, 1
je case.0x4173a5.2
sub eax, 1
mov eax, dword [edi]
push 1
push 1
je 0x41790f
lea ecx, [esp + 0x3a]
push ecx
mov ecx, edi
call dword [eax + 8]
mov eax, dword [esp + 0x34]
test eax, eax
js 0x417843
mov ecx, dword [esp + 0x64]
cmp eax, dword [ecx + 0x10]
jg 0x417843
mov edx, dword [ecx + 4]
test edx, edx
je 0x41782a
mov eax, dword [ecx + 0x28]
lea ecx, [edx + eax*4]
add ecx, dword [edx]
jmp 0x41782c
xor ecx, ecx
mov eax, dword [esp + 0x64]
mov eax, dword [eax + 0x30]
imul eax, dword [esp + 0x34]
add eax, ecx
mov dword [esp + 0xa0], eax
jmp 0x41784a
mov eax, dword [esp + 0xa0]
xor ecx, ecx
mov dword [esp + 0x44], ecx
cmp byte [esp + 0x31], cl
jbe 0x4178ec
add esi, eax
nop dword [eax]
mov eax, dword [ebx + 0x1c]
add eax, dword [ebx + 0x34]
cmp esi, eax
jae 0x4178a6
mov eax, ecx
and eax, 1
cmp dword [esp + 0x40], 0
je 0x417895
test eax, eax
mov al, byte [esp + 0x32]
je 0x417889
inc dword [esp + 0x38]
and al, 0xf
or byte [esi], al
inc esi
jmp 0x4178a6
inc dword [esp + 0x38]
shr al, 4
or byte [esi], al
inc esi
jmp 0x4178a6
test eax, eax
mov al, byte [esp + 0x32]
je 0x4178a2
shl al, 4
jmp 0x4178a4
and al, 0xf0
mov byte [esi], al
test cl, 1
je 0x4178c9
movzx eax, byte [esp + 0x31]
dec eax
cmp ecx, eax
je 0x4178c9
mov eax, dword [edi]
lea ecx, [esp + 0x32]
push 1
push 1
push ecx
mov ecx, edi
call dword [eax + 8]
mov ecx, dword [esp + 0x44]
xor eax, eax
cmp dword [esp + 0x40], eax
sete al
inc ecx
mov dword [esp + 0x40], eax
movzx eax, byte [esp + 0x31]
mov dword [esp + 0x44], ecx
cmp ecx, eax
jl 0x417860
mov esi, dword [esp + 0x38]
movzx eax, byte [esp + 0x31]
inc eax
test al, 2
je 0x4176d0
mov eax, dword [edi]
lea ecx, [esp + 0x32]
push 1
push 1
push ecx
mov ecx, edi
call dword [eax + 8]
jmp 0x4176d0
lea ecx, [esp + 0x46]
push ecx
mov ecx, edi
call dword [eax + 8]
mov eax, dword [edi]
lea ecx, [esp + 0x3f]
push 1
push 1
push ecx
mov ecx, edi
call dword [eax + 8]
movzx eax, byte [esp + 0x3e]
shr eax, 1
add esi, eax
movzx eax, byte [esp + 0x3f]
add dword [esp + 0x34], eax
mov dword [esp + 0x38], esi
jmp 0x4176d0
xor esi, esi
inc dword [esp + 0x34]
mov dword [esp + 0x38], esi
mov dword [esp + 0x40], esi
jmp 0x4176d0
push ebx
lea ecx, [esp + 0x54]
mov byte [esp + 0x35], 0
mov byte [esp + 0x36], 0
xor esi, esi
mov dword [esp + 0x38], 0
call fcn.00413810
mov eax, dword [esp + 0x60]
mov dword [esp + 0xa0], eax
mov eax, dword [edi]
lea ecx, [esp + 0x31]
push 1
push 1
push ecx
mov ecx, edi
call dword [eax + 8]
test eax, eax
je case.0x4173a5.2
cmp byte [esp + 0x31], 0
je 0x417a25
mov edx, dword [esp + 0x34]
test edx, edx
js 0x4179e6
mov eax, dword [esp + 0x64]
cmp edx, dword [eax + 0x10]
jg 0x4179e6
mov ecx, dword [eax + 4]
mov dword [esp + 0x44], ecx
test ecx, ecx
je 0x4179d5
mov ecx, dword [eax + 0x28]
mov eax, dword [esp + 0x44]
mov eax, dword [eax]
lea ecx, [eax + ecx*4]
mov eax, dword [esp + 0x64]
add ecx, dword [esp + 0x44]
jmp 0x4179d7
xor ecx, ecx
mov eax, dword [eax + 0x30]
imul eax, edx
add eax, ecx
mov dword [esp + 0xa0], eax
mov eax, dword [edi]
lea ecx, [esp + 0x32]
push 1
push 1
push ecx
mov ecx, edi
call dword [eax + 8]
xor edx, edx
cmp byte [esp + 0x31], dl
jbe 0x417980
mov ecx, dword [esp + 0xa0]
cmp esi, dword [ebx + 0x30]
jae 0x417980
mov al, byte [esp + 0x32]
inc edx
mov byte [ecx + esi], al
inc esi
movzx eax, byte [esp + 0x31]
cmp edx, eax
jb 0x417a05
jmp 0x417980
mov eax, dword [edi]
lea ecx, [esp + 0x31]
push 1
push 1
push ecx
mov ecx, edi
call dword [eax + 8]
movzx eax, byte [esp + 0x31]
mov dword [esp + 0x4c], eax
sub eax, 0
je 0x417b03
sub eax, 1
je case.0x4173a5.2
sub eax, 1
je 0x417ace
mov eax, dword [esp + 0x34]
test eax, eax
js 0x417a91
mov edx, dword [esp + 0x64]
cmp eax, dword [edx + 0x10]
jg 0x417a91
cmp dword [edx + 4], 0
je 0x417a80
mov eax, dword [edx + 4]
mov ecx, dword [edx + 0x28]
mov eax, dword [eax]
lea ecx, [eax + ecx*4]
mov eax, dword [esp + 0x34]
add ecx, dword [edx + 4]
jmp 0x417a82
xor ecx, ecx
mov edx, dword [edx + 0x30]
imul edx, eax
add edx, ecx
mov dword [esp + 0xa0], edx
mov eax, dword [esp + 0xa0]
mov ecx, edi
mov edx, dword [edi]
add eax, esi
push 1
push dword [esp + 0x50]
push eax
call dword [edx + 8]
mov al, byte [esp + 0x31]
test al, 1
je 0x417ac4
mov eax, dword [edi]
lea ecx, [esp + 0x32]
push 1
push 1
push ecx
mov ecx, edi
call dword [eax + 8]
mov al, byte [esp + 0x31]
movzx eax, al
add esi, eax
jmp 0x417980
mov eax, dword [edi]
lea ecx, [esp + 0x3f]
push 1
push 1
push ecx
mov ecx, edi
call dword [eax + 8]
mov eax, dword [edi]
lea ecx, [esp + 0x3e]
push 1
push 1
push ecx
mov ecx, edi
call dword [eax + 8]
movzx eax, byte [esp + 0x3f]
add esi, eax
movzx eax, byte [esp + 0x3e]
add dword [esp + 0x34], eax
jmp 0x417980
xor esi, esi
inc dword [esp + 0x34]
jmp 0x417980
mov eax, dword [edi]
mov ecx, edi
push 1
push dword [ebx + 0x1c]
push dword [ebx + 0x34]
call dword [eax + 8]
cmp byte [esp + 0x4b], 0
je 0x417bbb
sub esp, 8
mov ecx, ebx
call fcn.00415130
mov al, 1
pop edi
pop esi
pop ebx
mov ecx, dword [esp + 0xb0]
xor ecx, esp
call fcn.0044ca89
mov esp, ebp
pop ebp
ret 4
push 0xff
push str.Error_reading_BMP_info
lea esi, [ebx + 0x44]
push esi
call fcn.0045d030
add esp, 0xc
mov byte [esp + 0x33], 0
lea eax, [esp + 0x33]
mov ecx, 0x48ac85
nop
mov dl, byte [eax]
cmp dl, byte [ecx]
jne 0x417b90
test dl, dl
je 0x417b8c
mov dl, byte [eax + 1]
cmp dl, byte [ecx + 1]
jne 0x417b90
add eax, 2
add ecx, 2
test dl, dl
jne 0x417b70
xor eax, eax
jmp 0x417b95
sbb eax, eax
or eax, 1
test eax, eax
je 0x417bac
push 0xff
lea eax, [esp + 0x37]
push eax
push esi
call fcn.0045d030
add esp, 0xc
cmp dword [ebx + 0x148], 0xffffffff
jne 0x417bd4
cmp dword [ebx + 0x40], 1
jne 0x417bd4
mov al, 1
pop edi
pop esi
pop ebx
mov ecx, dword [esp + 0xb0]
xor ecx, esp
call fcn.0044ca89
mov esp, ebp
pop ebp
ret 4
mov ecx, dword [esp + 0xbc]
xor al, al
pop edi
pop esi
pop ebx
xor ecx, esp
call fcn.0044ca89
mov esp, ebp
pop ebp
ret 4