Function at 0x4091f0
Capabilities:
Create thread
Print debug messages
Terminate thread

Disassembly:
push ebp
mov ebp, esp
push 0xffffffffffffffff
push 0x416450
mov eax, dword fs:[0]
push eax
mov dword fs:[0], esp
sub esp, 0xd30
push ebx
push esi
mov esi, dword [ebp + 8]
mov ebx, ecx
push edi
xor eax, eax
lea ecx, [esi + 0x400]
mov dword [ebp - 0x10], esp
mov dword [ebp - 0x1c], ecx
lea edi, [esi + 0x800]
push 0xa4
mov ecx, 0x424040
mov dword [ebp - 0x38], ebx
mov dword [ebp - 0x18], eax
mov dword [ebp - 0x34], edi
mov dword [ebp - 4], eax
call fcn.004069e0
mov edx, dword [ebx + 0x1430]
push edx
call dword [sym.imp.KERNEL32.dll_ResetEvent]
lea eax, [ebp - 0x13c]
push eax
call fcn.00408e70
add esp, 4
test eax, eax
je 0x4092bd
push eax
push 0x9a
push 0x424040
call fcn.00406a60
add esp, 0xc
test esi, esi
je 0x4097fa
push 0x400
push edi
push 0x9a
mov ecx, 0x424040
call fcn.00406920
mov edi, 0x417368
or ecx, 0xffffffff
xor eax, eax
repne scasb al, byte es:[edi]
not ecx
sub edi, ecx
mov edx, ecx
mov esi, edi
mov edi, dword [ebp - 0x1c]
shr ecx, 2
rep movsd dword es:[edi], dword [esi]
mov ecx, edx
and ecx, 3
rep movsb byte es:[edi], byte [esi]
jmp 0x4097fa
mov eax, dword [ebp - 0x13c]
mov esi, dword [sym.imp.KERNEL32.dll_VirtualAlloc]
and eax, 0xff
push 4
shl eax, 2
push 0x1000
push eax
push 0
call esi
mov ecx, dword [ebp - 0x13c]
push 4
and ecx, 0xff
push 0x1000
shl ecx, 2
push ecx
push 0
mov dword [ebp - 0x18], eax
call esi
mov dword [ebx + 0x1418], eax
xor eax, eax
mov dword [ebp - 0x14], eax
mov edx, dword [ebp - 0x13c]
and edx, 0xff
cmp eax, edx
jge 0x4093a7
lea esi, [ebp + eax - 0x13b]
xor eax, eax
mov al, byte [esi]
push eax
call fcn.00409810
mov edi, eax
add esp, 4
test edi, edi
je 0x40939b
xor ecx, ecx
push edi
mov cl, byte [esi]
push ecx
push 0x9b
push 0x424040
call fcn.00406a60
mov eax, dword [ebp + 8]
add esp, 0x10
test eax, eax
je 0x4095af
mov eax, dword [ebp - 0x34]
xor edx, edx
mov dl, byte [esi]
push edi
push edx
push 0x9b
push eax
push 0x424040
call fcn.00406ac0
mov edi, 0x417368
or ecx, 0xffffffff
xor eax, eax
add esp, 0x14
repne scasb al, byte es:[edi]
not ecx
sub edi, ecx
mov edx, ecx
mov esi, edi
mov edi, dword [ebp - 0x1c]
shr ecx, 2
rep movsd dword es:[edi], dword [esi]
mov ecx, edx
and ecx, 3
rep movsb byte es:[edi], byte [esi]
jmp 0x4095af
mov eax, dword [ebp - 0x14]
inc eax
mov dword [ebp - 0x14], eax
jmp 0x409306
push 0
lea eax, [ebx + 0x35]
push 1
lea ecx, [ebp - 0x13c]
push eax
push ecx
call fcn.00409880
add esp, 0x10
test eax, eax
jne 0x4093d9
push str.FTNetServer
push 0xa8
push 0x424040
call fcn.00406a60
add esp, 0xc
mov edi, 1
lea esi, [ebx + 0x24]
push str.FTNetServer
push esi
call fcn.0040d590
add esp, 8
test eax, eax
je 0x409412
cmp edi, 1
jne 0x409405
lea edx, [ebp - 0x30]
push esi
push edx
call dword [sym.imp.KERNEL32.dll_lstrcpyA]
jmp 0x409425
push edi
push esi
lea eax, [ebp - 0x30]
push str._s_03d
push eax
jmp 0x40941d
push edi
push esi
lea ecx, [ebp - 0x30]
push str._s_03d
push ecx
call fcn.0040d280
add esp, 0x10
mov edx, dword [ebx + 0x1418]
lea eax, [ebp - 0x30]
push edx
push 0
lea ecx, [ebp - 0x13c]
push eax
push ecx
call fcn.00409880
add esp, 0x10
test eax, eax
je 0x409448
inc edi
jmp 0x4093de
mov eax, dword [ebp - 0x30]
mov dword [ebx + 0x141c], edi
lea edi, [ebx + 0x1300]
mov ecx, 0x40
lea esi, [ebp - 0x13c]
lea edx, [ebx + 0x1400]
rep movsd dword es:[edi], dword [esi]
mov ecx, dword [ebp - 0x2c]
mov dword [edx], eax
mov eax, dword [ebp - 0x28]
mov byte [ebx + 0x1410], 0
mov dword [edx + 4], ecx
mov ecx, dword [ebp - 0x24]
mov dword [edx + 8], eax
mov dword [edx + 0xc], ecx
mov edx, dword [ebx + 0x12fc]
push edx
call dword [sym.imp.KERNEL32.dll_SetEvent]
mov eax, dword [ebp + 8]
test eax, eax
je 0x4094bc
mov edi, 0x417370
or ecx, 0xffffffff
xor eax, eax
repne scasb al, byte es:[edi]
not ecx
sub edi, ecx
mov eax, ecx
mov esi, edi
mov edi, dword [ebp - 0x1c]
shr ecx, 2
rep movsd dword es:[edi], dword [esi]
mov ecx, eax
and ecx, 3
rep movsb byte es:[edi], byte [esi]
mov edx, dword [ebp - 0x13c]
lea ecx, [ebp - 0x30]
and edx, 0xff
push ecx
push edx
push 0x9d
push 0x424040
call fcn.00406a60
add esp, 0x10
lea eax, [ebx + 0x1444]
push 1
push eax
call dword [sym.imp.KERNEL32.dll_InterlockedExchange]
lea edi, [ebp - 0x30]
or ecx, 0xffffffff
xor eax, eax
repne scasb al, byte es:[edi]
not ecx
sub edi, ecx
mov edx, ecx
mov esi, edi
mov edi, 0x424070
shr ecx, 2
rep movsd dword es:[edi], dword [esi]
mov ecx, edx
and ecx, 3
rep movsb byte es:[edi], byte [esi]
mov edi, 0x4190fc
or ecx, 0xffffffff
repne scasb al, byte es:[edi]
not ecx
sub edi, ecx
mov eax, ecx
mov esi, edi
mov edi, 0x42402c
shr ecx, 2
rep movsd dword es:[edi], dword [esi]
mov ecx, eax
and ecx, 3
rep movsb byte es:[edi], byte [esi]
mov edi, dword [sym.imp.KERNEL32.dll_CreateThread]
xor esi, esi
mov ecx, dword [ebp - 0x13c]
and ecx, 0xff
cmp esi, ecx
jge 0x409571
lea edx, [ebp - 0x3c]
xor eax, eax
mov al, byte [ebp + esi - 0x13b]
push edx
push 0
push eax
push 0x4098e0
push 0
push 0
call edi
mov ecx, dword [ebp - 0x18]
inc esi
mov dword [ecx + esi*4 - 4], eax
jmp 0x40953c
mov esi, dword [sym.imp.KERNEL32.dll_Sleep]
mov eax, dword [0x42405c]
test eax, eax
jne 0x4095af
mov eax, dword [ebx + 0x10]
lea eax, [eax + eax*4]
lea eax, [eax + eax*4]
lea edx, [eax + eax*4]
shl edx, 3
push edx
call esi
jmp 0x409577
mov esi, dword [ebp - 0x18]
mov dword [ebp - 4], 0xffffffff
test esi, esi
je 0x40973f
mov al, byte [ebp - 0x13c]
mov dword [ebp - 0x14], 0
test al, al
jbe 0x409731
mov edi, dword [sym.imp.KERNEL32.dll_OutputDebugStringA]
mov ecx, dword [ebp - 0x14]
xor eax, eax
mov al, byte [ebp + ecx - 0x13b]
push eax
call fcn.00409810
mov eax, dword [ebp - 0x14]
xor edx, edx
lea ecx, [ebp - 0x33c]
mov dword [ebp - 0x20], 0
mov dl, byte [ebp + eax - 0x13b]
push edx
push str._NBS_:_Waitting_Lana__d_exit..._n
push ecx
call fcn.0040d280
add esp, 0x10
lea edx, [ebp - 0x33c]
push edx
call edi
mov ecx, dword [esi]
lea eax, [ebp - 0x20]
push eax
push ecx
call dword [sym.imp.KERNEL32.dll_GetExitCodeThread]
test eax, eax
jne 0x409662
call dword [sym.imp.KERNEL32.dll_GetLastError]
push eax
lea edx, [ebp - 0x73c]
push str._NBS_:_Get_Thread_Exit_Code_failed__code__d_n
push edx
call fcn.0040d280
add esp, 0xc
lea eax, [ebp - 0x73c]
push eax
call edi
mov ecx, dword [esi]
push 0x7d0
push ecx
call dword [sym.imp.KERNEL32.dll_WaitForSingleObject]
mov eax, dword [ebp - 0x20]
cmp eax, 0x103
jne 0x4096e9
lea edx, [ebp - 0xb3c]
push str._NBS_:_Thread_still_active__Begin_waitting.._n
push edx
call fcn.0040d280
add esp, 8
lea eax, [ebp - 0xb3c]
push eax
call edi
mov ecx, dword [esi]
push 0x7d0
push ecx
call dword [sym.imp.KERNEL32.dll_WaitForSingleObject]
cmp eax, 0x102
mov dword [ebp - 0x20], eax
jne 0x4096cb
lea edx, [ebp - 0x53c]
push str._NBS_:_Wait_time_out__kill_it_now_n
push edx
call fcn.0040d280
add esp, 8
lea eax, [ebp - 0x53c]
push eax
call edi
mov ecx, dword [esi]
push 0
push ecx
call dword [sym.imp.KERNEL32.dll_TerminateThread]
jmp 0x409707
push eax
lea edx, [ebp - 0x93c]
push str._NBS_:_Thread_Exited__code__d_n
push edx
call fcn.0040d280
add esp, 0xc
lea eax, [ebp - 0x93c]
push eax
jmp 0x409705
push eax
lea ecx, [ebp - 0xd3c]
push str._NBS_:_Thread_Exited__code__d_n
push ecx
call fcn.0040d280
add esp, 0xc
lea edx, [ebp - 0xd3c]
push edx
call edi
mov eax, dword [esi]
push eax
call dword [sym.imp.KERNEL32.dll_CloseHandle]
mov eax, dword [ebp - 0x14]
mov ecx, dword [ebp - 0x13c]
inc eax
and ecx, 0xff
add esi, 4
cmp eax, ecx
mov dword [ebp - 0x14], eax
jl 0x4095dc
mov esi, dword [ebp - 0x18]
push 0x8000
push 0
push esi
call dword [sym.imp.KERNEL32.dll_VirtualFree]
mov al, byte [ebp - 0x13c]
xor esi, esi
test al, al
jbe 0x409777
lea edi, [ebx + 0xda4]
xor edx, edx
push str.FTNetServer
mov dl, byte [ebp + esi - 0x13b]
mov ecx, edi
push edx
call fcn.004060d0
mov eax, dword [ebp - 0x13c]
inc esi
and eax, 0xff
cmp esi, eax
jl 0x409751
mov edi, dword [sym.imp.KERNEL32.dll_InterlockedExchange]
lea esi, [ebx + 0x1414]
push 1
push esi
call edi
push 0x9e
mov ecx, 0x424040
call fcn.004069e0
mov ecx, dword [ebx + 0x1430]
push 0xffffffffffffffff
push ecx
call dword [sym.imp.KERNEL32.dll_WaitForSingleObject]
mov edx, dword [ebx + 0x1430]
push edx
call dword [sym.imp.KERNEL32.dll_CloseHandle]
push 0
push 0x42405c
mov dword [ebx + 0x1430], 0
call edi
push 0
push esi
call edi
mov eax, dword [ebx + 0x142c]
push eax
call dword [sym.imp.KERNEL32.dll_SetEvent]
mov ecx, dword [ebx + 0x12fc]
mov dword [ebx + 0x142c], 0
push ecx
call dword [sym.imp.KERNEL32.dll_ResetEvent]
add ebx, 0x1444
push 0
push ebx
call edi
mov ecx, dword [ebp - 0xc]
pop edi
pop esi
xor eax, eax
mov dword fs:[0], ecx
pop ebx
mov esp, ebp
pop ebp
ret 4