Function at 0x40ab70
Capabilities:
Create thread
Encrypt data using rc4 prga

Disassembly:
sub esp, 0x1c
fldz
push ebx
xor eax, eax
mov word [esp + 4], ax
fst dword [esp + 0x14]
xor ebx, ebx
mov dword [esp + 0x18], ebx
fstp dword [esp + 0xc]
xor ecx, ecx
mov word [esp + 8], cx
xor edx, edx
mov word [esp + 0x10], dx
mov ax, word [0x4230d0]
mov edx, dword [esp + 0x18]
movsx ecx, ax
mov dword [esp + 0x1c], ecx
push ebp
push esi
fild dword [esp + 0x24]
mov dword [esp + 0x24], edx
push edi
mov dword [0x4278cc], ebx
fild dword [esp + 0x28]
xor esi, esi
fadd dword [0x4244c4]
fsubp st(1)
call fcn.0040b610
mov word [0x4230d0], ax
fld dword [0x4244c4]
fld1
lea ebp, [ebx + 1]
fsub st(1), st(0)
fxch st(1)
fstp dword [0x4244c4]
cmp dword [0x4249a0], ebx
je 0x40ac1f
mov edi, dword [sym.imp.KERNEL32.dll_CreateThread]
fstp st(0)
lea esp, [esp]
push ebx
push ebx
push esi
push 0x401230
push ebx
push ebx
mov dword [esi*4 + 0x427408], ebx
call edi
add esi, ebp
cmp esi, dword [0x4249a0]
jne 0x40ac00
fld1
mov eax, 0xdb1
mov word [0x42595c], ax
fld dword [esp + 0x18]
fadd st(1)
fstp dword [esp + 0x18]
fld dword [esp + 0x20]
fsub dword [esp + 0x18]
fadd dword [0x4249ac]
fstp dword [0x4249ac]
fld dword [esp + 0x18]
fmul qword [0x41f978]
fstp dword [esp + 0x18]
fld dword [esp + 0x20]
fsub st(1)
fstp dword [esp + 0x20]
mov cx, word [0x425714]
movsx edx, cx
mov dword [esp + 0x28], edx
mov ecx, 0xffffffff
fild dword [esp + 0x28]
fld dword [esp + 0x20]
add word [0x425714], cx
fsubr qword [0x41f970]
fcompp
fnstsw ax
test ah, 0x41
jp 0x40acd8
add dword [esp + 0x1c], ecx
mov eax, dword [0x4244c0]
mov cx, word [esp + 0x1c]
mov dword [esp + 0x28], eax
fild dword [esp + 0x28]
movsx edx, cx
mov dword [esp + 0x28], edx
fild dword [esp + 0x28]
fsub dword [0x42357c]
fsub qword [0x41f968]
fsubp st(1)
call fcn.0040b610
mov dword [0x4244c0], eax
fsubr dword [0x42357c]
fstp dword [0x42357c]
jmp 0x40acda
fstp st(0)
fld dword [0x4257e4]
mov edi, dword [sym.imp.KERNEL32.dll_Sleep]
fmul qword [0x41f960]
push 0xa
fstp dword [0x4257e4]
call edi
movzx eax, word [esp + 0x1c]
mov ecx, dword [0x423978]
mov ebx, dword [sym.imp.KERNEL32.dll_SetEvent]
imul eax, ecx
mov word [esp + 0x1c], ax
mov esi, 0x4249a4
movzx edx, word [esi]
mov eax, dword [edx*4 + 0x427408]
push eax
call ebx
mov cx, word [0x423198]
mov edx, dword [0x425a24]
movsx eax, cx
sub eax, edx
mov dword [esp + 0x28], eax
fild dword [esp + 0x28]
fsub dword [0x42599c]
fmul dword [0x425f28]
fstp dword [0x425f28]
fld dword [0x42599c]
fadd qword [0x41f350]
fstp dword [0x42599c]
add dword [0x425a24], ebp
movzx eax, word [esi]
cmp dword [eax*4 + 0x427408], 0
je 0x40ae02
push 0xa
call edi
mov cx, word [esp + 0x14]
mov ax, word [esp + 0x10]
movsx edx, cx
movsx ecx, ax
mov eax, dword [0x42397c]
dec dword [0x42397c]
lea edx, [edx + ecx - 0x50492695]
cmp edx, eax
jne 0x40ade6
fld dword [0x423214]
fsub dword [esp + 0x20]
fsub qword [0x41f958]
fcomp qword [0x41f950]
fnstsw ax
fld dword [0x423214]
fsub qword [0x41f350]
fstp dword [0x423214]
test ah, 0x41
jne 0x40adf1
fld dword [0x425998]
fsub qword [0x41f948]
call fcn.0040b610
mov dword [esp + 0x24], eax
jmp 0x40adf1
mov ecx, dword [0x423180]
mov word [esp + 0x14], cx
movzx edx, word [esi]
cmp dword [edx*4 + 0x427408], 0
jne 0x40ad76
add dword [0x4257d8], ebp
movzx eax, word [esp + 0x10]
mov ecx, dword [0x4257d8]
sub eax, ecx
add eax, 0x3aad0cf4
add esi, 2
mov word [esp + 0x10], ax
cmp esi, 0x4249ac
jne 0x40ad14
call dword [0x4278cc]
test al, 0x5b
jg 0x40ae1a
scasd eax, dword es:[edi]
invalid