Function at 0x45d510
Capabilities:
Encrypt data using rc4 prga

Disassembly:
push ebp
push edi
push esi
push ebx
sub esp, 0x3c
mov ebx, dword [esp + 0x50]
mov ebp, dword [esp + 0x54]
mov esi, dword [esp + 0x58]
test ebx, ebx
je 0x45c550
test byte [ebx + 0x7c], 0x40
je 0x45c580
movzx eax, byte [ebx + 0x15b]
mov edx, dword [ebx + 0x118]
mov byte [esp + 0x2c], al
movzx eax, byte [ebx + 0x15c]
mov dword [esp + 0x24], edx
mov byte [esp + 0x2d], al
movzx eax, byte [ebx + 0x15f]
mov byte [esp + 0x2e], al
movzx eax, byte [ebx + 0x15e]
cmp al, 7
mov byte [esp + 0x2f], al
ja 0x45c558
imul eax, edx
add eax, 7
shr eax, 3
cmp byte [ebx + 0x158], 0
mov dword [esp + 0x28], eax
mov edx, dword [ebx + 0x11c]
je 0x45c410
test byte [ebx + 0x80], 2
je 0x45c410
cmp byte [ebx + 0x159], 5
ja case.default.0x45c3ec
movzx ecx, byte [ebx + 0x159]
jmp dword [ecx*4 + 0x53ed40]
and edx, 1
jne 0x45c682
cmp dword [ebx + 0x104], 1
jbe 0x45c682
lea esi, [esi]
test byte [ebx + 0x78], 4
je 0x45c7ec
add eax, 1
mov dword [esp + 8], eax
mov eax, dword [ebx + 0x128]
mov dword [esp], ebx
mov dword [esp + 4], eax
call fcn.00470020
mov edx, dword [ebx + 0x128]
movzx eax, byte [edx]
test al, al
je 0x45c476
cmp al, 4
ja 0x45c7fc
mov dword [esp + 0x10], eax
mov eax, dword [ebx + 0x124]
add edx, 1
mov dword [esp + 8], edx
mov dword [esp], ebx
add eax, 1
mov dword [esp + 0xc], eax
lea eax, [esp + 0x24]
mov dword [esp + 4], eax
call fcn.0046ff90
mov edx, dword [ebx + 0x128]
mov edi, dword [esp + 0x28]
mov eax, dword [ebx + 0x124]
mov dword [esp + 4], edx
lea ecx, [edi + 1]
mov dword [esp + 8], ecx
mov dword [esp], eax
call sub.msvcrt.dll_memcpy
test byte [ebx + 0x26c], 4
je 0x45c4a9
cmp byte [ebx + 0x270], 0x40
je 0x45c6c5
mov ecx, dword [ebx + 0x80]
test ecx, ecx
jne 0x45c590
movzx eax, byte [ebx + 0x163]
test al, al
jne 0x45c566
movzx eax, byte [esp + 0x2f]
cmp al, byte [ebx + 0x162]
mov byte [ebx + 0x163], al
ja 0x45c80c
cmp byte [ebx + 0x158], 0
je 0x45c4f4
mov eax, dword [ebx + 0x80]
test al, 2
jne 0x45c5a5
test ebp, ebp
je 0x45c50c
mov dword [esp + 8], 0xffffffff
mov dword [esp + 4], ebp
mov dword [esp], ebx
call fcn.0046f510
test esi, esi
je 0x45c524
mov dword [esp + 8], 0xffffffff
mov dword [esp + 4], esi
mov dword [esp], ebx
call fcn.0046f510
mov dword [esp], ebx
call fcn.004703a0
mov eax, dword [ebx + 0x1c8]
test eax, eax
je 0x45c550
movzx edx, byte [ebx + 0x159]
mov dword [esp + 8], edx
mov edx, dword [ebx + 0x11c]
mov dword [esp], ebx
mov dword [esp + 4], edx
call eax
add esp, 0x3c
pop ebx
pop esi
pop edi
pop ebp
ret
shr al, 3
movzx eax, al
imul eax, edx
jmp 0x45c3bc
cmp al, byte [esp + 0x2f]
je 0x45c4dd
mov dword [esp + 4], str.internal_sequential_row_size_calculation_error
mov dword [esp], ebx
call fcn.00459ae0
mov dword [esp], ebx
call fcn.004704b0
jmp 0x45c375
lea eax, [esp + 0x24]
mov dword [esp + 4], eax
mov dword [esp], ebx
call fcn.00465a70
jmp 0x45c4b7
movzx edx, byte [ebx + 0x159]
cmp dl, 5
jbe 0x45c5f0
test esi, esi
je 0x45c5c9
mov dword [esp + 8], 1
mov dword [esp + 4], esi
mov dword [esp], ebx
call fcn.0046f510
test ebp, ebp
je 0x45c524
mov dword [esp + 8], 0
mov dword [esp + 4], ebp
mov dword [esp], ebx
call fcn.0046f510
jmp 0x45c524
mov dword [esp + 0xc], eax
mov dword [esp + 8], edx
mov eax, dword [ebx + 0x128]
add eax, 1
mov dword [esp + 4], eax
lea eax, [esp + 0x24]
mov dword [esp], eax
call fcn.0046fa50
jmp 0x45c5b1
mov ecx, edx
and ecx, 3
cmp ecx, 2
je 0x45c410
test esi, esi
je 0x45c630
and edx, 2
jne 0x45c657
lea esi, [esi]
mov dword [esp], ebx
call fcn.004703a0
add esp, 0x3c
pop ebx
pop esi
pop edi
pop ebp
ret
mov ecx, edx
and ecx, 7
cmp ecx, 4
je 0x45c410
test esi, esi
je 0x45c630
and edx, 4
je 0x45c630
mov dword [esp + 8], 1
mov dword [esp + 4], esi
mov dword [esp], ebx
call fcn.0046f510
jmp 0x45c630
and edx, 3
jne 0x45c682
cmp dword [ebx + 0x104], 2
ja 0x45c410
test esi, esi
jne 0x45c657
jmp 0x45c630
and edx, 7
nop
lea esi, [esi]
jne 0x45c682
cmp dword [ebx + 0x104], 4
ja 0x45c410
jmp 0x45c682
and edx, 7
je 0x45c410
lea esi, [esi]
jmp 0x45c682
and edx, 1
jne 0x45c410
nop
lea esi, [esi]
jmp 0x45c630
movzx edx, byte [esp + 0x2c]
mov eax, dword [ebx + 0x128]
test dl, 2
je 0x45c4a9
movzx ecx, byte [esp + 0x2d]
add eax, 1
mov edi, dword [esp + 0x24]
cmp cl, 8
mov dword [esp + 0x1c], edi
je 0x45c793
cmp cl, 0x10
jne 0x45c4a9
cmp dl, 2
je 0x45c7e2
cmp dl, 6
mov ecx, 8
jne 0x45c4a9
mov edx, dword [esp + 0x1c]
test edx, edx
je 0x45c4a9
xor edi, edi
mov dword [esp + 0x50], ebx
mov ebx, edi
mov dword [esp + 0x54], ebp
mov ebp, ecx
mov dword [esp + 0x58], esi
movzx edx, byte [eax + 2]
add ebx, 1
movzx ecx, byte [eax + 3]
movzx esi, byte [eax]
movzx edi, byte [eax + 5]
shl edx, 8
or edx, ecx
movzx ecx, byte [eax + 1]
shl esi, 8
or esi, ecx
movzx ecx, byte [eax + 4]
add esi, edx
movzx esi, si
shl ecx, 8
or ecx, edi
add edx, ecx
mov ecx, esi
shr ecx, 8
movzx edx, dx
mov byte [eax], cl
mov ecx, esi
mov byte [eax + 1], cl
mov ecx, edx
shr ecx, 8
mov byte [eax + 4], cl
mov byte [eax + 5], dl
add eax, ebp
cmp ebx, dword [esp + 0x1c]
jne 0x45c730
mov ebx, dword [esp + 0x50]
mov ebp, dword [esp + 0x54]
mov esi, dword [esp + 0x58]
jmp 0x45c4a9
cmp dl, 2
je 0x45c7db
cmp dl, 6
mov edi, 4
jne 0x45c4a9
mov edx, dword [esp + 0x1c]
test edx, edx
je 0x45c4a9
mov dword [esp + 0x50], ebx
xor ecx, ecx
mov ebx, edx
lea esi, [esi]
movzx edx, byte [eax + 1]
add ecx, 1
add byte [eax], dl
add byte [eax + 2], dl
add eax, edi
cmp ecx, ebx
jne 0x45c7c0
mov ebx, dword [esp + 0x50]
jmp 0x45c4a9
mov edi, 3
jmp 0x45c7a6
mov ecx, 6
jmp 0x45c712
mov dword [esp + 4], str.Invalid_attempt_to_read_row_data
mov dword [esp], ebx
call fcn.00459ae0
mov dword [esp + 4], str.bad_adaptive_filter_value
mov dword [esp], ebx
call fcn.00459ae0
mov dword [esp + 4], str.sequential_row_overflow
mov dword [esp], ebx
call fcn.00459ae0
lea esi, [esi]
push ebp
push edi
push esi
push ebx
sub esp, 0x4c
mov eax, dword [esp + 0x60]
mov eax, dword [eax]
mov ecx, eax
mov dword [esp + 0x14], eax
mov eax, dword [eax]
mov edi, dword [ecx + 0x10]
mov esi, dword [eax]
mov eax, dword [eax + 4]
mov ebx, edi
shr ebx, 2
and ebx, 1
mov dword [esp], esi
mov dword [esp + 0x20], eax
call fcn.00464580
movzx ecx, byte [esi + 0x15c]
movzx edx, byte [esi + 0x15b]
movzx eax, word [esi + 0x154]
call fcn.0045a070
mov dword [esp + 0x1c], 0
mov ebp, eax
and ebp, 0xfffffff7
xor ebp, edi
test ebp, 2
mov dword [esp + 0x18], eax
je 0x45c8c0
test edi, 2
jne 0x45cd20
mov eax, dword [esp + 0x18]
mov dword [esp + 0xc], 0xffffffff
mov dword [esp + 8], 0xffffffff
mov dword [esp + 4], 1
and eax, 1
mov dword [esp], esi
mov dword [esp + 0x1c], eax
call fcn.004646a0
and ebp, 0xfffffffd
test byte [esp + 0x18], 4
mov eax, 0xffffffff
je 0x45c8e3
mov eax, dword [esp + 0x14]
mov eax, dword [eax + 0x14]
and eax, 4
cmp eax, 1
sbb eax, eax
and eax, 0x186a1
sub eax, 1
mov dword [esp + 8], eax
mov dword [esp + 4], 0
mov dword [esp], esi
call fcn.00463990
test ebx, ebx
je 0x45cbd0
mov eax, dword [esp + 0x18]
mov dword [esp + 0x2c], 0x186a0
and eax, 1
mov dword [esp + 0x28], eax
mov eax, dword [esp + 0x1c]
test eax, eax
jne 0x45cbec
test ebp, 4
je 0x45c939
test ebx, ebx
mov dword [esp], esi
jne 0x45cc3a
call fcn.00463900
and ebp, 0xfffffffb
test ebp, 1
mov dword [esp + 0x24], 0
je 0x45ca09
test byte [esp + 0x18], 1
je 0x45c9cd
mov eax, dword [esp + 0x1c]
test eax, eax
jne 0x45cd3a
test ebx, ebx
jne 0x45cdbc
mov eax, dword [esp + 0x60]
mov eax, dword [eax + 0x10]
test eax, eax
je 0x45cdd1
mov byte [esp + 0x34], 0
movzx ecx, byte [eax]
mov word [esp + 0x36], cx
movzx ecx, byte [eax + 1]
mov word [esp + 0x38], cx
movzx ecx, byte [eax + 2]
mov word [esp + 0x3a], cx
movzx eax, byte [eax + 1]
mov dword [esp + 0x10], 0
mov dword [esp + 0xc], 0
mov dword [esp + 8], 1
mov word [esp + 0x3c], ax
lea eax, [esp + 0x34]
mov dword [esp + 4], eax
mov dword [esp], esi
call fcn.004637d0
mov dword [esp + 0x24], ebx
jmp 0x45ca06
cmp ebx, 1
mov ecx, 1
sbb eax, eax
and eax, 0xffff0100
add eax, 0xffff
test edi, 0x20
je 0x45c9ee
and ebp, 0xffffffdf
xor cl, cl
mov dword [esp + 8], ecx
mov dword [esp + 4], eax
mov dword [esp], esi
call fcn.00460760
mov dword [esp + 0x24], 0
and ebp, 0xfffffffe
mov eax, dword [esp + 0x2c]
mov dword [esp], esi
mov dword [esp + 8], eax
mov eax, dword [esp + 0x28]
mov dword [esp + 4], eax
call fcn.00463990
test ebp, 0x10
je 0x45ca3b
test edi, 2
jne 0x45cd2d
and edi, 0xffffffef
and ebp, 0xffffffef
test ebp, 0x20
je 0x45ca55
test edi, 1
jne 0x45cc44
and edi, 0xffffffdf
and ebp, 0xffffffdf
test ebx, ebx
jne 0x45cc6e
test ebp, ebp
jne 0x45cdf6
mov eax, esi
call fcn.0045a020
mov ecx, dword [esp + 0x24]
test ecx, ecx
sete byte [esp + 0x28]
cmp dword [esp + 0x1c], 2
setne al
mov ebp, eax
jne 0x45cc7b
mov dword [esp + 0x18], 0
mov eax, dword [esp + 0x20]
mov dword [esp], esi
mov dword [esp + 4], eax
call fcn.0045c2d0
mov eax, dword [esp + 0x20]
movzx edx, byte [eax + 0x19]
mov eax, edx
and eax, 2
and edx, 4
je 0x45cbb0
cmp byte [esp + 0x28], 0
jne 0x45cc5c
mov ecx, dword [esp + 0x20]
mov edx, eax
or edx, 4
cmp byte [ecx + 0x18], 0x10
cmove eax, edx
mov edx, dword [esi + 0x80]
mov ecx, eax
or ecx, 0x10
test dl, 1
cmovne eax, ecx
cmp dword [esp + 0x1c], 2
je 0x45cc97
test edx, 0x20000
jne 0x45cb9d
and edx, 0x1000000
jne 0x45cb93
cmp eax, edi
jne 0x45ce06
mov ecx, dword [esp + 0x60]
test ebx, ebx
mov eax, dword [esp + 0x60]
mov edi, dword [ecx + 8]
mov eax, dword [eax + 4]
lea edx, [edi + edi]
cmovne edi, edx
test edi, edi
js 0x45ccaa
mov ecx, dword [esp + 0x60]
mov dword [ecx + 0x18], eax
mov eax, dword [esp + 0x24]
mov dword [ecx + 0x1c], edi
test eax, eax
jne 0x45ccc0
cmp dword [esp + 0x1c], 2
je 0x45cd86
sub dword [esp + 0x18], 1
js 0x45cb86
mov eax, dword [esp + 0x60]
mov ebp, dword [eax + 0x18]
mov eax, dword [esp + 0x14]
mov ebx, dword [eax + 0xc]
test ebx, ebx
je 0x45cb4b
mov dword [esp + 4], ebp
add ebp, edi
mov dword [esp + 8], 0
mov dword [esp], esi
call fcn.0045c350
sub ebx, 1
jne 0x45cb64
sub dword [esp + 0x18], 1
jns 0x45cb52
add esp, 0x4c
mov eax, 1
pop ebx
pop esi
pop edi
pop ebp
ret
test byte [esi + 0x7c], 0x80
jne 0x45cb04
cmp dword [esp + 0x1c], 2
je 0x45cde6
or eax, 0x20
jmp 0x45cb04
mov edx, dword [esp + 0x24]
test edx, edx
je 0x45cac0
mov dword [esp + 4], str.png_image_read:_alpha_channel_lost
mov dword [esp], esi
call fcn.00459ae0
lea esi, [esi]
mov eax, dword [esp + 0x1c]
mov dword [esp + 0x28], 0
mov dword [esp + 0x2c], 0xffffffff
test eax, eax
je 0x45c91e
mov dword [esp + 0xc], 0x186a0
mov eax, dword [esi + 0x2e0]
mov dword [esp + 8], eax
mov eax, dword [esp + 0x2c]
mov dword [esp + 4], eax
lea eax, [esp + 0x34]
mov dword [esp], eax
call fcn.004579d0
test eax, eax
jne 0x45cd65
cmp dword [esp + 0x28], 1
mov dword [esp + 0x28], 0
je 0x45cd47
mov dword [esp + 0x1c], 1
jmp 0x45c91e
call fcn.00464640
jmp 0x45c936
cmp dword [esp + 0x1c], 2
je 0x45ca52
mov dword [esp], esi
call fcn.004607a0
jmp 0x45ca52
mov ecx, ebp
test cl, cl
je 0x45cd54
or eax, 1
jmp 0x45cac0
mov dword [esp], esi
call fcn.004605f0
jmp 0x45ca5d
cmp byte [esp + 0x28], 0
je 0x45ca87
mov dword [esp], esi
call fcn.00460690
mov dword [esp + 0x18], eax
jmp 0x45ca8f
mov ecx, eax
or ecx, 0x20
test edi, 0x20
cmovne eax, ecx
jmp 0x45caec
mov ecx, dword [esp + 0x14]
mov edx, 1
sub edx, dword [ecx + 0xc]
imul edx, edi
add eax, edx
jmp 0x45cb2a
mov eax, dword [esp + 0x20]
mov dword [esp], esi
mov dword [esp + 4], eax
call fcn.0045f290
mov dword [esp], esi
mov dword [esp + 4], eax
call fcn.0046b940
mov ebx, eax
mov eax, dword [esp + 0x60]
mov dword [eax + 0x14], ebx
mov dword [esp + 8], eax
mov dword [esp + 4], 0x45d510
mov eax, dword [esp + 0x14]
mov dword [esp], eax
call fcn.00459f20
mov edi, eax
mov eax, dword [esp + 0x60]
mov dword [eax + 0x14], 0
mov dword [esp + 4], ebx
mov dword [esp], esi
call fcn.0046ba50
add esp, 0x4c
mov eax, edi
pop ebx
pop esi
pop edi
pop ebp
ret
mov dword [esp], esi
call fcn.00464670
jmp 0x45c8bd
mov dword [esp], esi
call fcn.004605d0
jmp 0x45ca38
mov dword [esp + 0x1c], 2
jmp 0x45ca06
mov dword [esp + 0x1c], 2
jmp 0x45c91e
test edi, 1
je 0x45cac0
jmp 0x45cc66
mov eax, dword [esp + 0x34]
mov dword [esp], eax
call fcn.00458cd0
test eax, eax
jne 0x45cc1a
mov dword [esp + 0x1c], 0
jmp 0x45c91e
mov eax, dword [esp + 0x20]
mov dword [esp], esi
mov dword [esp + 4], eax
call fcn.0045f290
mov dword [esp], esi
mov dword [esp + 4], eax
call fcn.0046b940
mov ebx, eax
mov eax, dword [esp + 0x60]
mov dword [eax + 0x14], ebx
mov dword [esp + 8], eax
mov dword [esp + 4], 0x45ce20
jmp 0x45ccf1
mov dword [esp], esi
call fcn.00463960
mov eax, dword [esp + 0x1c]
mov dword [esp + 0x24], eax
jmp 0x45ca06
mov dword [esp + 0x28], 2
mov dword [esp + 0x24], 1
jmp 0x45ca06
mov dword [esp + 4], str.unexpected_alpha_swap_transformation
mov dword [esp], esi
call fcn.00459ae0
mov dword [esp + 4], str.png_read_image:_unsupported_transformation
mov dword [esp], esi
call fcn.00459ae0
mov dword [esp + 4], str.png_read_image:_invalid_transformations
mov dword [esp], esi
call fcn.00459ae0
lea esi, [esi]
lea edi, [edi]
push ebp
push edi
push esi
push ebx
sub esp, 0x5c
mov eax, dword [esp + 0x70]
mov ebx, dword [eax]
mov eax, dword [ebx]
mov esi, dword [eax]
mov edi, esi
mov dword [esp + 0x1c], esi
mov esi, dword [eax + 4]
mov eax, dword [ebx + 0xc]
mov dword [esp + 0x20], eax
mov eax, dword [ebx + 8]
mov dword [esp + 0x3c], eax
mov eax, dword [edi + 0x80]
test eax, 0x600000
je 0x45d43d
test al, 0x80
jne 0x45d4f3
mov eax, dword [esp + 0x1c]
mov dword [esp + 4], esi
mov dword [esp], eax
call fcn.0045f8b0
cmp al, 2
jne 0x45d4df
mov eax, dword [ebx + 0x10]
and eax, 5
cmp eax, 1
je 0x45d4cb
mov eax, dword [esp + 0x1c]
movzx eax, byte [eax + 0x158]
test al, al
je 0x45cedd
cmp al, 1
jne 0x45cec9
movzx edx, byte [esi + 0x18]
mov dword [esp + 0x34], 7
cmp dl, 8
je 0x45ceee
cmp dl, 0x10
je 0x45d026
mov eax, dword [esp + 0x1c]
mov dword [esp + 4], str.unexpected_bit_depth
mov dword [esp], eax
call fcn.00459ae0
mov eax, dword [esp + 0x1c]
mov dword [esp + 4], str.unknown_interlace_type
mov dword [esp], eax
call fcn.00459ae0
movzx edx, byte [esi + 0x18]
mov dword [esp + 0x34], 1
cmp dl, 8
jne 0x45ceac
mov esi, dword [esp + 0x70]
xor ebp, ebp
cmp al, 1
mov eax, ebp
mov esi, dword [esi + 0x18]
mov dword [esp + 0x30], esi
mov esi, dword [esp + 0x70]
mov esi, dword [esi + 0x1c]
mov dword [esp + 0x38], esi
je 0x45d2a1
add eax, 1
xor edx, edx
mov dword [esp + 0x2c], eax
mov ebp, 1
xor ebx, ebx
mov dword [esp + 0x18], 1
mov eax, dword [esp + 0x70]
mov eax, dword [eax + 0x10]
test eax, eax
je 0x45d344
movzx eax, byte [eax + 1]
cmp edx, dword [esp + 0x20]
mov byte [esp + 0xc], al
movzx eax, word [eax + eax + 0x53e4e0]
jae 0x45d280
mov edi, dword [esp + 0x18]
mov ecx, dword [esp + 0x38]
mov dword [esp + 0x10], eax
mov esi, edi
add edi, edx
imul esi, ecx
mov dword [esp + 0x14], edi
mov dword [esp + 0x24], esi
mov esi, ecx
mov ecx, dword [esp + 0x3c]
imul esi, edx
sub ebx, ecx
add esi, ecx
add esi, dword [esp + 0x30]
mov dword [esp + 0x28], ebx
mov eax, dword [esp + 0x70]
mov ebx, dword [eax + 0x14]
mov eax, dword [esp + 0x1c]
mov dword [esp + 8], 0
mov dword [esp + 4], ebx
mov dword [esp], eax
call fcn.0045c350
mov eax, dword [esp + 0x28]
add eax, esi
jae 0x45d005
movzx ecx, byte [ebx + 1]
test cl, cl
je 0x45d270
cmp cl, 0xff
movzx edx, byte [ebx]
je 0x45cffa
movzx edx, word [edx + edx + 0x53e4e0]
mov edi, 0xff
sub edi, ecx
imul edi, dword [esp + 0x10]
imul edx, ecx
add edi, edx
mov ecx, edi
and edi, 0x7fff
shr ecx, 0xf
movzx edx, byte [ecx + 0x53dee0]
movzx ecx, word [ecx + ecx + 0x53e0e0]
imul edx, edi
shr edx, 0xc
add edx, ecx
movzx edx, dh
mov byte [eax], dl
add eax, ebp
add ebx, 2
cmp esi, eax
ja 0x45cfa8
mov edi, dword [esp + 0x14]
mov eax, dword [esp + 0x18]
add esi, dword [esp + 0x24]
add eax, edi
cmp dword [esp + 0x20], edi
jbe 0x45d280
mov dword [esp + 0x14], eax
jmp 0x45cf81
mov esi, dword [esp + 0x70]
mov ebx, dword [ebx + 0x10]
mov esi, dword [esi + 0x18]
mov edi, ebx
and edi, 1
mov dword [esp + 0x44], esi
mov esi, dword [esp + 0x70]
mov ecx, dword [esi + 0x1c]
lea esi, [edi + 1]
mov dword [esp + 0x40], esi
mov edx, ecx
shr edx, 0x1f
add edx, ecx
xor ecx, ecx
sar edx, 1
test edi, edi
jne 0x45d430
lea esi, [edx + edx]
xor edx, edx
mov dword [esp + 0x48], esi
mov esi, dword [esp + 0x3c]
lea ebp, [ecx + ecx]
xor ecx, 1
add esi, esi
imul esi, dword [esp + 0x40]
cmp al, 1
mov dword [esp + 0x4c], esi
lea esi, [ecx + ecx]
mov dword [esp + 0x14], esi
je 0x45d1c6
lea eax, [edx + 1]
xor ebx, ebx
mov dword [esp + 0x38], eax
mov eax, dword [esp + 0x40]
xor esi, esi
mov dword [esp + 0x28], 1
mov dword [esp + 0xc], eax
cmp dword [esp + 0x20], ebx
jbe 0x45d1a5
lea eax, [esi + esi]
mov esi, dword [esp + 0xc]
mov ecx, dword [esp + 0x28]
mov edx, dword [esp + 0x48]
add esi, esi
mov dword [esp + 0x10], esi
mov esi, ecx
imul esi, edx
imul edx, ebx
mov dword [esp + 0x2c], esi
mov esi, ecx
add esi, ebx
add edx, eax
mov dword [esp + 0x24], esi
mov esi, dword [esp + 0x4c]
add edx, dword [esp + 0x44]
sub esi, eax
mov dword [esp + 0x18], edx
mov dword [esp + 0x30], esi
lea esi, [esi]
mov ebx, dword [esp + 0x70]
mov eax, dword [esp + 0x30]
add eax, dword [esp + 0x18]
mov dword [esp + 8], 0
mov esi, eax
mov dword [esp + 0xc], eax
mov eax, dword [ebx + 0x14]
mov ebx, dword [esp + 0x1c]
mov dword [esp + 4], eax
mov dword [esp], ebx
call fcn.0045c350
mov eax, dword [esp + 0x18]
mov ebx, dword [esp + 0x70]
cmp esi, eax
mov ebx, dword [ebx + 0x14]
lea ecx, [eax + ebp]
ja 0x45d174
jmp 0x45d184
cmp si, 0xffff
movzx eax, dx
je 0x45d150
movzx edx, si
imul edx, eax
mov eax, 0x80008001
add edx, 0x7fff
mul edx
shr edx, 0xf
test edi, edi
mov word [ecx], dx
je 0x45d163
mov edx, dword [esp + 0x14]
mov eax, ecx
sub eax, ebp
mov word [eax + edx], si
add ecx, dword [esp + 0x10]
add ebx, 4
mov eax, ecx
sub eax, ebp
cmp dword [esp + 0xc], eax
jbe 0x45d184
movzx esi, word [ebx + 2]
movzx edx, word [ebx]
test si, si
jne 0x45d131
xor edx, edx
jmp 0x45d150
mov esi, dword [esp + 0x24]
mov eax, dword [esp + 0x28]
mov ebx, dword [esp + 0x2c]
add dword [esp + 0x18], ebx
add eax, esi
cmp dword [esp + 0x20], esi
jbe 0x45d1a5
mov dword [esp + 0x24], eax
jmp 0x45d0f0
mov edx, dword [esp + 0x38]
cmp dword [esp + 0x34], edx
jle 0x45d263
mov eax, dword [esp + 0x1c]
movzx eax, byte [eax + 0x158]
cmp al, 1
jne 0x45d087
cmp edx, 1
jle 0x45d44d
mov eax, edx
mov ebx, 7
and eax, 1
sub ebx, edx
mov esi, eax
mov ecx, 3
mov dword [esp + 0x10], eax
lea eax, [edx + 1]
mov dword [esp + 0x38], eax
sar eax, 1
sub ecx, eax
mov eax, 1
sar ebx, 1
shl esi, cl
mov ecx, ebx
shl eax, cl
mov ecx, esi
and ecx, 7
sub eax, 1
sub eax, ecx
mov ecx, ebx
add eax, dword [esp + 0x3c]
shr eax, cl
test eax, eax
je 0x45d1a5
mov eax, dword [esp + 0x40]
mov ecx, 7
and esi, 7
sub ecx, edx
mov ebx, dword [esp + 0x10]
sar ecx, 1
imul esi, eax
shl eax, cl
mov ecx, 3
mov dword [esp + 0xc], eax
mov eax, edx
xor ebx, 1
sar eax, 1
sub ecx, eax
shl ebx, cl
and ebx, 7
cmp edx, 2
jle 0x45d481
lea ecx, [edx - 1]
sar ecx, 1
mov dword [esp + 0x28], 8
sar dword [esp + 0x28], cl
jmp 0x45d0a2
add esp, 0x5c
mov eax, 1
pop ebx
pop esi
pop edi
pop ebp
ret
movzx ecx, byte [esp + 0xc]
mov byte [eax], cl
jmp 0x45cffc
mov eax, dword [esp + 0x2c]
cmp dword [esp + 0x34], eax
mov ebp, eax
jle 0x45d263
mov eax, dword [esp + 0x1c]
movzx eax, byte [eax + 0x158]
cmp al, 1
mov eax, ebp
jne 0x45cf10
cmp ebp, 1
jle 0x45d48e
add eax, 1
mov ebx, 7
mov esi, ebp
sub ebx, ebp
and esi, 1
mov ecx, 3
mov dword [esp + 0x2c], eax
sar eax, 1
mov edi, esi
sub ecx, eax
mov eax, 1
sar ebx, 1
shl edi, cl
mov ecx, ebx
shl eax, cl
mov edx, edi
sub eax, 1
and edx, 7
sub eax, edx
mov ecx, ebx
add eax, dword [esp + 0x3c]
shr eax, cl
test eax, eax
je 0x45d280
mov ecx, 7
mov eax, ebp
sub ecx, ebp
xor esi, 1
sar ecx, 1
mov ebp, 1
shl ebp, cl
mov edx, esi
mov ecx, 3
mov esi, eax
sar eax, 1
and edi, 7
sub ecx, eax
mov ebx, edi
shl edx, cl
and edx, 7
cmp esi, 2
jle 0x45d4be
mov eax, esi
sub eax, 1
mov ecx, eax
mov eax, dword [esp + 0x70]
sar ecx, 1
mov dword [esp + 0x18], 8
sar dword [esp + 0x18], cl
mov eax, dword [eax + 0x10]
test eax, eax
jne 0x45cf37
cmp edx, dword [esp + 0x20]
jae 0x45d280
mov edi, dword [esp + 0x18]
mov esi, dword [esp + 0x38]
mov ecx, dword [esp + 0x3c]
mov eax, edi
imul eax, esi
imul esi, edx
sub ebx, ecx
mov dword [esp + 0x24], ebx
mov dword [esp + 0x14], eax
mov eax, edi
add esi, ecx
add eax, edx
add esi, dword [esp + 0x30]
mov dword [esp + 0x10], eax
lea esi, [esi]
mov eax, dword [esp + 0x70]
mov ebx, dword [eax + 0x14]
mov eax, dword [esp + 0x1c]
mov dword [esp + 8], 0
mov dword [esp + 4], ebx
mov dword [esp], eax
call fcn.0045c350
mov eax, dword [esp + 0x24]
add eax, esi
jae 0x45d40f
movzx edx, byte [ebx + 1]
test dl, dl
je 0x45d406
cmp dl, 0xff
movzx ecx, byte [ebx]
je 0x45d404
movzx edi, word [ecx + ecx + 0x53e4e0]
mov ecx, 0xff
sub ecx, edx
imul edi, edx
mov dword [esp + 0xc], edi
movzx edi, byte [eax]
movzx edi, word [edi + edi + 0x53e4e0]
imul edi, ecx
add edi, dword [esp + 0xc]
mov ecx, edi
and edi, 0x7fff
shr ecx, 0xf
movzx edx, byte [ecx + 0x53dee0]
movzx ecx, word [ecx + ecx + 0x53e0e0]
imul edx, edi
shr edx, 0xc
add edx, ecx
movzx ecx, dh
mov byte [eax], cl
add eax, ebp
add ebx, 2
cmp esi, eax
ja 0x45d3a7
mov edi, dword [esp + 0x10]
mov eax, dword [esp + 0x18]
add esi, dword [esp + 0x14]
add eax, edi
cmp dword [esp + 0x20], edi
jbe 0x45d280
mov dword [esp + 0x10], eax
jmp 0x45d380
shr ebx, 5
mov ecx, ebx
and ecx, 1
jmp 0x45d05a
mov dword [esp + 4], str.lost_rgb_to_gray
mov dword [esp], edi
call fcn.00459ae0
mov eax, edx
mov ecx, 3
and eax, 1
mov esi, eax
mov dword [esp + 0x10], eax
lea eax, [edx + 1]
mov dword [esp + 0x38], eax
sar eax, 1
sub ecx, eax
mov eax, esi
shl eax, cl
mov ecx, 3
mov esi, eax
not eax
and eax, 7
add eax, dword [esp + 0x3c]
jmp 0x45d20e
mov dword [esp + 0x28], 8
jmp 0x45d0a2
mov eax, ebp
mov esi, ebp
add eax, 1
and esi, 1
mov dword [esp + 0x2c], eax
mov ecx, 3
mov edi, esi
sar eax, 1
sub ecx, eax
shl edi, cl
mov ecx, 3
mov eax, edi
not eax
and eax, 7
add eax, dword [esp + 0x3c]
jmp 0x45d2e5
mov dword [esp + 0x18], 8
jmp 0x45cf28
mov eax, dword [esp + 0x1c]
mov dword [esp + 4], str.unexpected_8_bit_transformation
mov dword [esp], eax
call fcn.00459ae0
mov eax, dword [esp + 0x1c]
mov dword [esp + 4], str.lost_gained_channels
mov dword [esp], eax
call fcn.00459ae0
mov eax, dword [esp + 0x1c]
mov dword [esp + 4], str.unexpected_compose
mov dword [esp], eax
call fcn.00459ae0
mov esi, esi
lea edi, [edi]
push ebp
push edi
push esi
push ebx
sub esp, 0x6c
mov eax, dword [esp + 0x80]
mov edx, dword [eax]
mov eax, dword [edx]
mov eax, dword [eax]
mov dword [esp + 0x3c], eax
movzx eax, byte [eax + 0x158]
test al, al
je 0x45d7af
cmp al, 1
jne 0x45d79b
mov dword [esp + 0x54], 7
mov edi, dword [edx + 0xc]
mov ecx, dword [esp + 0x80]
mov dword [esp + 0x40], edi
mov edi, dword [edx + 8]
mov edx, dword [edx + 0x10]
mov ecx, dword [ecx + 0x1c]
mov dword [esp + 0x58], edi
and edx, 2
cmp edx, 1
sbb ebp, ebp
and ebp, 0xfffffffe
add ebp, 3
imul edi, ebp
mov dword [esp + 0x5c], ecx
lea ecx, [ebp + 1]
mov dword [esp + 0x2c], ecx
mov dword [esp + 0x4c], edi
xor edi, edi
cmp al, 1
je 0x45d6f9
lea eax, [edi + 1]
xor edx, edx
mov dword [esp + 0x50], eax
mov dword [esp + 0x28], ebp
mov dword [esp + 0x38], 1
mov dword [esp + 0x44], 0
cmp dword [esp + 0x40], edx
jbe 0x45d6d8
mov edi, dword [esp + 0x38]
mov ecx, dword [esp + 0x5c]
mov eax, edi
imul eax, ecx
mov dword [esp + 0x48], eax
mov eax, ecx
imul eax, edx
mov dword [esp + 0x30], eax
mov eax, edi
mov edi, ebp
add eax, edx
mov dword [esp + 0x34], eax
mov eax, dword [esp + 0x80]
mov ebp, dword [eax + 0x14]
mov eax, dword [esp + 0x3c]
mov dword [esp + 8], 0
mov dword [esp + 4], ebp
mov dword [esp], eax
call fcn.0045c350
mov ecx, dword [esp + 0x80]
mov eax, dword [esp + 0x30]
add eax, dword [ecx + 0x18]
mov ecx, dword [esp + 0x4c]
add ecx, eax
add eax, dword [esp + 0x44]
mov dword [esp + 0x24], ecx
cmp ecx, eax
mov dword [esp + 0x20], eax
jbe 0x45d6b5
movzx eax, byte [ebp + edi]
test al, al
mov byte [esp + 0x1b], al
je 0x45d69b
movzx eax, byte [esp + 0x1b]
mov esi, 0xff
xor edx, edx
mov ecx, dword [esp + 0x20]
sub esi, eax
mov dword [esp + 0x1c], esi
cmp byte [esp + 0x1b], 0xff
movzx eax, byte [ebp + edx]
je 0x45d68e
mov ebx, eax
shl ebx, 0x10
sub ebx, eax
movzx eax, byte [ecx]
movzx esi, word [eax + eax + 0x53e4e0]
imul esi, dword [esp + 0x1c]
add esi, ebx
mov ebx, esi
and esi, 0x7fff
shr ebx, 0xf
movzx eax, byte [ebx + 0x53dee0]
movzx ebx, word [ebx + ebx + 0x53e0e0]
imul eax, esi
shr eax, 0xc
add eax, ebx
movzx eax, ah
add edx, 1
add ecx, 1
mov byte [ecx - 1], al
cmp edi, edx
ja 0x45d644
mov eax, dword [esp + 0x28]
add dword [esp + 0x20], eax
mov eax, dword [esp + 0x20]
add ebp, dword [esp + 0x2c]
cmp dword [esp + 0x24], eax
ja 0x45d621
mov ecx, dword [esp + 0x34]
mov eax, dword [esp + 0x38]
mov edx, dword [esp + 0x48]
add dword [esp + 0x30], edx
add eax, ecx
cmp dword [esp + 0x40], ecx
jbe 0x45d6d6
mov dword [esp + 0x34], eax
jmp 0x45d5d7
mov ebp, edi
mov edi, dword [esp + 0x50]
cmp dword [esp + 0x54], edi
jle 0x45d78e
mov eax, dword [esp + 0x3c]
movzx eax, byte [eax + 0x158]
cmp al, 1
jne 0x45d58c
cmp edi, 1
jle 0x45d7bc
lea eax, [edi + 1]
mov ebx, 7
mov esi, edi
sub ebx, edi
and esi, 1
mov ecx, 3
mov dword [esp + 0x50], eax
sar eax, 1
mov edx, esi
sub ecx, eax
mov eax, 1
sar ebx, 1
shl edx, cl
mov ecx, ebx
shl eax, cl
mov ecx, edx
and ecx, 7
sub eax, 1
sub eax, ecx
mov ecx, ebx
add eax, dword [esp + 0x58]
shr eax, cl
test eax, eax
je 0x45d6d8
and edx, 7
mov ecx, 7
imul edx, ebp
sub ecx, edi
sar ecx, 1
mov eax, ebp
shl eax, cl
mov ecx, 3
mov dword [esp + 0x28], eax
mov eax, edi
sar eax, 1
mov dword [esp + 0x44], edx
mov edx, esi
sub ecx, eax
xor edx, 1
shl edx, cl
and edx, 7
cmp edi, 2
jle 0x45d7ea
lea ecx, [edi - 1]
sar ecx, 1
mov dword [esp + 0x38], 8
sar dword [esp + 0x38], cl
jmp 0x45d5a9
add esp, 0x6c
mov eax, 1
pop ebx
pop esi
pop edi
pop ebp
ret
mov eax, dword [esp + 0x3c]
mov dword [esp + 4], str.unknown_interlace_type
mov dword [esp], eax
call fcn.00459ae0
mov dword [esp + 0x54], 1
jmp 0x45d547
lea eax, [edi + 1]
mov esi, edi
and esi, 1
mov ecx, 3
mov dword [esp + 0x50], eax
sar eax, 1
mov edx, esi
sub ecx, eax
shl edx, cl
mov ecx, 3
mov eax, edx
not eax
and eax, 7
add eax, dword [esp + 0x58]
jmp 0x45d73d
mov dword [esp + 0x38], 8
jmp 0x45d5a9