Function at 0x431e70
Capabilities:
Encode data using xor

Disassembly:
push ebp
mov ebp, esp
sub esp, 0x1c
push ebx
push esi
mov esi, ecx
push edi
mov edi, edx
mov dword [ebp - 0xc], esi
mov dword [ebp - 4], edi
mov ecx, dword [esi + 0x124]
test ecx, ecx
je 0x432832
mov eax, dword [esi + 0x78]
and eax, 0x4040
cmp eax, 0x4000
je 0x43283e
mov eax, dword [esi + 0x7c]
test eax, 0x1000
je 0x432088
mov bl, byte [edi + 8]
movzx edx, word [esi + 0x148]
cmp bl, 3
jne 0x431ee1
push edx
push dword [esi + 0x1b0]
lea eax, [ecx + 1]
mov edx, edi
push dword [esi + 0x13c]
push eax
call fcn.00431610
add esp, 0x10
jmp 0x432088
test dx, dx
je 0x431f06
test eax, 0x2000000
je 0x431f06
lea eax, [esi + 0x1b4]
lea edx, [ecx + 1]
mov ecx, edi
push eax
call fcn.004318a0
add esp, 4
jmp 0x432088
lea edx, [ecx + 1]
mov ecx, dword [edi]
mov dword [ebp - 8], ecx
test bl, bl
jne 0x432088
mov al, byte [edi + 9]
cmp al, 8
jae 0x432088
movzx eax, al
sub eax, 1
je 0x43202b
sub eax, 1
je 0x431fb5
sub eax, 2
jne 0x43207d
lea eax, [ecx - 1]
dec ecx
mov ebx, eax
add ecx, edx
and eax, 1
mov dword [ebp - 0x14], ecx
shl eax, 2
mov ecx, 4
shr ebx, 1
sub ecx, eax
mov eax, dword [ebp - 8]
add ebx, edx
mov dword [ebp - 0x10], ecx
test eax, eax
je 0x43207b
mov esi, dword [ebp - 0x14]
mov edi, eax
nop
mov dl, byte [ebx]
lea esi, [esi - 1]
shr dl, cl
mov al, dl
shl dl, 4
and al, 0xf
xor al, dl
cmp dword [ebp - 0x10], 4
mov byte [esi + 1], al
mov edx, 4
lea eax, [ebx - 1]
cmovne eax, ebx
mov ebx, eax
xor eax, eax
cmp dword [ebp - 0x10], 4
cmovne eax, edx
mov ecx, eax
mov dword [ebp - 0x10], ecx
sub edi, 1
jne 0x431f70
mov esi, dword [ebp - 0xc]
mov edi, dword [ebp - 4]
mov ecx, dword [ebp - 8]
jmp 0x43207d
lea eax, [ecx - 1]
mov ebx, 3
mov ecx, eax
and eax, 3
shr ecx, 2
sub ebx, eax
add ecx, edx
add ebx, ebx
mov dword [ebp - 0x14], ecx
mov ecx, dword [ebp - 8]
dec ecx
add ecx, edx
mov dword [ebp - 0x18], ecx
mov ecx, dword [ebp - 8]
test ecx, ecx
je 0x43207d
mov esi, dword [ebp - 0x14]
mov edi, dword [ebp - 0x18]
mov dword [ebp - 0x10], ecx
nop dword [eax + eax]
mov dl, byte [esi]
mov cl, bl
shr dl, cl
and dl, 3
mov al, dl
shl al, 2
or al, dl
shl al, 2
or al, dl
shl al, 2
or al, dl
mov byte [edi], al
cmp ebx, 6
jne 0x432016
xor ebx, ebx
dec esi
jmp 0x432019
add ebx, 2
dec edi
sub dword [ebp - 0x10], 1
jne 0x431ff0
mov esi, dword [ebp - 0xc]
mov edi, dword [ebp - 4]
mov ecx, dword [ebp - 8]
jmp 0x43207d
lea eax, [ecx - 1]
dec ecx
mov ebx, eax
add ecx, edx
shr ebx, 3
and eax, 7
add ebx, edx
mov dword [ebp - 0x18], ecx
mov ecx, dword [ebp - 8]
mov edx, 7
sub edx, eax
test ecx, ecx
je 0x43207d
mov esi, dword [ebp - 0x18]
mov edi, ecx
mov al, byte [ebx]
mov cl, dl
shr al, cl
and al, 1
neg al
sbb al, al
mov byte [esi], al
cmp edx, 7
jne 0x432069
xor edx, edx
dec ebx
jmp 0x43206a
inc edx
dec esi
sub edi, 1
jne 0x432051
mov esi, dword [ebp - 0xc]
mov edi, dword [ebp - 4]
mov ecx, dword [ebp - 8]
jmp 0x43207d
mov ecx, eax
mov byte [edi + 9], 8
mov byte [edi + 0xb], 8
mov dword [edi + 4], ecx
mov eax, dword [esi + 0x7c]
and eax, 0x40080
cmp eax, 0x40000
jne 0x4320b5
mov al, byte [edi + 8]
cmp al, 6
je 0x4320a2
cmp al, 4
jne 0x4320b5
mov edx, dword [esi + 0x124]
mov ecx, edi
push 0
inc edx
call fcn.00432a60
add esp, 4
test dword [esi + 0x7c], 0x600000
je 0x432144
mov eax, dword [esi + 0x124]
mov edx, edi
inc eax
mov ecx, esi
push eax
call fcn.0042fad0
add esp, 4
test eax, eax
je 0x432144
mov eax, dword [esi + 0x7c]
and eax, 0x600000
mov byte [esi + 0x248], 1
cmp eax, 0x400000
jne 0x432131
mov eax, dword [esi + 0x50]
push str.png_do_rgb_to_gray_found_nongray_pixel
test eax, eax
je 0x432101
push esi
call eax
jmp 0x43212e
push str.libpng_warning:__s
push 2
call fcn.0044f99f
add esp, 4
push eax
call fcn.0042ddb0
add esp, 0xc
push 0x4b2d64
push 2
call fcn.0044f99f
add esp, 4
push eax
call fcn.0042ddb0
add esp, 8
mov eax, dword [esi + 0x7c]
and eax, 0x600000
cmp eax, 0x200000
je 0x43284a
test dword [esi + 0x7c], 0x4000
je 0x432164
test dword [esi + 0x74], 0x800
jne 0x432164
mov edx, dword [esi + 0x124]
mov ecx, edi
inc edx
call fcn.0042f910
test byte [esi + 0x7c], 0x80
je 0x43217c
mov edx, dword [esi + 0x124]
mov ecx, edi
push esi
inc edx
call fcn.0042ffd0
add esp, 4
mov ecx, dword [esi + 0x7c]
mov eax, ecx
and eax, 0x602000
cmp eax, 0x2000
jne 0x4321bf
test cl, cl
jns 0x4321a4
cmp word [esi + 0x148], 0
jne 0x4321bf
test byte [esi + 0x14f], 4
jne 0x4321bf
cmp byte [esi + 0x14f], 3
je 0x4321bf
mov edx, dword [esi + 0x124]
mov ecx, edi
push esi
inc edx
call fcn.00431200
add esp, 4
mov eax, dword [esi + 0x7c]
and eax, 0x40080
cmp eax, 0x40080
jne 0x4321ec
mov al, byte [edi + 8]
cmp al, 6
je 0x4321d9
cmp al, 4
jne 0x4321ec
mov edx, dword [esi + 0x124]
mov ecx, edi
push 0
inc edx
call fcn.00432a60
add esp, 4
test dword [esi + 0x7c], 0x800000
je 0x432314
mov bl, byte [edi + 8]
test bl, 4
je 0x432314
mov ecx, dword [esi + 0x124]
mov al, byte [edi + 9]
inc ecx
mov edx, dword [edi]
cmp al, 8
jne 0x432259
mov eax, dword [esi + 0x194]
test eax, eax
je 0x4322d3
test bl, 2
mov ebx, 0
setne bl
dec ecx
lea ebx, [ebx*2 + 2]
add ecx, ebx
test edx, edx
je 0x432314
mov edi, eax
movzx eax, byte [ecx]
mov al, byte [eax + edi]
mov byte [ecx], al
add ecx, ebx
sub edx, 1
jne 0x432242
mov edi, dword [ebp - 4]
jmp 0x432314
cmp al, 0x10
jne 0x4322d3
mov eax, dword [esi + 0x19c]
mov edi, dword [esi + 0x184]
mov dword [ebp - 0x18], edi
mov edi, dword [ebp - 4]
mov dword [ebp - 0x10], eax
test eax, eax
je 0x4322d3
test bl, 2
mov eax, 0
setne al
lea eax, [eax*4 + 4]
lea ebx, [eax - 2]
mov dword [ebp - 0x14], eax
add ebx, ecx
test edx, edx
je 0x432314
mov eax, dword [ebp - 0x18]
mov edi, dword [ebp - 0x14]
mov esi, dword [ebp - 0x10]
movzx ecx, al
mov dword [ebp - 0x18], ecx
movzx eax, byte [ebx + 1]
shr eax, cl
movzx ecx, byte [ebx]
mov eax, dword [esi + eax*4]
movzx ecx, word [eax + ecx*2]
mov eax, ecx
mov byte [ebx + 1], cl
mov ecx, dword [ebp - 0x18]
shr eax, 8
mov byte [ebx], al
add ebx, edi
sub edx, 1
jne 0x4322a7
mov esi, dword [ebp - 0xc]
mov edi, dword [ebp - 4]
jmp 0x432314
mov eax, dword [esi + 0x50]
push str.png_do_encode_alpha:_unexpected_call
test eax, eax
je 0x4322e4
push esi
call eax
jmp 0x432311
push str.libpng_warning:__s
push 2
call fcn.0044f99f
add esp, 4
push eax
call fcn.0042ddb0
add esp, 0xc
push 0x4b2d64
push 2
call fcn.0044f99f
add esp, 4
push eax
call fcn.0042ddb0
add esp, 8
mov eax, dword [esi + 0x7c]
test eax, 0x4000000
je 0x432381
cmp byte [edi + 9], 0x10
mov ecx, dword [esi + 0x124]
lea edx, [ecx + 1]
jne 0x432381
mov eax, dword [edi + 4]
mov ebx, edx
inc eax
add eax, ecx
mov dword [ebp - 0x18], eax
cmp edx, eax
jae 0x432367
mov esi, eax
nop
movzx ecx, byte [edx]
lea ebx, [ebx + 1]
movzx eax, byte [edx + 1]
add edx, 2
sub eax, ecx
sub eax, 0xffffff80
imul eax, eax, 0xffff
sar eax, 0x18
add ecx, eax
mov byte [ebx - 1], cl
cmp edx, esi
jb 0x432340
mov esi, dword [ebp - 0xc]
mov al, byte [edi + 0xa]
shl al, 3
mov byte [edi + 0xb], al
movzx eax, byte [edi + 0xa]
imul eax, dword [edi]
mov byte [edi + 9], 8
mov dword [edi + 4], eax
mov eax, dword [esi + 0x7c]
test eax, 0x400
je 0x4323ca
cmp byte [edi + 9], 0x10
mov ebx, dword [esi + 0x124]
lea ecx, [ebx + 1]
jne 0x4323ca
inc ebx
mov edx, ecx
add ebx, dword [edi + 4]
cmp ecx, ebx
jae 0x4323b0
mov al, byte [ecx]
lea edx, [edx + 1]
add ecx, 2
mov byte [edx - 1], al
cmp ecx, ebx
jb 0x4323a1
mov al, byte [edi + 0xa]
shl al, 3
mov byte [edi + 0xb], al
movzx eax, byte [edi + 0xa]
imul eax, dword [edi]
mov byte [edi + 9], 8
mov dword [edi + 4], eax
mov eax, dword [esi + 0x7c]
test al, 0x40
je 0x4323f5
push dword [esi + 0x208]
mov edx, dword [esi + 0x124]
mov ecx, edi
push dword [esi + 0x204]
inc edx
call fcn.00431d10
add esp, 8
cmp dword [edi + 4], 0
je 0x432856
mov ebx, dword [esi + 0x7c]
test ebx, 0x200
je 0x432445
cmp byte [edi + 9], 8
jne 0x432445
cmp byte [edi + 8], 3
je 0x432445
mov edx, dword [esi + 0x124]
mov ecx, dword [edi + 4]
inc edx
add edx, ecx
add ecx, edx
cmp ecx, edx
jbe 0x432430
nop
mov al, byte [edx - 1]
dec edx
mov byte [ecx - 1], al
add ecx, 0xfffffffe
mov byte [ecx], al
cmp ecx, edx
ja 0x432420
mov eax, dword [edi + 4]
add eax, eax
mov byte [edi + 9], 0x10
mov dword [edi + 4], eax
mov al, byte [edi + 0xa]
shl al, 4
mov byte [edi + 0xb], al
test ebx, 0x4000
je 0x432464
test dword [esi + 0x74], 0x800
je 0x432464
mov edx, dword [esi + 0x124]
mov ecx, edi
inc edx
call fcn.0042f910
test byte [esi + 0x7c], 0x20
je 0x432478
mov edx, dword [esi + 0x124]
mov ecx, edi
inc edx
call fcn.00432970
mov ebx, dword [esi + 0x7c]
test ebx, 0x80000
je 0x432542
mov eax, dword [esi + 0x124]
mov cl, byte [edi + 8]
inc eax
mov edx, dword [edi]
cmp cl, 6
jne 0x4324ee
mov ecx, dword [edi + 4]
add ecx, eax
cmp byte [edi + 9], 8
mov ebx, ecx
jne 0x4324c7
test edx, edx
je 0x43253f
nop dword [eax]
mov al, byte [ecx - 1]
sub ecx, 4
not al
mov byte [ebx - 1], al
mov ebx, ecx
sub edx, 1
jne 0x4324b0
jmp 0x43253f
test edx, edx
je 0x43253f
nop
movzx eax, byte [ecx - 1]
not al
mov byte [ebx - 1], al
movzx eax, byte [ecx - 2]
sub ecx, 8
not al
mov byte [ebx - 2], al
mov ebx, ecx
sub edx, 1
jne 0x4324d0
jmp 0x43253f
cmp cl, 4
jne 0x432542
mov ecx, dword [edi + 4]
add ecx, eax
cmp byte [edi + 9], 8
mov ebx, ecx
jne 0x43251f
test edx, edx
je 0x43253f
movzx eax, byte [ecx - 1]
lea ecx, [ecx - 2]
lea ebx, [ebx - 2]
not al
mov byte [ebx + 1], al
movzx eax, byte [ecx]
mov byte [ebx], al
sub edx, 1
jne 0x432504
jmp 0x43253f
test edx, edx
je 0x43253f
movzx eax, byte [ecx - 1]
not al
mov byte [ebx - 1], al
movzx eax, byte [ecx - 2]
sub ecx, 4
not al
mov byte [ebx - 2], al
mov ebx, ecx
sub edx, 1
jne 0x432523
mov ebx, dword [esi + 0x7c]
test bl, 8
je 0x43255f
mov edx, dword [esi + 0x124]
lea eax, [esi + 0x1a9]
push eax
inc edx
mov ecx, edi
call fcn.0042f340
add esp, 4
test byte [esi + 0x7c], 4
je 0x4326d2
mov edx, dword [esi + 0x124]
mov al, byte [edi + 9]
inc edx
mov dword [ebp - 0x18], edx
cmp al, 8
jae 0x4326d2
mov ecx, dword [edi]
movzx eax, al
mov dword [ebp - 0x14], ecx
sub eax, 1
je 0x43265f
sub eax, 1
je 0x432602
sub eax, 2
jne 0x4326ba
mov ebx, dword [ebp - 0x18]
lea eax, [ecx - 1]
mov edx, eax
and eax, 1
shr edx, 1
add edx, ebx
dec ebx
add ebx, ecx
mov dword [ebp - 0x18], ebx
mov ebx, 1
sub ebx, eax
shl ebx, 2
test ecx, ecx
je 0x4326ba
mov esi, dword [ebp - 0x18]
mov edi, ecx
nop dword [eax]
mov al, byte [edx]
lea esi, [esi - 1]
mov cl, bl
shr al, cl
mov ecx, 4
and al, 0xf
cmp ebx, 4
mov byte [esi + 1], al
lea eax, [edx - 1]
cmovne eax, edx
mov edx, eax
xor eax, eax
cmp ebx, 4
cmovne eax, ecx
mov ebx, eax
sub edi, 1
jne 0x4325d0
jmp 0x4326b4
lea eax, [ecx - 1]
mov ebx, eax
and eax, 3
shr ebx, 2
add ebx, edx
dec edx
add edx, ecx
mov dword [ebp - 0x18], edx
mov edx, 3
sub edx, eax
add edx, edx
mov dword [ebp - 8], edx
test ecx, ecx
je 0x4326ba
mov edi, dword [ebp - 0x18]
mov esi, ecx
mov ecx, edx
mov al, byte [ebx]
lea edi, [edi - 1]
shr al, cl
mov edx, ecx
and al, 3
cmp dword [ebp - 8], 6
mov byte [edi + 1], al
lea eax, [ebx - 1]
cmovne eax, ebx
xor ecx, ecx
cmp edx, 6
mov ebx, eax
lea eax, [edx + 2]
cmovne ecx, eax
mov dword [ebp - 8], ecx
sub esi, 1
jne 0x432630
jmp 0x4326b4
lea eax, [ecx - 1]
mov ebx, eax
and eax, 7
shr ebx, 3
add ebx, edx
dec edx
add edx, ecx
mov dword [ebp - 0x18], edx
mov edx, 7
sub edx, eax
mov dword [ebp - 8], edx
test ecx, ecx
je 0x4326ba
mov esi, dword [ebp - 0x18]
mov edi, ecx
mov ecx, edx
mov al, byte [ebx]
lea esi, [esi - 1]
shr al, cl
mov edx, ecx
and al, 1
cmp dword [ebp - 8], 7
mov byte [esi + 1], al
lea eax, [ebx - 1]
cmovne eax, ebx
xor ecx, ecx
cmp edx, 7
mov ebx, eax
lea eax, [edx + 1]
cmovne ecx, eax
mov dword [ebp - 8], ecx
sub edi, 1
jne 0x432687
mov esi, dword [ebp - 0xc]
mov edi, dword [ebp - 4]
mov al, byte [edi + 0xa]
shl al, 3
mov byte [edi + 0xb], al
movzx eax, byte [edi + 0xa]
imul eax, dword [ebp - 0x14]
mov byte [edi + 9], 8
mov dword [edi + 4], eax
cmp byte [edi + 8], 3
jne 0x4326ea
cmp dword [esi + 0x144], 0
jl 0x4326ea
mov edx, edi
mov ecx, esi
call fcn.00432ca0
test byte [esi + 0x7c], 1
je 0x4326fe
mov edx, dword [esi + 0x124]
mov ecx, edi
inc edx
call fcn.00432be0
mov eax, dword [esi + 0x7c]
test eax, 0x10000
je 0x432753
mov ebx, dword [esi + 0x124]
mov dl, byte [edi + 9]
lea ecx, [ebx + 1]
cmp dl, 8
jae 0x432753
inc ebx
add ebx, dword [edi + 4]
cmp dl, 1
jne 0x432729
mov edx, 0x4af390
jmp 0x43273f
cmp dl, 2
jne 0x432735
mov edx, 0x4af290
jmp 0x43273f
cmp dl, 4
jne 0x432753
mov edx, 0x4af190
cmp ecx, ebx
jae 0x432753
movzx eax, byte [ecx]
mov al, byte [eax + edx]
mov byte [ecx], al
inc ecx
cmp ecx, ebx
jb 0x432743
mov eax, dword [esi + 0x7c]
test eax, 0x8000
je 0x432776
push dword [esi + 0x78]
movzx eax, word [esi + 0x15a]
mov ecx, edi
mov edx, dword [esi + 0x124]
push eax
inc edx
call fcn.0042f650
add esp, 8
test dword [esi + 0x7c], 0x20000
je 0x43278d
mov edx, dword [esi + 0x124]
mov ecx, edi
inc edx
call fcn.0042f540
mov eax, dword [esi + 0x7c]
test al, 0x10
je 0x4327c6
cmp byte [edi + 9], 0x10
jne 0x4327c6
movzx ebx, byte [edi + 0xa]
imul ebx, dword [edi]
mov edx, dword [esi + 0x124]
inc edx
test ebx, ebx
je 0x4327c6
nop dword [eax]
mov cl, byte [edx]
lea edx, [edx + 2]
mov al, byte [edx - 1]
mov byte [edx - 2], al
mov byte [edx - 1], cl
sub ebx, 1
jne 0x4327b0
mov eax, dword [esi + 0x7c]
test eax, 0x100000
je 0x43282b
mov ecx, dword [esi + 0x64]
test ecx, ecx
je 0x4327e3
mov eax, dword [esi + 0x124]
inc eax
push eax
push edi
push esi
call ecx
add esp, 0xc
mov al, byte [esi + 0x70]
test al, al
je 0x4327ed
mov byte [edi + 9], al
mov al, byte [esi + 0x71]
test al, al
je 0x4327f7
mov byte [edi + 0xa], al
movzx eax, byte [edi + 0xa]
movzx ecx, byte [edi + 9]
imul ecx, eax
mov eax, dword [edi]
mov byte [edi + 0xb], cl
movzx edx, cl
cmp cl, 8
jb 0x43281f
shr edx, 3
imul edx, eax
mov dword [edi + 4], edx
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
ret
imul edx, eax
add edx, 7
shr edx, 3
mov dword [edi + 4], edx
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
ret
mov edx, str.NULL_row_buffer
mov ecx, esi
call fcn.0042d810
mov edx, str.Uninitialized_row
mov ecx, esi
call fcn.0042d810
mov edx, str.png_do_rgb_to_gray_found_nongray_pixel
mov ecx, esi
call fcn.0042d810
mov edx, str.png_do_quantize_returned_rowbytes0
mov ecx, esi
call fcn.0042d810
int3