Function at 0x59fc80
Capabilities:
Encrypt data using rc4 ksa

Disassembly:
push ebp
mov ebp, esp
sub esp, 0x58
xor ecx, ecx
cmp dword [ebp + 0x20], 0x10
push ebx
sete cl
inc ecx
push esi
mov esi, ecx
push edi
mov edi, dword [ebp + 0x14]
imul esi, edi
mov eax, esi
mov dword [ebp - 0x10], 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 - 0x1c], eax
mov dword [ebp - 0x3c], ecx
mov dword [ebp - 4], ebx
test ecx, ecx
js 0x5a0b9b
mov eax, dword [ebp + 0x1c]
test eax, eax
js 0x5a0b9b
je 0x59fcea
xor edx, edx
mov eax, Ordinal_1
div dword [ebp + 0x1c]
cmp ecx, eax
jg 0x5a0b9b
mov eax, dword [ebp + 0x1c]
imul ecx, eax
test ecx, ecx
js 0x5a0b9b
test esi, esi
js 0x5a0b9b
je 0x59fd0f
mov eax, Ordinal_1
cdq
idiv esi
cmp ecx, eax
jg 0x5a0b9b
mov eax, dword [ebp - 0x24]
imul eax, dword [ebp + 0x1c]
push eax
call fcn.005b7d4f
mov ecx, dword [ebp + 8]
add esp, 4
mov dword [ecx + 0xc], eax
test eax, eax
je 0x5a0ba5
mov esi, dword [ebp - 0x1c]
test esi, esi
js 0x5a0b79
mov ecx, dword [ebp + 0x18]
test ecx, ecx
je 0x59fd50
xor edx, edx
mov eax, Ordinal_1
div ecx
cmp esi, eax
jg 0x5a0b79
mov eax, esi
imul eax, ecx
mov dword [ebp - 0x20], eax
test eax, eax
js 0x5a0b79
mov esi, dword [ebp + 0x20]
test esi, esi
js 0x5a0b79
je 0x59fd82
xor edx, edx
mov eax, Ordinal_1
div esi
cmp dword [ebp - 0x20], eax
jg 0x5a0b79
mov eax, dword [ebp - 0x20]
imul eax, esi
cmp eax, 0x7ffffff8
jg 0x5a0b79
mov edx, dword [ebp + 0x1c]
add eax, 7
shr eax, 3
mov dword [ebp - 0x40], eax
inc eax
imul eax, edx
cmp dword [ebp + 0x10], eax
jae 0x59fdc7
mov ecx, dword [0x655918]
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
xor eax, eax
mov dword [ebp - 0x2c], eax
test edx, edx
je 0x5a0785
mov edi, dword [ebp + 0xc]
nop word [eax + eax]
imul eax, dword [ebp - 0x24]
mov ecx, dword [ebp + 8]
movzx edx, byte [edi]
inc edi
mov dword [ebp - 8], edx
mov ecx, dword [ecx + 0xc]
add ecx, eax
mov dword [ebp - 0x58], eax
mov dword [ebp - 0x18], ecx
cmp edx, 4
ja 0x5a07c6
cmp esi, 8
jge 0x59fe23
mov eax, dword [ebp + 0x14]
mov ebx, 1
imul eax, dword [ebp + 0x18]
mov esi, dword [ebp - 0x40]
mov dword [ebp - 4], ebx
mov dword [ebp - 0x3c], esi
sub eax, esi
add ecx, eax
mov dword [ebp - 0x18], ecx
mov esi, ecx
sub esi, dword [ebp - 0x24]
cmp dword [ebp - 0x2c], 0
mov dword [ebp - 0x14], esi
jne 0x59fe3b
movzx edx, byte [edx + 0x64e214]
mov dword [ebp - 8], edx
test ebx, ebx
jle 0x59ff37
mov eax, esi
mov edx, edi
sub eax, edi
mov esi, ebx
sub ecx, edi
mov dword [ebp - 0xc], eax
mov dword [ebp - 0x38], ecx
cmp dword [ebp - 8], 6
ja case.default.0x59fe5c
mov ebx, dword [ebp - 8]
jmp dword [ebx*4 + 0x5a0bc8]
mov ebx, dword [ebp - 4]
inc edx
sub esi, 1
jne 0x59fe53
jmp 0x59ff2e
mov ebx, dword [ebp - 4]
mov al, byte [edx]
lea edx, [edx + 1]
mov byte [ecx + edx - 1], al
sub esi, 1
jne 0x59fe74
jmp 0x59ff2e
mov ebx, dword [ebp - 4]
nop word [eax + eax]
mov al, byte [edx]
lea edx, [edx + 1]
mov byte [ecx + edx - 1], al
sub esi, 1
jne 0x59fe90
jmp 0x59ff2e
mov ebx, dword [ebp - 4]
mov al, byte [eax + edx]
lea edx, [edx + 1]
add al, byte [edx - 1]
mov byte [ecx + edx - 1], al
sub esi, 1
je 0x59ff2e
mov eax, dword [ebp - 0xc]
jmp 0x59fea6
mov ebx, dword [ebp - 4]
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 0x59ff2e
mov eax, dword [ebp - 0xc]
jmp 0x59fec0
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 - 0x38]
add al, byte [edx - 1]
mov byte [ecx + edx - 1], al
sub esi, 1
je 0x59ff2e
mov eax, dword [ebp - 0xc]
jmp 0x59fee0
mov ebx, dword [ebp - 4]
mov al, byte [edx]
lea edx, [edx + 1]
mov byte [ecx + edx - 1], al
sub esi, 1
jne 0x59ff05
jmp 0x59ff2e
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 0x59ff20
mov esi, dword [ebp - 0x14]
mov ecx, dword [ebp - 0x18]
mov edx, dword [ebp - 8]
mov eax, dword [ebp + 0x20]
cmp eax, 8
jne 0x59ff66
mov eax, dword [ebp + 0x14]
cmp dword [ebp - 0x1c], eax
je 0x59ff4e
mov edx, dword [ebp - 0x1c]
mov byte [ecx + edx], 0xff
add edi, dword [ebp - 0x1c]
add esi, eax
mov edx, dword [ebp - 8]
add ecx, eax
mov dword [ebp + 0xc], edi
mov dword [ebp - 0xc], edi
mov dword [ebp - 0x14], esi
mov dword [ebp - 0x18], ecx
jmp 0x59ffa8
cmp eax, 0x10
jne 0x59ff90
mov eax, dword [ebp - 0x1c]
cmp eax, dword [ebp + 0x14]
je 0x59ff79
mov word [ecx + ebx], 0xffff
mov eax, dword [ebp - 0x10]
add edi, ebx
add esi, eax
mov dword [ebp + 0xc], edi
add ecx, eax
mov dword [ebp - 0xc], edi
mov dword [ebp - 0x14], esi
mov dword [ebp - 0x18], ecx
jmp 0x59ffab
inc edi
inc esi
inc ecx
mov dword [ebp + 0xc], edi
mov dword [ebp - 0xc], edi
mov dword [ebp - 0x14], esi
mov dword [ebp - 0x18], ecx
cmp eax, 8
jl 0x5a0481
mov eax, dword [ebp - 0x10]
mov ebx, dword [ebp - 0x1c]
cmp ebx, dword [ebp + 0x14]
mov ebx, dword [ebp - 4]
je 0x5a0481
cmp edx, 6
ja case.default.0x59ffc6
mov edi, dword [ebp - 0xc]
jmp dword [edx*4 + 0x5a0be4]
mov edx, dword [ebp + 0x18]
mov esi, dword [ebp - 0xc]
dec edx
mov dword [ebp - 0x28], edx
mov edi, esi
cmp edx, 1
jb case.default.0x59ffc6
test ebx, ebx
jle 0x5a000a
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 0x59fff3
mov ebx, dword [ebp - 4]
mov eax, dword [ebp - 0x10]
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 0x59ffe2
jmp case.default.0x59ffc6
mov esi, dword [ebp + 0x18]
mov edx, dword [ebp - 0xc]
dec esi
mov dword [ebp - 0x28], esi
mov edi, edx
cmp esi, 1
jb case.default.0x59ffc6
mov edx, ecx
mov dword [ebp + 0xc], edi
sub edx, eax
mov dword [ebp - 0x18], edx
nop
xor esi, esi
test ebx, ebx
jle 0x5a006c
sub edi, ecx
mov dword [ebp - 0x38], edi
nop dword [eax + eax]
mov eax, dword [ebp - 0x18]
lea edx, [esi + ecx]
mov al, byte [eax + esi]
inc esi
add al, byte [edi + edx]
mov byte [edx], al
cmp esi, ebx
jl 0x5a0050
mov edi, dword [ebp + 0xc]
mov eax, dword [ebp - 0x10]
mov edx, dword [ebp - 0x18]
mov byte [ecx + ebx], 0xff
add edi, ebx
add edx, eax
mov dword [ebp + 0xc], edi
add ecx, eax
mov dword [ebp - 0x18], edx
sub dword [ebp - 0x28], 1
jne 0x5a0040
jmp case.default.0x59ffc6
mov edx, dword [ebp + 0x18]
dec edx
mov dword [ebp - 0x28], edx
cmp dword [ebp - 0x28], 1
mov edx, dword [ebp - 0xc]
mov edi, edx
jb case.default.0x59ffc6
lea edx, [ecx + ebx]
mov dword [ebp + 0xc], edi
mov dword [ebp - 8], edx
mov edx, 0x20
sub edx, ebx
mov dword [ebp - 0x38], edx
xor edx, edx
mov dword [ebp - 0xc], edx
test ebx, ebx
jle 0x5a01ce
cmp ebx, 0x40
jb 0x5a019e
lea eax, [edi - 1]
mov dword [ebp - 0xc], edx
add eax, ebx
cmp ecx, eax
ja 0x5a00df
lea eax, [ecx - 1]
add eax, ebx
cmp eax, edi
jae 0x5a019e
lea eax, [esi - 1]
add eax, ebx
cmp ecx, eax
ja 0x5a00f5
lea eax, [ecx - 1]
add eax, ebx
cmp eax, esi
jae 0x5a019e
mov eax, ebx
and eax, 0x8000003f
jns 0x5a0103
dec eax
or eax, 0xffffffc0
inc eax
mov dword [ebp - 0xc], ebx
mov ebx, esi
sub dword [ebp - 0xc], eax
sub ebx, edi
mov eax, dword [ebp - 8]
add eax, dword [ebp - 0x38]
mov dword [ebp - 0x30], ebx
mov ebx, ecx
sub ebx, edi
mov dword [ebp - 0x34], 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 - 0x30]
mov dword [ebp - 0x48], ebx
mov ebx, dword [ebp - 0x34]
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 - 0x30]
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 - 0xc]
jl 0x5a0133
mov ebx, dword [ebp - 4]
mov ecx, dword [ebp - 0x18]
mov edi, dword [ebp + 0xc]
mov dword [ebp - 0x48], edx
mov dword [ebp - 0xc], edx
cmp edx, ebx
jge 0x5a01cb
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 - 0xc]
mov al, byte [esi + edx]
lea edx, [edx + 1]
add al, byte [edx - 1]
mov byte [ecx + edx - 1], al
sub ebx, 1
jne 0x5a01b0
mov ecx, dword [ebp - 0x18]
mov ebx, dword [ebp - 4]
mov esi, dword [ebp - 0x14]
mov eax, dword [ebp - 0x10]
mov edx, dword [ebp - 8]
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 - 0x28], 1
mov dword [ebp - 8], edx
jne 0x5a00b0
jmp case.default.0x59ffc6
mov edx, dword [ebp + 0x18]
dec edx
mov dword [ebp - 8], edx
cmp dword [ebp - 8], 1
mov edx, dword [ebp - 0xc]
mov edi, edx
jb case.default.0x59ffc6
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 0x5a026e
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
nop
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 - 0x28]
cmp ecx, ebx
jl 0x5a0240
mov ecx, dword [ebp - 0x18]
mov edi, dword [ebp + 0xc]
mov esi, dword [ebp - 0x14]
mov eax, dword [ebp - 0x10]
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 - 0x28], edx
sub dword [ebp - 8], 1
mov dword [ebp - 0x14], esi
jne 0x5a0220
jmp case.default.0x59ffc6
mov edx, dword [ebp + 0x18]
dec edx
mov dword [ebp - 8], edx
cmp dword [ebp - 8], 1
mov edx, dword [ebp - 0xc]
mov edi, edx
jb case.default.0x59ffc6
mov edx, ecx
mov dword [ebp + 0xc], edi
sub edx, eax
mov dword [ebp - 0x28], edx
test ebx, ebx
jle 0x5a0357
mov eax, esi
mov dword [ebp - 0x38], ebx
mov ebx, dword [ebp - 0x10]
sub eax, ecx
mov ecx, dword [ebp - 0x28]
mov edx, edi
sub esi, edi
mov dword [ebp - 0x34], edx
mov dword [ebp - 0x50], eax
mov dword [ebp - 0x54], esi
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 - 0xc], 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 0x5a031d
cmp eax, esi
jle 0x5a0329
mov eax, dword [ebp - 0x30]
cmp edx, esi
cmovle eax, dword [ebp - 0x4c]
mov dword [ebp - 0xc], eax
mov edx, dword [ebp - 0x34]
mov esi, dword [ebp - 0x54]
mov al, byte [edx]
inc edx
add al, byte [ebp - 0xc]
mov byte [ecx + ebx], al
inc ecx
sub dword [ebp - 0x38], 1
mov eax, dword [ebp - 0x50]
mov dword [ebp - 0x34], edx
jne 0x5a02d3
mov ecx, dword [ebp - 0x18]
mov ebx, dword [ebp - 4]
mov edi, dword [ebp + 0xc]
mov esi, dword [ebp - 0x14]
mov eax, dword [ebp - 0x10]
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 - 0x18], ecx
add esi, eax
mov dword [ebp - 0x28], edx
sub dword [ebp - 8], 1
mov dword [ebp - 0x14], esi
jne 0x5a02b1
jmp case.default.0x59ffc6
mov esi, dword [ebp + 0x18]
mov edx, dword [ebp - 0xc]
dec esi
mov dword [ebp - 0x38], esi
mov edi, edx
cmp esi, 1
jb case.default.0x59ffc6
mov edx, ecx
mov dword [ebp + 0xc], edi
sub edx, eax
mov dword [ebp - 0x28], edx
nop dword [eax]
xor esi, esi
test ebx, ebx
jle 0x5a03ce
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 0x5a03b0
mov edi, dword [ebp + 0xc]
mov eax, dword [ebp - 0x10]
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 - 0x38], 1
jne 0x5a03a0
jmp case.default.0x59ffc6
mov esi, dword [ebp + 0x18]
mov edx, dword [ebp - 0xc]
dec esi
mov dword [ebp - 0x38], esi
mov edi, edx
cmp esi, 1
jb case.default.0x59ffc6
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 0x5a0437
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 - 0x28]
mov byte [esi], al
mov eax, dword [ebp - 0x50]
cmp edi, ebx
jl 0x5a0416
mov edi, dword [ebp + 0xc]
mov eax, dword [ebp - 0x10]
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 - 0x28], edx
sub esi, 1
mov dword [ebp - 0x38], esi
jne 0x5a0401
mov esi, dword [ebp + 0x20]
cmp esi, 0x10
jne 0x5a076d
mov ecx, dword [ebp + 8]
mov edx, dword [ebp + 0x18]
mov ecx, dword [ecx + 0xc]
inc ecx
test edx, edx
je 0x5a076d
add ecx, dword [ebp - 0x58]
add ecx, ebx
mov byte [ecx], 0xff
add ecx, eax
sub edx, 1
jne 0x5a0472
jmp 0x5a076d
mov edx, dword [ebp - 0x3c]
mov eax, dword [ebp - 8]
dec edx
imul edx, ebx
mov dword [ebp - 0xc], edx
cmp eax, 6
ja case.default.0x5a0497
jmp dword [eax*4 + 0x5a0c00]
push edx
push edi
push ecx
call fcn.005b46d0
add esp, 0xc
jmp 0x5a0765
xor esi, esi
test edx, edx
jle case.default.0x5a0497
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 dword [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 0x5a04d0
jmp 0x5a075f
xor eax, eax
test edx, edx
jle case.default.0x5a0497
cmp edx, 0x40
jb 0x5a05e6
mov dword [ebp - 0x28], eax
lea eax, [edi - 1]
add eax, edx
cmp ecx, eax
ja 0x5a0515
lea eax, [ecx - 1]
add eax, edx
cmp eax, edi
jae 0x5a05e3
lea eax, [esi - 1]
add eax, edx
cmp ecx, eax
ja 0x5a052b
lea eax, [ecx - 1]
add eax, edx
cmp eax, esi
jae 0x5a05e3
mov eax, edx
and eax, 0x8000003f
jns 0x5a0539
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 + 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 - 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 - 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 - 0x38]
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 0x5a0570
mov edx, dword [ebp - 0xc]
mov eax, ebx
mov ecx, dword [ebp - 0x18]
cmp ebx, edx
mov edi, dword [ebp + 0xc]
mov dword [ebp - 0x58], ebx
mov ebx, dword [ebp - 4]
jge case.default.0x5a0497
jmp 0x5a05e6
mov eax, dword [ebp - 0x28]
mov ebx, dword [ebp - 0xc]
lea edx, [edi + eax]
sub esi, edi
sub ecx, edi
sub ebx, eax
mov al, byte [edx + esi]
lea edx, [edx + 1]
add al, byte [edx - 1]
mov byte [edx + ecx - 1], al
sub ebx, 1
jne 0x5a05f2
jmp 0x5a0762
xor eax, eax
mov dword [ebp - 0x38], eax
test edx, edx
jle case.default.0x5a0497
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 - 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 0x5a0630
jmp 0x5a075f
test edx, edx
jle case.default.0x5a0497
mov eax, ecx
mov dword [ebp - 0x28], edi
sub eax, ebx
mov dword [ebp - 0x30], 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 - 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 0x5a06cb
cmp eax, ecx
jle 0x5a06d7
mov eax, dword [ebp - 0x38]
cmp edx, ecx
cmovle eax, dword [ebp - 0x50]
mov dword [ebp - 0x34], eax
mov ecx, dword [ebp - 0x28]
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 - 0x28], ecx
jne 0x5a0681
mov edi, dword [ebp + 0xc]
jmp 0x5a0765
xor esi, esi
test edx, edx
jle case.default.0x5a0497
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 0x5a0710
jmp 0x5a075f
mov dword [ebp - 0x58], 0
test edx, edx
jle case.default.0x5a0497
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 0x5a0747
mov edi, dword [ebp + 0xc]
mov ebx, dword [ebp - 4]
mov edx, dword [ebp - 0xc]
mov esi, dword [ebp + 0x20]
add edi, edx
mov eax, dword [ebp - 0x2c]
mov edx, dword [ebp + 0x1c]
inc eax
mov dword [ebp - 0x2c], eax
cmp eax, edx
jb 0x59fde0
mov edi, dword [ebp + 0x14]
mov ecx, dword [ebp + 0x18]
cmp esi, 8
jge 0x5a0b35
test edx, edx
je 0x5a0b6d
mov ebx, edi
imul ebx, ecx
xor ecx, ecx
mov dword [ebp - 0x14], 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]
mov eax, dword [ebp + 0x20]
jne 0x5a07e8
mov bl, byte [eax + 0x621484]
jmp 0x5a07ea
mov ecx, dword [0x655918]
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 eax, 4
jne 0x5a0849
mov ecx, dword [ebp - 0x20]
cmp ecx, 2
jl 0x5a0837
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 0x5a0805
mov ecx, dword [ebp - 0x58]
mov edi, dword [ebp + 0x14]
test ecx, ecx
jle 0x5a0a9c
mov cl, byte [esi]
shr cl, 4
jmp 0x5a0a91
cmp eax, 2
jne 0x5a0916
mov ecx, dword [ebp - 0x20]
mov dword [ebp - 0x18], ecx
cmp ecx, 4
jl 0x5a08cc
mov edi, ecx
shr edi, 2
mov eax, edi
neg eax
lea ecx, [ecx + eax*4]
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 0x5a0870
mov ecx, dword [ebp - 0x18]
mov edi, dword [ebp + 0x14]
test ecx, ecx
jle 0x5a08e4
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 - 0x18]
cmp ecx, 1
jle 0x5a0900
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 - 0x18]
cmp ecx, 2
jle 0x5a0a9c
mov cl, byte [esi]
shr cl, 2
and cl, 3
jmp 0x5a0a91
cmp eax, 1
jne 0x5a0a9f
mov edi, dword [ebp - 0x20]
cmp edi, 8
jl 0x5a09f0
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 0x5a0940
mov edi, dword [ebp - 0x54]
test edi, edi
jle 0x5a0a05
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 0x5a0a1e
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 0x5a0a37
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 0x5a0a50
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 0x5a0a69
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 0x5a0a82
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
mov edi, dword [ebp + 0x14]
jle 0x5a0a9c
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 - 0x14]
mov ebx, dword [ebp - 0x1c]
cmp ebx, edi
je 0x5a0b16
mov eax, dword [ebp + 8]
mov edx, dword [eax + 0xc]
add edx, ecx
mov ecx, dword [ebp + 0x18]
dec ecx
cmp ebx, 1
jne 0x5a0ad2
test ecx, ecx
js 0x5a0b13
nop dword [eax + eax]
mov byte [edx + ecx*2 + 1], 0xff
mov al, byte [ecx + edx]
mov byte [edx + ecx*2], al
sub ecx, 1
jns 0x5a0ac0
jmp 0x5a0b13
test ecx, ecx
js 0x5a0b13
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 0x5a0af0
mov ecx, dword [ebp - 0x14]
add ecx, dword [ebp - 0x24]
sub dword [ebp + 0x1c], 1
mov ebx, dword [ebp - 0x50]
mov dword [ebp - 0x14], ecx
jne 0x5a07a3
pop edi
pop esi
mov eax, 1
pop ebx
mov esp, ebp
pop ebp
ret
cmp esi, 0x10
jne 0x5a0b6d
mov eax, dword [ebp + 8]
imul edi, ecx
mov esi, dword [eax + 0xc]
mov edx, esi
imul edi, dword [ebp + 0x1c]
test edi, edi
je 0x5a0b6d
nop dword [eax]
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 edi, 1
jne 0x5a0b50
pop edi
pop esi
mov eax, 1
pop ebx
mov esp, ebp
pop ebp
ret
mov ecx, dword [0x655918]
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 [0x655918]
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