Function at 0x417620
Capabilities:
Encrypt data using rc4 ksa

Disassembly:
mov eax, dword [esp + 0x18]
sub esp, 0xd2c
cmp eax, 4
jl 0x417641
push str.________main_sort_initialise_..._n
push 0x433ca0
call fcn.0041c17e
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 0x417659
mov eax, dword [esp + 0xd50]
mov ebp, dword [esp + 0xd44]
xor ecx, ecx
dec eax
mov ch, byte [ebp]
cmp eax, 3
jl 0x4176e7
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 0x417685
cmp eax, ebx
jl 0x417711
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 0x4176f5
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 0x417727
cmp dword [esp + 0xd54], 4
jl 0x417756
push str.________bucket_sorting_..._n
push 0x433ca0
call fcn.0041c17e
add esp, 8
mov eax, dword [esp + 0xd5c]
cmp eax, ebx
je 0x41776b
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 0x417773
mov eax, dword [esp + 0xd50]
xor edx, edx
mov dh, byte [ebp]
dec eax
cmp eax, 3
jl 0x41781f
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 0x41779f
test eax, eax
jl 0x417848
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 0x41782a
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 0x41785e
mov ecx, 1
lea ecx, [ecx + ecx*2 + 1]
cmp ecx, 0x100
jle 0x417871
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 0x41799f
lea edi, [ecx*4]
mov ebp, edi
mov dword [esp + 0x1c], ebp
mov ecx, dword [esp + 0xd5c]
test ecx, ecx
je 0x4178d4
mov eax, dword [esp + 0x18]
mov ebx, 0x64
cdq
idiv ebx
cmp edx, 0x63
jne 0x4178d4
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 0x41796d
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 0x41796d
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 0x41791f
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 0x4178ae
mov ecx, dword [esp + 0x20]
mov ebp, dword [esp + 0xd44]
cmp ecx, 1
jne 0x41787d
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 0x4179e3
mov eax, dword [esp + 0x18]
mov edi, 0x64
cdq
idiv edi
cmp edx, 0x63
jne 0x4179e3
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 0x417ac6
shl ebx, 8
add ebx, eax
mov ebp, dword [esi + ebx*4]
test ebp, 0x200000
jne 0x417aac
mov edi, dword [esi + ebx*4 + 4]
and ebp, 0xffdfffff
and edi, 0xffdfffff
dec edi
cmp edi, ebp
jle 0x417aac
cmp dword [esp + 0xd54], 4
jl 0x417a59
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 0x433ca0
call fcn.0041c17e
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.00417db0
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 0x417d9c
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 0x4179f3
mov cl, byte [esp + ebx + 0x3c]
lea eax, [esp + ebx + 0x3c]
test cl, cl
mov dword [esp + 0x38], eax
je 0x417af3
push 0x3ee
call fcn.0040f580
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 0x417afc
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 0x417bbd
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 0x417b71
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 0x417bab
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 0x417b61
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 0x417c4c
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 0x417c03
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 0x417c3a
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 0x417bf3
mov ecx, dword [esp + 0x28]
mov edi, dword [edi]
mov eax, dword [ecx]
lea edx, [eax - 1]
cmp edx, edi
je 0x417c78
test eax, eax
jne 0x417c6b
mov eax, dword [esp + 0xd50]
dec eax
cmp edi, eax
je 0x417c78
push 0x3ef
call fcn.0040f580
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 0x417c81
mov ecx, dword [esp + 0x38]
mov eax, dword [esp + 0x18]
cmp eax, 0xff
mov byte [ecx], 1
jge 0x417d4f
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 0x417cdc
inc ecx
mov edi, eax
sar edi, cl
cmp edi, 0xfffe
jg 0x417ccf
dec eax
mov edi, eax
mov dword [esp + 0x24], eax
test edi, edi
jl 0x417d39
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 0x417d25
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 0x417cf7
mov eax, dword [esp + 0x24]
sar eax, cl
cmp eax, 0xffff
jle 0x417d4f
push 0x3ea
call fcn.0040f580
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 0x4179bd
cmp dword [esp + 0xd54], 4
jl 0x417d9c
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 0x433ca0
call fcn.0041c17e
add esp, 0x14
pop edi
pop esi
pop ebp
pop ebx
add esp, 0xd2c
ret