Function at 0x59d200
Capabilities:
Encrypt data using rc4 prga
Resolve function by parsing pe exports

Disassembly:
mov ecx, dword fs:[0x14]
mov ecx, dword [ecx]
cmp esp, dword [ecx + 8]
jbe 0x59d5b7
sub esp, 0x50
mov eax, dword [esp + 0x60]
shl eax, 6
movzx edx, byte [esp + 0x6c]
test dl, dl
je 0x59d22c
or eax, 0x20
mov edx, dword [esp + 0x64]
cmp edx, 0x1f
jl 0x59d2b0
mov ebx, dword [esp + 0x58]
inc ebx
mov ebp, dword [esp + 0x5c]
cmp ebp, ebx
jb 0x59d248
mov ecx, dword [esp + 0x54]
jmp 0x59d28b
mov byte [esp + 0x23], al
mov eax, dword [esp + 0x54]
mov dword [esp], eax
mov dword [esp + 4], ebx
mov dword [esp + 8], ebp
mov dword [esp + 0xc], 1
lea eax, [0x66c440]
mov dword [esp + 0x10], eax
call fcn.0044acd0
mov eax, dword [esp + 0x14]
mov ebx, dword [esp + 0x18]
mov ecx, dword [esp + 0x1c]
mov edx, dword [esp + 0x64]
mov ebp, ecx
mov ecx, eax
movzx eax, byte [esp + 0x23]
mov dword [esp + 0x34], ebx
or eax, 0x1f
mov byte [ebx + ecx - 1], al
mov eax, edx
sar edx, 0x1f
mov dword [esp + 0x2c], edx
mov esi, edx
mov edi, eax
xor eax, eax
mov dword [esp + 0x24], eax
mov eax, edi
jmp 0x59d475
or eax, edx
mov edx, dword [esp + 0x58]
inc edx
mov ebx, dword [esp + 0x5c]
cmp ebx, edx
jb 0x59d2c5
mov ecx, dword [esp + 0x54]
jmp 0x59d304
mov byte [esp + 0x23], al
mov eax, dword [esp + 0x54]
mov dword [esp], eax
mov dword [esp + 4], edx
mov dword [esp + 8], ebx
mov dword [esp + 0xc], 1
lea eax, [0x66c440]
mov dword [esp + 0x10], eax
call fcn.0044acd0
mov eax, dword [esp + 0x14]
mov edx, dword [esp + 0x18]
mov ecx, dword [esp + 0x1c]
mov ebx, ecx
mov ecx, eax
movzx eax, byte [esp + 0x23]
mov byte [edx + ecx - 1], al
mov eax, dword [esp + 0x68]
cmp eax, 0x80
jl 0x59d31c
mov ebp, eax
mov esi, 1
jmp 0x59d36b
inc edx
cmp ebx, edx
jae 0x59d353
mov dword [esp], ecx
mov dword [esp + 4], edx
mov dword [esp + 8], ebx
mov dword [esp + 0xc], 1
lea eax, [0x66c440]
mov dword [esp + 0x10], eax
call fcn.0044acd0
mov ecx, dword [esp + 0x14]
mov edx, dword [esp + 0x18]
mov ebx, dword [esp + 0x1c]
mov eax, dword [esp + 0x68]
mov byte [edx + ecx - 1], al
mov dword [esp + 0x70], ecx
mov dword [esp + 0x74], edx
mov dword [esp + 0x78], ebx
add esp, 0x50
ret
inc esi
sar eax, 8
cmp eax, 0xff
jg 0x59d367
lea eax, [edx + 1]
cmp ebx, eax
jae 0x59d3b3
mov dword [esp + 0x28], esi
mov dword [esp], ecx
mov dword [esp + 4], eax
mov dword [esp + 8], ebx
mov dword [esp + 0xc], 1
lea eax, [0x66c440]
mov dword [esp + 0x10], eax
call fcn.0044acd0
mov ecx, dword [esp + 0x14]
mov eax, dword [esp + 0x18]
mov ebx, dword [esp + 0x1c]
mov ebp, dword [esp + 0x68]
mov esi, dword [esp + 0x28]
or esi, 0xffffff80
xchg esi, ebx
mov byte [eax + ecx - 1], bl
xchg esi, ebx
nop
mov edx, ebp
mov esi, 1
jmp 0x59d3cc
inc esi
sar ebp, 8
cmp ebp, 0xff
jg 0x59d3c8
jmp 0x59d3de
mov byte [eax + edi - 1], dl
mov edx, ebp
mov ecx, edi
test esi, esi
jle 0x59d44a
lea ebp, [esi - 1]
mov esi, ebp
shl ebp, 3
cmp ebp, 0x20
sbb edi, edi
inc eax
xchg edi, ebx
not ebx
xchg edi, ebx
or ebp, edi
mov edi, ecx
mov ecx, ebp
mov ebp, edx
sar edx, cl
cmp ebx, eax
jae 0x59d3d6
mov dword [esp + 0x48], esi
mov dword [esp + 0x44], edx
mov dword [esp], edi
mov dword [esp + 4], eax
mov dword [esp + 8], ebx
mov dword [esp + 0xc], 1
lea eax, [0x66c440]
mov dword [esp + 0x10], eax
call fcn.0044acd0
mov ecx, dword [esp + 0x14]
mov eax, dword [esp + 0x18]
mov ebx, dword [esp + 0x1c]
mov edx, dword [esp + 0x44]
mov ebp, dword [esp + 0x68]
mov esi, dword [esp + 0x48]
mov edi, ecx
jmp 0x59d3d6
mov edx, eax
jmp 0x59d357
shr eax, 7
mov ebx, edx
shl edx, 0x19
or eax, edx
sar ebx, 7
mov edx, dword [esp + 0x24]
inc edx
mov esi, dword [esp + 0x2c]
mov edi, dword [esp + 0x64]
mov dword [esp + 0x24], edx
mov edx, ebx
mov ebx, dword [esp + 0x34]
test edx, edx
xchg edi, ebx
setg bl
xchg edi, ebx
test eax, eax
xchg esi, ebx
seta bl
xchg esi, ebx
test edx, edx
sete bl
and ebx, esi
or edi, ebx
xchg edi, eax
test al, al
xchg edi, eax
jne 0x59d451
mov eax, dword [esp + 0x24]
dec eax
mov edx, dword [esp + 0x64]
mov esi, dword [esp + 0x2c]
mov ebx, dword [esp + 0x34]
jmp 0x59d4c0
mov byte [esi + ecx - 1], dl
mov edx, edi
lea edi, [ebx - 1]
mov eax, edi
mov ebp, edx
mov ebx, esi
mov edx, dword [esp + 0x64]
mov esi, dword [esp + 0x2c]
test eax, eax
jl 0x59d5ae
mov dword [esp + 0x30], eax
mov dword [esp + 0x4c], ecx
mov dword [esp + 0x48], ebx
mov dword [esp + 0x38], ebp
lea edi, [eax + eax*2]
lea ebp, [eax + edi*2]
mov dword [esp + 0x44], ebp
cmp ebp, 0x20
sbb ebx, ebx
lea edi, [eax + edi*2 - 0x20]
mov dword [esp + 0x40], edi
cmp edi, 0x20
sbb eax, eax
shr ebp, 5
cmp ebp, 1
sbb ebp, ebp
mov dword [esp + 0x3c], ebp
xchg edi, ebx
neg ebx
xchg edi, ebx
cmp edi, 0x20
sbb ebp, ebp
mov ecx, edi
mov edi, esi
shl esi, cl
and esi, ebp
mov ecx, dword [esp + 0x44]
mov ebp, edx
shr edx, cl
and edx, ebx
or edx, esi
not eax
mov ecx, dword [esp + 0x40]
or ecx, eax
mov eax, edi
sar edi, cl
mov ebx, dword [esp + 0x3c]
xor ebx, 0xffffffff
and edi, ebx
or edi, edx
mov edx, edi
and edi, 0x7f
mov ebx, dword [esp + 0x30]
test ebx, ebx
je 0x59d548
or edx, 0xffffff80
jmp 0x59d54a
mov edx, edi
mov esi, dword [esp + 0x48]
inc esi
mov edi, dword [esp + 0x38]
cmp edi, esi
jb 0x59d560
mov ecx, dword [esp + 0x4c]
jmp 0x59d4a9
mov byte [esp + 0x22], dl
mov eax, dword [esp + 0x4c]
mov dword [esp], eax
mov dword [esp + 4], esi
mov dword [esp + 8], edi
mov dword [esp + 0xc], 1
lea eax, [0x66c440]
mov dword [esp + 0x10], eax
call fcn.0044acd0
mov ecx, dword [esp + 0x14]
mov esi, dword [esp + 0x18]
mov ebp, dword [esp + 0x1c]
mov eax, dword [esp + 0x2c]
movzx edx, byte [esp + 0x22]
mov ebx, dword [esp + 0x30]
mov edi, ebp
mov ebp, dword [esp + 0x64]
jmp 0x59d4a9
mov edx, ebx
mov ebx, ebp
jmp 0x59d308
call fcn.004626a0
jmp fcn.0059d200