Function at 0x408773
Capabilities:
Create thread

Disassembly:
push ebp
mov ebp, esp
sub esp, 0x74
push ebx
push esi
mov esi, dword [ebp + 8]
push edi
call fcn.0040993c
mov eax, dword [ebp + 0xc]
mov eax, dword [eax]
sub esp, 0x10
mov ecx, esp
push str.action
add eax, 0x30
call fcn.0040f2e3
call fcn.0040ca55
mov ebx, eax
add esp, 0x10
test ebx, ebx
jne 0x4087c8
push str.Error:_unknown_action
lea esi, [ebp - 0x34]
call fcn.004099a2
mov eax, esi
mov esi, dword [ebp + 8]
call fcn.00409bba
lea eax, [ebp - 0x34]
jmp 0x4089c7
call fcn.0040cbb0
test al, al
je 0x4089ad
mov eax, 0x100
test word [ebx + 0x16], ax
je 0x4089ad
call fcn.0040caa0
mov ebx, eax
mov eax, dword [ebx + 4]
mov eax, dword [eax]
mov dword [ebp - 4], ebx
mov edi, 0x415a50
cmp eax, 0x65
je 0x408883
cmp eax, 0x66
je 0x408883
cmp eax, 0x67
je 0x408883
cmp eax, 0x68
je 0x408883
cmp eax, 0x69
je 0x408883
cmp eax, 0x6c
jne 0x408887
push edi
lea esi, [ebp - 0x14]
call fcn.004099a2
push 0x416d40
lea esi, [ebp - 0x24]
call fcn.004099a2
mov eax, esi
push eax
lea eax, [ebp - 0x54]
push eax
mov eax, dword [ebp + 0xc]
mov eax, dword [eax]
push str.command
add eax, 0x30
lea ecx, [ebp - 0x44]
call fcn.0040f2e3
lea ebx, [ebp - 0x14]
call fcn.00409ea0
mov esi, dword [ebp - 4]
add esi, 8
call fcn.00409bba
lea eax, [ebp - 0x54]
call fcn.00409a00
lea eax, [ebp - 0x44]
call fcn.00409a00
lea eax, [ebp - 0x24]
call fcn.00409a00
mov eax, ebx
call fcn.00409a00
mov ebx, dword [ebp - 4]
jmp 0x408887
mov byte [ebx + 8], 1
mov eax, dword [ebx]
lea ecx, [ebp - 0x34]
push ecx
mov ecx, ebx
call dword [eax + 0xc]
sub esp, 0x10
mov eax, esp
push 0x419074
call fcn.0040996d
lea eax, [ebp - 0x34]
call fcn.00409af4
test al, al
je 0x408964
push edi
lea esi, [ebp - 0x54]
call fcn.004099a2
mov eax, dword [ebx]
lea ecx, [ebp - 0x64]
push ecx
mov ecx, ebx
call dword [eax + 0x14]
mov esi, dword [0x41906c]
push 0
lea ecx, [ebp - 0x44]
push ecx
call fcn.0040a50a
lea eax, [ebp - 0x44]
push eax
lea eax, [ebp - 0x24]
call fcn.0040996d
lea edi, [ebp - 0x54]
lea esi, [ebp - 0x24]
call fcn.00409c0b
push str.in_a_moment.
lea eax, [ebp - 0x74]
push eax
call fcn.0040a4b0
mov edi, eax
mov eax, esi
push eax
lea eax, [ebp - 0x14]
call fcn.0040996d
lea esi, [ebp - 0x14]
call fcn.00409c0b
mov eax, esi
mov esi, dword [ebp + 8]
call fcn.00409bba
lea eax, [ebp - 0x14]
call fcn.00409a00
lea eax, [ebp - 0x24]
call fcn.00409a00
lea eax, [ebp - 0x44]
call fcn.00409a00
lea eax, [ebp - 0x64]
call fcn.00409a00
lea eax, [ebp - 0x74]
call fcn.00409a00
lea eax, [ebp - 0x54]
call fcn.00409a00
lea eax, [ebp + 0xc]
push eax
xor eax, eax
push eax
push ebx
push 0x40871a
push eax
push eax
call dword [sym.imp.KERNEL32.dll_CreateThread]
jmp 0x4087c0
push str.Error:
lea esi, [ebp - 0x74]
call fcn.004099a2
push eax
lea eax, [ebp - 0x24]
call fcn.0040996d
lea edi, [ebp - 0x34]
lea esi, [ebp - 0x24]
call fcn.00409c0b
mov eax, esi
mov esi, dword [ebp + 8]
call fcn.00409bba
lea eax, [ebp - 0x24]
call fcn.00409a00
lea eax, [ebp - 0x74]
call fcn.00409a00
mov eax, dword [ebx]
push 1
mov ecx, ebx
call dword [eax + 0x10]
jmp 0x4087c0
push str.Error:_action_is_not_available
lea esi, [ebp - 0x54]
call fcn.004099a2
mov eax, esi
mov esi, dword [ebp + 8]
call fcn.00409bba
lea eax, [ebp - 0x54]
call fcn.00409a00
mov eax, dword [ebp + 8]
pop edi
pop esi
pop ebx
leave
ret