Function at 0x52af60
Capabilities:
Resolve function by parsing pe exports

Disassembly:
push 0xffffffffffffffff
push 0x5e24f3
mov eax, dword fs:[0]
push eax
sub esp, 0x60
push ebx
push ebp
push esi
push edi
mov eax, dword [0x72d630]
xor eax, esp
push eax
lea eax, [esp + 0x74]
mov dword fs:[0], eax
mov ebx, ecx
mov dword [esp + 0x14], ebx
call fcn.00529af0
mov eax, dword [ebx + 0x74]
xor ebp, ebp
cmp dword [eax + 0xc8], ebp
je 0x52b697
mov esi, dword [esp + 0x84]
cmp esi, ebp
je 0x52b697
cmp dword [esi + 0x20], ebp
je 0x52b697
mov ecx, ebx
call fcn.005283d0
mov ecx, eax
call fcn.00589c30
mov ecx, dword [esi + 0x20]
push ecx
call dword [sym.imp.USER32.dll_UpdateWindow]
mov edx, dword [esp + 0x88]
mov dword [ebx + 0x44], edx
mov dword [ebx + 0x40], esi
mov dword [ebx + 0x48], ebp
mov eax, dword [esi]
mov edx, dword [eax + 0x1c4]
mov ecx, esi
call edx
cmp dword [ebx + 0x34], ebp
jne 0x52affc
mov dword [ebx + 0x40], ebp
jmp 0x52b697
mov ecx, ebx
call fcn.005283a0
mov edi, eax
push esi
lea ecx, [esp + 0x64]
mov dword [esp + 0x30], edi
call sub.mfc90u.dll_CClientDC::CClientDC
add edi, 0xbc
push edi
lea eax, [esp + 0x64]
push eax
lea ecx, [esp + 0x58]
mov dword [esp + 0x84], ebp
call fcn.0055cc20
mov edi, dword [ebx + 0x34]
dec edi
cmp edi, ebp
mov byte [esp + 0x7c], 1
jl 0x52b124
test edi, edi
jl 0x52b256
mov eax, dword [esp + 0x14]
add eax, 0x2c
cmp edi, dword [eax + 8]
jge 0x52b256
mov ecx, dword [eax + 4]
mov esi, dword [ecx + edi*4]
lea eax, [ecx + edi*4]
lea ebp, [esi + 0x54]
mov ecx, ebp
call dword [sym.imp.mfc90u.dll_ATL::CSimpleStringT_wchar_t_1_::IsEmpty]
xor edx, edx
test al, al
sete dl
mov eax, edx
mov dword [esi + 0x7c], eax
test eax, eax
jne 0x52b117
lea ebx, [esi + 0x58]
mov ecx, ebx
call dword [sym.imp.mfc90u.dll_ATL::CSimpleStringT_wchar_t_1_::IsEmpty]
test al, al
je 0x52b0b4
mov eax, dword [esi]
mov edx, dword [eax + 0x68]
mov ecx, esi
call edx
mov eax, dword [esi]
mov edx, dword [eax + 4]
push 1
mov ecx, esi
call edx
mov ecx, dword [esp + 0x14]
push 1
push edi
add ecx, 0x2c
call fcn.00587b70
jmp 0x52b117
mov ecx, ebx
call dword [sym.imp.mfc90u.dll_ATL::CStringT_wchar_t_class_StrTraitMFC_DLL_wchar_t_class_ATL::ChTraitsCRT_wchar_t_____::MakeUpper]
mov ecx, ebx
call dword [sym.imp.mfc90u.dll_]
push eax
call fcn.00535f10
add esi, 0x5c
add esp, 4
mov ecx, esi
mov dword [esp + 0x88], eax
call dword [sym.imp.mfc90u.dll_ATL::CSimpleStringT_wchar_t_1_::IsEmpty]
test al, al
je 0x52b10e
mov eax, dword [esp + 0x88]
inc eax
push eax
mov ecx, ebx
call dword [sym.imp.mfc90u.dll_ATL::CSimpleStringT_wchar_t_1_::GetAt]
movzx ecx, ax
push ecx
mov ecx, ebp
call dword [sym.imp.mfc90u.dll_ATL::CStringT_wchar_t_class_StrTraitMFC_DLL_wchar_t_class_ATL::ChTraitsCRT_wchar_t_____::operator]
call fcn.00552090
mov ecx, eax
call fcn.005407b0
jmp 0x52b117
push esi
mov ecx, ebp
call dword [sym.imp.mfc90u.dll_ATL::CStringT_wchar_t_class_StrTraitMFC_DLL_wchar_t_class_ATL::ChTraitsCRT_wchar_t_____::operator_2]
sub edi, 1
jns 0x52b040
mov ebx, dword [esp + 0x14]
mov edi, dword [ebx + 0x34]
xor esi, esi
mov dword [esp + 0x18], edi
test edi, edi
jle 0x52b43a
test esi, esi
jl 0x52b256
mov eax, dword [esp + 0x14]
cmp esi, dword [eax + 0x34]
jge 0x52b256
mov edx, dword [eax + 0x30]
mov edi, dword [edx + esi*4]
lea eax, [edx + esi*4]
lea eax, [edi + 0x54]
push eax
lea ecx, [esp + 0x28]
call dword [0x612600]
lea ecx, [esp + 0x3c]
call fcn.00528580
mov ecx, dword [esp + 0x44]
push edi
push ecx
lea ecx, [esp + 0x44]
mov byte [esp + 0x84], 3
call fcn.00557a50
push 0x6c0610
lea ecx, [esp + 0x8c]
call dword [0x612678]
inc esi
cmp esi, dword [esp + 0x18]
mov byte [esp + 0x7c], 4
mov dword [esp + 0x38], esi
jge 0x52b231
jmp 0x52b1b0
mov eax, dword [esp + 0x14]
test esi, esi
jl 0x52b256
cmp esi, dword [eax + 0x34]
jge 0x52b256
mov edx, dword [eax + 0x30]
mov ebp, dword [edx + esi*4]
lea eax, [edx + esi*4]
push 0
lea ecx, [esp + 0x28]
lea edi, [ebp + 0x54]
call dword [sym.imp.mfc90u.dll_ATL::CSimpleStringT_wchar_t_1_::operator__]
push 0
mov ecx, edi
mov bx, ax
call dword [sym.imp.mfc90u.dll_ATL::CSimpleStringT_wchar_t_1_::operator__]
cmp ax, bx
jne 0x52b226
mov eax, dword [esp + 0x44]
push ebp
push eax
lea ecx, [esp + 0x44]
call fcn.00557a50
mov ecx, edi
call dword [sym.imp.mfc90u.dll_ATL::CSimpleStringT_wchar_t_1_::GetLength]
cmp eax, 2
jne 0x52b226
push 1
mov ecx, edi
call dword [sym.imp.mfc90u.dll_ATL::CSimpleStringT_wchar_t_1_::operator__]
movzx ecx, ax
push ecx
lea ecx, [esp + 0x8c]
call dword [0x61233c]
inc esi
cmp esi, dword [esp + 0x18]
jl 0x52b1b0
mov esi, dword [esp + 0x38]
mov eax, dword [esp + 0x44]
cmp eax, 2
jl 0x52b3fe
xor ebx, ebx
mov dword [esp + 0x30], 1
mov dword [esp + 0x20], ebx
test eax, eax
jle 0x52b3fe
jmp 0x52b264
call fcn.005df2b2
jmp 0x52b260
mov eax, dword [esp + 0x44]
test ebx, ebx
jl 0x52b256
cmp ebx, eax
jge 0x52b256
mov edx, dword [esp + 0x40]
mov esi, dword [edx + ebx*4]
lea ebp, [esi + 0x54]
mov ecx, ebp
call dword [sym.imp.mfc90u.dll_ATL::CSimpleStringT_wchar_t_1_::GetLength]
cmp eax, 1
jg 0x52b3eb
add esi, 0x58
mov ecx, esi
xor edi, edi
call dword [sym.imp.mfc90u.dll_ATL::CSimpleStringT_wchar_t_1_::GetLength]
dec eax
test eax, eax
jle 0x52b307
lea esp, [esp]
push edi
mov ecx, esi
call dword [sym.imp.mfc90u.dll_ATL::CSimpleStringT_wchar_t_1_::operator__]
cmp ax, 0x20
jne 0x52b2d3
push 0
lea eax, [edi + 1]
push eax
mov ecx, esi
call dword [sym.imp.mfc90u.dll_ATL::CSimpleStringT_wchar_t_1_::operator__]
movzx ecx, ax
push ecx
lea ecx, [esp + 0x90]
call dword [sym.imp.mfc90u.dll_ATL::CStringT_wchar_t_class_StrTraitMFC_DLL_wchar_t_class_ATL::ChTraitsCRT_wchar_t_____::Find]
cmp eax, 0xffffffff
je 0x52b2e3
mov ecx, esi
inc edi
call dword [sym.imp.mfc90u.dll_ATL::CSimpleStringT_wchar_t_1_::GetLength]
dec eax
cmp edi, eax
jl 0x52b2a0
jmp 0x52b307
inc edi
push edi
mov ecx, esi
call dword [sym.imp.mfc90u.dll_ATL::CSimpleStringT_wchar_t_1_::operator__]
movzx edi, ax
push edi
lea ecx, [esp + 0x8c]
call dword [0x61233c]
test di, di
jne 0x52b3e2
push 0
mov ecx, esi
call dword [sym.imp.mfc90u.dll_ATL::CSimpleStringT_wchar_t_1_::operator__]
xor edx, edx
cmp ax, 0x26
sete dl
mov ecx, esi
mov edi, edx
push edi
call dword [sym.imp.mfc90u.dll_ATL::CSimpleStringT_wchar_t_1_::operator__]
push 0
mov ecx, ebp
mov bx, ax
call dword [sym.imp.mfc90u.dll_ATL::CSimpleStringT_wchar_t_1_::operator__]
cmp bx, ax
jne 0x52b338
inc edi
mov ecx, esi
call dword [sym.imp.mfc90u.dll_ATL::CSimpleStringT_wchar_t_1_::GetLength]
cmp edi, eax
jge 0x52b391
push 0
push edi
mov ecx, esi
call dword [sym.imp.mfc90u.dll_ATL::CSimpleStringT_wchar_t_1_::operator__]
movzx eax, ax
push eax
lea ecx, [esp + 0x90]
call dword [sym.imp.mfc90u.dll_ATL::CStringT_wchar_t_class_StrTraitMFC_DLL_wchar_t_class_ATL::ChTraitsCRT_wchar_t_____::Find]
mov ecx, esi
cmp eax, 0xffffffff
je 0x52b374
inc edi
call dword [sym.imp.mfc90u.dll_ATL::CSimpleStringT_wchar_t_1_::GetLength]
cmp edi, eax
jl 0x52b344
jmp 0x52b391
push edi
call dword [sym.imp.mfc90u.dll_ATL::CSimpleStringT_wchar_t_1_::operator__]
movzx edi, ax
push edi
lea ecx, [esp + 0x8c]
call dword [0x61233c]
test di, di
jne 0x52b3de
lea ecx, [esp + 0x1c]
call dword [sym.imp.mfc90u.dll_ATL::CStringT_wchar_t_class_StrTraitMFC_DLL_wchar_t_class_ATL::ChTraitsCRT_wchar_t_____::CStringT_wchar_t_class]
mov esi, dword [esp + 0x30]
push esi
lea ecx, [esp + 0x20]
push 0x6989e8
push ecx
mov byte [esp + 0x88], 5
call dword [sym.imp.mfc90u.dll_ATL::CStringT_wchar_t_class_StrTraitMFC_DLL_wchar_t_class_ATL::ChTraitsCRT_wchar_t_____::Format]
add esp, 0xc
push 0
lea ecx, [esp + 0x20]
call dword [sym.imp.mfc90u.dll_ATL::CSimpleStringT_wchar_t_1_::operator__]
inc esi
lea ecx, [esp + 0x1c]
movzx edi, ax
mov dword [esp + 0x30], esi
mov byte [esp + 0x7c], 4
call dword [sym.imp.mfc90u.dll_ATL::CStringT_wchar_t_class_StrTraitMFC_DLL_wchar_t_class_ATL::ChTraitsCRT_wchar_t_____::CStringT_wchar_t_clas]
mov ebx, dword [esp + 0x20]
push edi
mov ecx, ebp
call dword [0x61233c]
inc ebx
cmp ebx, dword [esp + 0x44]
mov dword [esp + 0x20], ebx
jl 0x52b260
mov esi, dword [esp + 0x38]
lea ecx, [esp + 0x88]
call dword [sym.imp.mfc90u.dll_ATL::CStringT_wchar_t_class_StrTraitMFC_DLL_wchar_t_class_ATL::ChTraitsCRT_wchar_t_____::CStringT_wchar_t_clas]
lea ecx, [esp + 0x3c]
mov byte [esp + 0x7c], 2
call fcn.005285a0
lea ecx, [esp + 0x24]
mov byte [esp + 0x7c], 1
call dword [sym.imp.mfc90u.dll_ATL::CStringT_wchar_t_class_StrTraitMFC_DLL_wchar_t_class_ATL::ChTraitsCRT_wchar_t_____::CStringT_wchar_t_clas]
cmp esi, dword [esp + 0x18]
jl 0x52b135
mov edi, dword [esp + 0x18]
mov ebx, dword [esp + 0x14]
mov ecx, ebx
call fcn.00528100
mov dword [esp + 0x38], eax
xor eax, eax
mov dword [esp + 0x88], eax
test edi, edi
jle 0x52b63a
test eax, eax
jl 0x52b256
cmp eax, dword [ebx + 0x34]
jge 0x52b256
mov edx, dword [ebx + 0x30]
mov esi, dword [edx + eax*4]
cmp dword [esi + 0x70], 0
lea eax, [edx + eax*4]
je 0x52b61b
lea eax, [esp + 0x24]
lea edi, [esi + 0x54]
push eax
mov ecx, edi
call dword [sym.imp.mfc90u.dll_ATL::CSimpleStringT_wchar_t_1_::GetLength]
push eax
mov ecx, edi
call dword [sym.imp.mfc90u.dll_]
mov ecx, dword [esp + 0x70]
push eax
push ecx
call dword [sym.imp.GDI32.dll_GetTextExtentPoint32W]
mov eax, dword [esp + 0x28]
add eax, 2
cmp eax, 0xf
mov ebx, eax
jg 0x52b4b2
mov ebx, 0xf
mov eax, dword [esp + 0x24]
add eax, 6
cmp eax, 0x10
mov ebp, eax
jg 0x52b4c5
mov ebp, 0x10
mov edx, dword [esi + 0x64]
mov dword [esp + 0x30], edx
mov eax, dword [esi + 0x68]
mov dword [esp + 0x34], eax
mov ecx, dword [esi + 0x60]
push ecx
call sub.mfc90u.dll_CWnd::GetThisClass
push eax
call sub.mfc90u.dll_AfxDynamicDownCast
add esp, 8
test eax, eax
jne 0x52b4ff
mov eax, dword [esp + 0x84]
mov ecx, dword [eax + 0x20]
lea edx, [esp + 0x30]
push edx
push ecx
call dword [sym.imp.USER32.dll_ClientToScreen]
mov ecx, dword [esi + 0x78]
test cl, 4
je 0x52b512
mov eax, ebx
cdq
sub eax, edx
mov edi, eax
sar edi, 1
jmp 0x52b520
mov edx, ecx
and dl, 8
movzx edi, dl
neg edi
sbb edi, edi
and edi, ebx
test cl, 1
je 0x52b52e
mov eax, ebp
cdq
sub eax, edx
sar eax, 1
jmp 0x52b540
cmp dword [esp + 0x38], 0
jne 0x52b53e
test cl, 2
jne 0x52b53e
xor eax, eax
jmp 0x52b540
mov eax, ebp
mov ecx, dword [esp + 0x34]
mov edx, dword [esp + 0x30]
sub edx, eax
mov eax, dword [esp + 0x2c]
sub ecx, edi
mov dword [esp + 0x3c], edx
add edx, ebp
mov dword [esp + 0x40], ecx
add ecx, ebx
cmp dword [eax + 0xe8], 0
mov dword [esp + 0x44], edx
mov dword [esp + 0x48], ecx
je 0x52b57a
cmp dword [esi + 0x6c], 0
jne 0x52b57a
mov ebp, 1
jmp 0x52b57c
xor ebp, ebp
mov ecx, dword [esp + 0x84]
mov edi, dword [esi]
push 0
push 0
push ecx
lea edx, [esp + 0x48]
push edx
push closesocket
push 0
push 0
push 0
push 0
push 0x800
add edi, 0x60
call sub.mfc90u.dll_AfxRegisterWndClass
mov edx, dword [edi]
push eax
mov eax, ebp
neg eax
sbb eax, eax
and eax, 0x80000
or eax, 0x80
push eax
mov ecx, esi
call edx
mov eax, dword [esp + 0x40]
mov ecx, dword [esp + 0x48]
mov edx, dword [esp + 0x44]
push 0x210
sub ecx, eax
push ecx
mov ecx, dword [esp + 0x44]
sub edx, ecx
push edx
push eax
mov eax, dword [sym.imp.mfc90u.dll_CWnd::wndTop]
push ecx
push eax
mov ecx, esi
call sub.mfc90u.dll_CWnd::SetWindowPos
mov ecx, dword [esp + 0x2c]
mov edx, dword [ecx]
mov eax, dword [edx + 0x128]
push 1
push esi
push 0
call eax
test ebp, ebp
je 0x52b61b
mov ecx, dword [esi + 0x20]
mov edx, dword [esp + 0x2c]
mov eax, dword [edx + 0xe8]
push 2
push 0x96
push 0
push ecx
call eax
mov eax, dword [esp + 0x88]
mov edi, dword [esp + 0x18]
mov ebx, dword [esp + 0x14]
inc eax
cmp eax, edi
mov dword [esp + 0x88], eax
jl 0x52b456
xor esi, esi
test edi, edi
jle 0x52b678
test esi, esi
jl 0x52b256
cmp esi, dword [ebx + 0x34]
jge 0x52b256
mov ecx, dword [ebx + 0x30]
lea eax, [ecx + esi*4]
mov ecx, dword [eax]
cmp dword [ecx + 0x70], 0
je 0x52b673
push 0x257
push 0
push 0
push 0
push 0
push 0
call sub.mfc90u.dll_CWnd::SetWindowPos
inc esi
cmp esi, edi
jl 0x52b640
lea ecx, [esp + 0x50]
mov byte [esp + 0x7c], 0
call fcn.0055cc60
lea ecx, [esp + 0x60]
mov dword [esp + 0x7c], 0xffffffff
call fcn.005df0c0
mov ecx, dword [esp + 0x74]
mov dword fs:[0], ecx
pop ecx
pop edi
pop esi
pop ebp
pop ebx
add esp, 0x6c
ret 8