Function at 0x1002ff40
Capabilities:
Encrypt data using rc4 ksa

Disassembly:
mov eax, dword [esp + 0x18]
sub esp, 0xd2c
cmp eax, 4
jl 0x1002ff61
push str.________main_sort_initialise_..._n
push 0x10054e10
call fcn.10035ab3
add esp, 8
push ebx
push ebp
push esi
mov esi, dword [esp + 0xd48]
push edi
mov ecx, 0x10001
lea eax, [esi + 0x40000]
xor ebx, ebx
mov dword [eax], ebx
sub eax, 4
dec ecx
jne 0x1002ff79
mov eax, dword [esp + 0xd50]
mov ebp, dword [esp + 0xd44]
xor ecx, ecx
dec eax
mov ch, byte [ebp]
cmp eax, 3
jl 0x10030007
mov edx, dword [esp + 0xd48]
lea edi, [edx + eax*2 - 4]
xor edx, edx
mov word [edi + 4], bx
mov dh, byte [eax + ebp]
sub eax, 4
sar ecx, 8
or ecx, edx
sub edi, 8
mov edx, dword [esi + ecx*4]
inc edx
mov dword [esi + ecx*4], edx
xor edx, edx
mov word [edi + 0xa], bx
mov dh, byte [eax + ebp + 3]
sar ecx, 8
or ecx, edx
mov edx, dword [esi + ecx*4]
inc edx
mov dword [esi + ecx*4], edx
xor edx, edx
mov word [edi + 8], bx
mov dh, byte [eax + ebp + 2]
sar ecx, 8
or ecx, edx
mov edx, dword [esi + ecx*4]
inc edx
mov dword [esi + ecx*4], edx
xor edx, edx
mov word [edi + 6], bx
mov dh, byte [eax + ebp + 1]
sar ecx, 8
or ecx, edx
mov edx, dword [esi + ecx*4]
inc edx
cmp eax, 3
mov dword [esi + ecx*4], edx
jge 0x1002ffa5
cmp eax, ebx
jl 0x10030031
mov edx, dword [esp + 0xd48]
lea edi, [edx + eax*2]
xor edx, edx
mov word [edi], bx
mov dh, byte [eax + ebp]
sub edi, 2
sar ecx, 8
or ecx, edx
mov edx, dword [esi + ecx*4]
inc edx
dec eax
cmp eax, ebx
mov dword [esi + ecx*4], edx
jge 0x10030015
mov ecx, dword [esp + 0xd48]
mov edx, dword [esp + 0xd50]
xor eax, eax
lea ecx, [ecx + edx*2]
lea edi, [edx + ebp]
mov dl, byte [eax + ebp]
add ecx, 2
mov byte [edi + eax], dl
mov word [ecx - 2], bx
inc eax
cmp eax, 0x22
jl 0x10030047
cmp dword [esp + 0xd54], 4
jl 0x10030076
push str.________bucket_sorting_..._n
push 0x10054e10
call fcn.10035ab3
add esp, 8
mov eax, dword [esp + 0xd5c]
cmp eax, ebx
je 0x1003008b
mov ecx, dword [esp + 0xd60]
push ecx
call eax
lea eax, [esi + 4]
mov ecx, 0x10000
mov edx, dword [eax - 4]
mov ebx, dword [eax]
add ebx, edx
mov dword [eax], ebx
add eax, 4
dec ecx
jne 0x10030093
mov eax, dword [esp + 0xd50]
xor edx, edx
mov dh, byte [ebp]
dec eax
cmp eax, 3
jl 0x1003013f
mov ebx, dword [esp + 0xd40]
xor ecx, ecx
mov ch, byte [eax + ebp]
mov cl, dh
mov edx, ecx
and ecx, 0xffff
lea edi, [esi + ecx*4]
mov ecx, dword [esi + ecx*4]
dec ecx
mov dword [edi], ecx
mov dword [ebx + ecx*4], eax
xor ecx, ecx
mov ch, byte [eax + ebp - 1]
mov cl, dh
mov edx, ecx
and ecx, 0xffff
lea edi, [esi + ecx*4]
mov ecx, dword [esi + ecx*4]
dec ecx
mov dword [edi], ecx
lea edi, [eax - 1]
mov dword [ebx + ecx*4], edi
xor ecx, ecx
mov ch, byte [eax + ebp - 2]
mov cl, dh
mov edx, ecx
and ecx, 0xffff
lea edi, [esi + ecx*4]
mov ecx, dword [esi + ecx*4]
dec ecx
mov dword [edi], ecx
lea edi, [eax - 2]
mov dword [ebx + ecx*4], edi
xor ecx, ecx
mov ch, byte [eax + ebp - 3]
mov cl, dh
mov edx, ecx
and ecx, 0xffff
lea edi, [esi + ecx*4]
mov ecx, dword [esi + ecx*4]
dec ecx
mov dword [edi], ecx
lea edi, [eax - 3]
sub eax, 4
mov dword [ebx + ecx*4], edi
cmp eax, 3
jge 0x100300bf
test eax, eax
jl 0x10030168
mov ebx, dword [esp + 0xd40]
xor ecx, ecx
mov ch, byte [eax + ebp]
mov cl, dh
mov edx, ecx
and ecx, 0xffff
lea edi, [esi + ecx*4]
mov ecx, dword [esi + ecx*4]
dec ecx
mov dword [edi], ecx
mov dword [ebx + ecx*4], eax
dec eax
jns 0x1003014a
xor edx, edx
mov ecx, 0x40
xor eax, eax
lea edi, [esp + 0x3c]
lea ebx, [esp + 0x13c]
rep stosd dword es:[edi], eax
mov dword [ebx], edx
inc edx
add ebx, 4
cmp edx, 0xff
jle 0x1003017e
mov ecx, 1
lea ecx, [ecx + ecx*2 + 1]
cmp ecx, 0x100
jle 0x10030191
mov eax, 0x55555556
imul ecx
mov eax, edx
shr eax, 0x1f
add edx, eax
mov ecx, edx
cmp ecx, 0xff
mov dword [esp + 0x20], ecx
mov dword [esp + 0x18], ecx
jg 0x100302bf
lea edi, [ecx*4]
mov ebp, edi
mov dword [esp + 0x1c], ebp
mov ecx, dword [esp + 0xd5c]
test ecx, ecx
je 0x100301f4
mov eax, dword [esp + 0x18]
mov ebx, 0x64
cdq
idiv ebx
cmp edx, 0x63
jne 0x100301f4
mov edx, dword [esp + 0xd60]
push edx
call ecx
mov ecx, dword [esp + ebp + 0x13c]
mov eax, ebp
sub eax, edi
mov dword [esp + 0x28], ecx
lea edx, [ecx + 1]
mov dword [esp + 0x24], eax
shl edx, 0xa
mov eax, ebp
mov ebx, dword [esp + 0x18]
mov edx, dword [edx + esi]
sub eax, edi
shl ecx, 0xa
sub edx, dword [ecx + esi]
mov ecx, dword [esp + eax + 0x13c]
mov eax, dword [esp + eax + 0x13c]
inc ecx
shl ecx, 0xa
shl eax, 0xa
mov ecx, dword [ecx + esi]
sub ecx, dword [eax + esi]
cmp ecx, edx
jbe 0x1003028d
mov eax, ebp
mov ecx, eax
sub ecx, edi
mov ecx, dword [esp + ecx + 0x13c]
mov dword [esp + eax + 0x13c], ecx
mov ecx, dword [esp + 0x20]
sub ebx, ecx
sub eax, edi
dec ecx
cmp ebx, ecx
jle 0x1003028d
mov ecx, eax
sub ecx, edi
mov dword [esp + 0x24], ecx
mov ecx, eax
sub ecx, edi
mov ebp, dword [esp + ecx + 0x13c]
mov ecx, dword [esp + ecx + 0x13c]
inc ebp
shl ebp, 0xa
shl ecx, 0xa
mov ebp, dword [esi + ebp]
sub ebp, dword [ecx + esi]
cmp ebp, edx
mov ebp, dword [esp + 0x1c]
ja 0x1003023f
mov edx, dword [esp + 0x28]
add ebp, 4
mov dword [esp + ebx*4 + 0x13c], edx
mov edx, dword [esp + 0x18]
inc edx
cmp ebp, 0x3fc
mov dword [esp + 0x18], edx
mov dword [esp + 0x1c], ebp
jle 0x100301ce
mov ecx, dword [esp + 0x20]
mov ebp, dword [esp + 0xd44]
cmp ecx, 1
jne 0x1003019d
xor eax, eax
mov dword [esp + 0x1c], eax
mov dword [esp + 0x18], eax
lea eax, [esp + 0x13c]
mov dword [esp + 0x20], eax
mov ecx, dword [esp + 0xd5c]
test ecx, ecx
je 0x10030303
mov eax, dword [esp + 0x18]
mov edi, 0x64
cdq
idiv edi
cmp edx, 0x63
jne 0x10030303
mov edx, dword [esp + 0xd60]
push edx
call ecx
mov eax, dword [esp + 0x20]
mov ebx, dword [eax]
xor eax, eax
mov dword [esp + 0x10], ebx
mov dword [esp + 0x14], eax
cmp eax, ebx
je 0x100303e6
shl ebx, 8
add ebx, eax
mov ebp, dword [esi + ebx*4]
test ebp, 0x200000
jne 0x100303cc
mov edi, dword [esi + ebx*4 + 4]
and ebp, 0xffdfffff
and edi, 0xffdfffff
dec edi
cmp edi, ebp
jle 0x100303cc
cmp dword [esp + 0xd54], 4
jl 0x10030379
mov edx, dword [esp + 0x1c]
mov eax, dword [esp + 0x14]
mov ecx, edi
sub ecx, ebp
inc ecx
push ecx
mov ecx, dword [esp + 0x14]
push edx
push eax
push ecx
push str.________qsort__0x_x__0x_x____done__d___this__d_n
push 0x10054e10
call fcn.10035ab3
add esp, 0x18
mov edx, dword [esp + 0xd58]
mov eax, dword [esp + 0xd50]
mov ecx, dword [esp + 0xd48]
push edx
mov edx, dword [esp + 0xd48]
push 2
push edi
push ebp
push eax
mov eax, dword [esp + 0xd54]
push ecx
push edx
push eax
call fcn.100306d0
mov ecx, dword [esp + 0x3c]
mov eax, dword [esp + 0xd78]
sub edi, ebp
add esp, 0x20
lea edx, [ecx + edi + 1]
mov ecx, dword [eax]
test ecx, ecx
mov dword [esp + 0x1c], edx
jl 0x100306bc
mov eax, dword [esi + ebx*4]
mov ebp, dword [esp + 0xd44]
or eax, 0x200000
mov dword [esi + ebx*4], eax
mov eax, dword [esp + 0x14]
mov ebx, dword [esp + 0x10]
inc eax
cmp eax, 0xff
mov dword [esp + 0x14], eax
jle 0x10030313
mov cl, byte [esp + ebx + 0x3c]
lea eax, [esp + ebx + 0x3c]
test cl, cl
mov dword [esp + 0x38], eax
je 0x10030413
push 0x3ee
call fcn.10027ea0
add esp, 4
lea ecx, [esi + ebx*4]
xor eax, eax
mov dword [esp + 0x30], ecx
mov edx, dword [ecx]
add eax, 4
and edx, 0xffdfffff
add ecx, 0x400
mov dword [esp + eax + 0x538], edx
mov edx, dword [ecx - 0x3fc]
and edx, 0xffdfffff
dec edx
cmp eax, 0x3fc
mov dword [esp + eax + 0x938], edx
jle 0x1003041c
mov eax, ebx
lea edx, [esp + ebx*4 + 0x53c]
shl eax, 0xa
add eax, esi
mov dword [esp + 0x28], edx
mov dword [esp + 0x34], eax
mov edi, dword [eax]
mov eax, dword [edx]
and edi, 0xffdfffff
cmp edi, eax
jge 0x100304dd
mov ecx, dword [esp + 0xd40]
lea eax, [ecx + edi*4]
mov dword [esp + 0x14], eax
mov ecx, dword [esp + 0x14]
mov ecx, dword [ecx]
dec ecx
jns 0x10030491
add ecx, dword [esp + 0xd50]
mov al, byte [ecx + ebp]
mov byte [esp + 0x2c], al
mov eax, dword [esp + 0x2c]
and eax, 0xff
cmp byte [esp + eax + 0x3c], 0
jne 0x100304cb
mov edx, dword [esp + eax*4 + 0x53c]
mov ebx, dword [esp + 0xd40]
lea eax, [esp + eax*4 + 0x53c]
mov dword [ebx + edx*4], ecx
mov ebx, dword [esp + 0x10]
inc edx
mov dword [eax], edx
mov edx, dword [esp + 0x28]
mov ecx, dword [esp + 0x14]
mov eax, dword [edx]
inc edi
add ecx, 4
cmp edi, eax
mov dword [esp + 0x14], ecx
jl 0x10030481
lea ecx, [ebx + 1]
lea edi, [esp + ebx*4 + 0x93c]
shl ecx, 0xa
mov dword [esp + 0x14], edi
mov edx, dword [ecx + esi]
lea eax, [ecx + esi]
and edx, 0xffdfffff
mov dword [esp + 0x24], eax
mov eax, dword [edi]
dec edx
cmp edx, eax
jle 0x1003056c
mov eax, dword [esp + 0xd40]
lea ecx, [eax + edx*4]
mov dword [esp + 0x10], ecx
mov eax, dword [esp + 0x10]
mov ecx, dword [eax]
dec ecx
jns 0x10030523
add ecx, dword [esp + 0xd50]
mov al, byte [ecx + ebp]
mov byte [esp + 0x2c], al
mov eax, dword [esp + 0x2c]
and eax, 0xff
mov bl, byte [esp + eax + 0x3c]
test bl, bl
jne 0x1003055a
mov edi, dword [esp + eax*4 + 0x93c]
mov ebx, dword [esp + 0xd40]
lea eax, [esp + eax*4 + 0x93c]
mov dword [ebx + edi*4], ecx
dec edi
mov dword [eax], edi
mov edi, dword [esp + 0x14]
mov ecx, dword [esp + 0x10]
mov eax, dword [edi]
dec edx
sub ecx, 4
cmp edx, eax
mov dword [esp + 0x10], ecx
jg 0x10030513
mov ecx, dword [esp + 0x28]
mov edi, dword [edi]
mov eax, dword [ecx]
lea edx, [eax - 1]
cmp edx, edi
je 0x10030598
test eax, eax
jne 0x1003058b
mov eax, dword [esp + 0xd50]
dec eax
cmp edi, eax
je 0x10030598
push 0x3ef
call fcn.10027ea0
add esp, 4
mov eax, dword [esp + 0x30]
mov ecx, 0x100
mov ebx, dword [eax]
add eax, 0x400
or ebx, 0x200000
dec ecx
mov dword [eax - 0x400], ebx
jne 0x100305a1
mov ecx, dword [esp + 0x38]
mov eax, dword [esp + 0x18]
cmp eax, 0xff
mov byte [ecx], 1
jge 0x1003066f
mov edx, dword [esp + 0x34]
mov eax, dword [esp + 0x24]
xor ecx, ecx
mov edx, dword [edx]
mov eax, dword [eax]
and edx, 0xffdfffff
and eax, 0xffdfffff
sub eax, edx
cmp eax, 0xfffe
jle 0x100305fc
inc ecx
mov edi, eax
sar edi, cl
cmp edi, 0xfffe
jg 0x100305ef
dec eax
mov edi, eax
mov dword [esp + 0x24], eax
test edi, edi
jl 0x10030659
mov eax, dword [esp + 0xd40]
add edx, edi
lea edx, [eax + edx*4]
mov dword [esp + 0x10], edx
mov eax, dword [esp + 0x10]
mov ebx, dword [esp + 0xd48]
mov edx, dword [eax]
mov eax, edi
sar eax, cl
cmp edx, 0x22
mov word [ebx + edx*2], ax
jge 0x10030645
mov ebx, dword [esp + 0xd50]
add edx, ebx
mov ebx, dword [esp + 0xd48]
mov word [ebx + edx*2], ax
mov edx, dword [esp + 0x10]
dec edi
sub edx, 4
test edi, edi
mov dword [esp + 0x10], edx
jge 0x10030617
mov eax, dword [esp + 0x24]
sar eax, cl
cmp eax, 0xffff
jle 0x1003066f
push 0x3ea
call fcn.10027ea0
add esp, 4
mov eax, dword [esp + 0x18]
mov edx, dword [esp + 0x20]
inc eax
add edx, 4
cmp eax, 0xff
mov dword [esp + 0x18], eax
mov dword [esp + 0x20], edx
jle 0x100302dd
cmp dword [esp + 0xd54], 4
jl 0x100306bc
mov ecx, dword [esp + 0xd50]
mov eax, dword [esp + 0x1c]
mov edx, ecx
sub edx, eax
push edx
push eax
push ecx
push str._________d_pointers___d_sorted___d_scanned_n
push 0x10054e10
call fcn.10035ab3
add esp, 0x14
pop edi
pop esi
pop ebp
pop ebx
add esp, 0xd2c
ret