Function at 0x100c9e00
Capabilities:
Encrypt data using rc4 ksa

Disassembly:
sub esp, 0x24
push ebx
push ebp
push esi
mov esi, ecx
push edi
mov ecx, dword [esi + 8]
cmp byte [ecx + 1], 0x1f
jae 0x100c9e76
mov eax, dword [esi]
mov ebx, dword [eax + 8]
test ebx, ebx
je 0x100c9e76
cmp word [ebx], 1
jne 0x100c9e2f
mov al, byte [ebx + 3]
cmp al, 0x20
jae 0x100c9e76
inc al
mov byte [ebx + 3], al
jmp 0x100c9e76
mov edi, dword [ebx + 4]
mov al, byte [ecx]
cmp byte [edi], al
je 0x100c9e65
mov ebp, edi
add edi, 6
cmp byte [edi], al
jne 0x100c9e38
mov al, byte [edi + 1]
cmp al, byte [edi - 5]
jb 0x100c9e65
mov eax, dword [edi - 6]
mov ecx, dword [edi]
mov dx, word [edi + 4]
mov dword [edi], eax
mov ax, word [edi - 2]
mov dword [edi - 6], ecx
mov word [edi + 4], ax
mov word [edi - 2], dx
mov edi, ebp
mov al, byte [edi + 1]
cmp al, 0x73
jae 0x100c9e76
add al, 2
mov byte [edi + 1], al
add word [ebx + 2], 2
cmp dword [esi + 0xc], 0
jne 0x100c9eb2
mov ecx, esi
call fcn.100c9780
mov ecx, eax
mov dword [esi], ecx
mov dword [esi + 4], ecx
test ecx, ecx
jne 0x100c9e9c
pop edi
mov ecx, esi
pop esi
pop ebp
pop ebx
add esp, 0x24
jmp 0x100ca3b0
mov eax, dword [esi + 8]
mov word [eax + 2], cx
shr ecx, 0x10
mov word [eax + 4], cx
pop edi
pop esi
pop ebp
pop ebx
add esp, 0x24
ret
mov eax, dword [esi + 8]
mov ebx, dword [esi + 0x40]
mov al, byte [eax]
mov byte [ebx], al
inc ebx
mov dword [esp + 0x1c], ebx
mov dword [esi + 0x40], ebx
cmp ebx, dword [esi + 0x44]
jb 0x100c9ed7
pop edi
mov ecx, esi
pop esi
pop ebp
pop ebx
add esp, 0x24
jmp 0x100ca3b0
mov edx, dword [esi + 8]
movzx ecx, word [edx + 4]
movzx eax, word [edx + 2]
shl ecx, 0x10
or ecx, eax
je 0x100c9f25
cmp ecx, ebx
ja 0x100c9f08
mov ecx, esi
call fcn.100c9780
mov ecx, eax
test ecx, ecx
jne 0x100c9f08
pop edi
mov ecx, esi
pop esi
pop ebp
pop ebx
add esp, 0x24
jmp 0x100ca3b0
add dword [esi + 0xc], 0xffffffff
mov edx, dword [esi]
mov dword [esp + 0x14], edx
jne 0x100c9f3a
xor eax, eax
mov dword [esp + 0x1c], ecx
cmp dword [esi + 4], edx
setne al
sub dword [esi + 0x40], eax
jmp 0x100c9f3a
mov eax, ebx
mov word [edx + 2], bx
shr eax, 0x10
mov word [edx + 4], ax
mov ecx, dword [esi]
mov edx, ecx
mov dword [esp + 0x14], ecx
mov edi, dword [esi + 4]
mov dword [esi], ecx
mov dword [esi + 4], ecx
cmp edi, edx
je 0x100c9eaa
mov eax, dword [esi + 8]
movzx ecx, word [edx + 2]
movzx ebp, word [edx]
mov dword [esp + 0x20], ebp
movzx eax, byte [eax + 1]
sub ecx, eax
sub ecx, ebp
inc ecx
mov dword [esp + 0x2c], ecx
movzx eax, word [edi]
mov ebx, eax
mov dword [esp + 0x30], eax
mov dword [esp + 0x10], ebx
cmp ebx, 1
je 0x100ca03c
test bl, 1
jne 0x100ca00b
shr ebx, 1
movzx ecx, byte [ebx + esi + 0x8f]
movzx eax, byte [ebx + esi + 0x90]
mov dword [esp + 0x24], ecx
cmp ecx, eax
je 0x100ca007
lea edx, [ecx + 1]
mov ecx, esi
call fcn.100c96a0
mov dword [esp + 0x28], eax
test eax, eax
je 0x100c9e8e
mov ecx, dword [edi + 4]
mov ebp, eax
mov dword [esp + 0x18], ecx
mov edx, eax
add ecx, 8
sub ebp, dword [esp + 0x18]
mov eax, dword [ecx - 8]
lea edx, [edx + 0xc]
mov dword [edx - 0xc], eax
lea ecx, [ecx + 0xc]
mov eax, dword [ecx - 0x10]
mov dword [edx - 8], eax
mov eax, dword [ecx - 0xc]
mov dword [ecx + ebp - 0xc], eax
sub ebx, 1
jne 0x100c9fc6
mov edx, dword [esp + 0x24]
mov ecx, dword [esp + 0x18]
mov ebp, dword [esp + 0x20]
mov eax, dword [esi + edx*4 + 0x110]
mov dword [ecx], eax
mov eax, dword [esp + 0x28]
mov dword [esi + edx*4 + 0x110], ecx
mov dword [edi + 4], eax
mov ebx, dword [esp + 0x10]
movzx edx, word [edi + 2]
lea eax, [ebx*8]
cmp eax, edx
lea eax, [ebx*4]
sbb ecx, ecx
inc ecx
cmp ebp, eax
sbb eax, eax
inc eax
and ecx, eax
lea eax, [ebx + ebx]
cmp eax, ebp
sbb eax, eax
neg eax
add eax, edx
lea edx, [eax + ecx*2]
jmp 0x100ca0c2
mov edx, dword [esi + 0x110]
test edx, edx
je 0x100ca050
mov eax, dword [edx]
mov dword [esi + 0x110], eax
jmp 0x100ca079
movzx eax, byte [esi + 0x68]
mov edx, dword [esi + 0x38]
lea ecx, [eax + eax*2]
mov eax, dword [esi + 0x3c]
shl ecx, 2
sub eax, edx
cmp eax, ecx
jb 0x100ca06e
lea eax, [edx + ecx]
mov dword [esi + 0x38], eax
jmp 0x100ca079
xor edx, edx
mov ecx, esi
call fcn.100c96f0
mov edx, eax
test edx, edx
je 0x100c9e8e
movzx ebx, byte [edi + 3]
mov cl, byte [edi + 2]
mov byte [edx], cl
movzx eax, word [edi + 4]
mov word [edx + 2], ax
movzx eax, word [edi + 6]
mov word [edx + 4], ax
mov dword [edi + 4], edx
cmp ebx, 0x1e
jae 0x100ca0a6
add ebx, ebx
jmp 0x100ca0ab
mov ebx, 0x78
mov byte [edx + 1], bl
mov eax, 3
cmp eax, ebp
sbb edx, edx
neg edx
add edx, dword [esi + 0x10]
add edx, ebx
mov ebx, dword [esp + 0x10]
mov eax, dword [edi + 4]
lea ecx, [ebx + ebx*2]
mov ebx, dword [esp + 0x2c]
add ebx, edx
lea eax, [eax + ecx*2]
mov ecx, dword [esi + 8]
mov dword [esp + 0x18], eax
lea eax, [edx + 6]
movzx ebp, byte [ecx + 1]
imul ebp, eax
mov al, byte [ecx]
mov ecx, dword [esp + 0x18]
add ebp, ebp
mov byte [ecx], al
mov eax, dword [esp + 0x30]
inc eax
mov word [edi], ax
mov eax, dword [esp + 0x1c]
mov word [ecx + 2], ax
shr eax, 0x10
mov word [ecx + 4], ax
lea eax, [ebx + ebx*2]
add eax, eax
cmp ebp, eax
jae 0x100ca128
lea eax, [ebx*4]
cmp ebp, eax
sbb ecx, ecx
inc ecx
cmp ebx, ebp
sbb eax, eax
neg eax
inc eax
add ecx, eax
mov eax, 3
jmp 0x100ca14f
mov eax, ebx
shl eax, 4
sub eax, ebx
cmp ebp, eax
lea eax, [ebx + ebx*8]
sbb ecx, ecx
inc ecx
cmp ebp, eax
sbb eax, eax
add eax, 5
add ecx, eax
lea eax, [ebx + ebx*2]
shl eax, 2
cmp ebp, eax
sbb eax, eax
inc eax
add ecx, eax
mov eax, ecx
add eax, edx
mov word [edi + 2], ax
mov eax, dword [esp + 0x18]
mov byte [eax + 1], cl
mov edi, dword [edi + 8]
cmp edi, dword [esp + 0x14]
je 0x100c9eaa
mov ebp, dword [esp + 0x20]
jmp 0x100c9f65
push ecx
push esi
push edi
mov edi, ecx
push 0x98
push 0
mov dword [esp + 0x10], edi
lea eax, [edi + 0x110]
push eax
call fcn.100d9dc0
mov eax, dword [edi + 0x30]
add esp, 0xc
add eax, dword [edi + 0x34]
mov ecx, dword [edi + 0x28]
mov dword [edi + 0x40], eax
mov dword [edi + 0x2c], 0
mov dword [edi + 0x14], 0
lea esi, [eax + ecx]
shr ecx, 3
mov eax, 0xaaaaaaab
mul ecx
mov ecx, 0xc
shr edx, 3
imul eax, edx, 0x54
mov edx, esi
sub edx, eax
mov eax, dword [edi + 0x18]
cmp eax, ecx
mov dword [edi + 0xc], eax
mov dword [edi + 0x44], edx
cmovb ecx, eax
mov dword [edi + 8], edx
not ecx
lea eax, [edx + 0x600]
mov dword [edi + 0x24], ecx
mov dword [edi + 0x20], ecx
lea ecx, [esi - 0xc]
mov dword [edi + 0x38], eax
xor eax, eax
mov dword [edi + 0x3c], ecx
mov dword [edi], ecx
mov dword [edi + 4], ecx
mov dword [ecx + 4], edx
add edx, 2
mov dword [ecx], 0x1010100
mov dword [ecx + 8], 0
mov byte [edx - 2], al
lea edx, [edx + 6]
xor ecx, ecx
mov byte [edx - 7], 1
inc eax
mov dword [edx - 6], ecx
cmp eax, 0x100
jb 0x100ca447
push ebx
push ebp
xor ebx, ebx
lea ebp, [edi + 0x9fc]
nop dword [eax + eax]
mov esi, ebp
xor edi, edi
movzx eax, word [edi + 0x100f76c0]
lea ecx, [ebx + 2]
xor edx, edx
div ecx
mov ecx, 0x4000
sub ecx, eax
xor eax, eax
movzx ecx, cx
nop
mov word [esi + eax*2], cx
add eax, 8
cmp eax, 0x40
jb 0x100ca490
add edi, 2
add esi, 2
cmp edi, 0x10
jb 0x100ca474
inc ebx
sub ebp, 0xffffff80
cmp ebx, 0x80
jb 0x100ca470
mov edi, dword [esp + 0x10]
mov edx, 0x50
pop ebp
pop ebx
lea esi, [edi + 0x3bc]
mov eax, esi
mov ecx, 0x10
nop dword [eax + eax]
mov word [eax], dx
lea eax, [eax + 4]
mov word [eax - 2], 0x403
sub ecx, 1
jne 0x100ca4d0
add edx, 0x28
add esi, 0x40
cmp edx, 0x438
jb 0x100ca4c4
mov dword [edi + 0x3b8], 0x40070000
pop edi
pop esi
pop ecx
ret