Function at 0x44f920
Capabilities:
Encrypt data using rc4 ksa

Disassembly:
push ebp
mov ebp, esp
sub esp, 0x58
push ebx
push esi
xor ecx, ecx
push edi
mov edi, dword [ebp + 0x20]
cmp edi, 0x10
sete cl
inc ecx
mov esi, ecx
imul esi, dword [ebp + 0x14]
mov eax, esi
mov dword [ebp - 0xc], esi
imul eax, dword [ebp + 0x18]
mov dword [ebp - 0x24], eax
mov eax, dword [ebp + 8]
mov eax, dword [eax]
mov eax, dword [eax + 8]
mov ebx, eax
imul ebx, ecx
mov ecx, dword [ebp + 0x18]
mov dword [ebp - 0x20], eax
mov dword [ebp - 0x3c], ecx
mov dword [ebp - 4], ebx
test ecx, ecx
js 0x44f9a8
mov eax, dword [ebp + 0x1c]
test eax, eax
js 0x44f9a8
je 0x44f97d
mov eax, SysReAllocString
cdq
idiv dword [ebp + 0x1c]
cmp ecx, eax
jg 0x44f9a8
mov eax, dword [ebp + 0x1c]
imul ecx, eax
test ecx, ecx
js 0x44f9a8
test esi, esi
js 0x44f9a8
je 0x44f996
mov eax, SysReAllocString
cdq
idiv esi
cmp ecx, eax
jg 0x44f9a8
mov eax, dword [ebp - 0x24]
imul eax, dword [ebp + 0x1c]
push eax
call fcn.00495137
add esp, 4
jmp 0x44f9aa
xor eax, eax
mov ecx, dword [ebp + 8]
mov dword [ecx + 0xc], eax
test eax, eax
jne 0x44f9d6
mov ecx, dword [0x4e85a0]
mov eax, dword fs:[0x2c]
pop edi
pop esi
pop ebx
mov eax, dword [eax + ecx*4]
mov dword [eax + 0xc], str.outofmem
xor eax, eax
mov esp, ebp
pop ebp
ret
mov esi, dword [ebp - 0x20]
test esi, esi
js 0x4507fb
mov ecx, dword [ebp + 0x18]
test ecx, ecx
js 0x4507fb
je 0x44f9fe
mov eax, SysReAllocString
cdq
idiv ecx
cmp esi, eax
jg 0x4507fb
imul esi, ecx
mov dword [ebp - 0x2c], esi
test esi, esi
js 0x4507fb
test edi, edi
js 0x4507fb
je 0x44fa26
mov eax, SysReAllocString
cdq
idiv edi
cmp esi, eax
jg 0x4507fb
mov eax, esi
imul eax, edi
cmp eax, 0x7ffffff8
jg 0x4507fb
add eax, 7
shr eax, 3
mov dword [ebp - 0x28], eax
inc eax
imul eax, dword [ebp + 0x1c]
cmp dword [ebp + 0x10], eax
jae 0x44fa6b
mov ecx, dword [0x4e85a0]
mov eax, dword fs:[0x2c]
pop edi
pop esi
pop ebx
mov eax, dword [eax + ecx*4]
mov dword [eax + 0xc], str.not_enough_pixels
xor eax, eax
mov esp, ebp
pop ebp
ret
mov eax, dword [ebp + 0x1c]
xor esi, esi
mov dword [ebp - 0x40], esi
test eax, eax
je 0x450412
mov edi, dword [ebp + 0xc]
nop
mov ecx, dword [ebp + 8]
mov eax, esi
imul eax, dword [ebp - 0x24]
movzx edx, byte [edi]
inc edi
mov dword [ebp - 0x1c], edx
mov ecx, dword [ecx + 0xc]
add ecx, eax
mov dword [ebp - 0x58], eax
mov dword [ebp - 8], ecx
cmp edx, 4
ja 0x450451
cmp dword [ebp + 0x20], 8
jge 0x44fac7
mov eax, dword [ebp + 0x14]
mov ebx, 1
imul eax, dword [ebp + 0x18]
mov dword [ebp - 4], ebx
sub eax, dword [ebp - 0x28]
add ecx, eax
mov eax, dword [ebp - 0x28]
mov dword [ebp - 8], ecx
mov dword [ebp - 0x3c], eax
mov eax, ecx
sub eax, dword [ebp - 0x24]
mov dword [ebp - 0x34], eax
test esi, esi
jne 0x44fadd
movzx edx, byte [edx + 0x4e5034]
mov dword [ebp - 0x1c], edx
test ebx, ebx
jle 0x44fbe4
mov edx, ecx
mov dword [ebp - 0x18], ebx
sub eax, edi
mov esi, edi
sub edx, edi
mov dword [ebp - 0x14], eax
mov dword [ebp - 0x38], edx
mov ecx, ebx
cmp dword [ebp - 0x1c], 6
ja case.default.0x44fb01
mov ebx, dword [ebp - 0x1c]
jmp dword [ebx*4 + 0x450820]
mov ebx, dword [ebp - 4]
inc esi
sub ecx, 1
mov dword [ebp - 0x18], ecx
jne 0x44faf8
jmp 0x44fbe1
mov ebx, dword [ebp - 4]
nop dword [eax]
mov al, byte [esi]
lea esi, [esi + 1]
mov byte [edx + esi - 1], al
sub ecx, 1
jne 0x44fb20
jmp 0x44fbe1
mov ebx, dword [ebp - 4]
mov al, byte [esi]
lea esi, [esi + 1]
mov byte [edx + esi - 1], al
sub ecx, 1
jne 0x44fb36
jmp 0x44fbe1
mov ebx, dword [ebp - 4]
nop dword [eax]
mov al, byte [eax + esi]
lea esi, [esi + 1]
add al, byte [esi - 1]
mov byte [edx + esi - 1], al
sub ecx, 1
je 0x44fbe1
mov eax, dword [ebp - 0x14]
jmp 0x44fb50
mov ebx, dword [ebp - 4]
nop word [eax + eax]
mov al, byte [eax + esi]
lea esi, [esi + 1]
shr al, 1
add al, byte [esi - 1]
mov byte [edx + esi - 1], al
sub ecx, 1
je 0x44fbe1
mov eax, dword [ebp - 0x14]
jmp 0x44fb70
mov ebx, dword [ebp - 4]
nop dword [eax]
movzx eax, byte [eax + esi]
push 0
push eax
push 0
call fcn.00455490
mov ecx, dword [ebp - 0x38]
lea esi, [esi + 1]
add al, byte [esi - 1]
add esp, 0xc
sub dword [ebp - 0x18], 1
mov byte [ecx + esi - 1], al
je 0x44fbe1
mov eax, dword [ebp - 0x14]
jmp 0x44fb90
mov ebx, dword [ebp - 4]
nop dword [eax]
mov al, byte [esi]
lea esi, [esi + 1]
mov byte [edx + esi - 1], al
sub ecx, 1
jne 0x44fbc0
jmp 0x44fbe1
mov ebx, dword [ebp - 4]
mov al, byte [esi]
lea esi, [esi + 1]
mov byte [edx + esi - 1], al
sub ecx, 1
jne 0x44fbd3
mov ecx, dword [ebp - 8]
mov eax, dword [ebp + 0x20]
cmp eax, 8
jne 0x44fc00
mov eax, dword [ebp + 0x14]
mov edx, dword [ebp - 0x20]
cmp edx, eax
je 0x44fbfa
mov byte [ecx + edx], 0xff
mov ecx, eax
mov esi, edx
jmp 0x44fc23
cmp eax, 0x10
jne 0x44fc1c
mov eax, dword [ebp - 0x20]
cmp eax, dword [ebp + 0x14]
je 0x44fc13
mov word [ecx + ebx], 0xffff
mov eax, dword [ebp - 0xc]
mov esi, ebx
mov ecx, eax
jmp 0x44fc26
mov ecx, 1
mov esi, ecx
mov eax, dword [ebp - 0xc]
mov edx, dword [ebp - 0x1c]
add edi, esi
mov esi, dword [ebp - 0x34]
add esi, ecx
mov dword [ebp + 0xc], edi
add ecx, dword [ebp - 8]
cmp dword [ebp + 0x20], 8
mov dword [ebp - 0x10], edi
mov dword [ebp - 0x14], esi
mov dword [ebp - 0x18], ecx
jl 0x45011f
mov ebx, dword [ebp - 0x20]
cmp ebx, dword [ebp + 0x14]
mov ebx, dword [ebp - 4]
je 0x45011f
cmp edx, 6
ja case.default.0x44fc61
jmp dword [edx*4 + 0x45083c]
mov edx, dword [ebp + 0x18]
mov esi, dword [ebp - 0x10]
dec edx
mov dword [ebp - 0x1c], edx
mov edi, esi
cmp edx, 1
jb case.default.0x44fc61
nop dword [eax]
test ebx, ebx
jle 0x44fca8
mov eax, edi
mov esi, ebx
sub eax, ecx
mov edx, ecx
mov dword [ebp - 0x38], eax
mov ebx, eax
mov al, byte [ebx + edx]
lea edx, [edx + 1]
mov byte [edx - 1], al
sub esi, 1
jne 0x44fc91
mov ebx, dword [ebp - 4]
mov eax, dword [ebp - 0xc]
mov edx, dword [ebp - 0x1c]
mov byte [ecx + ebx], 0xff
add edi, ebx
add ecx, eax
sub edx, 1
mov dword [ebp - 0x1c], edx
jne 0x44fc80
jmp case.default.0x44fc61
mov edx, dword [ebp + 0x18]
mov esi, dword [ebp - 0x10]
dec edx
mov dword [ebp - 0x18], edx
mov edi, esi
cmp edx, 1
jb case.default.0x44fc61
mov edx, ecx
mov dword [ebp + 0xc], edi
sub edx, eax
mov dword [ebp - 0x1c], edx
nop dword [eax]
xor esi, esi
test ebx, ebx
jle 0x44fd0c
sub edi, ecx
mov dword [ebp - 0x38], edi
nop dword [eax + eax]
mov eax, dword [ebp - 0x1c]
lea edx, [esi + ecx]
mov al, byte [eax + esi]
inc esi
add al, byte [edi + edx]
mov byte [edx], al
cmp esi, ebx
jl 0x44fcf0
mov edi, dword [ebp + 0xc]
mov eax, dword [ebp - 0xc]
mov edx, dword [ebp - 0x1c]
mov byte [ecx + ebx], 0xff
add edi, ebx
add edx, eax
mov dword [ebp + 0xc], edi
add ecx, eax
mov dword [ebp - 0x1c], edx
sub dword [ebp - 0x18], 1
jne 0x44fce0
jmp case.default.0x44fc61
mov edx, dword [ebp + 0x18]
dec edx
mov dword [ebp - 8], edx
cmp dword [ebp - 8], 1
mov edx, dword [ebp - 0x10]
mov edi, edx
jb case.default.0x44fc61
lea edx, [ecx + ebx]
mov dword [ebp + 0xc], edi
mov dword [ebp - 0x10], edx
mov edx, 0x10
sub edx, ebx
mov dword [ebp - 0x38], edx
xor edx, edx
mov dword [ebp - 0x1c], edx
test ebx, ebx
jle 0x44fe6e
cmp ebx, 0x40
jb 0x44fe37
lea eax, [edi - 1]
mov dword [ebp - 0x1c], edx
add eax, ebx
cmp ecx, eax
ja 0x44fd7f
lea eax, [ecx - 1]
add eax, ebx
cmp eax, edi
jae 0x44fe37
lea eax, [esi - 1]
add eax, ebx
cmp ecx, eax
ja 0x44fd95
lea eax, [ecx - 1]
add eax, ebx
cmp eax, esi
jae 0x44fe37
mov eax, ebx
and eax, 0x8000003f
jns 0x44fda3
dec eax
or eax, 0xffffffc0
inc eax
mov dword [ebp - 0x1c], ebx
mov ebx, edi
sub dword [ebp - 0x1c], eax
sub ebx, ecx
mov dword [ebp - 0x30], ebx
lea eax, [edi + 0x30]
mov dword [ebp - 0x34], eax
mov ebx, esi
mov eax, dword [ebp - 0x10]
sub ebx, ecx
add eax, dword [ebp - 0x38]
mov ecx, esi
sub ecx, edi
mov dword [ebp - 0x44], ebx
mov ebx, dword [ebp - 0x34]
mov edi, dword [ebp - 0x44]
mov dword [ebp - 0x48], ecx
mov ecx, dword [ebp - 0x30]
movups xmm0, xmmword [ebx - 0x30]
lea ebx, [ebx + 0x40]
movups xmm1, xmmword [edx + esi]
lea eax, [eax + 0x40]
paddb xmm1, xmm0
movups xmm0, xmmword [edi + eax - 0x40]
movups xmmword [eax - 0x50], xmm1
movups xmm1, xmmword [ecx + eax - 0x40]
mov ecx, dword [ebp - 0x48]
paddb xmm1, xmm0
movups xmm0, xmmword [ebx - 0x50]
movups xmmword [eax - 0x40], xmm1
movups xmm1, xmmword [esi + edx + 0x20]
add edx, 0x40
paddb xmm1, xmm0
movups xmm0, xmmword [ebx - 0x40]
movups xmmword [eax - 0x30], xmm1
movups xmm1, xmmword [ebx + ecx - 0x40]
mov ecx, dword [ebp - 0x30]
paddb xmm1, xmm0
movups xmmword [eax - 0x20], xmm1
cmp edx, dword [ebp - 0x1c]
jl 0x44fdd3
mov ecx, dword [ebp - 0x18]
mov ebx, dword [ebp - 4]
mov edi, dword [ebp + 0xc]
mov dword [ebp - 0x1c], edx
cmp edx, ebx
jge 0x44fe6b
mov dword [ebp - 0x48], esi
sub ecx, edi
add edx, edi
mov dword [ebp - 0x48], ebx
sub esi, edi
mov dword [ebp - 0x44], ecx
sub ebx, dword [ebp - 0x1c]
nop dword [eax]
mov al, byte [esi + edx]
lea edx, [edx + 1]
add al, byte [edx - 1]
mov byte [ecx + edx - 1], al
sub ebx, 1
jne 0x44fe50
mov ecx, dword [ebp - 0x18]
mov ebx, dword [ebp - 4]
mov esi, dword [ebp - 0x14]
mov eax, dword [ebp - 0xc]
mov edx, dword [ebp - 0x10]
add edi, ebx
add ecx, eax
mov dword [ebp + 0xc], edi
add esi, eax
mov dword [ebp - 0x18], ecx
mov dword [ebp - 0x14], esi
mov byte [edx], 0xff
add edx, eax
sub dword [ebp - 8], 1
mov dword [ebp - 0x10], edx
jne 0x44fd50
jmp case.default.0x44fc61
mov edx, dword [ebp + 0x18]
mov edi, dword [ebp - 0x10]
dec edx
mov dword [ebp - 0x30], edx
cmp edx, 1
jb case.default.0x44fc61
mov edx, ecx
mov dword [ebp + 0xc], edi
sub edx, eax
mov dword [ebp - 0x1c], edx
mov dword [ebp - 0x48], 0
test ebx, ebx
jle 0x44ff01
mov eax, dword [ebp - 0x14]
mov esi, edi
sub eax, edi
sub ecx, edi
mov dword [ebp - 0x38], ecx
mov edi, eax
mov ecx, dword [ebp - 0x48]
mov dword [ebp - 0x44], eax
movzx edx, byte [edx + ecx]
lea esi, [esi + 1]
movzx eax, byte [edi + esi - 1]
inc ecx
add edx, eax
mov eax, dword [ebp - 0x38]
shr edx, 1
add dl, byte [esi - 1]
mov byte [eax + esi - 1], dl
mov edx, dword [ebp - 0x1c]
cmp ecx, ebx
jl 0x44fed3
mov ecx, dword [ebp - 0x18]
mov edi, dword [ebp + 0xc]
mov esi, dword [ebp - 0x14]
mov eax, dword [ebp - 0xc]
mov byte [ecx + ebx], 0xff
add edi, ebx
add ecx, eax
mov dword [ebp + 0xc], edi
add edx, eax
mov dword [ebp - 0x18], ecx
add esi, eax
mov dword [ebp - 0x1c], edx
sub dword [ebp - 0x30], 1
mov dword [ebp - 0x14], esi
jne 0x44feb4
jmp case.default.0x44fc61
mov edx, dword [ebp + 0x18]
dec edx
mov dword [ebp - 8], edx
cmp dword [ebp - 8], 1
mov edx, dword [ebp - 0x10]
mov edi, edx
jb case.default.0x44fc61
mov edx, ecx
mov dword [ebp + 0xc], edi
sub edx, eax
mov dword [ebp - 0x1c], edx
test ebx, ebx
jle 0x44fff4
mov eax, esi
mov dword [ebp - 0x38], ebx
mov ebx, dword [ebp - 0xc]
sub eax, ecx
mov ecx, dword [ebp - 0x1c]
mov edx, edi
sub esi, edi
mov dword [ebp - 0x34], edx
mov dword [ebp - 0x50], eax
mov dword [ebp - 0x54], esi
nop word [eax + eax]
movzx edi, byte [esi + edx]
movzx eax, byte [ecx + eax]
movzx edx, byte [ecx]
mov dword [ebp - 0x30], eax
mov esi, edx
sub esi, eax
mov dword [ebp - 0x4c], edi
add edi, esi
mov dword [ebp - 0x10], edx
mov eax, edi
sub edi, dword [ebp - 0x30]
sub eax, edx
cdq
xor eax, edx
sub eax, edx
mov dword [ebp - 0x48], eax
mov eax, esi
cdq
xor eax, edx
sub eax, edx
mov dword [ebp - 0x44], eax
mov eax, edi
cdq
mov esi, eax
mov eax, dword [ebp - 0x48]
xor esi, edx
sub esi, edx
mov edx, dword [ebp - 0x44]
cmp eax, edx
jg 0x44ffba
cmp eax, esi
jle 0x44ffc6
mov eax, dword [ebp - 0x30]
cmp edx, esi
cmovle eax, dword [ebp - 0x4c]
mov dword [ebp - 0x10], eax
mov edx, dword [ebp - 0x34]
mov esi, dword [ebp - 0x54]
mov al, byte [edx]
inc edx
add al, byte [ebp - 0x10]
mov byte [ecx + ebx], al
inc ecx
sub dword [ebp - 0x38], 1
mov eax, dword [ebp - 0x50]
mov dword [ebp - 0x34], edx
jne 0x44ff70
mov ecx, dword [ebp - 0x18]
mov ebx, dword [ebp - 4]
mov edi, dword [ebp + 0xc]
mov esi, dword [ebp - 0x14]
mov eax, dword [ebp - 0xc]
mov edx, dword [ebp - 0x1c]
mov byte [ecx + ebx], 0xff
add edi, ebx
add ecx, eax
mov dword [ebp + 0xc], edi
add edx, eax
mov dword [ebp - 0x18], ecx
add esi, eax
mov dword [ebp - 0x1c], edx
sub dword [ebp - 8], 1
mov dword [ebp - 0x14], esi
jne 0x44ff44
jmp case.default.0x44fc61
mov edx, dword [ebp + 0x18]
mov esi, dword [ebp - 0x10]
dec edx
mov dword [ebp - 0x38], edx
mov edi, esi
cmp edx, 1
jb case.default.0x44fc61
mov edx, ecx
mov dword [ebp + 0xc], edi
sub edx, eax
mov dword [ebp - 0x1c], edx
nop word [eax + eax]
xor esi, esi
test ebx, ebx
jle 0x45006e
sub edi, ecx
mov dword [ebp - 0x54], edi
nop dword [eax + eax]
mov eax, dword [ebp - 0x1c]
lea edx, [esi + ecx]
mov al, byte [eax + esi]
inc esi
shr al, 1
add al, byte [edi + edx]
mov byte [edx], al
cmp esi, ebx
jl 0x450050
mov edi, dword [ebp + 0xc]
mov eax, dword [ebp - 0xc]
mov edx, dword [ebp - 0x1c]
mov byte [ecx + ebx], 0xff
add edi, ebx
add edx, eax
mov dword [ebp + 0xc], edi
add ecx, eax
mov dword [ebp - 0x1c], edx
sub dword [ebp - 0x38], 1
jne 0x450040
jmp case.default.0x44fc61
mov esi, dword [ebp + 0x18]
mov edx, dword [ebp - 0x10]
dec esi
mov dword [ebp - 0x38], esi
mov edi, edx
cmp esi, 1
jb case.default.0x44fc61
mov edx, ecx
mov dword [ebp + 0xc], edi
sub edx, eax
mov dword [ebp - 0x1c], edx
mov dword [ebp - 0x54], 0
test ebx, ebx
jle 0x4500d7
mov eax, edi
mov edi, dword [ebp - 0x54]
sub eax, ecx
mov dword [ebp - 0x50], eax
mov dl, byte [edx + edi]
lea esi, [edi + ecx]
mov al, byte [eax + esi]
inc edi
add al, dl
mov edx, dword [ebp - 0x1c]
mov byte [esi], al
mov eax, dword [ebp - 0x50]
cmp edi, ebx
jl 0x4500b6
mov edi, dword [ebp + 0xc]
mov eax, dword [ebp - 0xc]
mov esi, dword [ebp - 0x38]
mov byte [ecx + ebx], 0xff
add edi, ebx
add edx, eax
mov dword [ebp + 0xc], edi
add ecx, eax
mov dword [ebp - 0x1c], edx
sub esi, 1
mov dword [ebp - 0x38], esi
jne 0x4500a1
cmp dword [ebp + 0x20], 0x10
jne 0x4503fa
mov ecx, dword [ebp + 8]
mov edx, dword [ebp + 0x18]
mov ecx, dword [ecx + 0xc]
inc ecx
test edx, edx
je 0x4503fa
add ecx, dword [ebp - 0x58]
add ecx, ebx
mov byte [ecx], 0xff
add ecx, eax
sub edx, 1
jne 0x450110
jmp 0x4503fa
mov edx, dword [ebp - 0x3c]
mov eax, dword [ebp - 0x1c]
dec edx
imul edx, ebx
mov dword [ebp - 8], edx
cmp eax, 6
ja case.default.0x450135
jmp dword [eax*4 + 0x450858]
push edx
push edi
push ecx
call fcn.0048d840
add esp, 0xc
jmp 0x4503f5
xor esi, esi
test edx, edx
jle case.default.0x450135
mov eax, ecx
sub eax, ebx
mov dword [ebp - 0x58], eax
mov eax, edi
mov edi, dword [ebp - 0x58]
sub eax, ecx
mov dword [ebp - 0x54], eax
mov ebx, dword [ebp - 0x54]
lea edx, [ecx + esi]
mov al, byte [edi + esi]
inc esi
add al, byte [edx + ebx]
mov byte [edx], al
cmp esi, dword [ebp - 8]
jl 0x450167
jmp 0x4503ef
xor eax, eax
test edx, edx
jle case.default.0x450135
cmp edx, 0x40
jb 0x45026a
mov dword [ebp - 0x1c], eax
lea eax, [edi - 1]
add eax, edx
cmp ecx, eax
ja 0x4501ac
lea eax, [ecx - 1]
add eax, edx
cmp eax, edi
jae 0x450267
lea eax, [esi - 1]
add eax, edx
cmp ecx, eax
ja 0x4501c2
lea eax, [ecx - 1]
add eax, edx
cmp eax, esi
jae 0x450267
mov eax, edx
and eax, 0x8000003f
jns 0x4501d0
dec eax
or eax, 0xffffffc0
inc eax
mov ebx, edx
mov edx, esi
sub edx, edi
sub ebx, eax
mov dword [ebp - 0x38], edx
lea eax, [ecx + 0x10]
mov edx, ecx
mov dword [ebp - 0x58], eax
sub edx, edi
mov dword [ebp - 0x4c], ebx
mov ebx, dword [ebp - 0x58]
mov eax, edi
mov edi, dword [ebp - 0x38]
mov dword [ebp - 0x54], edx
mov edx, esi
sub edx, ecx
mov ecx, dword [ebp - 0x54]
mov dword [ebp - 0x50], edx
mov edx, dword [ebp - 0x1c]
movups xmm1, xmmword [edi + eax]
mov edi, dword [ebp - 0x50]
lea eax, [eax + 0x40]
movups xmm0, xmmword [eax - 0x40]
lea ebx, [ebx + 0x40]
paddb xmm1, xmm0
movups xmm0, xmmword [eax - 0x30]
movups xmmword [ecx + eax - 0x40], xmm1
movups xmm1, xmmword [edi + ebx - 0x40]
mov edi, dword [ebp - 0x38]
paddb xmm1, xmm0
movups xmm0, xmmword [eax - 0x20]
movups xmmword [ebx - 0x40], xmm1
movups xmm1, xmmword [esi + edx + 0x20]
paddb xmm1, xmm0
movups xmm0, xmmword [eax - 0x10]
movups xmmword [ebx - 0x30], xmm1
movups xmm1, xmmword [esi + edx + 0x30]
add edx, 0x40
paddb xmm1, xmm0
movups xmmword [ebx - 0x20], xmm1
cmp edx, dword [ebp - 0x4c]
jl 0x450200
mov ecx, dword [ebp - 0x18]
mov ebx, dword [ebp - 4]
mov edi, dword [ebp + 0xc]
mov dword [ebp - 0x1c], edx
mov edx, dword [ebp - 8]
mov eax, dword [ebp - 0x1c]
cmp eax, edx
jge case.default.0x450135
mov ebx, dword [ebp - 8]
lea edx, [edi + eax]
sub esi, edi
sub ecx, edi
sub ebx, eax
nop
mov al, byte [edx + esi]
lea edx, [edx + 1]
add al, byte [edx - 1]
mov byte [edx + ecx - 1], al
sub ebx, 1
jne 0x450280
jmp 0x4503f2
xor eax, eax
mov dword [ebp - 0x38], eax
test edx, edx
jle case.default.0x450135
mov edx, ecx
mov dword [ebp - 0x58], edi
sub edx, ebx
sub esi, edi
mov ebx, dword [ebp - 8]
sub ecx, edi
mov dword [ebp - 0x54], edx
nop word [eax + eax]
movzx edx, byte [edx + eax]
lea edi, [edi + 1]
movzx eax, byte [edi + esi - 1]
add edx, eax
mov eax, dword [ebp - 0x38]
shr edx, 1
inc eax
add dl, byte [edi - 1]
mov byte [edi + ecx - 1], dl
mov edx, dword [ebp - 0x54]
mov dword [ebp - 0x38], eax
cmp eax, ebx
jl 0x4502c0
jmp 0x4503ef
test edx, edx
jle case.default.0x450135
mov eax, ecx
mov dword [ebp - 0x1c], edi
sub eax, ebx
mov dword [ebp - 0x30], edx
mov dword [ebp - 0x58], eax
mov eax, esi
sub eax, ecx
mov ecx, dword [ebp - 0x1c]
sub esi, edi
mov dword [ebp - 0x4c], eax
mov edi, dword [ebp - 0x58]
mov dword [ebp - 0x14], esi
movzx eax, byte [eax + edi]
movzx esi, byte [esi + ecx]
movzx edx, byte [edi]
mov dword [ebp - 0x38], eax
mov ecx, edx
sub ecx, eax
mov dword [ebp - 0x50], esi
add esi, ecx
mov dword [ebp - 0x34], edx
mov eax, esi
sub esi, dword [ebp - 0x38]
sub eax, edx
cdq
xor eax, edx
sub eax, edx
mov dword [ebp - 0x58], eax
mov eax, ecx
cdq
xor eax, edx
sub eax, edx
mov dword [ebp - 0x54], eax
mov eax, esi
cdq
mov ecx, eax
mov eax, dword [ebp - 0x58]
xor ecx, edx
sub ecx, edx
mov edx, dword [ebp - 0x54]
cmp eax, edx
jg 0x45035b
cmp eax, ecx
jle 0x450367
mov eax, dword [ebp - 0x38]
cmp edx, ecx
cmovle eax, dword [ebp - 0x50]
mov dword [ebp - 0x34], eax
mov ecx, dword [ebp - 0x1c]
mov esi, dword [ebp - 0x14]
mov al, byte [ecx]
inc ecx
add al, byte [ebp - 0x34]
mov byte [edi + ebx], al
inc edi
sub dword [ebp - 0x30], 1
mov eax, dword [ebp - 0x4c]
mov dword [ebp - 0x1c], ecx
jne 0x450311
mov edi, dword [ebp + 0xc]
jmp 0x4503f5
xor esi, esi
test edx, edx
jle case.default.0x450135
mov eax, ecx
sub eax, ebx
mov dword [ebp - 0x58], eax
mov eax, edi
mov edi, dword [ebp - 0x58]
sub eax, ecx
mov dword [ebp - 0x54], eax
nop
mov al, byte [edi + esi]
lea edx, [ecx + esi]
mov ebx, dword [ebp - 0x54]
inc esi
shr al, 1
add al, byte [edx + ebx]
mov byte [edx], al
cmp esi, dword [ebp - 8]
jl 0x4503a0
jmp 0x4503ef
mov dword [ebp - 0x58], 0
test edx, edx
jle case.default.0x450135
mov eax, ecx
mov edx, edi
mov edi, dword [ebp - 0x58]
sub eax, ebx
mov ebx, dword [ebp - 8]
sub edx, ecx
mov dword [ebp - 0x50], eax
mov dword [ebp - 0x54], edx
mov dl, byte [eax + edi]
lea esi, [ecx + edi]
mov eax, dword [ebp - 0x54]
inc edi
mov al, byte [esi + eax]
add al, dl
mov byte [esi], al
mov eax, dword [ebp - 0x50]
cmp edi, ebx
jl 0x4503d7
mov edi, dword [ebp + 0xc]
mov ebx, dword [ebp - 4]
mov edx, dword [ebp - 8]
add edi, edx
mov esi, dword [ebp - 0x40]
mov eax, dword [ebp + 0x1c]
inc esi
mov dword [ebp - 0x40], esi
cmp esi, eax
jb 0x44fa80
mov edi, dword [ebp + 0x20]
mov ecx, dword [ebp + 0x18]
cmp edi, 8
jge 0x4507b8
test eax, eax
je 0x4507ef
mov ebx, dword [ebp + 0x14]
imul ebx, ecx
xor ecx, ecx
mov dword [ebp - 0xc], ecx
mov dword [ebp - 0x50], ebx
mov eax, dword [ebp + 8]
mov esi, ecx
sub esi, dword [ebp - 0x28]
add esi, ebx
mov eax, dword [eax + 0xc]
add esi, eax
cmp dword [ebp + 0x24], 0
lea edx, [ecx + eax]
jne 0x450473
mov bl, byte [edi + 0x4ba3b4]
jmp 0x450475
mov ecx, dword [0x4e85a0]
mov eax, dword fs:[0x2c]
pop edi
pop esi
pop ebx
mov eax, dword [eax + ecx*4]
mov dword [eax + 0xc], str.invalid_filter
xor eax, eax
mov esp, ebp
pop ebp
ret
mov bl, 1
cmp edi, 4
jne 0x4504d1
mov ecx, dword [ebp - 0x2c]
cmp ecx, 2
jl 0x4504bf
mov edi, ecx
shr edi, 1
mov eax, edi
neg eax
lea ecx, [ecx + eax*2]
mov dword [ebp - 0x58], ecx
movzx ecx, byte [esi]
shr cl, 4
movzx ecx, cl
movzx eax, bl
imul ecx, eax
movzx eax, bl
mov byte [edx], cl
movzx ecx, byte [esi]
inc esi
and cl, 0xf
movzx ecx, cl
imul ecx, eax
mov byte [edx + 1], cl
add edx, 2
sub edi, 1
jne 0x450490
mov ecx, dword [ebp - 0x58]
test ecx, ecx
jle 0x450719
mov cl, byte [esi]
shr cl, 4
jmp 0x45070e
cmp edi, 2
jne 0x450597
mov ecx, dword [ebp - 0x2c]
mov dword [ebp - 0x1c], ecx
cmp ecx, 4
jl 0x45054d
mov edi, ecx
shr edi, 2
mov eax, edi
neg eax
lea ecx, [ecx + eax*4]
mov dword [ebp - 0x1c], ecx
movzx ecx, byte [esi]
shr cl, 6
movzx ecx, cl
movzx eax, bl
imul ecx, eax
movzx eax, bl
mov byte [edx], cl
movzx ecx, byte [esi]
shr cl, 4
and cl, 3
movzx ecx, cl
imul ecx, eax
movzx eax, bl
mov byte [edx + 1], cl
movzx ecx, byte [esi]
shr cl, 2
and cl, 3
movzx ecx, cl
imul ecx, eax
movzx eax, bl
mov byte [edx + 2], cl
movzx ecx, byte [esi]
inc esi
and cl, 3
movzx ecx, cl
imul ecx, eax
mov byte [edx + 3], cl
add edx, 4
sub edi, 1
jne 0x4504f4
mov ecx, dword [ebp - 0x1c]
test ecx, ecx
jle 0x450565
mov cl, byte [esi]
shr cl, 6
movzx ecx, cl
movzx eax, bl
imul ecx, eax
mov byte [edx], cl
inc edx
mov ecx, dword [ebp - 0x1c]
cmp ecx, 1
jle 0x450581
mov cl, byte [esi]
shr cl, 4
and cl, 3
movzx eax, bl
movzx ecx, cl
imul ecx, eax
mov byte [edx], cl
inc edx
mov ecx, dword [ebp - 0x1c]
cmp ecx, 2
jle 0x450719
mov cl, byte [esi]
shr cl, 2
and cl, 3
jmp 0x45070e
cmp edi, 1
jne 0x45071c
mov edi, dword [ebp - 0x2c]
cmp edi, 8
jl 0x450670
mov eax, edi
shr eax, 3
mov dword [ebp - 0x58], eax
neg eax
lea edi, [edi + eax*8]
mov dword [ebp - 0x54], edi
mov edi, dword [ebp - 0x58]
nop
movzx ecx, byte [esi]
shr cl, 7
movzx ecx, cl
movzx eax, bl
imul ecx, eax
movzx eax, bl
mov byte [edx], cl
movzx ecx, byte [esi]
shr cl, 6
and cl, 1
movzx ecx, cl
imul ecx, eax
movzx eax, bl
mov byte [edx + 1], cl
movzx ecx, byte [esi]
shr cl, 5
and cl, 1
movzx ecx, cl
imul ecx, eax
movzx eax, bl
mov byte [edx + 2], cl
movzx ecx, byte [esi]
shr cl, 4
and cl, 1
movzx ecx, cl
imul ecx, eax
movzx eax, bl
mov byte [edx + 3], cl
movzx ecx, byte [esi]
shr cl, 3
and cl, 1
movzx ecx, cl
imul ecx, eax
movzx eax, bl
mov byte [edx + 4], cl
movzx ecx, byte [esi]
shr cl, 2
and cl, 1
movzx ecx, cl
imul ecx, eax
movzx eax, bl
mov byte [edx + 5], cl
movzx ecx, byte [esi]
shr cl, 1
and cl, 1
movzx ecx, cl
imul ecx, eax
movzx eax, bl
mov byte [edx + 6], cl
movzx ecx, byte [esi]
inc esi
and cl, 1
movzx ecx, cl
imul ecx, eax
mov byte [edx + 7], cl
add edx, 8
sub edi, 1
jne 0x4505c0
mov edi, dword [ebp - 0x54]
test edi, edi
jle 0x450685
mov cl, byte [esi]
shr cl, 7
movzx eax, bl
movzx ecx, cl
imul ecx, eax
mov byte [edx], cl
inc edx
cmp edi, 1
jle 0x45069e
mov cl, byte [esi]
shr cl, 6
and cl, 1
movzx eax, bl
movzx ecx, cl
imul ecx, eax
mov byte [edx], cl
inc edx
cmp edi, 2
jle 0x4506b7
mov cl, byte [esi]
shr cl, 5
and cl, 1
movzx eax, bl
movzx ecx, cl
imul ecx, eax
mov byte [edx], cl
inc edx
cmp edi, 3
jle 0x4506d0
mov cl, byte [esi]
shr cl, 4
and cl, 1
movzx eax, bl
movzx ecx, cl
imul ecx, eax
mov byte [edx], cl
inc edx
cmp edi, 4
jle 0x4506e9
mov cl, byte [esi]
shr cl, 3
and cl, 1
movzx eax, bl
movzx ecx, cl
imul ecx, eax
mov byte [edx], cl
inc edx
cmp edi, 5
jle 0x450702
mov cl, byte [esi]
shr cl, 2
and cl, 1
movzx eax, bl
movzx ecx, cl
imul ecx, eax
mov byte [edx], cl
inc edx
cmp edi, 6
jle 0x450719
mov cl, byte [esi]
shr cl, 1
and cl, 1
movzx eax, bl
movzx ecx, cl
imul ecx, eax
mov byte [edx], cl
mov ecx, dword [ebp - 0xc]
mov ebx, dword [ebp - 0x20]
cmp ebx, dword [ebp + 0x14]
je 0x450796
mov eax, dword [ebp + 8]
mov edx, dword [eax + 0xc]
add edx, ecx
mov ecx, dword [ebp + 0x18]
dec ecx
cmp ebx, 1
jne 0x450752
test ecx, ecx
js 0x450793
nop dword [eax]
mov byte [edx + ecx*2 + 1], 0xff
mov al, byte [ecx + edx]
mov byte [edx + ecx*2], al
sub ecx, 1
jns 0x450740
jmp 0x450793
test ecx, ecx
js 0x450793
lea esi, [ecx*2 + 1]
add esi, edx
lea edx, [edx + ecx*4]
add esi, ecx
add edx, 2
nop word [eax + eax]
sub ecx, 1
mov byte [edx + 1], 0xff
movzx eax, byte [esi + 1]
lea esi, [esi - 3]
mov byte [edx], al
lea edx, [edx - 4]
movzx eax, byte [esi + 3]
mov byte [edx + 3], al
movzx eax, byte [esi + 2]
mov byte [edx + 2], al
jns 0x450770
mov ecx, dword [ebp - 0xc]
add ecx, dword [ebp - 0x24]
sub dword [ebp + 0x1c], 1
mov ebx, dword [ebp - 0x50]
mov edi, dword [ebp + 0x20]
mov dword [ebp - 0xc], ecx
jne 0x450431
pop edi
pop esi
mov eax, 1
pop ebx
mov esp, ebp
pop ebp
ret
cmp edi, 0x10
jne 0x4507ef
mov ebx, dword [ebp + 0x14]
mov esi, dword [ebp + 8]
imul ebx, ecx
mov esi, dword [esi + 0xc]
mov edx, esi
imul ebx, eax
test ebx, ebx
je 0x4507ef
movzx ecx, byte [esi]
lea edx, [edx + 2]
movzx eax, byte [edx - 1]
lea esi, [esi + 2]
shl cx, 8
or cx, ax
mov word [edx - 2], cx
sub ebx, 1
jne 0x4507d2
pop edi
pop esi
mov eax, 1
pop ebx
mov esp, ebp
pop ebp
ret
mov ecx, dword [0x4e85a0]
mov eax, dword fs:[0x2c]
pop edi
pop esi
pop ebx
mov eax, dword [eax + ecx*4]
mov dword [eax + 0xc], str.too_large
xor eax, eax
mov esp, ebp
pop ebp
ret