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

Disassembly:
push edi
push esi
push ebp
push ebx
sub esp, 0x324
mov edi, edx
mov esi, dword [eax + 0x50]
mov dword [esp + 0x220], eax
test esi, esi
je 0x52963d
mov edx, dword [edi + 0x18]
mov ecx, dword [edi + 0x44]
mov ebx, 1
mov eax, dword [eax + 8]
mov dword [esp + 0x18], edx
mov edx, dword [edi + 0x1c]
mov dword [esp + 0x2d8], eax
mov dword [esp + 0x1c], edx
mov eax, dword [edi + 0x20]
mov dword [esp + 0x230], ecx
mov dword [esp + 0x20], eax
mov eax, dword [edi + 0x24]
xor ebp, ebp
mov dword [esp + 0x24], eax
mov eax, dword [edi + 0x28]
fldz
mov dword [esp + 0x28], eax
mov eax, dword [edi + 0x2c]
fstp qword [esp + 0x2a0]
mov dword [esp + 0x2c], eax
mov dword [esp + 0x2c0], edi
fldz
fldz
fldz
fxch st(2)
fstp qword [esp + 0x2f0]
fstp qword [esp + 0x2e8]
fstp qword [esp + 0x2e0]
lea edx, [ebx + ebx*2]
xor eax, eax
mov al, byte [esi + edx]
test eax, 0x80
je 0x529120
lea ecx, [ebx + ebx*2]
mov edi, dword [esp + 0x2d8]
movzx edx, byte [esi + edx + 2]
movzx ecx, byte [esi + ecx + 1]
mov dword [esp + 0x234], edx
lea edx, [ecx*8]
lea edx, [edx + ecx*4]
lea ecx, [esp + 0x18]
add edi, edx
mov edx, eax
sar edx, 3
and eax, 0x1f
and edx, 0xc
fld dword [edi + edx]
fld dword [edx + ecx]
fsub st(1)
fxch st(1)
fst dword [esp + 0x2f8]
lea ecx, [esp + 0x24]
fsubr dword [edx + ecx]
fxch st(1)
fstp dword [esp + 0x1f0]
mov ecx, dword [esp + 0x1f0]
fstp dword [esp + 0x1f4]
xor ecx, dword [esp + 0x1f4]
test ecx, 0x80000000
je 0x529102
fld qword [esp + 0x2e0]
fld qword [esp + 0x2e8]
fxch st(1)
fstp qword [esp + 0x2e0]
fstp qword [esp + 0x2e8]
fld qword [esp + 0x2f0]
test edx, edx
fstp qword [esp + 0x2f0]
jne 0x529000
fld dword [esp + 0x2f8]
fsub dword [esp + 0x18]
mov edx, dword [esp + 0x2c0]
fld dword [esp + 0x2f8]
fld dword [edx]
fmul st(2)
fxch st(1)
fstp qword [esp + 0x2e0]
fadd dword [esp + 0x1c]
fstp qword [esp + 0x2e8]
fmul dword [edx + 4]
fadd dword [esp + 0x20]
fstp qword [esp + 0x2f0]
jmp 0x529095
cmp edx, 4
jne 0x529050
fld dword [esp + 0x2f8]
fsub dword [esp + 0x1c]
mov edx, dword [esp + 0x2c0]
fld dword [esp + 0x2f8]
fld dword [edx + 8]
fmul st(2)
fxch st(1)
fstp qword [esp + 0x2e8]
fadd dword [esp + 0x18]
fstp qword [esp + 0x2e0]
fmul dword [edx + 0xc]
fadd dword [esp + 0x20]
fstp qword [esp + 0x2f0]
jmp 0x529095
cmp edx, 8
jne 0x529095
fld dword [esp + 0x2f8]
fsub dword [esp + 0x20]
mov edx, dword [esp + 0x2c0]
fld dword [esp + 0x2f8]
fld dword [edx + 0x10]
fmul st(2)
fxch st(1)
fstp qword [esp + 0x2f0]
fadd dword [esp + 0x18]
fstp qword [esp + 0x2e0]
fmul dword [edx + 0x14]
fadd dword [esp + 0x1c]
fstp qword [esp + 0x2e8]
inc ebp
mov edx, dword [esp + 0x1f0]
test edx, edx
jl 0x52964f
lea edx, [ebx + ebx]
fld qword [esp + 0x2f0]
fld qword [esp + 0x2e8]
mov ecx, ebp
shl ecx, 2
fld qword [esp + 0x2e0]
sub ecx, ebp
mov dword [esp + ebp*4 + 0x30], edx
fst dword [esp + ecx*8 + 0x70]
fxch st(2)
fst dword [esp + ecx*8 + 0x78]
fxch st(1)
fst dword [esp + ecx*8 + 0x74]
mov edx, dword [esp + 0x24]
mov dword [esp + ecx*8 + 0x7c], edx
mov edx, dword [esp + 0x28]
mov dword [esp + ecx*8 + 0x80], edx
mov edx, dword [esp + 0x2c]
mov dword [esp + ecx*8 + 0x84], edx
fstp dword [esp + 0x28]
fstp dword [esp + 0x2c]
fstp dword [esp + 0x24]
mov edx, dword [esp + 0x1f0]
test edx, edx
jl 0x529660
lea edx, [ebx + ebx + 1]
mov ebx, edx
jmp 0x52916e
movzx edx, byte [esi + edx + 2]
mov ecx, ebp
shl ecx, 2
mov ebx, dword [esp + ebp*4 + 0x30]
sub ecx, ebp
dec ebp
mov dword [esp + 0x234], edx
mov edx, dword [esp + ecx*8 + 0x70]
mov dword [esp + 0x18], edx
mov edx, dword [esp + ecx*8 + 0x74]
mov dword [esp + 0x1c], edx
mov edx, dword [esp + ecx*8 + 0x78]
mov dword [esp + 0x20], edx
mov edx, dword [esp + ecx*8 + 0x7c]
mov dword [esp + 0x24], edx
mov edx, dword [esp + ecx*8 + 0x80]
mov dword [esp + 0x28], edx
mov ecx, dword [esp + ecx*8 + 0x84]
mov dword [esp + 0x2c], ecx
mov edx, dword [esp + 0x220]
mov ecx, dword [esp + 0x234]
test eax, eax
mov edx, dword [edx + 4]
lea edi, [edx + ecx*8]
je 0x529635
mov dword [esp + 0x238], eax
mov dword [esp + 0x308], esi
mov dword [esp + 0x300], ebx
mov ebx, dword [esp + 0x2d8]
mov dword [esp + 0x304], ebp
lea esi, [esi]
movzx eax, word [edi + 6]
movzx edx, word [edi + 2]
mov ecx, dword [esp + 0x2c0]
movzx ebp, word [edi + 4]
lea esi, [eax*8]
fld dword [ecx + 0x38]
fld dword [ecx + 0x3c]
fld dword [ecx + 0x40]
fld dword [ecx + 0x38]
fld dword [ecx + 0x3c]
fld dword [ecx + 0x40]
fld dword [0x61ea60]
fld dword [ecx + 0x3c]
fstp dword [esp + 0x2d0]
fld dword [ecx + 0x38]
fstp dword [esp + 0x2c8]
lea ecx, [edx*8]
fld qword [esp + 0x2a0]
lea edx, [ecx + edx*4]
mov ecx, ebp
fstp qword [esp + 0x2a0]
fld dword [edx + ebx + 4]
lea ebp, [esi + eax*4]
fsubr dword [ebp + ebx + 4]
lea eax, [ecx*8]
lea esi, [ebx + edx]
mov dword [esp + 0x22c], esi
lea esi, [ebx + ebp]
fmul st(7), st(0)
fst qword [esp + 0x2b0]
fmul st(2)
fxch st(2)
lea ecx, [eax + ecx*4]
mov dword [esp + 0x224], esi
mov eax, ebx
add eax, ecx
mov dword [esp + 0x228], eax
fstp qword [esp + 0x318]
fld dword [ebp + ebx]
fsub dword [edx + ebx]
fmul st(6), st(0)
fst qword [esp + 0x2b8]
fxch st(6)
fsubp st(7)
fld dword [ecx + ebx + 8]
fsub dword [edx + ebx + 8]
fxch st(6)
fmulp st(5)
fxch st(6)
fst qword [esp + 0x258]
fmul st(5)
fld dword [edx + ebx + 8]
fxch st(6)
fstp qword [esp + 0x288]
fld dword [ebp + ebx + 8]
fsub st(6)
fmul st(4), st(0)
fst qword [esp + 0x2a8]
fxch st(4)
fsubp st(5)
fld dword [edx + ebx + 4]
fxch st(4)
fmulp st(3)
fld dword [ecx + ebx + 4]
fsub st(4)
fxch st(5)
fst qword [esp + 0x260]
fmul st(5)
fxch st(5)
fstp qword [esp + 0x290]
fld dword [edx + ebx]
fxch st(5)
faddp st(1)
fxch st(1)
fsubp st(2)
fld dword [ecx + ebx]
fsub st(4)
fxch st(2)
fst qword [esp + 0x268]
fmul st(2)
fxch st(2)
fstp qword [esp + 0x298]
faddp st(1)
fxch st(4)
fcomp st(4)
fnstsw ax
fld qword [esp + 0x318]
sahf
jae 0x5296b0
mov eax, dword [esp + 0x2c0]
fld qword [esp + 0x258]
mov eax, dword [eax + 0x34]
fld qword [esp + 0x260]
fld qword [esp + 0x268]
fxch st(6)
fsubr dword [eax + 8]
fxch st(4)
fsubr dword [eax + 4]
fxch st(5)
fsubr dword [eax]
fxch st(4)
fmul st(2), st(0)
fstp qword [esp + 0x270]
fmul st(4)
fxch st(4)
fstp qword [esp + 0x278]
faddp st(3)
fxch st(1)
fmul st(3), st(0)
fstp qword [esp + 0x280]
fxch st(2)
faddp st(1)
fld st(2)
fchs
fmul dword [0x61ea64]
fxch st(1)
fst qword [esp + 0x250]
fcomp st(1)
fnstsw ax
fld st(2)
fsub st(1)
fstp qword [esp + 0x248]
sahf
jb 0x5296a0
fld qword [esp + 0x250]
fcomp qword [esp + 0x248]
fnstsw ax
sahf
ja 0x5296a0
fld qword [esp + 0x280]
fmul qword [esp + 0x290]
fld qword [esp + 0x278]
fmul qword [esp + 0x298]
fld qword [esp + 0x298]
fmul qword [esp + 0x270]
fxch st(1)
fsubp st(2)
fld qword [esp + 0x280]
fmul qword [esp + 0x288]
fld dword [esp + 0x2d0]
fxch st(3)
fmul st(5), st(0)
fxch st(1)
fsubp st(2)
fld qword [esp + 0x288]
fmul qword [esp + 0x278]
fld qword [esp + 0x270]
fmul qword [esp + 0x290]
fxch st(3)
fmul st(4), st(0)
fxch st(3)
fsubp st(1)
fld dword [esp + 0x2c8]
fxch st(4)
faddp st(6)
fmul st(3), st(0)
fxch st(3)
faddp st(5)
fxch st(4)
fcom st(3)
fnstsw ax
fstp qword [esp + 0x240]
sahf
jb 0x529680
fld qword [esp + 0x250]
fadd qword [esp + 0x240]
fcomp qword [esp + 0x248]
fnstsw ax
sahf
ja 0x529680
fmul qword [esp + 0x2b0]
fxch st(3)
fmul qword [esp + 0x2a8]
fxch st(1)
fmul qword [esp + 0x2b8]
fxch st(3)
faddp st(1)
faddp st(2)
fcomp st(1)
fnstsw ax
fstp qword [esp + 0x2a0]
sahf
ja 0x529670
fld qword [esp + 0x2a0]
fcomp qword [esp + 0x248]
fnstsw ax
sahf
ja 0x529670
fdivr qword [esp + 0x2a0]
mov al, 1
fstp qword [esp + 0x2a0]
test al, al
je 0x5295f9
mov eax, dword [edx + ebx]
mov esi, dword [esp + 0x234]
mov dword [esp + 0x204], eax
mov eax, dword [edx + ebx + 4]
mov dword [esp + 0x208], eax
mov eax, dword [edx + ebx + 8]
mov dword [esp + 0x210], esi
mov dword [esp + 0x20c], eax
fld dword [ebp + ebx]
fsub dword [edx + ebx]
fld dword [ecx + ebx + 8]
fsub dword [edx + ebx + 8]
fld dword [edx + ebx + 8]
fsubr dword [ebp + ebx + 8]
fld dword [edx + ebx]
fsubr dword [ecx + ebx]
fld st(3)
fmul st(3)
fld dword [edx + ebx + 4]
fsubr dword [ebp + ebx + 4]
fld dword [edx + ebx + 4]
fsubr dword [ecx + ebx + 4]
fld st(4)
fmul st(4)
fxch st(2)
fmul st(4), st(0)
fxch st(2)
fsubp st(3)
fmul st(6), st(0)
fmulp st(4)
fxch st(1)
fstp dword [esp + 0x1fc]
fld dword [esp + 0x1fc]
fxch st(5)
fsubp st(2)
fmulp st(3)
fxch st(3)
fmul st(0)
fxch st(3)
fst dword [esp + 0x200]
fmul st(0)
fxch st(2)
fsubp st(1)
fxch st(2)
faddp st(1)
fxch st(1)
fstp dword [esp + 0x1f8]
fld dword [esp + 0x1f8]
fmul st(0)
faddp st(1)
fstp dword [esp]
call fcn.004eacc0
fld dword [esp + 0x200]
fmul st(1)
fld dword [esp + 0x1fc]
fmul st(2)
fxch st(1)
mov eax, dword [esp + 0x224]
mov edx, dword [esp + 0x228]
fstp dword [esp + 0x200]
fstp dword [esp + 0x1fc]
fmul dword [esp + 0x1f8]
mov ecx, dword [esp + 0x22c]
mov ebp, dword [esp + 0x230]
fld qword [esp + 0x2a0]
fxch st(1)
lea esi, [esp + 0x1f8]
fstp dword [esp + 0x1f8]
mov dword [esp + 0x21c], eax
mov dword [esp + 0x218], edx
mov dword [esp + 0x214], ecx
mov eax, dword [ebp]
fstp dword [esp + 0xc]
mov dword [esp + 8], esi
mov edx, dword [esp + 0x220]
mov dword [esp], eax
mov dword [esp + 4], edx
mov eax, dword [ebp + 8]
mov dword [esp + 0x10], eax
call dword [ebp + 4]
test eax, eax
je 0x5296d0
mov eax, dword [esp + 0x234]
add edi, 8
inc eax
mov edx, dword [esp + 0x238]
mov dword [esp + 0x234], eax
dec edx
mov dword [esp + 0x238], edx
jne 0x5291b0
mov ebp, dword [esp + 0x304]
mov ebx, dword [esp + 0x300]
mov esi, dword [esp + 0x308]
test ebp, ebp
jge 0x528f00
mov eax, dword [esp + 0x220]
add esp, 0x324
pop ebx
pop ebp
pop esi
pop edi
ret
lea edx, [ebx + ebx + 1]
jmp 0x5290a8
lea edx, [ebx + ebx]
jmp 0x529115
fstp st(0)
xor al, al
jmp 0x52949d
fstp st(0)
fstp st(0)
fstp st(0)
fstp st(0)
fstp st(0)
xor al, al
jmp 0x52949d
fstp st(0)
fstp st(0)
fstp st(0)
xor al, al
jmp 0x52949d
fstp st(0)
fstp st(0)
fstp st(0)
fstp st(0)
fstp st(0)
xor al, al
jmp 0x52949d
add esp, 0x324
xor eax, eax
pop ebx
pop ebp
pop esi
pop edi
ret