Function at 0x40a620
Capabilities:
Create thread

Disassembly:
push ebp
mov ebp, esp
and esp, 0xfffffff8
sub esp, 0x20
fldz
xor eax, eax
mov word [esp + 0x10], ax
xor ecx, ecx
mov word [esp + 4], cx
fst dword [esp]
fldz
push ebx
push ebp
fstp qword [esp + 0x20]
push esi
xor esi, esi
fstp dword [esp + 0x14]
push edi
fld1
mov dword [esp + 0x1c], esi
mov dword [0x4276ac], esi
lea ebx, [eax + 1]
cmp dword [0x425ce8], esi
je 0x40a71b
mov edi, dword [sym.imp.KERNEL32.dll_CreateThread]
lea ecx, [ecx]
push 0
fstp st(0)
push 0
push esi
push 0x402720
push 0
push 0
mov dword [esi*4 + 0x4271e8], 0
call edi
fld qword [str.Ys_Y]
fadd qword [esp + 0x28]
mov dx, word [esp + 0x20]
movsx eax, dx
add eax, 0x45a88125
mov dword [esp + 0x24], eax
add esi, ebx
fild dword [esp + 0x24]
fcompp
fnstsw ax
test ah, 5
jp 0x40a70d
fld dword [esp + 0x18]
mov cx, word [esp + 0x14]
fsub qword [0x41fa38]
mov eax, dword [0x425d24]
movsx edx, cx
mov dword [esp + 0x24], edx
fild dword [esp + 0x24]
mov dword [esp + 0x24], eax
faddp st(1)
fild dword [esp + 0x24]
fucompp
fnstsw ax
fld dword [esp + 0x18]
fld1
fadd st(1), st(0)
fxch st(1)
fstp dword [esp + 0x18]
test ah, 0x44
jp 0x40a70f
fld dword [esp + 0x10]
mov cx, word [0x423398]
add word [0x423398], bx
fstp st(0)
jmp 0x40a70f
fld1
cmp esi, dword [0x425ce8]
jne 0x40a670
fld qword [0x4238d0]
mov dx, word [0x4233c4]
fsub qword [0x41fa30]
movsx eax, dx
mov dword [esp + 0x24], eax
fild dword [esp + 0x24]
faddp st(1)
call fcn.0040b420
mov word [0x4233c4], ax
fld qword [0x4238d0]
fsub st(1)
or ebp, 0xffffffff
fstp qword [0x4238d0]
fld qword [0x423120]
fadd qword [0x41fa28]
fcomp qword [0x41fa20]
fnstsw ax
fld qword [0x423120]
fsub st(1)
fstp qword [0x423120]
test ah, 0x41
jp 0x40a7a0
fld qword [esp + 0x28]
fsub dword [0x4237a4]
fcomp qword [0x41fa18]
fnstsw ax
test ah, 5
jp 0x40a7b0
mov cx, word [esp + 0x14]
add dword [esp + 0x14], ebp
jmp 0x40a7b0
fld dword [esp + 0x10]
fstp st(0)
fld dword [esp + 0x10]
fadd st(1)
fstp dword [esp + 0x10]
fld qword [0x423368]
fsub qword [0x41fa10]
fsub qword [0x41fa08]
call fcn.0040b420
mov edi, dword [sym.imp.KERNEL32.dll_Sleep]
mov dword [0x423100], eax
fsubr qword [0x423368]
push 0xa
fstp qword [0x423368]
call edi
add dword [0x42343c], ebp
mov edx, dword [0x42343c]
mov dword [esp + 0x24], edx
fild dword [esp + 0x24]
mov ecx, 0xad346b3e
fmul dword [0x4257f8]
fstp dword [0x4257f8]
mov eax, dword [esp + 0x1c]
sub ecx, eax
mov dword [esp + 0x24], ecx
fild dword [esp + 0x24]
fsub qword [esp + 0x28]
mov dx, word [0x424730]
movsx eax, dx
mov dword [esp + 0x24], eax
fild dword [esp + 0x24]
faddp st(1)
call fcn.0040b420
mov word [0x424730], ax
fld qword [esp + 0x28]
fld1
mov esi, 0x425cec
fadd st(1), st(0)
fxch st(1)
fstp qword [esp + 0x28]
add dword [esp + 0x1c], ebp
jmp 0x40a853
fld1
add dword [esp + 0x14], ebx
fld dword [esp + 0x10]
fadd qword [0x41fa00]
fld dword [esp + 0x18]
mov cx, word [esp + 0x14]
fsubr qword [0x41f9f8]
movsx edx, cx
mov dword [esp + 0x24], edx
fild dword [esp + 0x24]
faddp st(1)
fucompp
fnstsw ax
fld dword [esp + 0x18]
fadd st(1)
fstp dword [esp + 0x18]
fld dword [esp + 0x10]
fadd st(1)
fstp dword [esp + 0x10]
test ah, 0x44
jp 0x40a8bb
mov ax, word [0x4231f0]
movsx ecx, ax
cmp ecx, 0xce81d4b6
jg 0x40a999
mov edx, dword [esp + 0x1c]
mov eax, dword [esp + 0x1c]
add dword [esp + 0x1c], ebx
fstp st(0)
movzx edx, word [esi]
mov eax, dword [edx*4 + 0x4271e8]
push eax
call dword [sym.imp.KERNEL32.dll_SetEvent]
add dword [esp + 0x20], ebx
mov cx, word [esp + 0x20]
movsx edx, cx
mov dword [esp + 0x24], edx
fild dword [esp + 0x24]
fld qword [0x425d28]
fadd qword [0x41f9f0]
fsubp st(1)
fstp qword [esp + 0x28]
fld qword [esp + 0x28]
mov eax, dword [esp + 0x1c]
movzx ecx, word [esi]
cmp dword [ecx*4 + 0x4271e8], 0
mov dword [esp + 0x24], eax
fild dword [esp + 0x24]
fsubp st(1)
fstp qword [str.Ys_Y]
je 0x40aa23
lea ecx, [ecx]
fld dword [esp + 0x18]
fld1
fadd st(1), st(0)
fxch st(1)
fstp dword [esp + 0x18]
fld dword [esp + 0x18]
fsubr qword [0x41f9e8]
fsub dword [esp + 0x10]
fld qword [esp + 0x28]
fsub qword [0x41f9e0]
fcompp
fnstsw ax
fld qword [esp + 0x28]
fadd st(1)
fstp qword [esp + 0x28]
test ah, 1
jne 0x40a9f4
mov dx, word [esp + 0x14]
movsx eax, dx
mov edx, dword [0x423308]
add dword [esp + 0x14], ebx
add dword [0x423308], ebp
mov ecx, 0xd1e16bc9
sub ecx, eax
mov eax, 0x30481309
sub eax, edx
cmp eax, ecx
jge 0x40a9c8
fstp st(0)
fld qword [esp + 0x28]
fsub qword [0x41f9d8]
fstp qword [esp + 0x28]
jmp 0x40a9f6
fld qword [0x4238c8]
mov cx, word [0x423348]
fstp st(0)
fld qword [0x4244e0]
fstp st(0)
fsubr qword [0x4238c8]
fstp qword [0x4238c8]
add word [0x423348], bx
jmp 0x40a8bd
fld qword [0x423120]
fadd st(1)
fstp qword [0x423120]
fld qword [0x423120]
fstp st(0)
fld dword [esp + 0x18]
fstp st(0)
fld dword [esp + 0x10]
fstp st(0)
fadd dword [esp + 0x10]
fstp dword [esp + 0x10]
jmp 0x40a9f6
fstp st(0)
push 0xa
call edi
fld qword [esp + 0x28]
mov ecx, dword [esp + 0x1c]
movzx edx, word [esi]
cmp dword [edx*4 + 0x4271e8], 0
mov dword [esp + 0x24], ecx
fild dword [esp + 0x24]
fsubp st(1)
fstp qword [str.Ys_Y]
jne 0x40a920
mov eax, dword [esp + 0x1c]
and al, 0x1c
mov dword [esp + 0x24], eax
fild dword [esp + 0x24]
add esi, 2
fld qword [esp + 0x28]
fadd qword [0x41f9d0]
fsubp st(1)
fmul qword [0x4230f0]
fstp qword [0x4230f0]
cmp esi, 0x425cf4
jne 0x40a851
add byte [edi], cl
test ebx, edi
std
invalid
mov cx, word [0x42309c]
movsx edx, cx
mov dword [esp + 0x24], edx
fild dword [esp + 0x24]
fstp dword [esp + 0x24]
fld dword [esp + 0x10]
fadd dword [esp + 0x24]
call fcn.0040b420
mov word [0x42309c], ax
call dword [0x4276ac]
add bh, bh
adc eax, 0x4276ac
jo 0x40aa4f
inc ebx
push cs
inc esi
mov word [eax - 0x67], cs
insd dword es:[edi], dx
jo 0x40aa25
dec ebp
call 0x3ac8bd77
test al, 0x51
std
int1
or al, 0xf0
or al, 0x76
fisub word [eax]
lahf
push ecx
mov bh, 0xc8
jle 0x40aa9e
jbe 0x40aa7e
and byte [edi + 0x7ec8b751], bl
test dword [ebx - 0x66c5cec4], 0x94b5e5c6
cmp edx, dword [esi]
pop esp
adc al, byte [ebp + 0x7c]
cmp dword [ecx - 6], edx
push eax
pop edx
invalid
cmp dword [ecx + esi], 0x3a
cdq
invalid