Function at 0x100cd1b0
Capabilities:
Encrypt data using rc4 ksa

Disassembly:
push ebp
mov ebp, esp
sub esp, 0x3a4
mov eax, dword [0x101fe070]
xor eax, ebp
mov dword [ebp - 4], eax
mov eax, dword [ecx]
lea edx, [ebp - 0x14]
push ebx
push esi
push edi
push 8
push edx
mov dword [ebp - 0x39c], ecx
call dword [eax]
mov dword [ebp - 0xc], 0x474e5089
lea ecx, [ebp - 0x14]
mov dword [ebp - 8], 0xa1a0a0d
lea edx, [ebp - 0xc]
mov esi, 4
nop
mov eax, dword [ecx]
cmp eax, dword [edx]
jne 0x100cd205
add ecx, 4
add edx, 4
sub esi, 4
jae 0x100cd1f0
xor eax, eax
jmp 0x100cd22a
cmp al, byte [edx]
jne 0x100cd225
mov al, byte [ecx + 1]
cmp al, byte [edx + 1]
jne 0x100cd225
mov al, byte [ecx + 2]
cmp al, byte [edx + 2]
jne 0x100cd225
mov al, byte [ecx + 3]
cmp al, byte [edx + 3]
jne 0x100cd225
xor eax, eax
jmp 0x100cd22a
sbb eax, eax
or eax, 1
test eax, eax
jne 0x100cd317
sub esp, 8
call fcn.10106aa0
mov esi, eax
add esp, 8
mov dword [ebp - 0x380], esi
test esi, esi
jne 0x100cd24d
xor edi, edi
jmp 0x100cd282
mov eax, dword [esi + 0x278]
push 0x12c
test eax, eax
je 0x100cd264
push esi
call eax
add esp, 8
jmp 0x100cd26c
call fcn.10161af1
add esp, 4
mov edi, eax
test edi, edi
je 0x100cd282
push 0x12c
push 0
push edi
call fcn.1015e8b0
add esp, 0xc
push ecx
mov ecx, esi
mov dword [ebp - 0x37c], edi
call fcn.10106940
add esp, 4
push 0
push eax
call fcn.101846b0
add esp, 8
test eax, eax
je 0x100cd32a
mov esi, dword [ebp - 0x380]
test esi, esi
je 0x100cd317
mov edi, dword [ebp - 0x37c]
test edi, edi
je 0x100cd2ff
push 0xffffffffffffffff
push 0x7fff
mov edx, edi
mov dword [ebp - 0x37c], 0
mov ecx, esi
call fcn.101085f0
push 0x12c
push 0
push edi
call fcn.1015e8b0
mov eax, dword [esi + 0x27c]
add esp, 0x14
push edi
test eax, eax
je 0x100cd2f7
push esi
call eax
add esp, 8
jmp 0x100cd2ff
call fcn.1016149c
add esp, 4
mov ecx, esi
mov dword [ebp - 0x380], 0
call fcn.10107830
mov ecx, esi
call fcn.1010dc50
xor eax, eax
pop edi
pop esi
pop ebx
mov ecx, dword [ebp - 4]
xor ecx, ebp
call fcn.1015c023
mov esp, ebp
pop ebp
ret
mov ebx, dword [ebp - 0x380]
mov dword [ebp - 0x36c], ebx
test ebx, ebx
je 0x100cd378
mov eax, dword [ebp - 0x39c]
mov dword [ebx + 0x60], eax
mov dword [ebx + 0x5c], 0x100cd180
cmp dword [ebx + 0x58], 0
je 0x100cd363
mov edx, str.Cant_set_both_read_data_fn_and_write_data_fn_in_the_same_structure
mov dword [ebx + 0x58], 0
mov ecx, ebx
call fcn.101065d0
mov dword [ebx + 0x174], 0
test ebx, ebx
je 0x100cd378
mov byte [ebx + 0x155], 8
cmp byte [ebx + 0x150], 8
mov esi, dword [ebp - 0x37c]
mov dword [ebp - 0x3a0], esi
jb 0x100cd39c
cmp byte [ebx + 0x14f], 3
je 0x100cd39c
test byte [esi + 8], 0x10
je 0x100cd3a3
mov ecx, ebx
call fcn.10102390
push 1
mov edx, 0xff
mov ecx, ebx
call fcn.10107ae0
mov eax, dword [ebx + 0x7c]
add esp, 4
test eax, 0x8000
je 0x100cd3c6
or eax, 0x1000000
mov dword [ebx + 0x7c], eax
cmp byte [ebx + 0x14c], 0
je 0x100cd3d5
or eax, 2
mov dword [ebx + 0x7c], eax
mov ecx, ebx
call fcn.101023d0
mov eax, dword [ebx + 0x78]
test al, 0x40
je 0x100cd3fc
mov edx, str.invalid_after_png_start_read_image_or_png_read_update_info
mov ecx, ebx
test eax, 0x400000
je 0x100cdb75
call fcn.101065d0
jmp 0x100cd40b
or eax, 0x4000
or dword [ebx + 0x7c], 0x400
mov dword [ebx + 0x78], eax
mov edx, esi
mov ecx, ebx
call fcn.10106b00
mov edx, esi
mov ecx, ebx
call fcn.10106fa0
mov edi, dword [ebx + 0x100]
mov eax, dword [ebx + 0x104]
shl edi, 2
imul eax, edi
push 0x18
mov dword [ebp - 0x354], edi
mov dword [ebp - 0x358], eax
call fcn.10161af1
mov ecx, eax
add esp, 4
mov dword [ebp - 0x360], ecx
mov dword [ecx], 0
mov dword [ecx + 4], 0
mov dword [ecx + 0x10], 0
mov dword [ecx + 0x14], 0
mov eax, dword [ebx + 0x100]
mov edx, dword [ebx + 0x104]
mov dword [ecx + 8], eax
mov eax, edi
mov dword [ecx + 0xc], edx
xor ecx, ecx
mov dword [ebp - 0x368], edx
mul edx
seto cl
neg ecx
or ecx, eax
push ecx
call fcn.10161af1
add esp, 4
mov dword [ebp - 0x374], eax
push dword [ebp - 0x358]
push 0
push eax
call fcn.1015e8b0
mov eax, dword [ebp - 0x368]
xor ecx, ecx
add esp, 0xc
mov edx, 4
mul edx
seto cl
neg ecx
or ecx, eax
push ecx
call fcn.10161af1
mov edx, eax
add esp, 4
mov eax, dword [ebp - 0x368]
xor ecx, ecx
mov dword [ebp - 0x378], edx
test eax, eax
jle 0x100cd506
mov edx, dword [ebp - 0x374]
mov ebx, dword [ebp - 0x378]
nop dword [eax]
mov dword [ebx + ecx*4], edx
inc ecx
add edx, edi
cmp ecx, eax
jl 0x100cd4f0
mov ebx, dword [ebp - 0x36c]
mov edx, dword [ebp - 0x378]
test esi, esi
je 0x100cda57
mov eax, dword [esi + 8]
and eax, 0x10000
je 0x100cda57
mov eax, dword [ebp - 0x360]
xor ecx, ecx
mov edx, dword [esi + 0x10c]
mov dword [ebp - 0x368], edx
mov dword [eax + 0x10], edx
mov eax, dword [ebp - 0x358]
mul edx
seto cl
neg ecx
or ecx, eax
push ecx
call fcn.10161af1
add esp, 4
mov dword [ebp - 0x38c], eax
push dword [ebp - 0x358]
call fcn.10161af1
add esp, 4
mov dword [ebp - 0x370], eax
push dword [ebp - 0x358]
push 0
push eax
call fcn.1015e8b0
mov eax, dword [ebp - 0x360]
add esp, 0xc
mov ecx, dword [esi + 0x110]
mov edx, 2
mov dword [eax + 0x14], ecx
xor ecx, ecx
mov eax, dword [ebp - 0x368]
mul edx
seto cl
neg ecx
or ecx, eax
push ecx
call fcn.10161af1
mov ecx, eax
mov dword [ebp - 0x350], 0
mov eax, dword [ebp - 0x360]
add esp, 4
cmp dword [ebp - 0x368], 0
mov dword [ebp - 0x390], ecx
mov dword [eax + 4], ecx
jle 0x100cda2d
mov eax, dword [ebp - 0x38c]
mov dword [ebp - 0x384], eax
sub eax, dword [ebp - 0x358]
mov dword [ebp - 0x388], eax
nop dword [eax]
nop dword [eax + eax]
mov eax, dword [ebx + 0x74]
test eax, 0x10000
je 0x100cdb86
cmp dword [ebx + 0x260], 0
je 0x100cd6f3
and dword [ebx + 0x78], 0xffffffbf
and eax, 0xfffdfff3
mov dword [ebx + 0x118], 0
mov byte [ebx + 0x14d], 0
mov dword [ebx + 0x74], eax
mov byte [ebp - 0x349], 0
nop
mov ecx, ebx
call fcn.1010df50
mov edi, eax
mov eax, dword [ebx + 0x11c]
cmp eax, 0x49444154
jne 0x100cd66b
cmp byte [ebp - 0x349], 0
jne 0x100cdb6e
cmp dword [ebx + 0x260], 1
ja 0x100cdb6e
mov edx, edi
mov ecx, ebx
call fcn.1010e0e0
jmp 0x100cd630
mov ecx, ebx
cmp eax, 0x6663544c
jne 0x100cd688
push edi
mov edx, esi
call fcn.101116c0
add esp, 4
mov byte [ebp - 0x349], 1
jmp 0x100cd630
cmp eax, 0x66644154
jne 0x100cd6b7
mov edx, edi
call fcn.10111910
cmp byte [ebp - 0x349], 0
jne 0x100cd6cf
cmp dword [ebx + 0x260], 1
jbe 0x100cd6cf
lea edx, [edi - 4]
mov ecx, ebx
call fcn.1010e0e0
jmp 0x100cd630
mov edx, str.Skipped__ignored__a_chunk_between_APNG_chunks
call fcn.101065d0
mov edx, edi
mov ecx, ebx
call fcn.1010e0e0
jmp 0x100cd630
mov ecx, dword [ebx + 0x74]
test ecx, 0x20000
je 0x100cdb7a
lea eax, [edi - 4]
or ecx, 4
mov edi, dword [ebp - 0x354]
mov dword [ebx + 0x134], eax
mov dword [ebx + 0x74], ecx
push 0x20000
mov edx, esi
mov ecx, ebx
call fcn.101080b0
add esp, 4
test eax, eax
je 0x100cd7a5
movzx ecx, word [esi + 0x126]
movzx eax, word [esi + 0x124]
test cx, cx
je 0x100cd793
cmp ecx, 0x64
je 0x100cd793
mov edx, dword [ebp - 0x360]
mov edx, dword [edx + 4]
cmp ecx, 0xa
jne 0x100cd743
mov ecx, dword [ebp - 0x350]
lea eax, [eax + eax*4]
add eax, eax
mov word [edx + ecx*2], ax
jmp 0x100cd7b7
mov edi, dword [ebp - 0x350]
mov dword [ebp - 0x35c], eax
lea edx, [edx + edi*2]
mov edi, dword [ebp - 0x354]
mov dword [ebp - 0x364], edx
mov edx, 0x3e8
cmp cx, dx
jne 0x100cd781
mov ecx, dword [ebp - 0x364]
mov eax, 0xcccccccd
mul dword [ebp - 0x35c]
shr edx, 3
mov word [ecx], dx
jmp 0x100cd7b7
imul eax, eax, 0x64
xor edx, edx
div ecx
mov ecx, dword [ebp - 0x364]
mov word [ecx], ax
jmp 0x100cd7b7
mov ecx, dword [ebp - 0x350]
mov edx, dword [ebp - 0x390]
mov word [edx + ecx*2], ax
jmp 0x100cd7b7
mov eax, dword [ebp - 0x350]
xor edx, edx
mov ecx, dword [ebp - 0x390]
mov word [ecx + eax*2], dx
mov edx, dword [ebp - 0x378]
mov ecx, ebx
call fcn.101073f0
mov ecx, dword [esi + 0x120]
mov eax, dword [esi + 0x11c]
imul ecx, edi
add ecx, dword [ebp - 0x370]
lea edi, [ecx + eax*4]
movzx eax, byte [esi + 0x129]
mov ecx, dword [ebp - 0x374]
mov dword [ebp - 0x398], edi
mov dword [ebp - 0x364], ecx
sub eax, 0
je 0x100cd8fc
sub eax, 1
jne 0x100cd950
mov dword [ebp - 0x35c], eax
cmp dword [esi + 0x118], eax
jbe 0x100cd950
mov edx, dword [esi + 0x114]
nop
mov dword [ebp - 0x394], 0
mov ebx, ecx
test edx, edx
je 0x100cd8c9
movzx edx, byte [ebx + 3]
lea edi, [edi + 4]
movzx ecx, byte [ebx]
lea ebx, [ebx + 4]
movzx eax, byte [edi - 4]
mov esi, 0xff
imul ecx, edx
sub esi, edx
imul eax, esi
add ecx, eax
sar ecx, 8
mov byte [edi - 4], cl
movzx ecx, byte [ebx - 3]
movzx eax, byte [edi - 3]
imul ecx, edx
imul eax, esi
add ecx, eax
sar ecx, 8
mov byte [edi - 3], cl
movzx ecx, byte [ebx - 2]
movzx eax, byte [edi - 2]
imul ecx, edx
imul eax, esi
add ecx, eax
sar ecx, 8
mov byte [edi - 2], cl
movzx ecx, byte [ebx - 1]
movzx eax, byte [edi - 1]
imul eax, esi
mov esi, dword [ebp - 0x3a0]
imul ecx, edx
add ecx, eax
mov eax, dword [ebp - 0x394]
sar ecx, 8
inc eax
mov byte [edi - 1], cl
mov edx, dword [esi + 0x114]
mov dword [ebp - 0x394], eax
cmp eax, edx
jb 0x100cd834
mov ecx, dword [ebp - 0x364]
mov eax, dword [ebp - 0x35c]
mov edi, dword [ebp - 0x398]
inc eax
add edi, dword [ebp - 0x354]
add ecx, dword [ebp - 0x354]
mov dword [ebp - 0x398], edi
mov dword [ebp - 0x364], ecx
mov dword [ebp - 0x35c], eax
cmp eax, dword [esi + 0x118]
jb 0x100cd820
jmp 0x100cd94a
cmp dword [esi + 0x118], 0
mov dword [ebp - 0x35c], 0
jbe 0x100cd950
mov ebx, dword [ebp - 0x35c]
mov eax, dword [esi + 0x114]
shl eax, 2
push eax
push ecx
push edi
call fcn.1015ddb0
mov ecx, dword [ebp - 0x364]
inc ebx
add ecx, dword [ebp - 0x354]
add esp, 0xc
add edi, dword [ebp - 0x354]
mov dword [ebp - 0x364], ecx
cmp ebx, dword [esi + 0x118]
jb 0x100cd915
mov ebx, dword [ebp - 0x36c]
push dword [ebp - 0x358]
push dword [ebp - 0x370]
push dword [ebp - 0x384]
call fcn.1015ddb0
mov ecx, dword [esi + 0x120]
add esp, 0xc
mov edi, dword [ebp - 0x354]
mov edx, dword [ebp - 0x370]
mov eax, dword [esi + 0x11c]
imul ecx, edi
add ecx, edx
lea eax, [ecx + eax*4]
mov dword [ebp - 0x35c], eax
movzx eax, byte [esi + 0x128]
sub eax, 1
je 0x100cd9c2
sub eax, 1
mov eax, dword [ebp - 0x350]
jne 0x100cda08
test eax, eax
jle 0x100cda08
push dword [ebp - 0x358]
push dword [ebp - 0x388]
push edx
call fcn.1015ddb0
add esp, 0xc
jmp 0x100cda02
xor edi, edi
cmp dword [esi + 0x118], edi
jbe 0x100cd9fc
mov ebx, dword [ebp - 0x35c]
mov eax, dword [esi + 0x114]
shl eax, 2
push eax
push 0
push ebx
call fcn.1015e8b0
add ebx, dword [ebp - 0x354]
inc edi
add esp, 0xc
cmp edi, dword [esi + 0x118]
jb 0x100cd9d2
mov ebx, dword [ebp - 0x36c]
mov edi, dword [ebp - 0x354]
mov eax, dword [ebp - 0x350]
mov ecx, dword [ebp - 0x358]
inc eax
add dword [ebp - 0x384], ecx
add dword [ebp - 0x388], ecx
mov dword [ebp - 0x350], eax
cmp eax, dword [ebp - 0x368]
jl 0x100cd5f0
push dword [ebp - 0x370]
call fcn.1016149c
add esp, 4
push dword [ebp - 0x374]
call fcn.1016149c
mov eax, dword [ebp - 0x360]
add esp, 4
mov ecx, dword [ebp - 0x38c]
jmp 0x100cda71
mov ecx, ebx
call fcn.101073f0
mov eax, dword [ebp - 0x360]
mov ecx, dword [ebp - 0x374]
mov dword [eax + 0x10], 1
push dword [ebp - 0x378]
mov dword [eax], ecx
call fcn.1016149c
add esp, 4
mov edx, esi
mov ecx, ebx
call fcn.101074c0
test ebx, ebx
je 0x100cdb57
test esi, esi
je 0x100cdadb
push 0xffffffffffffffff
push 0x7fff
mov edx, esi
mov dword [ebp - 0x37c], 0
mov ecx, ebx
call fcn.101085f0
push 0x12c
push 0
push esi
call fcn.1015e8b0
mov eax, dword [ebx + 0x27c]
add esp, 0x14
push esi
test eax, eax
je 0x100cdad3
push ebx
call eax
add esp, 8
jmp 0x100cdadb
call fcn.1016149c
add esp, 4
mov ecx, ebx
mov dword [ebp - 0x380], 0
call fcn.10107830
push 0x32c
mov ecx, 0xcb
lea edi, [ebp - 0x348]
mov esi, ebx
push 0
rep movsd dword es:[edi], dword [esi]
push ebx
call fcn.1015e8b0
mov eax, dword [ebp - 0xcc]
add esp, 0xc
push ebx
test eax, eax
je 0x100cdb44
lea ecx, [ebp - 0x348]
push ecx
call eax
add esp, 8
lea ecx, [ebp - 0x348]
call fcn.10106990
mov eax, dword [ebp - 0x360]
pop edi
pop esi
pop ebx
mov ecx, dword [ebp - 4]
xor ecx, ebp
call fcn.1015c023
mov esp, ebp
pop ebp
ret
call fcn.1016149c
add esp, 4
lea ecx, [ebp - 0x348]
call fcn.10106990
mov ecx, dword [ebp - 4]
mov eax, dword [ebp - 0x360]
xor ecx, ebp
pop edi
pop esi
pop ebx
call fcn.1015c023
mov esp, ebp
pop ebp
ret
mov edx, str.png_read_frame_head__:_out_of_place_IDAT
mov ecx, ebx
call fcn.101065a0
mov edx, str.png_read_frame_head__:_out_of_place_fdAT
mov ecx, ebx
call fcn.101065a0
mov edx, str.attempt_to_png_read_frame_head___but_no_acTL_present
mov ecx, ebx
call fcn.101065a0
int3