Function at 0x4156c0
Capabilities:
Access peb ldr_data
Create thread
Get number of processors

Disassembly:
push 0xffffffffffffffff
push 0x4fa8d6
mov eax, dword fs:[0]
push eax
sub esp, 0x874
mov eax, dword [0x52f4a8]
xor eax, esp
mov dword [esp + 0x870], eax
push ebx
push ebp
push esi
push edi
mov eax, dword [0x52f4a8]
xor eax, esp
push eax
lea eax, [esp + 0x888]
mov dword fs:[0], eax
mov esi, ecx
mov ecx, dword [esi + 0x1bb4]
inc dword [esi + 0x1bb0]
mov eax, dword [ecx + 0x550]
mov edx, dword [eax + 0x20]
add ecx, 0x550
mov dword [esp + 0x1c], esi
call edx
mov ecx, dword [esi + 0x1bb4]
mov eax, dword [ecx + 0x6c0]
mov edx, dword [eax + 0xc]
add ecx, 0x6c0
xor ebx, ebx
push ebx
push 0xffffffffffffffff
call edx
mov eax, 0xf
mov dword [esp + 0x3d4], ebx
mov dword [esp + 0x3f0], eax
mov dword [esp + 0x3ec], ebx
mov byte [esp + 0x3dc], bl
mov dword [esp + 0x3fc], ebx
mov dword [esp + 0x418], eax
mov dword [esp + 0x414], ebx
mov byte [esp + 0x404], bl
mov dword [esp + 0x890], ebx
mov eax, dword [esi + 0x1744]
push eax
lea ecx, [esp + 0x3d8]
lea edi, [esi + 0x1b60]
push ecx
mov ecx, edi
call fcn.004564e0
lea ebp, [esi + 0x30]
push str.serverliststatus
mov ecx, ebp
call dword [sym.imp.LibDui.dll_public:_class_DuiLib::CControlUI____thiscall_DuiLib::CPaintManagerUI::FindControl_wchar_t_const__const]
cmp dword [esp + 0x3f8], 1
mov edx, dword [eax]
mov ecx, eax
mov eax, dword [edx + 0xf8]
jne 0x41586c
push 1
call eax
push str.serverlisttext
mov ecx, ebp
call dword [sym.imp.LibDui.dll_public:_class_DuiLib::CControlUI____thiscall_DuiLib::CPaintManagerUI::FindControl_wchar_t_const__const]
cmp dword [esp + 0x418], 0x10
mov edi, eax
mov eax, dword [esp + 0x404]
jae 0x4157ed
lea eax, [esp + 0x404]
push eax
lea ebx, [esp + 0x3c]
call fcn.0046b440
add esp, 4
mov ebp, 8
mov byte [esp + 0x890], 1
cmp dword [eax + 0x1c], ebp
jb 0x415811
mov eax, dword [eax + 8]
jmp 0x415814
add eax, 8
mov edx, dword [edi]
push eax
mov eax, dword [edx + 0x2c]
mov ecx, edi
call eax
xor ebx, ebx
mov byte [esp + 0x890], bl
cmp dword [esp + 0x54], ebp
jb 0x41583a
mov ecx, dword [esp + 0x40]
push ecx
call fcn.00476350
add esp, 4
xor edx, edx
lea ecx, [esp + 0x38]
mov dword [esp + 0x54], 7
mov dword [esp + 0x50], ebx
mov word [esp + 0x40], dx
call fcn.00401050
mov ecx, dword [esi + 0x1bb4]
mov eax, dword [ecx]
mov edx, dword [eax + 0xf8]
push ebx
call edx
jmp 0x415d9e
push ebx
call eax
mov ecx, dword [esi + 0x1bb4]
mov edx, dword [ecx]
mov eax, dword [edx + 0xf8]
push 1
call eax
push 0x1ff
lea ecx, [esp + 0x689]
push ebx
push ecx
mov byte [esp + 0x690], bl
call fcn.00488300
mov eax, dword [esi + 0x1744]
add esp, 0xc
cmp eax, ebx
je 0x4158c5
push eax
push str.select__from_vpnlist_where__tags__like_____d___
lea edx, [esp + 0x68c]
push 0x200
push edx
call fcn.00478f10
add esp, 0x10
jmp 0x4158df
push str.select__from_vpnlist
lea eax, [esp + 0x688]
push 0x200
push eax
call fcn.00478f10
add esp, 0xc
lea eax, [esi + 0x1f28]
call fcn.004227b0
mov dword [esp + 0x24], ebx
mov dword [esp + 0x2c], ebx
mov dword [esp + 0x30], ebx
mov dword [esp + 0x34], ebx
lea ecx, [esp + 0x684]
push ecx
lea ecx, [esp + 0x28]
mov edx, edi
mov byte [esp + 0x894], 3
call fcn.00456d60
mov ecx, dword [esp + 0x30]
sub ecx, dword [esp + 0x2c]
mov eax, 0x13e22cbd
imul ecx
sar edx, 5
mov eax, edx
shr eax, 0x1f
add eax, edx
mov dword [esp + 0x18], ebx
test eax, eax
jle 0x415d29
lea ebx, [ebx]
lea ecx, [esp + 0x534]
call dword [sym.imp.LibDui.dll_public:_void___thiscall_DuiLib::CDialogBuilder::constructor_void_]
push ebx
push ebx
push ebx
push ebx
push ecx
mov byte [esp + 0x8a4], 4
mov eax, esp
lea ecx, [esp + 0x548]
mov dword [esp + 0x74], esp
mov dword [eax], str.XML_MAIN_LIST
call dword [sym.imp.LibDui.dll_public:_class_DuiLib::CControlUI____thiscall_DuiLib::CDialogBuilder::Create_class_DuiLib::STRINGorID__wchar_t_const___class_DuiLib::IDialogBuilderCallback___class_DuiLib::CPaintManagerUI___class_DuiLib::CControlUI__]
mov esi, dword [esi + 0x1bb4]
mov edx, dword [esi + 0x550]
lea ecx, [esi + 0x550]
mov ebp, eax
mov eax, dword [edx + 0x10]
push ebp
call eax
mov edi, dword [esp + 0x18]
lea esi, [esp + 0x24]
call fcn.00423320
add eax, 4
cmp dword [eax + 0x1c], 0x10
jb 0x4159a8
mov eax, dword [eax + 8]
jmp 0x4159ab
add eax, 8
push eax
lea ebx, [esp + 0x68]
call fcn.0046b440
add esp, 4
mov esi, 8
mov byte [esp + 0x890], 5
cmp dword [eax + 0x1c], esi
jb 0x4159cf
mov eax, dword [eax + 8]
jmp 0x4159d2
add eax, 8
push 0xffffffffffffffff
push eax
lea ecx, [esp + 0x42c]
call dword [sym.imp.LibDui.dll_public:_void___thiscall_DuiLib::CDuiString::constructor_wchar_t_const___int_]
mov ebx, 7
mov byte [esp + 0x890], bl
cmp dword [esp + 0x80], esi
jb 0x415a04
mov ecx, dword [esp + 0x6c]
push ecx
call fcn.00476350
add esp, 4
xor edx, edx
xor esi, esi
push 3
lea ecx, [esp + 0x60]
mov dword [esp + 0x84], ebx
mov dword [esp + 0x80], esi
mov word [esp + 0x70], dx
call fcn.00473c00
mov eax, dword [esp + 0x64]
cmp eax, 0xfffffffd
je 0x415a48
cmp eax, esi
je 0x415a44
mov dword [eax], esi
mov eax, dword [esp + 0x64]
mov eax, dword [eax + 4]
mov dword [esp + 0x64], eax
cmp eax, esi
jne 0x415a33
mov dword [esp + 0x64], esi
lea ecx, [esp + 0x5c]
call fcn.00473c40
lea ecx, [esp + 0x424]
push ecx
call fcn.00434470
add esp, 4
push str.LBL_NAME
mov ecx, ebp
call dword [sym.imp.LibDui.dll_public:_class_DuiLib::CControlUI____thiscall_DuiLib::CContainerUI::FindSubControl_wchar_t_const__]
mov edi, eax
mov esi, dword [edi]
lea ecx, [esp + 0x424]
add esi, 0x2c
call dword [sym.imp.LibDui.dll_public:_wchar_t_const____thiscall_DuiLib::CDuiString::GetData_void_const]
mov edx, dword [esi]
push eax
mov ecx, edi
call edx
mov edi, dword [esp + 0x18]
lea esi, [esp + 0x24]
call fcn.00423320
add eax, 0x64
cmp dword [eax + 0x1c], 0x10
jb 0x415aa4
mov eax, dword [eax + 8]
jmp 0x415aa7
add eax, 8
push eax
lea ebx, [esp + 0x3c]
call fcn.0046b440
add esp, 4
mov ebx, 8
mov byte [esp + 0x890], bl
cmp dword [eax + 0x1c], ebx
jb 0x415aca
mov eax, dword [eax + 8]
jmp 0x415acd
add eax, 8
push 0xffffffffffffffff
push eax
lea ecx, [esp + 0x4b4]
call dword [sym.imp.LibDui.dll_public:_void___thiscall_DuiLib::CDuiString::constructor_wchar_t_const___int_]
mov byte [esp + 0x890], 0xa
cmp dword [esp + 0x54], ebx
jb 0x415af8
mov eax, dword [esp + 0x40]
push eax
call fcn.00476350
add esp, 4
xor ecx, ecx
mov word [esp + 0x40], cx
xor esi, esi
push 3
lea ecx, [esp + 0x5c]
mov dword [esp + 0x58], 7
mov dword [esp + 0x54], esi
call fcn.00473c00
mov eax, dword [esp + 0x38]
cmp eax, 0xfffffffd
je 0x415b3a
cmp eax, esi
je 0x415b36
mov dword [eax], esi
mov edx, dword [esp + 0x38]
mov eax, dword [edx + 4]
mov dword [esp + 0x38], eax
cmp eax, esi
jne 0x415b25
mov dword [esp + 0x38], esi
lea ecx, [esp + 0x58]
call fcn.00473c40
lea eax, [esp + 0x4ac]
push eax
call fcn.00434470
add esp, 4
push str.LBL_MS
mov ecx, ebp
call dword [sym.imp.LibDui.dll_public:_class_DuiLib::CControlUI____thiscall_DuiLib::CContainerUI::FindSubControl_wchar_t_const__]
mov edi, eax
mov esi, dword [edi]
lea ecx, [esp + 0x4ac]
add esi, 0x2c
call dword [sym.imp.LibDui.dll_public:_wchar_t_const____thiscall_DuiLib::CDuiString::GetData_void_const]
mov edx, dword [esi]
push eax
mov ecx, edi
call edx
mov ebx, dword [ebp]
mov edi, dword [esp + 0x18]
lea esi, [esp + 0x24]
add ebx, 0xf0
call fcn.00423320
mov eax, dword [eax]
mov edx, dword [ebx]
push eax
mov ecx, ebp
call edx
mov ebp, edi
call fcn.00423320
mov ebx, eax
call fcn.00423320
mov eax, dword [eax]
lea ecx, [esp + 0x98]
push ecx
mov edi, ebx
mov dword [esp + 0x98], eax
call fcn.00423800
mov bl, 0xb
mov byte [esp + 0x890], bl
mov edx, dword [esp + 0x94]
lea eax, [esp + 0x238]
push eax
lea edi, [esp + 0x9c]
mov dword [esp + 0x238], edx
call fcn.00423800
mov eax, dword [esp + 0x1c]
lea ecx, [esp + 0x234]
push ecx
lea edx, [esp + 0x88]
push edx
add eax, 0x1f28
push eax
mov byte [esp + 0x89c], 0xc
call fcn.004225b0
push 3
lea ecx, [esp + 0x24]
call fcn.00473c00
mov byte [esp + 0x890], 0xd
mov eax, dword [esp + 0x84]
test eax, eax
je 0x415c86
cmp dword [eax], 0xfffffffd
je 0x415c86
cmp dword [eax], 0
mov esi, eax
je 0x415c56
lea esp, [esp]
mov eax, dword [esi]
lea ecx, [esp + 0x84]
cmp eax, ecx
je 0x415c56
cmp dword [eax + 4], 0
lea esi, [eax + 4]
jne 0x415c40
cmp dword [esi], 0
jne 0x415c72
push 0xbd
push 0x50d2b8
push str.ITERATOR_LIST_CORRUPTED_
call fcn.00473c70
add esp, 0xc
mov edx, dword [esp + 0x88]
mov dword [esi], edx
mov dword [esp + 0x84], 0
lea ecx, [esp + 0x20]
mov byte [esp + 0x890], 0xc
call fcn.00473c40
lea eax, [esp + 0x238]
push eax
mov byte [esp + 0x894], bl
call fcn.0040d2d0
lea ecx, [esp + 0x98]
push ecx
mov byte [esp + 0x894], 0xa
call fcn.0040d2d0
mov byte [esp + 0x890], 7
mov esi, dword [sym.imp.LibDui.dll_public:_void___thiscall_DuiLib::CDuiString::destructor_void_]
lea ecx, [esp + 0x4ac]
call esi
lea ecx, [esp + 0x424]
mov byte [esp + 0x890], 4
call esi
lea ecx, [esp + 0x534]
mov byte [esp + 0x890], 3
call dword [sym.imp.LibDui.dll_public:_void___thiscall_DuiLib::CDialogBuilder::destructor_void_]
mov ecx, dword [esp + 0x30]
sub ecx, dword [esp + 0x2c]
mov esi, dword [esp + 0x1c]
mov eax, 0x13e22cbd
imul ecx
sar edx, 5
mov eax, edx
shr eax, 0x1f
inc ebp
add eax, edx
xor ebx, ebx
cmp ebp, eax
mov dword [esp + 0x18], ebp
jl 0x415940
inc dword [esi + 0x1bb0]
lea ecx, [esp + 0x60]
push ecx
push ebx
push esi
push 0x415fd0
push ebx
push ebx
mov dword [esi + 0x1bac], ebx
call dword [sym.imp.KERNEL32.dll_CreateThread]
push eax
call dword [sym.imp.KERNEL32.dll_CloseHandle]
lea edi, [esp + 0x24]
mov byte [esp + 0x890], 0xe
call fcn.00425d50
push 3
lea ecx, [esp + 0x24]
mov byte [esp + 0x894], bl
call fcn.00473c00
mov eax, dword [esp + 0x24]
cmp eax, 0xfffffffd
je 0x415d95
cmp eax, ebx
je 0x415d91
mov dword [eax], ebx
mov edx, dword [esp + 0x24]
mov eax, dword [edx + 4]
mov dword [esp + 0x24], eax
cmp eax, ebx
jne 0x415d80
mov dword [esp + 0x24], ebx
lea ecx, [esp + 0x20]
call fcn.00473c40
lea eax, [esp + 0x3d4]
push eax
mov dword [esp + 0x894], 0xffffffff
call fcn.0040c5c0
mov ecx, dword [esp + 0x888]
mov dword fs:[0], ecx
pop ecx
pop edi
pop esi
pop ebp
pop ebx
mov ecx, dword [esp + 0x870]
xor ecx, esp
call fcn.00476050
add esp, 0x880
ret