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

Disassembly:
push ebp
mov ebp, esp
and esp, 0xfffffff8
sub esp, 0x28
fldz
push ebx
push ebp
push esi
xor esi, esi
mov dword [esp + 0x10], esi
xor eax, eax
mov word [esp + 0xc], ax
fst qword [esp + 0x2c]
xor ecx, ecx
mov dword [esp + 0x14], esi
mov word [esp + 0x18], cx
fstp qword [esp + 0x24]
fld1
or ebx, 0xffffffff
push edi
mov dword [0x42768c], esi
lea ebp, [esi + 1]
cmp dword [0x423940], esi
je 0x40adfc
mov edi, dword [sym.imp.KERNEL32.dll_CreateThread]
nop
fld qword [0x4239c8]
fadd st(1)
fstp qword [0x4239c8]
fsubr dword [str.N_]
fstp dword [str.N_]
fld qword [0x4239c8]
fsub qword [0x41fa98]
fsub qword [0x41fa90]
fld dword [str.N_]
mov dx, word [esp + 0x10]
add dword [esp + 0x10], ebx
movsx eax, dx
mov dword [esp + 0x20], eax
fild dword [esp + 0x20]
faddp st(1)
fcompp
fnstsw ax
test ah, 5
jp 0x40add1
mov cx, word [esp + 0x10]
movsx edx, cx
mov dword [esp + 0x20], edx
fild dword [esp + 0x20]
fsub dword [0x423038]
call fcn.0040b890
mov word [esp + 0x10], ax
push 0
push 0
push esi
push 0x401620
push 0
push 0
mov dword [esi*4 + 0x4271c8], 0
call edi
fld1
add esi, ebp
cmp esi, dword [0x423940]
jne 0x40ad60
mov ax, word [esp + 0x1c]
movsx ecx, ax
mov edx, 0x8e95d863
sub edx, ecx
mov dword [esp + 0x20], edx
fild dword [esp + 0x20]
fadd qword [esp + 0x28]
fstp qword [esp + 0x28]
add dword [esp + 0x1c], ebp
fld dword [0x423970]
fsub st(1)
fstp dword [0x423970]
fld qword [esp + 0x30]
mov eax, dword [esp + 0x14]
fsub qword [0x41fa88]
mov dword [esp + 0x20], eax
fild dword [esp + 0x20]
faddp st(1)
fld dword [0x423970]
add dword [esp + 0x14], ebx
fucompp
fnstsw ax
test ah, 0x44
jnp 0x40aec7
fld qword [esp + 0x28]
mov cx, word [esp + 0x10]
fadd qword [0x41fa80]
add dword [esp + 0x10], ebx
movsx edx, cx
add edx, 0x1091304f
mov dword [esp + 0x20], edx
fild dword [esp + 0x20]
fucompp
fnstsw ax
test ah, 0x44
jnp 0x40ae9b
mov eax, dword [esp + 0x18]
mov dword [esp + 0x20], eax
fild dword [esp + 0x20]
fstp qword [esp + 0x28]
add dword [esp + 0x18], ebx
jmp 0x40aec7
mov cx, word [0x423170]
mov dx, word [esp + 0x10]
movsx eax, cx
movsx ecx, dx
sub ecx, eax
mov dword [esp + 0x20], ecx
fild dword [esp + 0x20]
fadd dword [str.N_]
fstp dword [str.N_]
add dword [esp + 0x10], ebx
fsubr dword [0x4258e4]
fstp dword [0x4258e4]
fld dword [0x4258e4]
mov dx, word [esp + 0x1c]
movsx eax, dx
fstp dword [esp + 0x24]
mov dword [esp + 0x20], eax
fild dword [esp + 0x20]
fmul dword [esp + 0x24]
call fcn.0040b890
mov word [esp + 0x1c], ax
mov ecx, dword [esp + 0x14]
mov edx, 0x188ef945
sub edx, ecx
mov dword [esp + 0x24], edx
fild dword [esp + 0x24]
fld qword [0x425d48]
fsub qword [0x41fa78]
fadd qword [0x41fa70]
fcompp
fnstsw ax
test ah, 1
jne 0x40af46
add word [0x4230d8], bx
mov ax, word [0x4230d8]
mov ecx, dword [esp + 0x14]
cwde
lea edx, [ecx + eax + 0x371295b4]
mov dword [esp + 0x14], edx
fld dword [0x425d78]
mov ax, word [0x4233c8]
fsub qword [0x41fa68]
movsx ecx, ax
mov dword [esp + 0x24], ecx
fild dword [esp + 0x24]
fmulp st(1)
call fcn.0040b890
mov edi, dword [sym.imp.KERNEL32.dll_Sleep]
mov word [0x4233c8], ax
push 0xa
call edi
fld qword [esp + 0x30]
fadd qword [0x41fa60]
mov esi, 0x423944
fadd qword [0x4231c8]
fstp qword [esp + 0x28]
fld qword [esp + 0x30]
fadd qword [0x41f348]
fstp qword [esp + 0x30]
movzx edx, word [esi]
mov eax, dword [edx*4 + 0x4271c8]
push eax
call dword [sym.imp.KERNEL32.dll_SetEvent]
movzx ecx, word [esi]
cmp dword [ecx*4 + 0x4271c8], 0
je 0x40b083
jmp 0x40afd0
fld qword [esp + 0x28]
mov edx, dword [esp + 0x18]
mov ax, word [0x423140]
movsx ecx, ax
mov dword [esp + 0x24], edx
add ecx, 0x374b0acd
fild dword [esp + 0x24]
mov dword [esp + 0x24], ecx
fsubp st(1)
fild dword [esp + 0x24]
fcompp
fnstsw ax
fld qword [esp + 0x28]
fadd qword [0x41f348]
fstp qword [esp + 0x28]
test ah, 0x41
jne 0x40b031
mov dx, word [0x4233bc]
mov ecx, dword [esp + 0x14]
movsx eax, dx
add eax, 0x5973c1d0
imul ecx, eax
mov dword [esp + 0x14], ecx
add word [0x4233bc], bp
push 0xa
call edi
add dword [esp + 0x10], ebx
add dword [0x423484], ebx
mov dx, word [esp + 0x10]
mov ecx, dword [0x423484]
movsx eax, dx
mov edx, dword [esp + 0x18]
add dword [esp + 0x18], ebp
sub eax, ecx
add eax, 0xc6aa1010
cmp edx, eax
jne 0x40b072
movzx eax, word [0x42318c]
add eax, 0x49ce7287
mov word [0x42318c], ax
movzx ecx, word [esi]
cmp dword [ecx*4 + 0x4271c8], 0
jne 0x40afd0
fld qword [esp + 0x30]
add esi, 2
fadd qword [0x41fa60]
fadd qword [0x4231c8]
fstp qword [esp + 0x28]
fld qword [esp + 0x30]
fadd qword [0x41f348]
fstp qword [esp + 0x30]
cmp esi, 0x42394c
jne 0x40afa1
call dword [0x42768c]
mov ecx, 0x88b78efc
out 0xa8, al
xor cl, bh
cld
bound ebp, qword [ecx + 0xc69b967]
sbb bl, byte [edi]
in al, dx
pop esi
inc ecx
pushfd
scasb al, byte es:[edi]
test dword [esi - 2], 0xb21d230f
pop edi
leave
lea eax, [edi + 0x77]
cmp al, 0x97
jmp 0xaf92f7c7