Function at 0x101901d0
Capabilities:
Encrypt data using rc4 ksa
Resolve function by parsing pe exports

Disassembly:
sub esp, 0x58
push ebx
push ebp
mov eax, ecx
mov ebp, edx
push esi
xor ecx, ecx
mov dword [esp + 0x2c], 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 + 0x2c], 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 + 0x34], edx
test ecx, ecx
js 0x1019127c
mov eax, dword [esp + 0x78]
test eax, eax
js 0x1019127c
je 0x10190249
xor edx, edx
mov eax, 0x7fffffff
div dword [esp + 0x78]
cmp ecx, eax
jg 0x1019127c
mov eax, dword [esp + 0x78]
imul ecx, eax
test ecx, ecx
js 0x1019127c
test esi, esi
js 0x1019127c
je 0x1019026e
mov eax, 0x7fffffff
cdq
idiv esi
cmp ecx, eax
jg 0x1019127c
mov eax, dword [esp + 0x34]
imul eax, dword [esp + 0x78]
push eax
call fcn.101a7b6a
mov ecx, dword [esp + 0x34]
add esp, 4
mov dword [ecx + 0xc], eax
test eax, eax
je 0x10191287
mov eax, dword [esp + 0x2c]
test eax, eax
js 0x10191287
mov ecx, dword [esp + 0x74]
test ecx, ecx
je 0x101902ba
xor edx, edx
mov eax, 0x7fffffff
div ecx
cmp dword [esp + 0x2c], eax
jg 0x10191287
mov eax, dword [esp + 0x2c]
mov ecx, eax
imul ecx, dword [esp + 0x74]
mov dword [esp + 0x28], ecx
test ecx, ecx
js 0x10191287
test edi, edi
js 0x10191287
je 0x101902e8
xor edx, edx
mov eax, 0x7fffffff
div edi
cmp ecx, eax
jg 0x10191287
mov eax, ecx
imul eax, edi
cmp eax, 0x7ffffff8
jg 0x10191287
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 0x10191287
xor eax, eax
mov dword [esp + 0x38], eax
test edx, edx
je 0x10190e92
mov dword [esp + 0x28], ecx
nop dword [eax + eax]
imul eax, dword [esp + 0x34]
mov ecx, dword [esp + 0x30]
movzx edx, byte [ebp]
inc ebp
mov dword [esp + 0x18], edx
mov ecx, dword [ecx + 0xc]
add ecx, eax
mov dword [esp + 0x64], eax
mov dword [esp + 0x1c], ecx
cmp edx, 4
ja 0x10191287
cmp edi, 8
jge 0x10190389
mov ebx, dword [esp + 0x74]
mov edi, dword [esp + 0x4c]
cmp edi, ebx
ja 0x10191287
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 + 0x1c], ecx
mov edi, ecx
sub edi, dword [esp + 0x34]
cmp dword [esp + 0x38], 0
mov dword [esp + 0x6c], edi
jne 0x101903a5
movzx edx, byte [edx + 0x101f85e4]
mov dword [esp + 0x18], edx
test ebx, ebx
jle 0x101903ee
mov eax, edi
mov edx, ebp
sub eax, ebp
mov edi, ebx
sub ecx, ebp
mov dword [esp + 0x24], eax
mov dword [esp + 0x44], ecx
nop dword [eax + eax]
cmp dword [esp + 0x18], 6
mov esi, edx
ja case.default.0x101903cd
mov ebx, dword [esp + 0x18]
jmp dword [ebx*4 + 0x10191294]
mov ebx, dword [esp + 0x10]
inc edx
sub edi, 1
jne 0x101903c0
mov edi, dword [esp + 0x6c]
mov ecx, dword [esp + 0x1c]
mov edx, dword [esp + 0x18]
mov esi, dword [esp + 0x14]
mov eax, dword [esp + 0x7c]
cmp eax, 8
jne 0x101904fa
mov eax, dword [esp + 0x70]
cmp dword [esp + 0x2c], eax
je 0x10190411
mov esi, dword [esp + 0x2c]
mov byte [ecx + esi], 0xff
mov esi, dword [esp + 0x14]
add ebp, dword [esp + 0x2c]
add edi, eax
mov ecx, dword [esp + 0x1c]
mov eax, ebp
add ecx, dword [esp + 0x70]
mov edx, dword [esp + 0x18]
mov dword [esp + 0x6c], ebp
mov dword [esp + 0x24], edi
mov dword [esp + 0x20], ecx
jmp 0x10190549
mov ebx, dword [esp + 0x10]
nop word [eax + eax]
mov al, byte [edx]
inc edx
mov byte [esi + ecx], al
sub edi, 1
je 0x101903de
mov esi, edx
jmp 0x10190440
mov ebx, dword [esp + 0x10]
mov al, byte [edx]
inc edx
mov byte [esi + ecx], al
sub edi, 1
je 0x101903de
mov esi, edx
jmp 0x10190453
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 0x101903de
mov eax, dword [esp + 0x24]
mov esi, edx
jmp 0x10190466
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 0x101903de
mov eax, dword [esp + 0x24]
mov esi, edx
jmp 0x10190484
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 0x101903de
mov eax, dword [esp + 0x24]
mov esi, edx
jmp 0x101904a4
mov ebx, dword [esp + 0x10]
nop
mov al, byte [edx]
inc edx
mov byte [esi + ecx], al
sub edi, 1
je 0x101903de
mov esi, edx
jmp 0x101904d0
mov ebx, dword [esp + 0x10]
mov al, byte [edx]
inc edx
mov byte [esi + ecx], al
sub edi, 1
je 0x101903de
mov esi, edx
jmp 0x101904e7
cmp eax, 0x10
jne 0x10190529
mov eax, dword [esp + 0x2c]
cmp eax, dword [esp + 0x70]
je 0x1019050f
mov word [ecx + ebx], 0xffff
mov ecx, dword [esp + 0x1c]
add ebp, ebx
add edi, esi
mov dword [esp + 0x6c], ebp
add ecx, esi
mov dword [esp + 0x24], edi
mov eax, ebp
mov dword [esp + 0x20], ecx
jmp 0x10190549
mov ecx, dword [esp + 0x1c]
inc ebp
inc edi
mov dword [esp + 0x6c], ebp
inc ecx
mov dword [esp + 0x24], edi
cmp dword [esp + 0x7c], 8
mov eax, ebp
mov dword [esp + 0x20], ecx
jl 0x10190af0
mov ebx, dword [esp + 0x2c]
cmp ebx, dword [esp + 0x70]
mov ebx, dword [esp + 0x10]
je 0x10190af0
cmp edx, 6
ja case.default.0x10190566
mov ebp, eax
jmp dword [edx*4 + 0x101912b0]
mov edx, dword [esp + 0x74]
mov ebp, eax
dec edx
mov dword [esp + 0x6c], edx
cmp edx, 1
jb case.default.0x10190566
test ebx, ebx
jle 0x101905a6
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 0x10190590
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 0x10190581
jmp case.default.0x10190566
mov edx, dword [esp + 0x74]
mov ebp, eax
dec edx
mov dword [esp + 0x20], edx
cmp edx, 1
jb case.default.0x10190566
mov dword [esp + 0x6c], eax
mov eax, ecx
sub eax, esi
mov dword [esp + 0x24], eax
nop dword [eax]
xor esi, esi
test ebx, ebx
jle 0x1019060c
mov edi, ebp
mov ebp, dword [esp + 0x24]
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 0x101905f0
mov ebp, dword [esp + 0x6c]
mov eax, dword [esp + 0x24]
mov edx, dword [esp + 0x20]
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 + 0x24], eax
mov dword [esp + 0x20], edx
jne 0x101905e0
jmp case.default.0x10190566
mov edx, dword [esp + 0x74]
mov ebp, eax
dec edx
mov dword [esp + 0x1c], edx
cmp edx, 1
jb case.default.0x10190566
lea eax, [ecx + ebx]
mov dword [esp + 0x6c], ebp
mov dword [esp + 0x18], eax
mov eax, 0x20
sub eax, ebx
mov dword [esp + 0x44], eax
mov eax, edx
nop dword [eax]
xor edx, edx
test ebx, ebx
jle 0x101907e5
cmp ebx, 8
jb 0x101907aa
lea eax, [ebp - 1]
lea esi, [ecx - 1]
add eax, ebx
add esi, ebx
cmp ecx, eax
ja 0x10190689
cmp esi, ebp
jae 0x101907aa
lea eax, [edi - 1]
add eax, ebx
cmp ecx, eax
ja 0x1019069a
cmp esi, edi
jae 0x101907aa
cmp ebx, 0x40
jb 0x1019074f
mov eax, ebx
and eax, 0x8000003f
jns 0x101906b1
dec eax
or eax, 0xffffffc0
inc eax
mov esi, ebx
mov ebx, edi
sub ebx, ebp
sub esi, eax
mov dword [esp + 0x40], ebx
lea eax, [ebp + 0x10]
mov ebx, ecx
mov dword [esp + 0x54], esi
mov esi, dword [esp + 0x44]
sub ebx, ebp
add esi, dword [esp + 0x18]
mov dword [esp + 0x3c], ebx
mov ebx, edi
mov ebp, dword [esp + 0x3c]
sub ebx, ecx
mov ecx, dword [esp + 0x40]
mov dword [esp + 0x50], ebx
movups xmm0, xmmword [eax - 0x10]
mov ebx, dword [esp + 0x50]
lea eax, [eax + 0x40]
movups xmm1, xmmword [edx + edi]
lea esi, [esi + 0x40]
paddb xmm1, xmm0
movups xmmword [esi - 0x60], xmm1
movups xmm0, xmmword [eax - 0x40]
movups xmm1, xmmword [ecx + eax - 0x40]
paddb xmm1, xmm0
movups xmmword [eax + ebp - 0x40], xmm1
movups xmm1, xmmword [ebx + esi - 0x40]
mov ebx, dword [esp + 0x10]
movups xmm0, xmmword [eax - 0x30]
paddb xmm1, xmm0
movups xmmword [esi - 0x40], xmm1
movups xmm1, xmmword [edi + edx + 0x30]
add edx, 0x40
movups xmm0, xmmword [eax - 0x20]
paddb xmm1, xmm0
movups xmmword [esi - 0x30], xmm1
cmp edx, dword [esp + 0x54]
jl 0x101906e4
mov ecx, dword [esp + 0x20]
mov eax, ebx
mov ebp, dword [esp + 0x6c]
and al, 0x3f
cmp al, 8
jb 0x101907a6
mov eax, ebx
and eax, 0x80000007
jns 0x1019075d
dec eax
or eax, 0xfffffff8
inc eax
mov esi, ebx
mov ebx, edi
sub ebx, ebp
sub esi, eax
mov dword [esp + 0x6c], ebx
lea eax, [edx + ebp]
mov ebx, dword [esp + 0x10]
sub ecx, ebp
mov edi, dword [esp + 0x6c]
mov dword [esp + 0x54], ecx
nop word [eax + eax]
movq xmm1, qword [eax + edi]
lea eax, [eax + 8]
movq xmm0, qword [eax - 8]
add edx, 8
paddb xmm1, xmm0
movq qword [ecx + eax - 8], xmm1
cmp edx, esi
jl 0x10190780
mov ecx, dword [esp + 0x20]
mov edi, dword [esp + 0x24]
cmp edx, ebx
jge 0x101907dd
mov dword [esp + 0x6c], edi
lea esi, [edx + ebp]
mov eax, ecx
mov dword [esp + 0x6c], ebx
sub eax, ebp
sub edi, ebp
sub ebx, edx
mov dword [esp + 0x54], 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 0x101907c3
mov ebx, dword [esp + 0x10]
mov edi, dword [esp + 0x24]
mov eax, dword [esp + 0x1c]
mov esi, dword [esp + 0x14]
mov edx, dword [esp + 0x18]
add ebp, ebx
add ecx, esi
mov dword [esp + 0x6c], ebp
add edi, esi
mov dword [esp + 0x20], ecx
mov dword [esp + 0x24], edi
mov byte [edx], 0xff
add edx, esi
sub eax, 1
mov dword [esp + 0x18], edx
mov dword [esp + 0x1c], eax
jne 0x10190660
jmp case.default.0x10190566
mov edx, dword [esp + 0x74]
mov ebp, eax
dec edx
mov dword [esp + 0x18], edx
cmp edx, 1
jb case.default.0x10190566
mov eax, dword [esp + 0x18]
mov edx, ecx
sub edx, esi
mov dword [esp + 0x6c], ebp
mov dword [esp + 0x1c], edx
nop word [eax + eax]
mov dword [esp + 0x54], 0
test ebx, ebx
jle 0x101908a4
sub edi, ebp
mov esi, ebp
sub ecx, ebp
mov dword [esp + 0x50], edi
mov edi, dword [esp + 0x54]
mov dword [esp + 0x44], ecx
mov ecx, dword [esp + 0x50]
mov ebp, dword [esp + 0x44]
nop word [eax + eax]
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 0x10190870
mov ecx, dword [esp + 0x20]
mov ebp, dword [esp + 0x6c]
mov edi, dword [esp + 0x24]
mov esi, dword [esp + 0x14]
mov eax, dword [esp + 0x18]
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 edi, esi
mov dword [esp + 0x1c], edx
sub eax, 1
mov dword [esp + 0x24], edi
mov dword [esp + 0x18], eax
jne 0x10190840
jmp case.default.0x10190566
mov edx, dword [esp + 0x74]
mov ebp, eax
dec edx
mov dword [esp + 0x44], edx
cmp edx, 1
jb case.default.0x10190566
mov eax, ecx
mov dword [esp + 0x6c], ebp
sub eax, esi
mov dword [esp + 0x40], eax
test ebx, ebx
jle 0x101909b7
mov dword [esp + 0x54], eax
mov edx, edi
mov eax, edi
mov dword [esp + 0x50], ebp
sub eax, ecx
mov dword [esp + 0x3c], ebx
mov ebx, dword [esp + 0x54]
sub edx, ebp
mov ecx, ebp
mov dword [esp + 0x5c], eax
mov ebp, dword [esp + 0x14]
mov dword [esp + 0x60], edx
movzx eax, byte [ebx + eax]
movzx edi, byte [ecx + edx]
movzx edx, byte [ebx]
mov dword [esp + 0x1c], eax
mov esi, edx
sub esi, eax
mov dword [esp + 0x58], edi
add edi, esi
mov dword [esp + 0x18], edx
mov eax, edi
sub edi, dword [esp + 0x1c]
sub eax, edx
cdq
xor eax, edx
sub eax, edx
mov dword [esp + 0x54], eax
mov eax, esi
cdq
xor eax, edx
sub eax, edx
mov dword [esp + 0x50], eax
mov eax, edi
cdq
mov esi, eax
mov eax, dword [esp + 0x54]
xor esi, edx
sub esi, edx
mov edx, dword [esp + 0x50]
cmp eax, edx
jg 0x10190972
cmp eax, esi
jle 0x10190981
mov eax, dword [esp + 0x1c]
cmp edx, esi
cmovle eax, dword [esp + 0x58]
mov dword [esp + 0x18], eax
mov al, byte [ecx]
inc ecx
add al, byte [esp + 0x18]
mov edx, dword [esp + 0x60]
mov byte [ebx + ebp], al
inc ebx
sub dword [esp + 0x3c], 1
mov eax, dword [esp + 0x5c]
jne 0x10190920
mov ecx, dword [esp + 0x20]
mov ebx, dword [esp + 0x10]
mov ebp, dword [esp + 0x6c]
mov edi, dword [esp + 0x24]
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 + 0x24], edi
mov dword [esp + 0x44], edx
jne 0x101908f2
jmp case.default.0x10190566
mov edx, dword [esp + 0x74]
mov ebp, eax
dec edx
mov dword [esp + 0x44], edx
cmp edx, 1
jb case.default.0x10190566
mov dword [esp + 0x6c], eax
mov eax, ecx
sub eax, esi
mov dword [esp + 0x24], eax
xor esi, esi
test ebx, ebx
jle 0x10190a31
mov edi, ebp
mov ebp, dword [esp + 0x24]
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 0x10190a13
mov ebp, dword [esp + 0x6c]
mov eax, dword [esp + 0x24]
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 + 0x24], eax
mov dword [esp + 0x44], edx
jne 0x10190a05
jmp case.default.0x10190566
mov edx, dword [esp + 0x74]
mov ebp, eax
dec edx
mov dword [esp + 0x44], edx
cmp edx, 1
jb case.default.0x10190566
mov eax, ecx
mov dword [esp + 0x6c], ebp
sub eax, esi
mov dword [esp + 0x24], eax
nop
xor edi, edi
test ebx, ebx
jle 0x10190aa2
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 + 0x24]
cmp edi, ebx
jl 0x10190a80
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 + 0x24], eax
sub edx, 1
mov dword [esp + 0x44], edx
jne 0x10190a70
mov edi, dword [esp + 0x7c]
cmp edi, 0x10
jne 0x10190b52
mov eax, dword [esp + 0x30]
mov ecx, dword [esp + 0x74]
mov eax, dword [eax + 0xc]
inc eax
test ecx, ecx
je 0x10190b52
add eax, dword [esp + 0x64]
add eax, ebx
mov byte [eax], 0xff
add eax, esi
sub ecx, 1
jne 0x10190ae4
jmp 0x10190b52
mov esi, dword [esp + 0x48]
dec esi
imul esi, ebx
mov dword [esp + 0x1c], esi
cmp edx, 6
ja case.default.0x10190b01
jmp dword [edx*4 + 0x101912cc]
push esi
push ebp
push ecx
call fcn.1019bac0
add esp, 0xc
jmp case.default.0x10190b01
mov edi, dword [esp + 0x1c]
xor esi, esi
test edi, edi
jle 0x10190b48
mov eax, ecx
mov dword [esp + 0x64], ebp
sub eax, ebx
sub ebp, ecx
mov dword [esp + 0x60], eax
mov ebx, eax
nop
lea edx, [ecx + esi]
mov al, byte [edx + ebp]
add al, byte [ebx + esi]
inc esi
mov byte [edx], al
cmp esi, edi
jl 0x10190b30
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 + 0x38]
mov ecx, dword [esp + 0x78]
inc eax
mov esi, dword [esp + 0x14]
mov dword [esp + 0x38], eax
cmp eax, ecx
jb 0x10190330
jmp 0x10190e94
xor edx, edx
test esi, esi
jle case.default.0x10190b01
cmp esi, 8
jb 0x10190ce0
lea eax, [ebp - 1]
add eax, esi
cmp ecx, eax
ja 0x10190b95
lea eax, [ecx - 1]
add eax, esi
cmp eax, ebp
jae 0x10190ce0
lea eax, [edi - 1]
add eax, esi
cmp ecx, eax
ja 0x10190bab
lea eax, [ecx - 1]
add eax, esi
cmp eax, edi
jae 0x10190ce0
cmp esi, 0x40
jb 0x10190c71
mov eax, esi
and eax, 0x8000003f
jns 0x10190bc2
dec eax
or eax, 0xffffffc0
inc eax
mov ebx, esi
sub ebx, eax
lea eax, [ecx + 0x20]
mov dword [esp + 0x58], ebx
mov ebx, edi
sub ebx, ebp
mov dword [esp + 0x64], eax
mov dword [esp + 0x44], ebx
lea eax, [ebp + 0x10]
mov esi, dword [esp + 0x44]
mov ebx, ecx
sub ebx, ebp
mov dword [esp + 0x60], ebx
mov ebx, edi
sub ebx, ecx
mov ecx, dword [esp + 0x60]
mov dword [esp + 0x5c], ebx
mov ebx, dword [esp + 0x64]
mov ebp, dword [esp + 0x5c]
nop dword [eax]
movups xmm0, xmmword [eax - 0x10]
lea eax, [eax + 0x40]
movups xmm1, xmmword [edi + edx]
lea ebx, [ebx + 0x40]
paddb xmm1, xmm0
movups xmmword [ebx - 0x60], xmm1
movups xmm1, xmmword [esi + eax - 0x40]
mov esi, edi
movups xmm0, xmmword [eax - 0x40]
paddb xmm1, xmm0
movups xmmword [ecx + eax - 0x40], xmm1
movups xmm0, xmmword [eax - 0x30]
movups xmm1, xmmword [ebx + ebp - 0x40]
paddb xmm1, xmm0
movups xmmword [ebx - 0x40], xmm1
movups xmm1, xmmword [esi + edx + 0x30]
mov esi, dword [esp + 0x44]
add edx, 0x40
movups xmm0, xmmword [eax - 0x20]
paddb xmm1, xmm0
movups xmmword [ebx - 0x30], xmm1
cmp edx, dword [esp + 0x58]
jl 0x10190c00
mov esi, dword [esp + 0x1c]
mov eax, esi
mov ecx, dword [esp + 0x20]
and al, 0x3f
mov ebx, dword [esp + 0x10]
mov ebp, dword [esp + 0x6c]
cmp al, 8
jb 0x10190cd8
mov eax, esi
and eax, 0x80000007
jns 0x10190c7f
dec eax
or eax, 0xfffffff8
inc eax
mov ebx, edi
mov dword [esp + 0x6c], esi
sub dword [esp + 0x6c], eax
sub ebx, ebp
mov dword [esp + 0x64], ebx
lea eax, [edx + ebp]
mov esi, dword [esp + 0x64]
mov ebx, ecx
sub ebx, ebp
mov dword [esp + 0x60], ebx
mov ebx, dword [esp + 0x10]
mov edi, dword [esp + 0x60]
nop word [eax + eax]
movq xmm1, qword [eax + esi]
lea eax, [eax + 8]
movq xmm0, qword [eax - 8]
add edx, 8
paddb xmm1, xmm0
movq qword [edi + eax - 8], xmm1
cmp edx, dword [esp + 0x6c]
jl 0x10190cb0
mov edi, dword [esp + 0x24]
mov esi, dword [esp + 0x1c]
cmp edx, esi
jge case.default.0x10190b01
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 0x10190cf0
mov ebx, dword [esp + 0x10]
jmp 0x10190b48
mov dword [esp + 0x60], 0
test esi, esi
jle case.default.0x10190b01
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 0x10190d31
mov ebx, dword [esp + 0x10]
mov ebp, dword [esp + 0x6c]
jmp case.default.0x10190b01
test esi, esi
jle case.default.0x10190b01
mov eax, ecx
mov dword [esp + 0x24], 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 0x10190de3
cmp eax, ecx
jle 0x10190df2
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 + 0x24], 1
mov eax, dword [esp + 0x58]
mov dword [esp + 0x3c], edx
jne 0x10190d90
jmp 0x10190b44
mov edi, dword [esp + 0x1c]
xor esi, esi
test edi, edi
jle 0x10190b48
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 0x10190e40
jmp 0x10190b40
xor edi, edi
test esi, esi
jle case.default.0x10190b01
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 0x10190e71
mov ebx, dword [esp + 0x10]
mov ebp, dword [esp + 0x6c]
jmp case.default.0x10190b01
mov ecx, edx
cmp edi, 8
jge 0x10191231
test ecx, ecx
je 0x1019126d
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 + 0x30]
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 0x10190ee6
mov bl, byte [edi + 0x101f85ec]
jmp 0x10190ee8
mov bl, 1
mov ecx, dword [esp + 0x28]
mov dword [esp + 0x28], ecx
cmp edi, 4
jne 0x10190f4e
mov ebp, ecx
cmp ebp, 2
jl 0x10190f3c
mov edi, ebp
mov dword [esp + 0x28], 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 0x10190f10
test ebp, ebp
jle 0x10191188
mov cl, byte [esi]
shr cl, 4
jmp 0x1019117d
cmp edi, 2
jne 0x1019100a
mov ebp, ecx
cmp ebp, 4
jl 0x10190fc6
mov edi, ebp
mov dword [esp + 0x28], ecx
shr edi, 2
mov eax, edi
neg eax
lea ebp, [ebp + eax*4]
nop
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 0x10190f70
test ebp, ebp
jle 0x10190fdb
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 0x10190ff4
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 0x10191188
mov cl, byte [esi]
shr cl, 2
and cl, 3
jmp 0x1019117d
cmp edi, 1
jne 0x10191188
mov edi, ecx
mov dword [esp + 0x28], ecx
cmp edi, 8
jl 0x101910df
mov ebp, edi
mov dword [esp + 0x28], 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 0x10191032
test edi, edi
jle 0x101910f4
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 0x1019110d
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 0x10191126
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 0x1019113f
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 0x10191158
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 0x10191171
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 0x10191188
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 + 0x2c]
cmp ebx, dword [esp + 0x70]
je 0x10191203
mov eax, dword [esp + 0x30]
mov ecx, dword [esp + 0x74]
dec ecx
mov edx, dword [eax + 0xc]
add edx, dword [esp + 0x6c]
cmp ebx, 1
jne 0x101911c2
test ecx, ecx
js 0x10191203
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 0x101911b0
jmp 0x10191203
test ecx, ecx
js 0x10191203
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 0x101911e0
mov ecx, dword [esp + 0x6c]
add ecx, dword [esp + 0x34]
sub dword [esp + 0x78], 1
mov ebx, dword [esp + 0x64]
mov edi, dword [esp + 0x7c]
mov dword [esp + 0x6c], ecx
jne 0x10190ec0
pop edi
pop esi
pop ebp
mov eax, 1
pop ebx
add esp, 0x58
ret 0x18
cmp edi, 0x10
jne 0x1019126d
mov ebx, dword [esp + 0x70]
imul ebx, dword [esp + 0x74]
mov eax, dword [esp + 0x30]
mov esi, dword [eax + 0xc]
mov edx, esi
imul ebx, ecx
test ebx, ebx
je 0x1019126d
nop
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 0x10191250
pop edi
pop esi
pop ebp
mov eax, 1
pop ebx
add esp, 0x58
ret 0x18
mov eax, dword [esp + 0x30]
mov dword [eax + 0xc], 0
pop edi
pop esi
pop ebp
xor eax, eax
pop ebx
add esp, 0x58
ret 0x18