Function at 0x1007e940
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 - 8], 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 - 0x38], ecx
mov dword [ebp - 4], ebx
test ecx, ecx
js 0x1007f8ae
mov eax, dword [ebp + 0x1c]
test eax, eax
js 0x1007f8ae
je 0x1007e9aa
xor edx, edx
mov eax, SysReAllocString
div dword [ebp + 0x1c]
cmp ecx, eax
jg 0x1007f8ae
mov eax, dword [ebp + 0x1c]
imul ecx, eax
test ecx, ecx
js 0x1007f8ae
test esi, esi
js 0x1007f8ae
je 0x1007e9cf
mov eax, SysReAllocString
cdq
idiv esi
cmp ecx, eax
jg 0x1007f8ae
mov eax, dword [ebp - 0x24]
imul eax, dword [ebp + 0x1c]
push eax
call fcn.100bbf26
mov ecx, dword [ebp + 8]
add esp, 4
mov dword [ecx + 0xc], eax
test eax, eax
je 0x1007f8b8
mov ecx, dword [ebp - 0x20]
test ecx, ecx
js 0x1007f88c
mov esi, dword [ebp + 0x18]
test esi, esi
je 0x1007ea10
xor edx, edx
mov eax, SysReAllocString
div esi
cmp ecx, eax
jg 0x1007f88c
imul ecx, esi
mov dword [ebp - 0x18], ecx
test ecx, ecx
js 0x1007f88c
test edi, edi
js 0x1007f88c
je 0x1007ea39
xor edx, edx
mov eax, SysReAllocString
div edi
cmp ecx, eax
jg 0x1007f88c
mov eax, ecx
imul eax, edi
cmp eax, 0x7ffffff8
jg 0x1007f88c
mov eax, ecx
imul eax, edi
add eax, 7
shr eax, 3
mov dword [ebp - 0x40], eax
inc eax
imul eax, dword [ebp + 0x1c]
cmp dword [ebp + 0x10], eax
jae 0x1007ea83
mov ecx, dword [0x103e91b0]
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 edx, edx
mov dword [ebp - 0x3c], edx
test eax, eax
je 0x1007f465
mov edi, dword [ebp + 0xc]
mov esi, dword [ebp + 0x20]
mov dword [ebp - 0x18], ecx
nop dword [eax]
mov ecx, dword [ebp + 8]
mov eax, edx
imul eax, dword [ebp - 0x24]
mov ecx, dword [ecx + 0xc]
add ecx, eax
mov dword [ebp - 0x58], eax
movzx eax, byte [edi]
inc edi
mov dword [ebp - 0x14], ecx
mov dword [ebp - 0x1c], eax
cmp eax, 4
ja 0x1007f4c6
cmp esi, 8
jge 0x1007eaf2
mov ebx, dword [ebp + 0x18]
mov esi, dword [ebp - 0x40]
cmp esi, ebx
ja 0x1007f4a4
mov eax, dword [ebp + 0x14]
imul eax, ebx
mov ebx, 1
mov dword [ebp - 4], ebx
mov dword [ebp - 0x38], esi
sub eax, esi
add ecx, eax
mov eax, dword [ebp - 0x1c]
mov dword [ebp - 0x14], ecx
mov esi, ecx
sub esi, dword [ebp - 0x24]
mov dword [ebp - 0x10], esi
test edx, edx
jne 0x1007eb08
movzx eax, byte [eax + 0x103dd888]
mov dword [ebp - 0x1c], eax
test ebx, ebx
jle 0x1007ec04
mov eax, esi
mov edx, edi
sub eax, edi
mov esi, ebx
sub ecx, edi
mov dword [ebp - 0xc], eax
mov dword [ebp - 0x34], ecx
cmp dword [ebp - 0x1c], 6
ja case.default.0x1007eb29
mov ebx, dword [ebp - 0x1c]
jmp dword [ebx*4 + 0x1007f8dc]
mov ebx, dword [ebp - 4]
inc edx
sub esi, 1
jne 0x1007eb20
jmp 0x1007ebfe
mov ebx, dword [ebp - 4]
mov al, byte [edx]
lea edx, [edx + 1]
mov byte [ecx + edx - 1], al
sub esi, 1
jne 0x1007eb41
jmp 0x1007ebfe
mov ebx, dword [ebp - 4]
mov al, byte [edx]
lea edx, [edx + 1]
mov byte [ecx + edx - 1], al
sub esi, 1
jne 0x1007eb57
jmp 0x1007ebfe
mov ebx, dword [ebp - 4]
nop dword [eax]
mov al, byte [eax + edx]
lea edx, [edx + 1]
add al, byte [edx - 1]
mov byte [ecx + edx - 1], al
sub esi, 1
je 0x1007ebfe
mov eax, dword [ebp - 0xc]
jmp 0x1007eb70
mov ebx, dword [ebp - 4]
nop word [eax + eax]
mov al, byte [eax + edx]
lea edx, [edx + 1]
shr al, 1
add al, byte [edx - 1]
mov byte [ecx + edx - 1], al
sub esi, 1
je 0x1007ebfe
mov eax, dword [ebp - 0xc]
jmp 0x1007eb90
mov ebx, dword [ebp - 4]
nop dword [eax]
mov cl, byte [eax + edx]
lea edx, [edx + 1]
xor al, al
cmp al, cl
sbb al, al
and al, cl
mov ecx, dword [ebp - 0x34]
add al, byte [edx - 1]
mov byte [ecx + edx - 1], al
sub esi, 1
je 0x1007ebfe
mov eax, dword [ebp - 0xc]
jmp 0x1007ebb0
mov ebx, dword [ebp - 4]
mov al, byte [edx]
lea edx, [edx + 1]
mov byte [ecx + edx - 1], al
sub esi, 1
jne 0x1007ebd5
jmp 0x1007ebfe
mov ebx, dword [ebp - 4]
nop dword [eax + eax]
mov al, byte [edx]
lea edx, [edx + 1]
mov byte [ecx + edx - 1], al
sub esi, 1
jne 0x1007ebf0
mov esi, dword [ebp - 0x10]
mov ecx, dword [ebp - 0x14]
mov eax, dword [ebp + 0x20]
cmp eax, 8
jne 0x1007ec30
mov eax, dword [ebp + 0x14]
mov edx, dword [ebp - 0x20]
cmp edx, eax
je 0x1007ec1a
mov byte [ecx + edx], 0xff
add edi, edx
add esi, eax
mov edx, edi
mov dword [ebp + 0xc], edi
add ecx, eax
mov dword [ebp - 0xc], edx
mov dword [ebp - 0x10], esi
mov dword [ebp - 0x14], ecx
jmp 0x1007ec75
cmp eax, 0x10
jne 0x1007ec5b
mov eax, dword [ebp - 0x20]
cmp eax, dword [ebp + 0x14]
je 0x1007ec43
mov word [ecx + ebx], 0xffff
add esi, dword [ebp - 8]
add edi, ebx
add ecx, dword [ebp - 8]
mov edx, edi
mov dword [ebp + 0xc], edi
mov dword [ebp - 0xc], edx
mov dword [ebp - 0x10], esi
mov dword [ebp - 0x14], ecx
jmp 0x1007ec75
inc edi
inc esi
inc ecx
mov dword [ebp + 0xc], edi
mov dword [ebp - 0x10], esi
mov edx, edi
mov dword [ebp - 0xc], edx
mov dword [ebp - 0x14], ecx
cmp eax, 8
jl 0x1007f162
mov ebx, dword [ebp - 0x20]
cmp ebx, dword [ebp + 0x14]
mov ebx, dword [ebp - 4]
je 0x1007f162
cmp dword [ebp - 0x1c], 6
ja case.default.0x1007ec93
mov eax, dword [ebp - 0x1c]
mov edi, edx
jmp dword [eax*4 + 0x1007f8f8]
mov edx, dword [ebp + 0x18]
mov esi, dword [ebp - 0xc]
dec edx
mov eax, dword [ebp - 8]
mov edi, esi
mov dword [ebp - 0x28], edx
cmp edx, 1
jb case.default.0x1007ec93
test ebx, ebx
jle 0x1007ecda
mov eax, edi
mov esi, ebx
sub eax, ecx
mov edx, ecx
mov dword [ebp - 0x34], eax
mov ebx, eax
mov al, byte [ebx + edx]
lea edx, [edx + 1]
mov byte [edx - 1], al
sub esi, 1
jne 0x1007ecc3
mov ebx, dword [ebp - 4]
mov eax, dword [ebp - 8]
mov edx, dword [ebp - 0x28]
mov byte [ecx + ebx], 0xff
add edi, ebx
add ecx, eax
sub edx, 1
mov dword [ebp - 0x28], edx
jne 0x1007ecb2
jmp case.default.0x1007ec93
mov esi, dword [ebp + 0x18]
mov edi, edx
mov eax, dword [ebp - 8]
dec esi
mov dword [ebp - 0x28], esi
cmp esi, 1
jb case.default.0x1007ec93
mov edx, ecx
mov dword [ebp + 0xc], edi
sub edx, eax
mov dword [ebp - 0x1c], edx
nop
xor esi, esi
test ebx, ebx
jle 0x1007ed3c
sub edi, ecx
mov dword [ebp - 0x34], 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 0x1007ed20
mov edi, dword [ebp + 0xc]
mov eax, dword [ebp - 8]
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 - 0x28], 1
jne 0x1007ed10
jmp case.default.0x1007ec93
mov edi, dword [ebp + 0x18]
mov eax, dword [ebp - 8]
dec edi
mov dword [ebp - 0x28], edi
mov edi, edx
cmp dword [ebp - 0x28], 1
jb case.default.0x1007ec93
lea edx, [ecx + ebx]
mov dword [ebp + 0xc], edi
mov dword [ebp - 0xc], edx
mov edx, 0x20
sub edx, ebx
mov dword [ebp - 0x34], edx
xor edx, edx
mov dword [ebp - 0x1c], edx
test ebx, ebx
jle 0x1007ee9e
cmp ebx, 0x40
jb 0x1007ee6e
lea eax, [edi - 1]
mov dword [ebp - 0x1c], edx
add eax, ebx
cmp ecx, eax
ja 0x1007edaf
lea eax, [ecx - 1]
add eax, ebx
cmp eax, edi
jae 0x1007ee6e
lea eax, [esi - 1]
add eax, ebx
cmp ecx, eax
ja 0x1007edc5
lea eax, [ecx - 1]
add eax, ebx
cmp eax, esi
jae 0x1007ee6e
mov eax, ebx
and eax, 0x8000003f
jns 0x1007edd3
dec eax
or eax, 0xffffffc0
inc eax
mov dword [ebp - 0x1c], ebx
mov ebx, esi
sub dword [ebp - 0x1c], eax
sub ebx, edi
mov eax, dword [ebp - 0xc]
add eax, dword [ebp - 0x34]
mov dword [ebp - 0x2c], ebx
mov ebx, ecx
sub ebx, edi
mov dword [ebp - 0x30], eax
mov dword [ebp - 0x44], ebx
lea eax, [edi + 0x10]
mov edi, dword [ebp - 0x44]
mov ebx, esi
sub ebx, ecx
mov ecx, dword [ebp - 0x2c]
mov dword [ebp - 0x48], ebx
mov ebx, dword [ebp - 0x30]
movups xmm0, xmmword [eax - 0x10]
lea eax, [eax + 0x40]
movups xmm1, xmmword [edx + esi]
lea ebx, [ebx + 0x40]
paddb xmm1, xmm0
movups xmm0, xmmword [eax - 0x40]
movups xmmword [ebx - 0x60], xmm1
movups xmm1, xmmword [ecx + eax - 0x40]
mov ecx, dword [ebp - 0x48]
paddb xmm1, xmm0
movups xmm0, xmmword [eax - 0x30]
movups xmmword [edi + eax - 0x40], xmm1
movups xmm1, xmmword [ecx + ebx - 0x40]
mov ecx, dword [ebp - 0x2c]
paddb xmm1, xmm0
movups xmm0, xmmword [eax - 0x20]
movups xmmword [ebx - 0x40], xmm1
movups xmm1, xmmword [esi + edx + 0x30]
add edx, 0x40
paddb xmm1, xmm0
movups xmmword [ebx - 0x30], xmm1
cmp edx, dword [ebp - 0x1c]
jl 0x1007ee03
mov ebx, dword [ebp - 4]
mov ecx, dword [ebp - 0x14]
mov edi, dword [ebp + 0xc]
mov dword [ebp - 0x48], edx
mov dword [ebp - 0x1c], edx
cmp edx, ebx
jge 0x1007ee9b
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]
mov al, byte [esi + edx]
lea edx, [edx + 1]
add al, byte [edx - 1]
mov byte [ecx + edx - 1], al
sub ebx, 1
jne 0x1007ee80
mov ecx, dword [ebp - 0x14]
mov ebx, dword [ebp - 4]
mov esi, dword [ebp - 0x10]
mov eax, dword [ebp - 8]
mov edx, dword [ebp - 0xc]
add edi, ebx
add ecx, eax
mov dword [ebp + 0xc], edi
add esi, eax
mov dword [ebp - 0x14], ecx
mov dword [ebp - 0x10], esi
mov byte [edx], 0xff
add edx, eax
sub dword [ebp - 0x28], 1
mov dword [ebp - 0xc], edx
jne 0x1007ed80
jmp case.default.0x1007ec93
mov edi, dword [ebp + 0x18]
mov eax, dword [ebp - 8]
dec edi
mov dword [ebp - 0x1c], edi
mov edi, edx
cmp dword [ebp - 0x1c], 1
jb case.default.0x1007ec93
mov edx, ecx
mov dword [ebp + 0xc], edi
sub edx, eax
mov dword [ebp - 0x28], edx
nop word [eax + eax]
mov dword [ebp - 0x48], 0
test ebx, ebx
jle 0x1007ef41
mov eax, dword [ebp - 0x10]
mov esi, edi
sub eax, edi
sub ecx, edi
mov dword [ebp - 0x34], ecx
mov edi, eax
mov ecx, dword [ebp - 0x48]
mov dword [ebp - 0x44], eax
nop
mov eax, dword [ebp - 0x28]
lea esi, [esi + 1]
movzx edx, byte [edi + esi - 1]
movzx eax, byte [eax + ecx]
inc ecx
add edx, eax
mov eax, dword [ebp - 0x34]
shr edx, 1
add dl, byte [esi - 1]
mov byte [eax + esi - 1], dl
cmp ecx, ebx
jl 0x1007ef10
mov ecx, dword [ebp - 0x14]
mov edi, dword [ebp + 0xc]
mov esi, dword [ebp - 0x10]
mov eax, dword [ebp - 8]
mov edx, dword [ebp - 0x28]
mov byte [ecx + ebx], 0xff
add edi, ebx
add ecx, eax
mov dword [ebp + 0xc], edi
add edx, eax
mov dword [ebp - 0x14], ecx
add esi, eax
mov dword [ebp - 0x28], edx
sub dword [ebp - 0x1c], 1
mov dword [ebp - 0x10], esi
jne 0x1007eef0
jmp case.default.0x1007ec93
mov edi, dword [ebp + 0x18]
mov eax, dword [ebp - 8]
dec edi
mov dword [ebp - 0x1c], edi
mov edi, edx
cmp dword [ebp - 0x1c], 1
jb case.default.0x1007ec93
mov edx, ecx
mov dword [ebp + 0xc], edi
sub edx, eax
mov dword [ebp - 0x28], edx
test ebx, ebx
jle 0x1007f034
mov eax, esi
mov dword [ebp - 0x34], ebx
mov ebx, dword [ebp - 0x28]
sub eax, ecx
mov ecx, dword [ebp - 8]
mov edx, edi
sub esi, edi
mov dword [ebp - 0x30], edx
mov dword [ebp - 0x50], eax
mov dword [ebp - 0x54], esi
nop word [eax + eax]
movzx edi, byte [esi + edx]
movzx eax, byte [ebx + eax]
movzx edx, byte [ebx]
mov dword [ebp - 0x2c], eax
mov esi, edx
sub esi, eax
mov dword [ebp - 0x4c], edi
add edi, esi
mov dword [ebp - 0xc], edx
mov eax, edi
sub edi, dword [ebp - 0x2c]
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 0x1007effa
cmp eax, esi
jle 0x1007f006
mov eax, dword [ebp - 0x2c]
cmp edx, esi
cmovle eax, dword [ebp - 0x4c]
mov dword [ebp - 0xc], eax
mov edx, dword [ebp - 0x30]
mov esi, dword [ebp - 0x54]
mov al, byte [edx]
inc edx
add al, byte [ebp - 0xc]
mov byte [ebx + ecx], al
inc ebx
sub dword [ebp - 0x34], 1
mov eax, dword [ebp - 0x50]
mov dword [ebp - 0x30], edx
jne 0x1007efb0
mov ecx, dword [ebp - 0x14]
mov ebx, dword [ebp - 4]
mov edi, dword [ebp + 0xc]
mov esi, dword [ebp - 0x10]
mov eax, dword [ebp - 8]
mov edx, dword [ebp - 0x28]
mov byte [ecx + ebx], 0xff
add edi, ebx
add ecx, eax
mov dword [ebp + 0xc], edi
add edx, eax
mov dword [ebp - 0x14], ecx
add esi, eax
mov dword [ebp - 0x28], edx
sub dword [ebp - 0x1c], 1
mov dword [ebp - 0x10], esi
jne 0x1007ef84
jmp case.default.0x1007ec93
mov esi, dword [ebp + 0x18]
mov edi, edx
mov eax, dword [ebp - 8]
dec esi
mov dword [ebp - 0x34], esi
cmp esi, 1
jb case.default.0x1007ec93
mov edx, ecx
mov dword [ebp + 0xc], edi
sub edx, eax
mov dword [ebp - 0x28], edx
nop word [eax + eax]
xor esi, esi
test ebx, ebx
jle 0x1007f0ae
sub edi, ecx
mov dword [ebp - 0x54], edi
nop dword [eax + eax]
mov eax, dword [ebp - 0x28]
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 0x1007f090
mov edi, dword [ebp + 0xc]
mov eax, dword [ebp - 8]
mov edx, dword [ebp - 0x28]
mov byte [ecx + ebx], 0xff
add edi, ebx
add edx, eax
mov dword [ebp + 0xc], edi
add ecx, eax
mov dword [ebp - 0x28], edx
sub dword [ebp - 0x34], 1
jne 0x1007f080
jmp case.default.0x1007ec93
mov esi, dword [ebp + 0x18]
mov edi, edx
mov eax, dword [ebp - 8]
dec esi
mov dword [ebp - 0x34], esi
cmp esi, 1
jb case.default.0x1007ec93
mov edx, ecx
mov dword [ebp + 0xc], edi
sub edx, eax
mov dword [ebp - 0x28], edx
mov dword [ebp - 0x54], 0
test ebx, ebx
jle 0x1007f115
mov eax, edi
mov edi, dword [ebp - 0x54]
sub eax, ecx
mov dword [ebp - 0x50], eax
lea esi, [edi + ecx]
mov al, byte [eax + esi]
add al, byte [edx + edi]
inc edi
mov edx, dword [ebp - 0x28]
mov byte [esi], al
mov eax, dword [ebp - 0x50]
cmp edi, ebx
jl 0x1007f0f6
mov edi, dword [ebp + 0xc]
mov eax, dword [ebp - 8]
mov esi, dword [ebp - 0x34]
mov byte [ecx + ebx], 0xff
add edi, ebx
add edx, eax
mov dword [ebp + 0xc], edi
add ecx, eax
mov dword [ebp - 0x28], edx
sub esi, 1
mov dword [ebp - 0x34], esi
jne 0x1007f0e1
mov esi, dword [ebp + 0x20]
mov eax, dword [ebp - 8]
cmp esi, 0x10
jne 0x1007f44d
mov ecx, dword [ebp + 8]
mov edx, dword [ebp + 0x18]
mov ecx, dword [ecx + 0xc]
inc ecx
test edx, edx
je 0x1007f44d
add ecx, dword [ebp - 0x58]
add ecx, ebx
mov byte [ecx], 0xff
add ecx, eax
sub edx, 1
jne 0x1007f153
jmp 0x1007f44d
mov edx, dword [ebp - 0x38]
mov eax, dword [ebp - 0x1c]
dec edx
imul edx, ebx
mov dword [ebp - 0xc], edx
cmp eax, 6
ja case.default.0x1007f178
jmp dword [eax*4 + 0x1007f914]
push edx
push edi
push ecx
call fcn.100b8180
add esp, 0xc
jmp 0x1007f445
xor esi, esi
test edx, edx
jle case.default.0x1007f178
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 word [eax + 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 - 0xc]
jl 0x1007f1b0
jmp 0x1007f43f
xor eax, eax
test edx, edx
jle case.default.0x1007f178
cmp edx, 0x40
jb 0x1007f2c3
mov dword [ebp - 0x28], eax
lea eax, [edi - 1]
add eax, edx
cmp ecx, eax
ja 0x1007f1f5
lea eax, [ecx - 1]
add eax, edx
cmp eax, edi
jae 0x1007f2c0
lea eax, [esi - 1]
add eax, edx
cmp ecx, eax
ja 0x1007f20b
lea eax, [ecx - 1]
add eax, edx
cmp eax, esi
jae 0x1007f2c0
mov eax, edx
and eax, 0x8000003f
jns 0x1007f219
dec eax
or eax, 0xffffffc0
inc eax
mov ebx, edx
mov edx, esi
sub edx, edi
sub ebx, eax
mov dword [ebp - 0x34], edx
lea eax, [ecx + 0x20]
mov edx, ecx
mov dword [ebp - 0x58], eax
sub edx, edi
mov dword [ebp - 0x4c], ebx
mov ebx, dword [ebp - 0x28]
lea eax, [edi + 0x10]
mov edi, dword [ebp - 0x34]
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 - 0x58]
nop word [eax + eax]
movups xmm0, xmmword [eax - 0x10]
lea eax, [eax + 0x40]
movups xmm1, xmmword [esi + ebx]
lea edx, [edx + 0x40]
paddb xmm1, xmm0
movups xmm0, xmmword [eax - 0x40]
movups xmmword [edx - 0x60], xmm1
movups xmm1, xmmword [edi + eax - 0x40]
mov edi, dword [ebp - 0x50]
paddb xmm1, xmm0
movups xmm0, xmmword [eax - 0x30]
movups xmmword [ecx + eax - 0x40], xmm1
movups xmm1, xmmword [edi + edx - 0x40]
mov edi, dword [ebp - 0x34]
paddb xmm1, xmm0
movups xmm0, xmmword [eax - 0x20]
movups xmmword [edx - 0x40], xmm1
movups xmm1, xmmword [esi + ebx + 0x30]
add ebx, 0x40
paddb xmm1, xmm0
movups xmmword [edx - 0x30], xmm1
cmp ebx, dword [ebp - 0x4c]
jl 0x1007f250
mov edx, dword [ebp - 0xc]
mov ecx, dword [ebp - 0x14]
mov edi, dword [ebp + 0xc]
mov eax, ebx
mov ebx, dword [ebp - 4]
cmp eax, edx
jge case.default.0x1007f178
jmp 0x1007f2c3
mov eax, dword [ebp - 0x28]
mov ebx, dword [ebp - 0xc]
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 0x1007f2d0
jmp 0x1007f442
xor eax, eax
mov dword [ebp - 0x34], eax
test edx, edx
jle case.default.0x1007f178
mov edx, ecx
mov dword [ebp - 0x58], edi
sub edx, ebx
sub esi, edi
mov ebx, dword [ebp - 0xc]
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 - 0x34]
shr edx, 1
inc eax
add dl, byte [edi - 1]
mov byte [edi + ecx - 1], dl
mov edx, dword [ebp - 0x54]
mov dword [ebp - 0x34], eax
cmp eax, ebx
jl 0x1007f310
jmp 0x1007f43f
test edx, edx
jle case.default.0x1007f178
mov eax, ecx
mov dword [ebp - 0x28], edi
sub eax, ebx
mov dword [ebp - 0x2c], edx
mov dword [ebp - 0x58], eax
mov eax, esi
sub eax, ecx
mov ecx, dword [ebp - 0x28]
sub esi, edi
mov dword [ebp - 0x4c], eax
mov edi, dword [ebp - 0x58]
mov dword [ebp - 0x10], esi
movzx eax, byte [eax + edi]
movzx esi, byte [esi + ecx]
movzx edx, byte [edi]
mov dword [ebp - 0x34], eax
mov ecx, edx
sub ecx, eax
mov dword [ebp - 0x50], esi
add esi, ecx
mov dword [ebp - 0x30], edx
mov eax, esi
sub esi, dword [ebp - 0x34]
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 0x1007f3ab
cmp eax, ecx
jle 0x1007f3b7
mov eax, dword [ebp - 0x34]
cmp edx, ecx
cmovle eax, dword [ebp - 0x50]
mov dword [ebp - 0x30], eax
mov ecx, dword [ebp - 0x28]
mov esi, dword [ebp - 0x10]
mov al, byte [ecx]
inc ecx
add al, byte [ebp - 0x30]
mov byte [edi + ebx], al
inc edi
sub dword [ebp - 0x2c], 1
mov eax, dword [ebp - 0x4c]
mov dword [ebp - 0x28], ecx
jne 0x1007f361
mov edi, dword [ebp + 0xc]
jmp 0x1007f445
xor esi, esi
test edx, edx
jle case.default.0x1007f178
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 - 0xc]
jl 0x1007f3f0
jmp 0x1007f43f
mov dword [ebp - 0x58], 0
test edx, edx
jle case.default.0x1007f178
mov eax, ecx
mov edx, edi
mov edi, dword [ebp - 0x58]
sub eax, ebx
mov ebx, dword [ebp - 0xc]
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 0x1007f427
mov edi, dword [ebp + 0xc]
mov ebx, dword [ebp - 4]
mov edx, dword [ebp - 0xc]
mov esi, dword [ebp + 0x20]
add edi, edx
mov edx, dword [ebp - 0x3c]
mov eax, dword [ebp + 0x1c]
inc edx
mov dword [ebp - 0x3c], edx
cmp edx, eax
jb 0x1007eaa0
mov edi, dword [ebp + 0x20]
mov esi, dword [ebp + 0x18]
cmp edi, 8
jge 0x1007f848
test eax, eax
je 0x1007f880
mov ebx, dword [ebp + 0x14]
imul ebx, esi
xor ecx, ecx
mov dword [ebp - 0x1c], ecx
mov dword [ebp - 0x50], ebx
mov eax, dword [ebp + 8]
mov esi, ecx
sub esi, dword [ebp - 0x40]
add esi, ebx
mov eax, dword [eax + 0xc]
add esi, eax
cmp dword [ebp + 0x24], 0
lea edx, [ecx + eax]
jne 0x1007f4e8
mov bl, byte [edi + 0x10297ca4]
jmp 0x1007f4ea
mov ecx, dword [0x103e91b0]
mov eax, dword fs:[0x2c]
pop edi
pop esi
pop ebx
mov eax, dword [eax + ecx*4]
mov dword [eax + 0xc], str.invalid_width
xor eax, eax
mov esp, ebp
pop ebp
ret
mov ecx, dword [0x103e91b0]
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
mov ecx, dword [ebp - 0x18]
mov dword [ebp - 0x3c], ecx
mov dword [ebp - 0x18], ecx
cmp edi, 4
jne 0x1007f557
mov eax, ecx
mov dword [ebp - 0x28], eax
cmp eax, 2
jl 0x1007f545
mov edi, eax
shr edi, 1
mov eax, edi
neg eax
lea ecx, [ecx + eax*2]
mov dword [ebp - 0x28], ecx
mov ecx, dword [ebp - 0x3c]
mov dword [ebp - 0x18], 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 0x1007f516
mov eax, dword [ebp - 0x28]
test eax, eax
jle 0x1007f7a9
mov cl, byte [esi]
shr cl, 4
jmp 0x1007f79e
cmp edi, 2
jne 0x1007f61d
mov edi, ecx
mov dword [ebp - 0x28], edi
cmp edi, 4
jl 0x1007f5d9
shr edi, 2
mov eax, edi
neg eax
lea ecx, [ecx + eax*4]
mov dword [ebp - 0x28], ecx
mov ecx, dword [ebp - 0x3c]
mov dword [ebp - 0x18], ecx
nop dword [eax]
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 0x1007f580
mov edi, dword [ebp - 0x28]
test edi, edi
jle 0x1007f5ee
mov cl, byte [esi]
shr cl, 6
movzx eax, bl
movzx ecx, cl
imul ecx, eax
mov byte [edx], cl
inc edx
cmp edi, 1
jle 0x1007f607
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
cmp edi, 2
jle 0x1007f7a9
mov cl, byte [esi]
shr cl, 2
and cl, 3
jmp 0x1007f79e
cmp edi, 1
jne 0x1007f7a9
mov edi, ecx
mov dword [ebp - 0x18], ecx
cmp edi, 8
jl 0x1007f700
mov eax, edi
mov dword [ebp - 0x18], ecx
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 word [eax + eax]
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 0x1007f650
mov edi, dword [ebp - 0x54]
test edi, edi
jle 0x1007f715
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 0x1007f72e
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 0x1007f747
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 0x1007f760
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 0x1007f779
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 0x1007f792
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 0x1007f7a9
mov cl, byte [esi]
shr cl, 1
and cl, 1
movzx eax, bl
movzx ecx, cl
imul ecx, eax
mov byte [edx], cl
mov ebx, dword [ebp - 0x20]
cmp ebx, dword [ebp + 0x14]
je 0x1007f823
mov eax, dword [ebp + 8]
mov ecx, dword [ebp + 0x18]
dec ecx
mov edx, dword [eax + 0xc]
add edx, dword [ebp - 0x1c]
cmp ebx, 1
jne 0x1007f7e2
test ecx, ecx
js 0x1007f823
nop word [eax + eax]
mov byte [edx + ecx*2 + 1], 0xff
mov al, byte [ecx + edx]
mov byte [edx + ecx*2], al
sub ecx, 1
jns 0x1007f7d0
jmp 0x1007f823
test ecx, ecx
js 0x1007f823
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 0x1007f800
mov ecx, dword [ebp - 0x1c]
add ecx, dword [ebp - 0x24]
sub dword [ebp + 0x1c], 1
mov ebx, dword [ebp - 0x50]
mov edi, dword [ebp + 0x20]
mov dword [ebp - 0x1c], ecx
jne 0x1007f484
pop edi
pop esi
mov eax, 1
pop ebx
mov esp, ebp
pop ebp
ret
cmp edi, 0x10
jne 0x1007f880
mov ebx, dword [ebp + 0x14]
imul ebx, dword [ebp + 0x18]
mov ecx, dword [ebp + 8]
mov esi, dword [ecx + 0xc]
mov edx, esi
imul ebx, eax
test ebx, ebx
je 0x1007f880
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 0x1007f863
pop edi
pop esi
mov eax, 1
pop ebx
mov esp, ebp
pop ebp
ret
mov ecx, dword [0x103e91b0]
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
mov eax, dword [ebp + 8]
mov dword [eax + 0xc], 0
mov ecx, dword [0x103e91b0]
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