Function at 0x100f69c0
Capabilities:
Encrypt data using rc4 ksa

Disassembly:
sub esp, 0x58
push ebx
push ebp
mov eax, ecx
mov ebp, edx
push esi
xor ecx, ecx
mov dword [esp + 0x28], eax
push edi
mov edi, dword [esp + 0x7c]
cmp edi, 0x10
mov eax, dword [eax]
sete cl
inc ecx
mov esi, ecx
imul esi, dword [esp + 0x70]
mov eax, dword [eax + 8]
mov ebx, eax
imul ebx, ecx
mov ecx, dword [esp + 0x74]
mov dword [esp + 0x28], eax
mov edx, esi
mov dword [esp + 0x14], esi
imul edx, dword [esp + 0x74]
mov dword [esp + 0x10], ebx
mov dword [esp + 0x48], ecx
mov dword [esp + 0x30], edx
test ecx, ecx
js 0x100f7a31
mov eax, dword [esp + 0x78]
test eax, eax
js 0x100f7a31
je 0x100f6a39
xor edx, edx
mov eax, 0x7fffffff
div dword [esp + 0x78]
cmp ecx, eax
jg 0x100f7a31
mov eax, dword [esp + 0x78]
imul ecx, eax
test ecx, ecx
js 0x100f7a31
test esi, esi
js 0x100f7a31
je 0x100f6a5e
mov eax, 0x7fffffff
cdq
idiv esi
cmp ecx, eax
jg 0x100f7a31
mov eax, dword [esp + 0x30]
imul eax, dword [esp + 0x78]
push eax
call fcn.1018b4f6
mov ecx, dword [esp + 0x30]
add esp, 4
mov dword [ecx + 0xc], eax
test eax, eax
je 0x100f7a3c
mov eax, dword [esp + 0x28]
test eax, eax
js 0x100f7a3c
mov ecx, dword [esp + 0x74]
test ecx, ecx
je 0x100f6aaa
xor edx, edx
mov eax, 0x7fffffff
div ecx
cmp dword [esp + 0x28], eax
jg 0x100f7a3c
mov eax, dword [esp + 0x28]
mov ecx, eax
imul ecx, dword [esp + 0x74]
mov dword [esp + 0x24], ecx
test ecx, ecx
js 0x100f7a3c
test edi, edi
js 0x100f7a3c
je 0x100f6ad8
xor edx, edx
mov eax, 0x7fffffff
div edi
cmp ecx, eax
jg 0x100f7a3c
mov eax, ecx
imul eax, edi
cmp eax, 0x7ffffff8
jg 0x100f7a3c
mov edx, dword [esp + 0x78]
mov eax, ecx
imul eax, edi
add eax, 7
shr eax, 3
mov dword [esp + 0x4c], eax
inc eax
imul eax, edx
cmp dword [esp + 0x6c], eax
jb 0x100f7a3c
xor eax, eax
mov dword [esp + 0x34], eax
test edx, edx
je 0x100f7642
mov dword [esp + 0x24], ecx
nop dword [eax + eax]
imul eax, dword [esp + 0x30]
mov ecx, dword [esp + 0x2c]
movzx edx, byte [ebp]
inc ebp
mov dword [esp + 0x1c], edx
mov ecx, dword [ecx + 0xc]
add ecx, eax
mov dword [esp + 0x64], eax
mov dword [esp + 0x6c], ecx
cmp edx, 4
ja 0x100f7a3c
cmp edi, 8
jge 0x100f6b79
mov ebx, dword [esp + 0x74]
mov edi, dword [esp + 0x4c]
cmp edi, ebx
ja 0x100f7a3c
mov eax, dword [esp + 0x70]
imul eax, ebx
mov ebx, 1
mov dword [esp + 0x10], ebx
mov dword [esp + 0x48], edi
sub eax, edi
add ecx, eax
mov dword [esp + 0x6c], ecx
mov edi, ecx
sub edi, dword [esp + 0x30]
cmp dword [esp + 0x34], 0
mov dword [esp + 0x20], edi
jne 0x100f6b95
movzx edx, byte [edx + 0x1021399c]
mov dword [esp + 0x1c], edx
test ebx, ebx
jle 0x100f6bde
mov eax, edi
mov edx, ebp
sub eax, ebp
mov edi, ebx
sub ecx, ebp
mov dword [esp + 0x18], eax
mov dword [esp + 0x44], ecx
nop dword [eax + eax]
cmp dword [esp + 0x1c], 6
mov esi, edx
ja case.default.0x100f6bbd
mov ebx, dword [esp + 0x1c]
jmp dword [ebx*4 + 0x100f7a4c]
mov ebx, dword [esp + 0x10]
inc edx
sub edi, 1
jne 0x100f6bb0
mov edi, dword [esp + 0x20]
mov ecx, dword [esp + 0x6c]
mov edx, dword [esp + 0x1c]
mov esi, dword [esp + 0x14]
mov eax, dword [esp + 0x7c]
cmp eax, 8
jne 0x100f6cda
mov eax, dword [esp + 0x28]
cmp eax, dword [esp + 0x70]
je 0x100f6bf9
mov byte [ecx + eax], 0xff
add edi, dword [esp + 0x70]
add ebp, eax
add ecx, dword [esp + 0x70]
mov eax, ebp
mov edx, dword [esp + 0x1c]
mov dword [esp + 0x6c], ebp
mov dword [esp + 0x18], edi
mov dword [esp + 0x20], ecx
jmp 0x100f6d21
mov ebx, dword [esp + 0x10]
nop
mov al, byte [edx]
inc edx
mov byte [esi + ecx], al
sub edi, 1
je 0x100f6bce
mov esi, edx
jmp 0x100f6c20
mov ebx, dword [esp + 0x10]
mov al, byte [edx]
inc edx
mov byte [esi + ecx], al
sub edi, 1
je 0x100f6bce
mov esi, edx
jmp 0x100f6c33
mov ebx, dword [esp + 0x10]
mov al, byte [eax + esi]
add al, byte [edx]
inc edx
mov byte [esi + ecx], al
sub edi, 1
je 0x100f6bce
mov eax, dword [esp + 0x18]
mov esi, edx
jmp 0x100f6c46
mov ebx, dword [esp + 0x10]
mov al, byte [eax + esi]
shr al, 1
add al, byte [edx]
inc edx
mov byte [esi + ecx], al
sub edi, 1
je 0x100f6bce
mov eax, dword [esp + 0x18]
mov esi, edx
jmp 0x100f6c64
mov ebx, dword [esp + 0x10]
mov cl, byte [eax + esi]
xor al, al
cmp al, cl
sbb al, al
and al, cl
mov ecx, dword [esp + 0x44]
add al, byte [edx]
inc edx
mov byte [esi + ecx], al
sub edi, 1
je 0x100f6bce
mov eax, dword [esp + 0x18]
mov esi, edx
jmp 0x100f6c84
mov ebx, dword [esp + 0x10]
nop
mov al, byte [edx]
inc edx
mov byte [esi + ecx], al
sub edi, 1
je 0x100f6bce
mov esi, edx
jmp 0x100f6cb0
mov ebx, dword [esp + 0x10]
mov al, byte [edx]
inc edx
mov byte [esi + ecx], al
sub edi, 1
je 0x100f6bce
mov esi, edx
jmp 0x100f6cc7
cmp eax, 0x10
jne 0x100f6d05
mov eax, dword [esp + 0x28]
cmp eax, dword [esp + 0x70]
je 0x100f6cef
mov word [ecx + ebx], 0xffff
add ebp, ebx
add edi, esi
add ecx, esi
mov dword [esp + 0x6c], ebp
mov eax, ebp
mov dword [esp + 0x18], edi
mov dword [esp + 0x20], ecx
jmp 0x100f6d21
inc ebp
inc edi
inc ecx
mov dword [esp + 0x6c], ebp
cmp dword [esp + 0x7c], 8
mov eax, ebp
mov dword [esp + 0x18], edi
mov dword [esp + 0x20], ecx
jl 0x100f72b0
mov ebx, dword [esp + 0x28]
cmp ebx, dword [esp + 0x70]
mov ebx, dword [esp + 0x10]
je 0x100f72b0
cmp edx, 6
ja case.default.0x100f6d3e
mov ebp, eax
jmp dword [edx*4 + 0x100f7a68]
mov edx, dword [esp + 0x74]
mov ebp, eax
dec edx
mov dword [esp + 0x6c], edx
cmp edx, 1
jb case.default.0x100f6d3e
nop dword [eax]
test ebx, ebx
jle 0x100f6d86
mov edi, ebp
mov edx, ecx
sub edi, ecx
mov esi, ebx
nop dword [eax]
mov al, byte [edx + edi]
lea edx, [edx + 1]
mov byte [edx - 1], al
sub esi, 1
jne 0x100f6d70
mov esi, dword [esp + 0x14]
mov edx, dword [esp + 0x6c]
mov byte [ebx + ecx], 0xff
add ebp, ebx
add ecx, esi
sub edx, 1
mov dword [esp + 0x6c], edx
jne 0x100f6d60
jmp case.default.0x100f6d3e
mov edx, dword [esp + 0x74]
mov ebp, eax
dec edx
mov dword [esp + 0x1c], edx
cmp edx, 1
jb case.default.0x100f6d3e
mov dword [esp + 0x6c], eax
mov eax, ecx
sub eax, esi
mov dword [esp + 0x20], eax
nop dword [eax]
xor esi, esi
test ebx, ebx
jle 0x100f6dec
mov edi, ebp
mov ebp, dword [esp + 0x20]
sub edi, ecx
nop
lea edx, [esi + ecx]
mov al, byte [edx + edi]
add al, byte [esi + ebp]
inc esi
mov byte [edx], al
cmp esi, ebx
jl 0x100f6dd0
mov ebp, dword [esp + 0x6c]
mov eax, dword [esp + 0x20]
mov edx, dword [esp + 0x1c]
mov esi, dword [esp + 0x14]
add ebp, ebx
mov byte [ecx + ebx], 0xff
add eax, esi
add ecx, esi
mov dword [esp + 0x6c], ebp
sub edx, 1
mov dword [esp + 0x20], eax
mov dword [esp + 0x1c], edx
jne 0x100f6dc0
jmp case.default.0x100f6d3e
mov edx, dword [esp + 0x74]
mov ebp, eax
dec edx
mov dword [esp + 0x6c], edx
cmp edx, 1
jb case.default.0x100f6d3e
lea eax, [ecx + ebx]
mov dword [esp + 0x1c], eax
mov eax, 0x40
sub eax, ebx
mov dword [esp + 0x44], eax
mov eax, edx
nop dword [eax + eax]
xor edx, edx
test ebx, ebx
jle 0x100f6fc5
cmp ebx, 8
jb 0x100f6f8a
lea eax, [ebp - 1]
lea esi, [ecx - 1]
add eax, ebx
add esi, ebx
cmp ecx, eax
ja 0x100f6e69
cmp esi, ebp
jae 0x100f6f8a
lea eax, [edi - 1]
add eax, ebx
cmp ecx, eax
ja 0x100f6e7a
cmp esi, edi
jae 0x100f6f8a
cmp ebx, 0x80
jb 0x100f6f3c
mov eax, ebx
and eax, 0x8000007f
jns 0x100f6e94
dec eax
or eax, 0xffffff80
inc eax
mov esi, ebx
mov ebx, ebp
sub ebx, edi
sub esi, eax
mov dword [esp + 0x40], ebx
lea eax, [edi + 0x20]
mov ebx, ecx
mov dword [esp + 0x50], esi
mov esi, dword [esp + 0x44]
sub ebx, edi
add esi, dword [esp + 0x1c]
mov edi, dword [esp + 0x40]
mov dword [esp + 0x3c], ebx
mov ebx, ebp
sub ebx, ecx
mov ecx, dword [esp + 0x3c]
mov dword [esp + 0x38], ebx
nop word [eax + eax]
vmovdqu ymm0, ymmword [edx + ebp]
vpaddb ymm0, ymm0, ymmword [eax - 0x20]
mov ebx, dword [esp + 0x38]
lea eax, [eax + 0x80]
vmovdqu ymmword [esi - 0x40], ymm0
vmovdqu ymm0, ymmword [edi + eax - 0x80]
vpaddb ymm0, ymm0, ymmword [eax - 0x80]
vmovdqu ymmword [ecx + eax - 0x80], ymm0
vmovdqu ymm0, ymmword [esi + ebx]
vpaddb ymm0, ymm0, ymmword [eax - 0x60]
mov ebx, dword [esp + 0x10]
lea esi, [esi + 0x80]
vmovdqu ymmword [esi - 0x80], ymm0
vmovdqu ymm0, ymmword [edx + ebp + 0x60]
vpaddb ymm0, ymm0, ymmword [eax - 0x40]
sub edx, 0xffffff80
vmovdqu ymmword [esi - 0x60], ymm0
cmp edx, dword [esp + 0x50]
jl 0x100f6ed0
mov ecx, dword [esp + 0x20]
mov eax, ebx
mov edi, dword [esp + 0x18]
and al, 0x7f
cmp al, 8
jb 0x100f6f86
mov eax, ebx
and eax, 0x80000007
jns 0x100f6f4a
dec eax
or eax, 0xfffffff8
inc eax
mov esi, ebx
sub edi, ebp
mov ebx, dword [esp + 0x10]
sub esi, eax
sub ecx, ebp
mov dword [esp + 0x50], edi
lea eax, [edx + ebp]
mov dword [esp + 0x40], ecx
vmovq xmm1, qword [eax + edi]
vmovq xmm0, qword [eax]
vpaddb xmm0, xmm1, xmm0
add edx, 8
lea eax, [eax + 8]
vmovq qword [ecx + eax - 8], xmm0
cmp edx, esi
jl 0x100f6f61
mov ecx, dword [esp + 0x20]
mov edi, dword [esp + 0x18]
cmp edx, ebx
jge 0x100f6fbd
mov dword [esp + 0x50], edi
lea esi, [edx + ebp]
mov eax, ecx
mov dword [esp + 0x50], ebx
sub eax, ebp
sub edi, ebp
sub ebx, edx
mov dword [esp + 0x40], eax
mov edx, eax
mov al, byte [esi + edi]
lea esi, [esi + 1]
add al, byte [esi - 1]
mov byte [edx + esi - 1], al
sub ebx, 1
jne 0x100f6fa3
mov ebx, dword [esp + 0x10]
mov edi, dword [esp + 0x18]
mov eax, dword [esp + 0x6c]
mov esi, dword [esp + 0x14]
mov edx, dword [esp + 0x1c]
add ecx, esi
add edi, esi
mov dword [esp + 0x20], ecx
add ebp, ebx
mov dword [esp + 0x18], edi
mov byte [edx], 0xff
add edx, esi
sub eax, 1
mov dword [esp + 0x1c], edx
mov dword [esp + 0x6c], eax
jne 0x100f6e40
jmp case.default.0x100f6d3e
mov edx, dword [esp + 0x74]
mov ebp, eax
dec edx
mov dword [esp + 0x38], edx
cmp edx, 1
jb case.default.0x100f6d3e
mov eax, dword [esp + 0x18]
mov edx, ecx
sub edx, esi
mov dword [esp + 0x6c], ebp
mov dword [esp + 0x1c], edx
xor edi, edi
test ebx, ebx
jle 0x100f7060
sub eax, ebp
mov esi, ebp
sub ecx, ebp
mov dword [esp + 0x50], eax
mov dword [esp + 0x44], ecx
mov ecx, eax
mov ebp, dword [esp + 0x44]
movzx edx, byte [edx + edi]
lea esi, [esi + 1]
movzx eax, byte [esi + ecx - 1]
inc edi
add edx, eax
shr edx, 1
add dl, byte [esi - 1]
mov byte [esi + ebp - 1], dl
mov edx, dword [esp + 0x1c]
cmp edi, ebx
jl 0x100f7030
mov ecx, dword [esp + 0x20]
mov ebp, dword [esp + 0x6c]
mov eax, dword [esp + 0x18]
mov esi, dword [esp + 0x14]
mov byte [ecx + ebx], 0xff
add ebp, ebx
add ecx, esi
mov dword [esp + 0x6c], ebp
add edx, esi
mov dword [esp + 0x20], ecx
add eax, esi
mov dword [esp + 0x1c], edx
sub dword [esp + 0x38], 1
mov dword [esp + 0x18], eax
jne 0x100f7016
jmp case.default.0x100f6d3e
mov edx, dword [esp + 0x74]
mov ebp, eax
dec edx
mov dword [esp + 0x44], edx
cmp edx, 1
jb case.default.0x100f6d3e
mov eax, ecx
mov dword [esp + 0x6c], ebp
sub eax, esi
mov dword [esp + 0x40], eax
test ebx, ebx
jle 0x100f7177
mov dword [esp + 0x50], eax
mov edx, edi
mov eax, edi
mov dword [esp + 0x38], ebp
sub eax, ecx
mov dword [esp + 0x3c], ebx
mov ebx, dword [esp + 0x50]
sub edx, ebp
mov ecx, ebp
mov dword [esp + 0x5c], eax
mov ebp, dword [esp + 0x14]
mov dword [esp + 0x60], edx
nop word [eax + eax]
movzx eax, byte [ebx + eax]
movzx edi, byte [ecx + edx]
movzx edx, byte [ebx]
mov dword [esp + 0x38], eax
mov esi, edx
sub esi, eax
mov dword [esp + 0x58], edi
add edi, esi
mov dword [esp + 0x1c], edx
mov eax, edi
sub edi, dword [esp + 0x38]
sub eax, edx
cdq
xor eax, edx
sub eax, edx
mov dword [esp + 0x50], eax
mov eax, esi
cdq
xor eax, edx
sub eax, edx
mov dword [esp + 0x54], eax
mov eax, edi
cdq
mov esi, eax
mov eax, dword [esp + 0x50]
xor esi, edx
sub esi, edx
mov edx, dword [esp + 0x54]
cmp eax, edx
jg 0x100f7132
cmp eax, esi
jle 0x100f7141
mov eax, dword [esp + 0x38]
cmp edx, esi
cmovle eax, dword [esp + 0x58]
mov dword [esp + 0x1c], eax
mov al, byte [ecx]
inc ecx
add al, byte [esp + 0x1c]
mov edx, dword [esp + 0x60]
mov byte [ebx + ebp], al
inc ebx
sub dword [esp + 0x3c], 1
mov eax, dword [esp + 0x5c]
jne 0x100f70e0
mov ecx, dword [esp + 0x20]
mov ebx, dword [esp + 0x10]
mov ebp, dword [esp + 0x6c]
mov edi, dword [esp + 0x18]
mov esi, dword [esp + 0x14]
mov eax, dword [esp + 0x40]
mov edx, dword [esp + 0x44]
mov byte [ecx + ebx], 0xff
add ebp, ebx
add ecx, esi
mov dword [esp + 0x6c], ebp
add eax, esi
mov dword [esp + 0x20], ecx
add edi, esi
mov dword [esp + 0x40], eax
sub edx, 1
mov dword [esp + 0x18], edi
mov dword [esp + 0x44], edx
jne 0x100f70a8
jmp case.default.0x100f6d3e
mov edx, dword [esp + 0x74]
mov ebp, eax
dec edx
mov dword [esp + 0x44], edx
cmp edx, 1
jb case.default.0x100f6d3e
mov dword [esp + 0x6c], eax
mov eax, ecx
sub eax, esi
mov dword [esp + 0x20], eax
xor esi, esi
test ebx, ebx
jle 0x100f71f1
mov edi, ebp
mov ebp, dword [esp + 0x20]
sub edi, ecx
mov al, byte [esi + ebp]
lea edx, [esi + ecx]
shr al, 1
inc esi
add al, byte [edx + edi]
mov byte [edx], al
cmp esi, ebx
jl 0x100f71d3
mov ebp, dword [esp + 0x6c]
mov eax, dword [esp + 0x20]
mov edx, dword [esp + 0x44]
mov esi, dword [esp + 0x14]
add ebp, ebx
mov byte [ecx + ebx], 0xff
add eax, esi
add ecx, esi
mov dword [esp + 0x6c], ebp
sub edx, 1
mov dword [esp + 0x20], eax
mov dword [esp + 0x44], edx
jne 0x100f71c5
jmp case.default.0x100f6d3e
mov edx, dword [esp + 0x74]
mov ebp, eax
dec edx
mov dword [esp + 0x44], edx
cmp edx, 1
jb case.default.0x100f6d3e
mov eax, ecx
mov dword [esp + 0x6c], ebp
sub eax, esi
mov dword [esp + 0x20], eax
nop
xor edi, edi
test ebx, ebx
jle 0x100f7262
mov dword [esp + 0x60], ebp
sub ebp, ecx
nop dword [eax]
mov dl, byte [eax + edi]
lea esi, [edi + ecx]
mov al, byte [esi + ebp]
inc edi
add al, dl
mov byte [esi], al
mov eax, dword [esp + 0x20]
cmp edi, ebx
jl 0x100f7240
mov ebp, dword [esp + 0x6c]
mov esi, dword [esp + 0x14]
mov edx, dword [esp + 0x44]
mov byte [ecx + ebx], 0xff
add ebp, ebx
add eax, esi
mov dword [esp + 0x6c], ebp
add ecx, esi
mov dword [esp + 0x20], eax
sub edx, 1
mov dword [esp + 0x44], edx
jne 0x100f7230
mov edi, dword [esp + 0x7c]
cmp edi, 0x10
jne 0x100f7314
mov eax, dword [esp + 0x2c]
mov ecx, dword [esp + 0x74]
mov eax, dword [eax + 0xc]
inc eax
test ecx, ecx
je 0x100f7314
add eax, dword [esp + 0x64]
add eax, ebx
mov byte [eax], 0xff
add eax, esi
sub ecx, 1
jne 0x100f72a4
jmp 0x100f7314
mov esi, dword [esp + 0x48]
dec esi
imul esi, ebx
mov dword [esp + 0x1c], esi
cmp edx, 6
ja case.default.0x100f72c1
jmp dword [edx*4 + 0x100f7a84]
push esi
push ebp
push ecx
vzeroupper
call fcn.10180380
add esp, 0xc
jmp case.default.0x100f72c1
mov edi, dword [esp + 0x1c]
xor esi, esi
test edi, edi
jle 0x100f730a
mov eax, ecx
mov dword [esp + 0x64], ebp
sub eax, ebx
sub ebp, ecx
mov dword [esp + 0x60], eax
mov ebx, eax
lea edx, [ecx + esi]
mov al, byte [edx + ebp]
add al, byte [ebx + esi]
inc esi
mov byte [edx], al
cmp esi, edi
jl 0x100f72f2
mov ebx, dword [esp + 0x10]
mov ebp, dword [esp + 0x6c]
mov esi, dword [esp + 0x1c]
mov edi, dword [esp + 0x7c]
add ebp, esi
mov eax, dword [esp + 0x34]
mov ecx, dword [esp + 0x78]
inc eax
mov esi, dword [esp + 0x14]
mov dword [esp + 0x34], eax
cmp eax, ecx
jb 0x100f6b20
jmp 0x100f7644
xor edx, edx
test esi, esi
jle case.default.0x100f72c1
cmp esi, 8
jb 0x100f748f
lea eax, [ebp - 1]
add eax, esi
cmp ecx, eax
ja 0x100f7357
lea eax, [ecx - 1]
add eax, esi
cmp eax, ebp
jae 0x100f748f
lea eax, [edi - 1]
add eax, esi
cmp ecx, eax
ja 0x100f736d
lea eax, [ecx - 1]
add eax, esi
cmp eax, edi
jae 0x100f748f
cmp esi, 0x80
jb 0x100f742f
mov eax, esi
and eax, 0x8000007f
jns 0x100f7387
dec eax
or eax, 0xffffff80
inc eax
mov ebx, esi
sub ebx, eax
lea eax, [ecx + 0x40]
mov dword [esp + 0x58], ebx
mov ebx, ebp
sub ebx, edi
mov dword [esp + 0x64], eax
mov dword [esp + 0x6c], ebx
lea eax, [edi + 0x20]
mov esi, dword [esp + 0x6c]
mov ebx, ecx
sub ebx, edi
mov dword [esp + 0x60], ebx
mov ebx, ebp
mov edi, dword [esp + 0x60]
sub ebx, ecx
mov dword [esp + 0x5c], ebx
mov ebx, dword [esp + 0x64]
mov ecx, dword [esp + 0x5c]
vmovdqu ymm0, ymmword [edx + ebp]
vpaddb ymm0, ymm0, ymmword [eax - 0x20]
vmovdqu ymmword [ebx - 0x40], ymm0
vmovdqu ymm0, ymmword [esi + eax]
vpaddb ymm0, ymm0, ymmword [eax]
vmovdqu ymmword [edi + eax], ymm0
vmovdqu ymm0, ymmword [ebx + ecx]
vpaddb ymm0, ymm0, ymmword [eax + 0x20]
mov esi, ebp
lea eax, [eax + 0x80]
vmovdqu ymmword [ebx], ymm0
lea ebx, [ebx + 0x80]
vmovdqu ymm0, ymmword [esi + edx + 0x60]
vpaddb ymm0, ymm0, ymmword [eax - 0x40]
mov esi, dword [esp + 0x6c]
sub edx, 0xffffff80
vmovdqu ymmword [ebx - 0x60], ymm0
cmp edx, dword [esp + 0x58]
jl 0x100f73c1
mov esi, dword [esp + 0x1c]
mov eax, esi
mov ecx, dword [esp + 0x20]
and al, 0x7f
mov ebx, dword [esp + 0x10]
mov edi, dword [esp + 0x18]
cmp al, 8
jb 0x100f7487
mov eax, esi
and eax, 0x80000007
jns 0x100f743d
dec eax
or eax, 0xfffffff8
inc eax
mov dword [esp + 0x6c], esi
sub edi, ebp
sub dword [esp + 0x6c], eax
mov ebx, ecx
sub ebx, ebp
mov dword [esp + 0x64], edi
mov dword [esp + 0x60], ebx
lea eax, [edx + ebp]
mov ebx, dword [esp + 0x10]
mov esi, edi
mov edi, dword [esp + 0x60]
vmovq xmm1, qword [eax + esi]
vmovq xmm0, qword [eax]
vpaddb xmm0, xmm1, xmm0
add edx, 8
lea eax, [eax + 8]
vmovq qword [edi + eax - 8], xmm0
cmp edx, dword [esp + 0x6c]
jl 0x100f7460
mov edi, dword [esp + 0x18]
mov esi, dword [esp + 0x1c]
cmp edx, esi
jge case.default.0x100f72c1
mov ebx, dword [esp + 0x1c]
lea esi, [edx + ebp]
sub edi, ebp
sub ecx, ebp
sub ebx, edx
nop dword [eax]
mov al, byte [esi + edi]
lea esi, [esi + 1]
add al, byte [esi - 1]
mov byte [ecx + esi - 1], al
sub ebx, 1
jne 0x100f74a0
mov ebx, dword [esp + 0x10]
jmp 0x100f730a
mov dword [esp + 0x60], 0
test esi, esi
jle case.default.0x100f72c1
mov eax, ecx
mov dword [esp + 0x64], ebp
sub eax, ebx
sub edi, ebp
sub ecx, ebp
mov dword [esp + 0x5c], eax
mov ebx, ebp
mov ebp, dword [esp + 0x60]
movzx edx, byte [eax + ebp]
lea ebx, [ebx + 1]
movzx eax, byte [ebx + edi - 1]
inc ebp
add edx, eax
mov eax, dword [esp + 0x5c]
shr edx, 1
add dl, byte [ebx - 1]
mov byte [ecx + ebx - 1], dl
cmp ebp, esi
jl 0x100f74e1
mov ebx, dword [esp + 0x10]
mov ebp, dword [esp + 0x6c]
jmp case.default.0x100f72c1
test esi, esi
jle case.default.0x100f72c1
mov eax, ecx
mov dword [esp + 0x38], esi
sub eax, ebx
mov edx, ebp
mov dword [esp + 0x64], eax
mov eax, edi
sub eax, ecx
mov dword [esp + 0x3c], edx
sub edi, ebp
mov dword [esp + 0x58], eax
mov ebp, dword [esp + 0x64]
nop word [eax + eax]
movzx eax, byte [eax + ebp]
movzx esi, byte [edx + edi]
movzx edx, byte [ebp]
mov dword [esp + 0x44], eax
mov ecx, edx
sub ecx, eax
mov dword [esp + 0x5c], esi
add esi, ecx
mov dword [esp + 0x40], edx
mov eax, esi
sub esi, dword [esp + 0x44]
sub eax, edx
cdq
xor eax, edx
sub eax, edx
mov dword [esp + 0x64], eax
mov eax, ecx
cdq
xor eax, edx
sub eax, edx
mov dword [esp + 0x60], eax
mov eax, esi
cdq
mov ecx, eax
mov eax, dword [esp + 0x64]
xor ecx, edx
sub ecx, edx
mov edx, dword [esp + 0x60]
cmp eax, edx
jg 0x100f7593
cmp eax, ecx
jle 0x100f75a2
mov eax, dword [esp + 0x44]
cmp edx, ecx
cmovle eax, dword [esp + 0x5c]
mov dword [esp + 0x40], eax
mov edx, dword [esp + 0x3c]
mov al, byte [edx]
inc edx
add al, byte [esp + 0x40]
mov byte [ebx + ebp], al
inc ebp
sub dword [esp + 0x38], 1
mov eax, dword [esp + 0x58]
mov dword [esp + 0x3c], edx
jne 0x100f7540
jmp 0x100f7306
mov edi, dword [esp + 0x1c]
xor esi, esi
test edi, edi
jle 0x100f730a
mov eax, ecx
sub eax, ebx
mov dword [esp + 0x64], eax
mov eax, ebp
mov ebx, dword [esp + 0x64]
sub eax, ecx
mov dword [esp + 0x60], eax
mov ebp, eax
nop dword [eax]
mov al, byte [ebx + esi]
lea edx, [ecx + esi]
shr al, 1
inc esi
add al, byte [edx + ebp]
mov byte [edx], al
cmp esi, edi
jl 0x100f75f0
jmp 0x100f7302
xor edi, edi
test esi, esi
jle case.default.0x100f72c1
mov eax, ecx
mov dword [esp + 0x64], ebp
sub eax, ebx
sub ebp, ecx
mov dword [esp + 0x60], eax
mov ebx, eax
lea esi, [ecx + edi]
mov al, byte [esi + ebp]
add al, byte [ebx + edi]
inc edi
mov byte [esi], al
mov esi, dword [esp + 0x1c]
cmp edi, esi
jl 0x100f7621
mov ebx, dword [esp + 0x10]
mov ebp, dword [esp + 0x6c]
jmp case.default.0x100f72c1
mov ecx, edx
cmp edi, 8
jge 0x100f79e4
test ecx, ecx
je 0x100f7a1f
mov ebx, dword [esp + 0x70]
imul ebx, dword [esp + 0x74]
xor ecx, ecx
mov dword [esp + 0x6c], ecx
mov dword [esp + 0x64], ebx
nop dword [eax + eax]
mov eax, dword [esp + 0x2c]
mov esi, ebx
sub esi, dword [esp + 0x4c]
mov eax, dword [eax + 0xc]
add esi, eax
add esi, ecx
cmp dword [esp + 0x80], 0
lea edx, [eax + ecx]
jne 0x100f7696
mov bl, byte [edi + 0x10213988]
jmp 0x100f7698
mov bl, 1
mov ecx, dword [esp + 0x24]
mov dword [esp + 0x24], ecx
cmp edi, 4
jne 0x100f76fe
mov ebp, ecx
cmp ebp, 2
jl 0x100f76ec
mov edi, ebp
mov dword [esp + 0x24], ecx
shr edi, 1
mov eax, edi
neg eax
lea ebp, [ebp + eax*2]
nop dword [eax]
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 0x100f76c0
test ebp, ebp
jle 0x100f793b
mov cl, byte [esi]
shr cl, 4
jmp 0x100f7930
cmp edi, 2
jne 0x100f77bd
mov ebp, ecx
cmp ebp, 4
jl 0x100f7779
mov edi, ebp
mov dword [esp + 0x24], ecx
shr edi, 2
mov eax, edi
neg eax
lea ebp, [ebp + eax*4]
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 0x100f7723
test ebp, ebp
jle 0x100f778e
mov cl, byte [esi]
shr cl, 6
movzx eax, bl
movzx ecx, cl
imul ecx, eax
mov byte [edx], cl
inc edx
cmp ebp, 1
jle 0x100f77a7
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 ebp, 2
jle 0x100f793b
mov cl, byte [esi]
shr cl, 2
and cl, 3
jmp 0x100f7930
cmp edi, 1
jne 0x100f793b
mov edi, ecx
mov dword [esp + 0x24], ecx
cmp edi, 8
jl 0x100f7892
mov ebp, edi
mov dword [esp + 0x24], ecx
shr ebp, 3
mov eax, ebp
neg eax
lea edi, [edi + eax*8]
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 ebp, 1
jne 0x100f77e5
test edi, edi
jle 0x100f78a7
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 0x100f78c0
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 0x100f78d9
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 0x100f78f2
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 0x100f790b
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 0x100f7924
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 0x100f793b
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 [esp + 0x28]
cmp ebx, dword [esp + 0x70]
je 0x100f79b3
mov eax, dword [esp + 0x2c]
mov ecx, dword [esp + 0x74]
dec ecx
mov edx, dword [eax + 0xc]
add edx, dword [esp + 0x6c]
cmp ebx, 1
jne 0x100f7974
test ecx, ecx
js 0x100f79b3
mov byte [edx + ecx*2 + 1], 0xff
mov al, byte [ecx + edx]
mov byte [edx + ecx*2], al
sub ecx, 1
jns 0x100f7962
jmp 0x100f79b3
test ecx, ecx
js 0x100f79b3
lea esi, [ecx*2 + 1]
add esi, edx
lea edx, [edx + ecx*4]
add esi, ecx
add edx, 2
nop dword [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 0x100f7990
mov ecx, dword [esp + 0x6c]
add ecx, dword [esp + 0x30]
sub dword [esp + 0x78], 1
mov ebx, dword [esp + 0x64]
mov edi, dword [esp + 0x7c]
mov dword [esp + 0x6c], ecx
jne 0x100f7670
pop edi
pop esi
pop ebp
mov eax, 1
pop ebx
vzeroupper
add esp, 0x58
ret 0x18
cmp edi, 0x10
jne 0x100f7a1f
mov ebx, dword [esp + 0x70]
imul ebx, dword [esp + 0x74]
mov eax, dword [esp + 0x2c]
mov esi, dword [eax + 0xc]
mov edx, esi
imul ebx, ecx
test ebx, ebx
je 0x100f7a1f
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 0x100f7a02
pop edi
pop esi
pop ebp
mov eax, 1
pop ebx
vzeroupper
add esp, 0x58
ret 0x18
mov eax, dword [esp + 0x2c]
mov dword [eax + 0xc], 0
pop edi
pop esi
pop ebp
xor eax, eax
pop ebx
vzeroupper
add esp, 0x58
ret 0x18