Function at 0x42a510
Capabilities:
Encrypt data using rc4 ksa

Disassembly:
sub esp, 0x3c
mov edx, dword [esp + 0x50]
xor eax, eax
cmp dword [esp + 0x58], 0x10
push ebx
sete al
push ebp
mov ebp, dword [esp + 0x4c]
push esi
mov esi, dword [esp + 0x60]
push edi
mov dword [esp + 0x3c], edx
inc eax
mov ecx, eax
imul ecx, dword [esp + 0x5c]
mov edi, ecx
imul edi, edx
mov dword [esp + 0x44], edi
mov edi, dword [esp + 0x50]
mov edi, dword [edi]
mov edi, dword [edi + 8]
mov dword [esp + 0x1c], edi
imul edi, eax
mov dword [esp + 0x10], ecx
test edx, edx
jl 0x42a5ad
test esi, esi
jl 0x42a5ad
je 0x42a577
mov eax, SysReAllocString
cdq
idiv esi
xor edx, edx
cmp dword [esp + 0x60], eax
setle dl
mov eax, edx
test eax, eax
je 0x42a5ad
mov ebx, dword [esp + 0x60]
imul ebx, esi
test ebx, ebx
jl 0x42a5ad
test ecx, ecx
jl 0x42a5ad
je 0x42a59d
mov eax, SysReAllocString
cdq
idiv ecx
xor edx, edx
cmp ebx, eax
setle dl
mov eax, edx
test eax, eax
je 0x42a5ad
imul ecx, dword [esp + 0x60]
imul ecx, esi
cmp ecx, 0x7fffffff
jle 0x42a5b5
xor ecx, ecx
mov dword [esp + 0x30], ecx
jmp 0x42a5c4
push ecx
call fcn.004876f9
add esp, 4
mov ecx, eax
mov dword [esp + 0x30], eax
mov eax, dword [esp + 0x50]
mov dword [eax + 0xc], ecx
test ecx, ecx
jne 0x42a5e9
mov ecx, dword fs:[0x2c]
mov edx, dword [ecx]
pop edi
pop esi
pop ebp
mov dword [edx + 4], str.outofmem
xor eax, eax
pop ebx
add esp, 0x3c
ret
cmp dword [esp + 0x1c], 0
jl 0x42a659
mov ebx, dword [esp + 0x60]
test ebx, ebx
jl 0x42a659
je 0x42a611
mov eax, SysReAllocString
cdq
idiv ebx
xor edx, edx
cmp dword [esp + 0x1c], eax
setle dl
mov eax, edx
test eax, eax
je 0x42a659
mov ebx, dword [esp + 0x1c]
imul ebx, dword [esp + 0x60]
mov edx, dword [esp + 0x5c]
mov dword [esp + 0x24], ebx
test ebx, ebx
jl 0x42a659
mov eax, dword [esp + 0x68]
test eax, eax
jl 0x42a659
je 0x42a64b
mov eax, SysReAllocString
cdq
idiv dword [esp + 0x68]
xor edx, edx
cmp ebx, eax
setle dl
mov eax, edx
test eax, eax
je 0x42a659
mov edx, dword [esp + 0x5c]
mov eax, ebx
imul eax, dword [esp + 0x68]
cmp eax, 0x7ffffff8
jle 0x42a672
mov eax, dword fs:[0x2c]
mov ecx, dword [eax]
pop edi
pop esi
pop ebp
mov dword [ecx + 4], str.too_large
xor eax, eax
pop ebx
add esp, 0x3c
ret
add eax, 7
shr eax, 3
lea ebx, [eax + 1]
imul ebx, esi
mov dword [esp + 0x40], eax
cmp dword [esp + 0x58], ebx
jae 0x42a6a2
mov edx, dword fs:[0x2c]
mov eax, dword [edx]
pop edi
pop esi
pop ebp
mov dword [eax + 4], str.not_enough_pixels
xor eax, eax
pop ebx
add esp, 0x3c
ret
mov dword [esp + 0x2c], 0
test esi, esi
jbe 0x42ad5d
mov edx, dword [esp + 0x2c]
mov ebx, dword [esp + 0x44]
mov eax, dword [esp + 0x30]
mov ecx, edx
imul ecx, ebx
lea esi, [ecx + eax]
movzx ecx, byte [ebp]
inc ebp
cmp ecx, 4
mov dword [esp + 0x48], esi
mov dword [esp + 0x18], ecx
jg 0x42ada9
cmp dword [esp + 0x68], 8
jge 0x42a6fd
mov edi, dword [esp + 0x5c]
imul edi, dword [esp + 0x60]
mov eax, dword [esp + 0x40]
sub edi, eax
add esi, edi
mov edi, 1
mov dword [esp + 0x3c], eax
mov eax, esi
sub eax, ebx
mov dword [esp + 0x50], eax
test edx, edx
jne 0x42a714
movzx ecx, byte [ecx + 0x4cc334]
mov dword [esp + 0x18], ecx
test edi, edi
jle 0x42a783
mov edx, dword [esp + 0x50]
sub edx, ebp
mov eax, esi
sub eax, ebp
mov ebx, ebp
mov dword [esp + 0x14], edx
mov dword [esp + 0x20], eax
mov dword [esp + 0x28], edi
mov ecx, dword [esp + 0x18]
cmp ecx, 6
ja case.default.0x42a739
jmp dword [ecx*4 + 0x42b07c]
mov cl, byte [edx + ebx]
add cl, byte [ebx]
jmp 0x42a778
mov cl, byte [edx + ebx]
shr cl, 1
add cl, byte [ebx]
jmp 0x42a778
mov edx, dword [esp + 0x14]
movzx eax, byte [edx + ebx]
push 0
push eax
push 0
call fcn.0042a4b0
mov ecx, dword [esp + 0x2c]
mov edx, dword [esp + 0x20]
add esp, 0xc
add al, byte [ebx]
mov byte [ecx + ebx], al
mov eax, ecx
jmp case.default.0x42a739
mov cl, byte [ebx]
mov byte [eax + ebx], cl
inc ebx
sub dword [esp + 0x28], 1
jne 0x42a730
mov eax, dword [esp + 0x68]
cmp eax, 8
jne 0x42a7a6
mov ebx, dword [esp + 0x1c]
mov eax, dword [esp + 0x5c]
cmp ebx, eax
je 0x42a79c
mov byte [esi + ebx], 0xff
add ebp, ebx
add esi, eax
add dword [esp + 0x50], eax
jmp 0x42a7e5
cmp eax, 0x10
jne 0x42a7ce
mov ebx, dword [esp + 0x1c]
mov eax, dword [esp + 0x5c]
cmp ebx, eax
je 0x42a7c0
mov byte [esi + edi], 0xff
mov byte [esi + edi + 1], 0xff
mov edx, dword [esp + 0x10]
add ebp, edi
add esi, edx
add dword [esp + 0x50], edx
jmp 0x42a7e9
inc dword [esp + 0x50]
inc ebp
inc esi
cmp eax, 8
jl 0x42ab2f
mov ebx, dword [esp + 0x1c]
mov eax, dword [esp + 0x5c]
mov edx, dword [esp + 0x10]
cmp ebx, eax
je 0x42ab2f
mov eax, dword [esp + 0x18]
cmp eax, 6
ja case.default.0x42a7fe
jmp dword [eax*4 + 0x42b098]
mov eax, dword [esp + 0x60]
dec eax
cmp eax, 1
jb case.default.0x42a7fe
mov dword [esp + 0x28], eax
test edi, edi
jle 0x42a832
mov ecx, ebp
mov eax, esi
sub ecx, esi
mov dword [esp + 0x50], edi
mov bl, byte [ecx + eax]
mov byte [eax], bl
inc eax
sub dword [esp + 0x50], 1
jne 0x42a825
mov byte [esi + edi], 0xff
add ebp, edi
add esi, edx
sub dword [esp + 0x28], 1
jne 0x42a817
jmp case.default.0x42a7fe
mov eax, dword [esp + 0x60]
dec eax
cmp eax, 1
jb case.default.0x42a7fe
mov ecx, esi
sub ecx, edx
mov dword [esp + 0x50], ecx
mov dword [esp + 0x28], eax
xor eax, eax
test edi, edi
jle 0x42a884
mov edx, ebp
sub edx, esi
lea ebx, [ebx]
mov ebx, dword [esp + 0x50]
mov bl, byte [ebx + eax]
lea ecx, [eax + esi]
add bl, byte [edx + ecx]
inc eax
cmp eax, edi
mov byte [ecx], bl
jl 0x42a870
mov eax, dword [esp + 0x10]
add dword [esp + 0x50], eax
mov byte [esi + edi], 0xff
add ebp, edi
add esi, eax
sub dword [esp + 0x28], 1
jne 0x42a860
mov edx, eax
jmp case.default.0x42a7fe
mov eax, dword [esp + 0x60]
dec eax
cmp eax, 1
jb case.default.0x42a7fe
mov dword [esp + 0x20], eax
test edi, edi
jle 0x42a8dd
mov ecx, dword [esp + 0x50]
mov edx, esi
sub ecx, ebp
mov eax, ebp
sub edx, ebp
mov dword [esp + 0x28], edi
mov bl, byte [eax + ecx]
add bl, byte [eax]
inc eax
sub dword [esp + 0x28], 1
mov byte [eax + edx - 1], bl
jne 0x42a8c8
mov edx, dword [esp + 0x10]
add dword [esp + 0x50], edx
mov byte [esi + edi], 0xff
add ebp, edi
add esi, edx
sub dword [esp + 0x20], 1
jne 0x42a8b4
jmp case.default.0x42a7fe
mov eax, dword [esp + 0x60]
dec eax
cmp eax, 1
jb case.default.0x42a7fe
mov ecx, esi
sub ecx, edx
mov dword [esp + 0x18], ecx
mov dword [esp + 0x28], eax
nop
xor ecx, ecx
test edi, edi
jle 0x42a953
mov edx, dword [esp + 0x50]
sub edx, ebp
mov ebx, esi
sub ebx, ebp
mov eax, ebp
mov dword [esp + 0x14], edx
mov dword [esp + 0x20], ebx
jmp 0x42a934
mov edx, dword [esp + 0x14]
movzx edx, byte [eax + edx]
mov ebx, dword [esp + 0x18]
movzx ebx, byte [ebx + ecx]
add edx, ebx
mov ebx, dword [esp + 0x20]
sar edx, 1
add dl, byte [eax]
inc ecx
mov byte [eax + ebx], dl
inc eax
cmp ecx, edi
jl 0x42a930
mov eax, dword [esp + 0x10]
add dword [esp + 0x18], eax
add dword [esp + 0x50], eax
mov byte [esi + edi], 0xff
add ebp, edi
add esi, eax
sub dword [esp + 0x28], 1
jne 0x42a910
mov edx, eax
jmp case.default.0x42a7fe
mov ecx, dword [esp + 0x60]
dec ecx
cmp ecx, 1
jb case.default.0x42a7fe
mov eax, esi
sub eax, edx
mov dword [esp + 0x18], eax
mov dword [esp + 0x38], ecx
nop
test edi, edi
jle 0x42a9f0
mov eax, dword [esp + 0x50]
mov ebx, dword [esp + 0x18]
mov ecx, eax
sub ecx, esi
sub eax, ebp
mov dword [esp + 0x20], ebp
mov dword [esp + 0x28], ecx
mov dword [esp + 0x14], eax
mov dword [esp + 0x34], edi
mov eax, dword [esp + 0x28]
movzx ecx, byte [eax + ebx]
mov edx, dword [esp + 0x20]
mov eax, dword [esp + 0x14]
push ecx
movzx ecx, byte [edx + eax]
movzx edx, byte [ebx]
push ecx
push edx
call fcn.0042a4b0
mov edx, dword [esp + 0x1c]
mov ecx, eax
mov eax, dword [esp + 0x2c]
add cl, byte [eax]
inc eax
mov byte [ebx + edx], cl
add esp, 0xc
inc ebx
sub dword [esp + 0x34], 1
mov dword [esp + 0x20], eax
jne 0x42a9b2
mov eax, dword [esp + 0x10]
add dword [esp + 0x18], eax
add dword [esp + 0x50], eax
mov byte [esi + edi], 0xff
add ebp, edi
add esi, eax
sub dword [esp + 0x38], 1
jne 0x42a990
mov edx, eax
jmp case.default.0x42a7fe
mov eax, dword [esp + 0x60]
dec eax
cmp eax, 1
jb case.default.0x42a7fe
mov ecx, esi
sub ecx, edx
mov dword [esp + 0x50], ecx
mov dword [esp + 0x38], eax
lea esp, [esp]
xor eax, eax
test edi, edi
jle 0x42aa56
mov edx, ebp
sub edx, esi
lea ebx, [ebx]
mov ebx, dword [esp + 0x50]
mov bl, byte [ebx + eax]
lea ecx, [eax + esi]
shr bl, 1
add bl, byte [edx + ecx]
inc eax
cmp eax, edi
mov byte [ecx], bl
jl 0x42aa40
mov eax, dword [esp + 0x10]
add dword [esp + 0x50], eax
mov byte [esi + edi], 0xff
add ebp, edi
add esi, eax
sub dword [esp + 0x38], 1
jne 0x42aa30
mov edx, eax
jmp case.default.0x42a7fe
mov ecx, dword [esp + 0x60]
dec ecx
cmp ecx, 1
jb case.default.0x42a7fe
mov eax, esi
sub eax, edx
mov dword [esp + 0x50], eax
mov dword [esp + 0x38], ecx
lea ebx, [ebx]
xor ecx, ecx
test edi, edi
jle 0x42aae8
xor eax, eax
cdq
mov ebx, eax
xor ebx, edx
sub ebx, edx
mov eax, ebp
sub eax, esi
mov dword [esp + 0x34], ebx
mov dword [esp + 0x14], eax
jmp 0x42aab4
mov ebx, dword [esp + 0x34]
mov eax, dword [esp + 0x50]
movzx eax, byte [eax + ecx]
mov dword [esp + 0x28], eax
cdq
xor eax, edx
sub eax, edx
cmp ebx, eax
jg 0x42aacf
mov edx, dword [esp + 0x28]
jmp 0x42aad1
xor edx, edx
mov ebx, dword [esp + 0x14]
lea eax, [ecx + esi]
mov bl, byte [ebx + eax]
add bl, dl
inc ecx
cmp ecx, edi
mov byte [eax], bl
jl 0x42aab0
mov edx, dword [esp + 0x10]
add dword [esp + 0x50], edx
mov byte [esi + edi], 0xff
add ebp, edi
add esi, edx
sub dword [esp + 0x38], 1
jne 0x42aa90
cmp dword [esp + 0x68], 0x10
jne 0x42ad3a
mov ecx, dword [esp + 0x60]
test ecx, ecx
jbe 0x42ad3a
mov eax, dword [esp + 0x48]
lea eax, [eax + edi + 1]
lea ebx, [ebx]
mov byte [eax], 0xff
add eax, edx
sub ecx, 1
jne 0x42ab20
jmp 0x42ad3a
mov ebx, dword [esp + 0x3c]
dec ebx
imul ebx, edi
cmp dword [esp + 0x18], 6
ja case.default.0x42ab46
mov ecx, dword [esp + 0x18]
jmp dword [ecx*4 + 0x42b0b4]
push ebx
push ebp
push esi
call fcn.004877d0
add esp, 0xc
jmp case.default.0x42ab46
xor eax, eax
mov dword [esp + 0x50], eax
test ebx, ebx
jle case.default.0x42ab46
mov edx, esi
sub edx, edi
mov ecx, ebp
sub ecx, esi
mov dword [esp + 0x18], edx
mov dword [esp + 0x14], ecx
jmp 0x42ab84
mov edx, dword [esp + 0x18]
mov dl, byte [edx + eax]
lea ecx, [eax + esi]
mov eax, dword [esp + 0x14]
add dl, byte [eax + ecx]
mov eax, dword [esp + 0x50]
inc eax
cmp eax, ebx
mov byte [ecx], dl
mov dword [esp + 0x50], eax
jl 0x42ab80
jmp case.default.0x42ab46
test ebx, ebx
jle case.default.0x42ab46
mov ecx, dword [esp + 0x50]
sub ecx, ebp
mov eax, ebp
sub esi, ebp
mov dword [esp + 0x50], ebx
jmp 0x42abc0
mov dl, byte [ecx + eax]
add dl, byte [eax]
inc eax
sub dword [esp + 0x50], 1
mov byte [esi + eax - 1], dl
jne 0x42abc0
jmp case.default.0x42ab46
xor ecx, ecx
test ebx, ebx
jle case.default.0x42ab46
mov edx, esi
sub edx, edi
mov dword [esp + 0x18], edx
mov edx, dword [esp + 0x50]
sub edx, ebp
sub esi, ebp
mov eax, ebp
mov dword [esp + 0x14], edx
mov dword [esp + 0x20], esi
jmp 0x42ac04
mov edx, dword [esp + 0x14]
movzx edx, byte [edx + eax]
mov esi, dword [esp + 0x18]
movzx esi, byte [esi + ecx]
add edx, esi
mov esi, dword [esp + 0x20]
sar edx, 1
add dl, byte [eax]
inc ecx
mov byte [esi + eax], dl
inc eax
cmp ecx, ebx
jl 0x42ac00
jmp case.default.0x42ab46
test ebx, ebx
jle case.default.0x42ab46
mov eax, esi
sub eax, edi
mov dword [esp + 0x48], eax
mov eax, dword [esp + 0x50]
mov ecx, eax
sub ecx, esi
mov esi, dword [esp + 0x48]
sub eax, ebp
mov dword [esp + 0x20], ebp
mov dword [esp + 0x28], ecx
mov dword [esp + 0x14], eax
mov dword [esp + 0x50], ebx
jmp 0x42ac60
mov eax, dword [esp + 0x28]
movzx ecx, byte [esi + eax]
mov edx, dword [esp + 0x14]
mov eax, dword [esp + 0x20]
push ecx
movzx ecx, byte [edx + eax]
movzx edx, byte [esi]
push ecx
push edx
call fcn.0042a4b0
mov ecx, eax
mov eax, dword [esp + 0x2c]
add cl, byte [eax]
inc eax
mov byte [esi + edi], cl
add esp, 0xc
inc esi
sub dword [esp + 0x50], 1
mov dword [esp + 0x20], eax
jne 0x42ac60
jmp case.default.0x42ab46
xor eax, eax
mov dword [esp + 0x50], eax
test ebx, ebx
jle case.default.0x42ab46
mov edx, esi
sub edx, edi
mov ecx, ebp
sub ecx, esi
mov dword [esp + 0x18], edx
mov dword [esp + 0x14], ecx
jmp 0x42acc4
mov edx, dword [esp + 0x18]
mov dl, byte [edx + eax]
lea ecx, [eax + esi]
mov eax, dword [esp + 0x14]
shr dl, 1
add dl, byte [eax + ecx]
mov eax, dword [esp + 0x50]
inc eax
cmp eax, ebx
mov byte [ecx], dl
mov dword [esp + 0x50], eax
jl 0x42acc0
jmp case.default.0x42ab46
mov dword [esp + 0x50], 0
test ebx, ebx
jle case.default.0x42ab46
mov eax, esi
sub eax, edi
mov dword [esp + 0x18], eax
mov eax, ebp
sub eax, esi
mov dword [esp + 0x14], eax
mov ecx, dword [esp + 0x18]
mov edx, dword [esp + 0x50]
movzx eax, byte [ecx + edx]
push 0
push 0
push eax
call fcn.0042a4b0
mov edx, dword [esp + 0x5c]
mov ecx, eax
lea eax, [edx + esi]
mov edx, dword [esp + 0x20]
add cl, byte [edx + eax]
add esp, 0xc
mov byte [eax], cl
mov eax, dword [esp + 0x50]
inc eax
cmp eax, ebx
mov dword [esp + 0x50], eax
jl 0x42ad00
add ebp, ebx
mov eax, dword [esp + 0x2c]
inc eax
mov dword [esp + 0x2c], eax
cmp eax, dword [esp + 0x64]
jb 0x42a6b2
mov eax, dword [esp + 0x40]
mov ecx, dword [esp + 0x30]
mov esi, dword [esp + 0x64]
mov edx, dword [esp + 0x5c]
mov edi, dword [esp + 0x68]
cmp edi, 8
jge 0x42b034
test esi, esi
jbe 0x42b06e
mov edx, dword [esp + 0x5c]
imul edx, dword [esp + 0x60]
sub edx, eax
add edx, ecx
mov ebx, ecx
mov dword [esp + 0x50], edx
mov dword [esp + 0x40], esi
lea esp, [esp]
cmp dword [esp + 0x6c], 0
mov esi, dword [esp + 0x50]
mov eax, dword [esp + 0x68]
mov ecx, ebx
jne 0x42adc2
mov dl, byte [eax + 0x4b2f34]
jmp 0x42adc4
mov eax, dword fs:[0x2c]
mov ecx, dword [eax]
pop edi
pop esi
pop ebp
mov dword [ecx + 4], str.invalid_filter
xor eax, eax
pop ebx
add esp, 0x3c
ret
mov dl, 1
cmp eax, 4
jne 0x42ae0d
mov ebp, dword [esp + 0x24]
cmp ebp, 2
jl 0x42adfb
mov edi, ebp
shr edi, 1
mov eax, edi
neg eax
lea ebp, [ebp + eax*2]
mov edi, edi
movzx eax, byte [esi]
shr al, 4
imul dl
mov byte [ecx], al
movzx eax, byte [esi]
and al, 0xf
imul dl
inc ecx
mov byte [ecx], al
inc ecx
inc esi
sub edi, 1
jne 0x42ade0
test ebp, ebp
jle 0x42af9f
mov al, byte [esi]
shr al, 4
jmp 0x42af9b
cmp eax, 2
jne 0x42ae9a
mov ebp, dword [esp + 0x24]
cmp ebp, 4
jl 0x42ae66
mov edi, ebp
shr edi, 2
mov eax, edi
neg eax
lea ebp, [ebp + eax*4]
lea esp, [esp]
movzx eax, byte [esi]
shr al, 6
imul dl
mov byte [ecx], al
movzx eax, byte [esi]
shr al, 4
and al, 3
imul dl
mov byte [ecx + 1], al
movzx eax, byte [esi]
inc ecx
shr al, 2
and al, 3
imul dl
inc ecx
mov byte [ecx], al
movzx eax, byte [esi]
and al, 3
imul dl
inc ecx
mov byte [ecx], al
inc ecx
inc esi
sub edi, 1
jne 0x42ae30
test ebp, ebp
jle 0x42ae74
mov al, byte [esi]
shr al, 6
imul dl
mov byte [ecx], al
inc ecx
cmp ebp, 1
jle 0x42ae85
mov al, byte [esi]
shr al, 4
and al, 3
imul dl
mov byte [ecx], al
inc ecx
cmp ebp, 2
jle 0x42af9f
mov al, byte [esi]
shr al, 2
and al, 3
jmp 0x42af9b
cmp eax, 1
jne 0x42af9f
mov ebp, dword [esp + 0x24]
cmp ebp, 8
jl 0x42af2d
mov edi, ebp
shr edi, 3
mov eax, edi
neg eax
lea ebp, [ebp + eax*8]
lea ecx, [ecx]
movzx eax, byte [esi]
shr al, 7
imul dl
mov byte [ecx], al
movzx eax, byte [esi]
shr al, 6
and al, 1
imul dl
mov byte [ecx + 1], al
movzx eax, byte [esi]
shr al, 5
and al, 1
imul dl
inc ecx
mov byte [ecx + 1], al
movzx eax, byte [esi]
shr al, 4
inc ecx
and al, 1
imul dl
mov byte [ecx + 1], al
movzx eax, byte [esi]
inc ecx
shr al, 3
and al, 1
imul dl
mov byte [ecx + 1], al
movzx eax, byte [esi]
inc ecx
shr al, 2
and al, 1
imul dl
mov byte [ecx + 1], al
movzx eax, byte [esi]
inc ecx
shr al, 1
and al, 1
imul dl
inc ecx
mov byte [ecx], al
movzx eax, byte [esi]
and al, 1
imul dl
inc ecx
mov byte [ecx], al
inc ecx
inc esi
sub edi, 1
jne 0x42aec0
test ebp, ebp
jle 0x42af3b
mov al, byte [esi]
shr al, 7
imul dl
mov byte [ecx], al
inc ecx
cmp ebp, 1
jle 0x42af4c
mov al, byte [esi]
shr al, 6
and al, 1
imul dl
mov byte [ecx], al
inc ecx
cmp ebp, 2
jle 0x42af5d
mov al, byte [esi]
shr al, 5
and al, 1
imul dl
mov byte [ecx], al
inc ecx
cmp ebp, 3
jle 0x42af6e
mov al, byte [esi]
shr al, 4
and al, 1
imul dl
mov byte [ecx], al
inc ecx
cmp ebp, 4
jle 0x42af7f
mov al, byte [esi]
shr al, 3
and al, 1
imul dl
mov byte [ecx], al
inc ecx
cmp ebp, 5
jle 0x42af90
mov al, byte [esi]
shr al, 2
and al, 1
imul dl
mov byte [ecx], al
inc ecx
cmp ebp, 6
jle 0x42af9f
mov al, byte [esi]
shr al, 1
and al, 1
imul dl
mov byte [ecx], al
mov eax, dword [esp + 0x1c]
cmp eax, dword [esp + 0x5c]
je 0x42b012
cmp eax, 1
jne 0x42afd4
mov eax, dword [esp + 0x60]
add eax, 0xffffffff
js 0x42b012
jmp 0x42afc0
sub eax, 1
mov byte [ebx + eax*2 + 3], 0xff
mov cl, byte [ebx + eax + 1]
mov byte [ebx + eax*2 + 2], cl
jns 0x42afc0
jmp 0x42b012
mov esi, dword [esp + 0x60]
add esi, 0xffffffff
js 0x42b012
lea edx, [ebx + esi*2]
lea ecx, [esi + edx + 1]
lea eax, [ebx + esi*4 + 2]
jmp 0x42aff0
mov byte [eax + 1], 0xff
movzx edx, byte [ecx + 1]
mov byte [eax], dl
movzx edx, byte [ecx]
mov byte [eax - 1], dl
movzx edx, byte [ecx - 1]
mov byte [eax - 2], dl
dec esi
sub ecx, 3
sub eax, 4
test esi, esi
jge 0x42aff0
mov eax, dword [esp + 0x44]
add dword [esp + 0x50], eax
add ebx, eax
sub dword [esp + 0x40], 1
jne 0x42ad90
pop edi
pop esi
pop ebp
mov eax, 1
pop ebx
add esp, 0x3c
ret
cmp edi, 0x10
jne 0x42b06e
imul edx, dword [esp + 0x60]
imul edx, esi
mov eax, ecx
test edx, edx
jbe 0x42b06e
jmp 0x42b050
movzx si, byte [ecx]
movzx di, byte [eax + 1]
shl si, 8
or si, di
mov word [eax], si
add eax, 2
add ecx, 2
sub edx, 1
jne 0x42b050
pop edi
pop esi
pop ebp
mov eax, 1
pop ebx
add esp, 0x3c
ret