Function at 0x5ce820
Capabilities:
Encrypt data using rc4 ksa

Disassembly:
sub esp, 0xc3c
push ebx
push ebp
push esi
mov ebp, ecx
xor ebx, ebx
push edi
push ebx
mov dword [ebp + 0x1f80], ebx
mov dword [ebp + 0x9e4], ebx
mov dword [ebp + 0x91c], ebx
mov dword [ebp + 0x920], ebx
mov dword [ebp + 0x924], ebx
call fcn.00424750
push ebx
mov ecx, ebp
call fcn.00424770
mov ecx, ebp
call fcn.00424290
test eax, eax
je 0x5ce878
mov eax, dword [ebp]
mov ecx, ebp
call dword [eax + 0x60]
test eax, eax
je 0x5ce878
mov ecx, ebp
call fcn.00424820
mov ecx, ebp
call fcn.00424290
test eax, eax
je 0x5ce893
mov ecx, ebp
call fcn.00424810
push 1
mov ecx, ebp
call fcn.00424620
mov ecx, dword [0x683330]
mov ecx, dword [ecx + 0x1614]
call fcn.00426950
lea ecx, [ebp + 0x109e]
mov edx, 0x77ec04
xor eax, eax
mov byte [ecx], 0
mov dword [edx], ebx
mov byte [eax + 0x77ed25], 0
mov byte [eax + 0x77efa1], 0
mov byte [eax + 0x77efb9], 0
inc ecx
add edx, 4
inc eax
lea esi, [eax + 1]
cmp esi, 9
jl 0x5ce8b1
mov ecx, ebp
mov dword [0x6833b8], ebx
mov dword [0x6833bc], ebx
mov dword [0x77efc8], ebx
mov dword [0x77efcc], ebx
mov dword [0x77efd0], ebx
mov dword [0x6833c0], ebx
mov byte [0x77efdd], 0
mov dword [0x77f000], ebx
mov dword [0x77effc], ebx
mov dword [0x77eff8], ebx
call fcn.005ca030
cmp eax, 1
jne 0x5ce93f
mov ecx, ebp
call fcn.005ca050
cmp al, 8
jne 0x5ce93f
push 0x3fc00000
mov ecx, ebp
call fcn.004247c0
mov ecx, ebp
call fcn.004247d0
mov ecx, 0xec
xor eax, eax
lea edi, [esp + 0x60]
rep stosd dword es:[edi], eax
mov ecx, 0x148
lea edi, [esp + 0x72c]
rep stosd dword es:[edi], eax
mov ecx, ebp
call fcn.005d0f10
mov edi, eax
or ecx, 0xffffffff
xor eax, eax
lea edx, [esp + 0x309]
repne scasb al, byte es:[edi]
not ecx
sub edi, ecx
mov eax, ecx
mov esi, edi
mov edi, edx
mov edx, dword [ebp]
shr ecx, 2
rep movsd dword es:[edi], dword [esi]
mov ecx, eax
and ecx, 3
rep movsb byte es:[edi], byte [esi]
mov ecx, ebp
call dword [edx + 0x60]
test eax, eax
je 0x5ce9a0
mov byte [esp + 0x308], 1
jmp 0x5cea86
mov eax, dword [ebp]
mov ecx, ebp
call dword [eax + 0x58]
test eax, eax
je 0x5cea4b
mov ecx, ebp
call fcn.00424280
test eax, eax
jne 0x5ce9c8
pop edi
pop esi
pop ebp
pop ebx
add esp, 0xc3c
ret 4
mov esi, dword [ebp + 0x28]
mov ecx, ebp
add esi, 0xd44
call fcn.00424280
push eax
push esi
lea ecx, [esp + 0x51c]
push str._s_s.scx
push ecx
call fcn.00613634
lea edx, [esp + 0x624]
lea eax, [esp + 0x524]
push edx
push eax
call fcn.0061401c
add esp, 0x18
cmp eax, 0xffffffff
mov ecx, ebp
jne 0x5cea20
call fcn.00424280
push eax
lea ecx, [esp + 0x414]
push str._s.scn
push ecx
jmp 0x5cea33
call fcn.00424280
push eax
lea edx, [esp + 0x414]
push str._s.scx
push edx
call fcn.00613634
lea eax, [esp + 0x41c]
add esp, 0xc
mov dword [esp + 0x2f8], eax
jmp 0x5cea86
lea ecx, [esp + 0x72c]
mov dword [esp + 0x2fc], ecx
mov ecx, ebp
call fcn.005d0f00
mov ecx, ebp
mov word [esp + 0x300], ax
call fcn.004242b0
mov ecx, ebp
mov word [esp + 0x302], ax
call fcn.004242c0
mov word [esp + 0x304], ax
mov word [esp + 0x2f4], bx
xor eax, eax
lea esi, [esp + 0x2bc]
lea edx, [esp + 0x2d0]
lea ecx, [esp + 0x60]
mov byte [esp + eax + 0x2a9], 0xff
mov byte [ecx], 0
mov dword [edx], eax
mov byte [esp + eax + 0x2b2], 1
mov word [esi], 0xffff
inc eax
add ecx, 0x41
add edx, 4
add esi, 2
cmp eax, 9
jl 0x5ceaa2
mov edx, dword [ebp]
mov ecx, ebp
call dword [edx + 0x60]
test eax, eax
je 0x5ceaf8
push 1
push ebx
mov ecx, ebp
call fcn.0041dc20
cmp eax, ebx
mov dword [esp + 0x20], eax
jne 0x5ceb13
pop edi
pop esi
pop ebp
xor eax, eax
pop ebx
add esp, 0xc3c
ret 4
mov eax, dword [ebp]
mov ecx, ebp
call dword [eax + 0x58]
test eax, eax
je 0x5ceb0f
mov ecx, dword [esp + 0x2f8]
push ebx
push ecx
jmp 0x5ceada
mov dword [esp + 0x20], ebx
xor esi, esi
mov ecx, 9
or eax, 0xffffffff
lea edi, [esp + 0x3c]
rep stosd dword es:[edi], eax
push ebx
push esi
mov ecx, ebp
call fcn.00424d00
inc esi
cmp esi, 9
jl 0x5ceb23
mov edx, dword [ebp]
mov ecx, ebp
mov dword [esp + 0x1c], ebx
call dword [edx + 0x5c]
test eax, eax
je 0x5ceb58
mov eax, dword [ebp]
mov ecx, ebp
call dword [eax + 0x60]
test eax, eax
jne 0x5ceb58
mov dword [esp + 0x10], 8
jmp 0x5ceb63
mov ecx, ebp
call fcn.004244f0
mov dword [esp + 0x10], eax
mov eax, dword [esp + 0x10]
mov ebx, 1
cmp eax, ebx
jl 0x5cec40
mov ecx, dword [ebp + 0x1b8]
push ebx
call fcn.00430bd0
cmp eax, 2
jne 0x5ceba4
lea ecx, [ebx - 1]
push ecx
mov ecx, ebp
call fcn.005d11d0
dec eax
mov ecx, dword [esp + eax*4 + 0x3c]
lea eax, [esp + eax*4 + 0x3c]
cmp ecx, 0xffffffff
jne 0x5cec27
jmp 0x5cec1c
mov ecx, dword [ebp + 0x1b8]
push ebx
call fcn.00430bd0
cmp eax, 4
jne 0x5cec33
lea eax, [esp + 0x3c]
xor edi, edi
mov dword [esp + 0x18], eax
mov ecx, dword [esp + 0x18]
cmp dword [ecx], 0xffffffff
jne 0x5cebf6
mov esi, 1
mov ecx, dword [ebp + 0x1b8]
push esi
call fcn.00430bd0
cmp eax, 2
jne 0x5cebee
lea edx, [esi - 1]
mov ecx, ebp
push edx
call fcn.005d11d0
dec eax
cmp eax, edi
je 0x5cebf6
inc esi
cmp esi, 9
jge 0x5cec09
jmp 0x5cebcd
mov ecx, dword [esp + 0x18]
inc edi
add ecx, 4
cmp edi, 8
mov dword [esp + 0x18], ecx
jge 0x5cec33
jmp 0x5cebbf
lea eax, [edi + 1]
lea ecx, [ebx - 1]
push eax
push ecx
mov ecx, ebp
call fcn.005d11e0
lea eax, [esp + edi*4 + 0x3c]
mov ecx, dword [esp + 0x1c]
mov dword [eax], ecx
inc ecx
mov dword [esp + 0x1c], ecx
mov edx, dword [eax]
mov ecx, ebp
inc edx
push edx
push ebx
call fcn.00424d00
mov eax, dword [esp + 0x10]
inc ebx
cmp ebx, eax
jle 0x5ceb74
mov ecx, dword [0x6833d0]
call fcn.004242a0
test eax, eax
je 0x5cec5c
mov ecx, dword [0x683330]
call fcn.00430a90
jmp 0x5cec62
call dword [sym.imp.WINMM.dll_timeGetTime]
push eax
call fcn.006131b3
add esp, 4
mov ecx, ebp
call fcn.005d2cd0
mov byte [esp + 0x17], 0
xor esi, esi
mov ecx, dword [ebp + 0x1b8]
lea edi, [esi + 1]
push edi
call fcn.00430bd0
cmp eax, 2
je 0x5cec92
cmp eax, 4
jne 0x5ceca1
cmp byte [esp + esi + 0x2b2], 0x1e
je 0x5ceca1
mov byte [esp + 0x17], 1
mov esi, edi
cmp esi, 8
jl 0x5cec79
lea eax, [esp + 0x2bc]
lea ecx, [esp + 0x2d4]
lea edx, [esp + 0x60]
xor ebx, ebx
mov dword [esp + 0x28], eax
mov dword [esp + 0x2c], ecx
mov dword [esp + 0x10], edx
lea edi, [ebx + 1]
mov esi, 1
mov dword [esp + 0x38], edi
push esi
mov ecx, ebp
call fcn.00424cf0
cmp eax, edi
je 0x5ceceb
inc esi
cmp esi, 9
jl 0x5cecd4
jmp 0x5cf03e
test esi, esi
mov dword [esp + 0x1c], esi
je 0x5cf03e
mov ecx, dword [ebp + 0x1b8]
push esi
call fcn.00430bd0
dec esi
mov ecx, ebp
push esi
mov dword [esp + 0x28], eax
mov dword [esp + 0x38], esi
call fcn.005d11d0
mov edi, eax
mov eax, dword [esp + 0x24]
dec edi
cmp eax, 4
mov dword [esp + 0x30], edi
je 0x5ced47
mov eax, dword [0x683370]
cmp eax, 1
je 0x5ced47
cmp eax, 2
jne 0x5ced37
test ebx, ebx
jg 0x5ced47
lea eax, [esp + ebx + 0x2a9]
mov dword [esp + 0x18], eax
mov byte [eax], 0
jmp 0x5ced55
lea eax, [esp + ebx + 0x2a9]
mov dword [esp + 0x18], eax
mov byte [eax], 4
mov eax, dword [ebp]
mov ecx, ebp
call dword [eax + 0x60]
test eax, eax
je 0x5ced6d
mov ecx, dword [esp + 0x20]
push edi
call fcn.004d6850
jmp 0x5ced75
push esi
mov ecx, ebp
call fcn.005d1170
cmp al, 0x1e
mov byte [esp + ebx + 0x2b2], al
jne 0x5cedec
call fcn.006131bd
cdq
mov ecx, 0x12
idiv ecx
inc edx
cmp edx, ecx
jle 0x5ced97
mov edx, 1
mov byte [esp + ebx + 0x2b2], dl
mov byte [esp + 0x16], 0
xor esi, esi
mov al, byte [esp + 0x17]
test al, al
je 0x5cedc3
push ebx
mov ecx, ebp
call fcn.00424500
push esi
mov ecx, ebp
mov edi, eax
call fcn.00424500
cmp edi, eax
jne 0x5cedda
mov dl, byte [esp + ebx + 0x2b2]
mov al, byte [esp + esi + 0x2b2]
cmp dl, al
jne 0x5cedda
mov byte [esp + 0x16], 1
inc esi
cmp esi, 8
jl 0x5ceda5
mov al, byte [esp + 0x16]
test al, al
jne 0x5ced80
mov edi, dword [esp + 0x30]
mov ecx, ebp
call fcn.004242a0
test eax, eax
je 0x5cee23
cmp dword [esp + 0x24], 2
jne 0x5cee23
mov eax, dword [esp + 0x1c]
mov ecx, dword [ebp + 0x1b8]
push 0x40
push eax
call fcn.004311c0
mov ecx, dword [esp + 0x14]
push eax
push ecx
call fcn.00613360
add esp, 0xc
jmp 0x5cf01e
mov edx, dword [ebp]
mov ecx, ebp
call dword [edx + 0x60]
test eax, eax
je 0x5cee38
mov eax, dword [esp + 0x18]
cmp byte [eax], 0
je 0x5cee59
mov eax, dword [ebp]
mov ecx, ebp
call dword [eax + 0x60]
test eax, eax
jne 0x5cee6f
mov edx, dword [ebp]
mov ecx, ebp
call dword [edx + 0x5c]
test eax, eax
je 0x5cee6f
mov eax, dword [esp + 0x18]
cmp byte [eax], 0
jne 0x5cee6f
mov ecx, dword [ebp + 0x20]
call fcn.0046b4e0
test eax, eax
je 0x5ceec4
mov ecx, dword [ebp + 0x20]
call fcn.0046b4e0
jmp 0x5ceea3
mov eax, dword [ebp]
mov ecx, ebp
call dword [eax + 0x60]
test eax, eax
jne 0x5cee87
mov edx, dword [ebp]
mov ecx, ebp
call dword [edx + 0x58]
test eax, eax
je 0x5ceec4
mov ecx, dword [esp + 0x20]
push edi
call fcn.004d6810
test eax, eax
je 0x5ceec4
mov eax, dword [esp + 0x30]
mov ecx, dword [esp + 0x20]
push eax
call fcn.004d6810
mov edi, eax
or ecx, 0xffffffff
xor eax, eax
repne scasb al, byte es:[edi]
not ecx
sub edi, ecx
mov edx, ecx
mov esi, edi
mov edi, dword [esp + 0x10]
shr ecx, 2
rep movsd dword es:[edi], dword [esi]
mov ecx, edx
and ecx, 3
rep movsb byte es:[edi], byte [esi]
mov eax, dword [esp + 0x10]
cmp byte [eax], 0
jne 0x5cf009
mov ecx, dword [esp + 0x18]
lea edi, [esp + ebx + 0x2b2]
cmp byte [ecx], 0
jne 0x5cef34
mov ecx, dword [ebp + 0x20]
call fcn.0046b4e0
test eax, eax
jne 0x5cef06
mov eax, dword [esp + 0x10]
mov edx, dword [ebp]
push 0x41
push eax
push 0x286d
mov ecx, ebp
call dword [edx + 0x28]
jmp 0x5cf009
mov ecx, dword [ebp + 0x20]
call fcn.0046b4e0
mov edi, eax
or ecx, 0xffffffff
xor eax, eax
repne scasb al, byte es:[edi]
not ecx
sub edi, ecx
mov edx, ecx
mov esi, edi
mov edi, dword [esp + 0x10]
shr ecx, 2
rep movsd dword es:[edi], dword [esi]
mov ecx, edx
and ecx, 3
rep movsb byte es:[edi], byte [esi]
jmp 0x5cf009
mov al, byte [edi]
movsx ecx, al
cmp al, 0xd
lea ecx, [ecx + ecx*4]
lea esi, [ecx*4 - 0x13]
jle 0x5cef4d
add esi, 0x8c
mov edx, dword [ebp]
mov ecx, ebp
call dword [edx + 0x60]
test eax, eax
je 0x5cef80
movsx ecx, byte [edi]
mov eax, dword [esp + 0x10]
mov ebx, dword [ebp]
push 0x41
push eax
push ecx
mov ecx, ebp
call fcn.005d2bf0
lea edx, [eax + esi + 0x1130]
mov ecx, ebp
push edx
call dword [ebx + 0x28]
jmp 0x5cf009
mov ebx, dword [esp + 0x34]
mov ecx, ebp
push ebx
call fcn.005d1240
mov cl, byte [eax]
push ebx
test cl, cl
mov ecx, ebp
je 0x5cefbd
call fcn.005d1240
mov edi, eax
or ecx, 0xffffffff
xor eax, eax
repne scasb al, byte es:[edi]
not ecx
sub edi, ecx
mov eax, ecx
mov esi, edi
mov edi, dword [esp + 0x10]
shr ecx, 2
rep movsd dword es:[edi], dword [esi]
mov ecx, eax
and ecx, 3
rep movsb byte es:[edi], byte [esi]
jmp 0x5cf009
call fcn.005d1210
test eax, eax
jne 0x5cefea
movsx edx, byte [edi]
mov ecx, dword [esp + 0x10]
mov ebx, dword [ebp]
push 0x41
push ecx
push edx
mov ecx, ebp
call fcn.005d2bf0
lea eax, [eax + esi + 0x1130]
mov ecx, ebp
push eax
call dword [ebx + 0x28]
jmp 0x5cf009
mov ecx, dword [esp + 0x10]
mov edi, dword [ebp]
push 0x41
push ecx
push ebx
mov ecx, ebp
call fcn.005d1210
lea edx, [eax + esi + 0x1130]
mov ecx, ebp
push edx
call dword [edi + 0x28]
mov eax, dword [esp + 0x10]
mov ecx, dword [esp + 0x1c]
push eax
push ecx
mov ecx, dword [ebp + 0x1b8]
call fcn.004319b0
mov eax, dword [esp + 0x30]
mov ecx, dword [esp + 0x2c]
mov edi, dword [esp + 0x38]
lea edx, [eax + 1]
mov dword [ecx], edx
mov edx, dword [esp + 0x28]
mov word [edx], ax
inc word [esp + 0x2f4]
mov esi, dword [esp + 0x10]
mov edx, dword [esp + 0x2c]
mov ecx, dword [esp + 0x28]
mov ebx, edi
add esi, 0x41
add edx, 4
add ecx, 2
cmp ebx, 8
mov dword [esp + 0x10], esi
mov dword [esp + 0x2c], edx
mov dword [esp + 0x28], ecx
jl 0x5cecc8
mov ecx, dword [esp + 0x20]
test ecx, ecx
je 0x5cf079
mov eax, dword [ecx]
push 1
call dword [eax + 4]
cmp word [esp + 0x2f4], 0
je 0x5ceae9
mov ecx, dword [ebp + 0x424]
xor esi, esi
cmp word [ecx + 0x48], si
jle 0x5cf0ad
push esi
mov ecx, ebp
call fcn.00424d20
mov edx, dword [ebp + 0x424]
inc esi
movsx eax, word [edx + 0x48]
cmp esi, eax
jl 0x5cf096
mov eax, dword [ebp + 0x84]
test eax, eax
je 0x5cf0bb
mov byte [eax + 5], 1
mov ecx, ebp
call fcn.004242a0
test eax, eax
je 0x5cf0d4
mov ecx, dword [ebp + 0x1b8]
call fcn.00430ac0
push eax
jmp 0x5cf0d6
push 1
mov ecx, ebp
call fcn.00424cf0
mov ecx, dword [ebp + 0x424]
push eax
lea eax, [esp + 0x64]
mov edx, dword [ecx]
push eax
call dword [edx + 0xe8]
and eax, 0xff
mov ebx, eax
je 0x5cf111
mov ecx, dword [ebp + 0x424]
cmp word [ecx + 0x48], 2
jge 0x5cf111
mov edx, dword [ecx]
xor ebx, ebx
call dword [edx + 0xcc]
mov eax, dword [ebp + 0x84]
test eax, eax
je 0x5cf11f
mov byte [eax + 5], 0
test ebx, ebx
je 0x5ceae9
mov ecx, dword [ebp + 0x424]
mov eax, dword [ecx]
call dword [eax + 0x10c]
push 0
mov ecx, ebp
call fcn.00424750
mov ecx, ebp
call fcn.00424310
push eax
mov ecx, ebp
call fcn.00424770
mov ecx, ebp
call fcn.005d0db0
test eax, eax
je 0x5cf1cb
mov ecx, ebp
call fcn.005d0db0
cmp eax, 3
je 0x5cf1aa
mov eax, dword [ebp + 0x424]
mov esi, 1
cmp word [eax + 0x48], si
jle 0x5cf1aa
mov ecx, dword [eax + 0x4c]
mov ecx, dword [ecx + esi*4]
call fcn.005d5880
test eax, eax
jne 0x5cf19b
mov edx, dword [ebp + 0x424]
mov eax, dword [edx + 0x4c]
mov ecx, dword [eax + esi*4]
mov ecx, dword [ecx + 0x88]
call fcn.005f6ba0
mov eax, dword [ebp + 0x424]
inc esi
movsx edx, word [eax + 0x48]
cmp esi, edx
jl 0x5cf175
mov ecx, ebp
call fcn.005d0db0
cmp eax, 2
je 0x5cf1c2
mov ecx, ebp
call fcn.005d0db0
cmp eax, 3
jne 0x5cf1cb
push 0
mov ecx, ebp
call fcn.00424770
mov ecx, ebp
call fcn.004242a0
test eax, eax
mov ecx, ebp
je 0x5cf1df
call fcn.00424530
jmp 0x5cf1e4
call fcn.00424520
mov byte [esp + 0x24], al
mov eax, dword [esp + 0x24]
and eax, 0xff
dec eax
je 0x5cf20f
dec eax
je 0x5cf203
mov dword [0x66a574], 0x9c4
jmp 0x5cf219
mov dword [0x66a574], 0x1d4c
jmp 0x5cf219
mov dword [0x66a574], 0x1388
mov esi, 1
lea edi, [ebp + 0x1dd4]
mov ecx, dword [ebp + 0x1b8]
push esi
call fcn.00430bd0
mov dword [edi], eax
inc esi
add edi, 4
cmp esi, 9
jl 0x5cf224
mov ecx, ebp
call fcn.005cf260
neg eax
sbb eax, eax
pop edi
pop esi
and eax, ebx
pop ebp
pop ebx
add esp, 0xc3c
ret 4