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

Disassembly:
push ebp
mov ebp, esp
and esp, 0xfffffff8
push 0xffffffffffffffff
push 0x23a48206
mov eax, dword fs:[0]
push eax
sub esp, 0x2c0
mov eax, dword [0x23a7ca94]
xor eax, esp
mov dword [esp + 0x2b8], eax
push ebx
push esi
push edi
mov eax, dword [0x23a7ca94]
xor eax, esp
push eax
lea eax, [esp + 0x2d0]
mov dword fs:[0], eax
mov edi, dword [ebp + 8]
mov eax, dword [edi]
mov edx, dword [eax + 0x24]
mov esi, ecx
mov ecx, edi
call edx
push 1
mov ecx, edi
mov dword [esp + 0x60], eax
call sub.mfc90u.dll_CDC::SetBkMode
mov ebx, dword [edi]
add ebx, 0x30
call dword [sym.imp.XTToolkitPro.dll_class_CXTPAuxData____stdcall_XTPAuxData_void_]
add eax, 0xdc
push eax
mov eax, dword [ebx]
mov ecx, edi
call eax
push esi
lea ecx, [esp + 0x7c]
call dword [sym.imp.XTToolkitPro.dll_public:_void___thiscall_CXTPClientRect::constructor_class_CWnd_const__]
mov ebx, dword [esi + 0xac]
imul ebx, dword [esi + 0xb4]
mov eax, dword [esp + 0x80]
mov ecx, dword [esp + 0x78]
mov edx, dword [esp + 0x7c]
mov dword [esp + 0x2c], eax
mov eax, dword [esp + 0x84]
cmp ebx, eax
mov dword [esp + 0x24], ecx
mov dword [esp + 0x28], edx
mov dword [esp + 0x30], eax
jge 0x23a2f6c6
mov ebx, eax
push 0xe900
mov ecx, esi
call sub.mfc90u.dll_CWnd::GetDlgItem
push eax
lea ecx, [esp + 0x64]
call dword [sym.imp.XTToolkitPro.dll_public:_void___thiscall_CXTPWindowRect::constructor_class_CWnd_const__]
lea ecx, [esp + 0x60]
push ecx
mov ecx, esi
call sub.mfc90u.dll_CWnd::ScreenToClient
mov ecx, esi
call sub.mfc90u.dll_CWnd::GetParentFrame
mov ecx, eax
call dword [sym.imp.XTToolkitPro.dll_public:_class_CXTPCommandBars____thiscall_CXTPCommandBarsSiteBase_class_CFrameWnd_::GetCommandBars_void_const]
mov ecx, dword [esp + 0x64]
mov edx, dword [esp + 0x60]
mov dword [esp + 0x48], ecx
mov ecx, dword [esp + 0x6c]
mov dword [esp + 0x44], edx
mov edx, dword [esp + 0x68]
mov dword [esp + 0x50], ecx
mov ecx, eax
mov dword [esp + 0x4c], edx
call dword [sym.imp.XTToolkitPro.dll_public:_class_CXTPPaintManager____thiscall_CXTPCommandBars::GetPaintManager_void_const]
mov ecx, dword [esp + 0x44]
sub esp, 0x10
mov edx, esp
mov dword [edx], ecx
mov ecx, dword [esp + 0x58]
mov dword [edx + 4], ecx
mov ecx, dword [esp + 0x5c]
mov dword [edx + 8], ecx
mov ecx, dword [esp + 0x60]
mov dword [edx + 0xc], ecx
mov ecx, dword [esp + 0x34]
sub esp, 0x10
mov edx, esp
mov dword [edx], ecx
mov ecx, dword [esp + 0x48]
mov dword [edx + 4], ecx
mov ecx, dword [esp + 0x4c]
mov dword [esp + 0x3c], eax
mov eax, dword [eax]
mov dword [edx + 8], ecx
mov ecx, dword [esp + 0x3c]
mov dword [edx + 0xc], ebx
mov edx, dword [eax + 0x13c]
push edi
call edx
call sub.mfc90u.dll_AfxGetThread
test eax, eax
je 0x23a2f783
mov edx, dword [eax]
mov ecx, eax
mov eax, dword [edx + 0x7c]
call eax
jmp 0x23a2f785
xor eax, eax
mov ecx, dword [eax + 0x20]
push 0
push 0
push 0x31
push ecx
call dword [sym.imp.USER32.dll_SendMessageW]
push eax
call sub.mfc90u.dll_CGdiObject::FromHandle
mov edx, dword [edi]
push eax
mov eax, dword [edx + 0x30]
mov ecx, edi
call eax
mov ecx, dword [esi + 0x130]
sub ecx, dword [esi + 0x12c]
mov ebx, eax
mov eax, 0x84210843
imul ecx
add edx, ecx
sar edx, 6
mov ecx, edx
shr ecx, 0x1f
add ecx, edx
mov dword [esp + 0x88], ebx
jne 0x23a2f835
lea ecx, [esp + 0x14]
call dword [sym.imp.mfc90u.dll_ATL::CStringT_wchar_t_class_StrTraitMFC_DLL_wchar_t_class_ATL::ChTraitsCRT_wchar_t_____::CStringT_wchar_t_class]
push 0xca
lea ecx, [esp + 0x18]
mov dword [esp + 0x2dc], 0
call dword [sym.imp.mfc90u.dll_ATL::CStringT_wchar_t_class_StrTraitMFC_DLL_wchar_t_class_ATL::ChTraitsCRT_wchar_t_____::LoadStringW]
mov esi, dword [edi]
push 0x25
lea edx, [esp + 0x7c]
push edx
lea ecx, [esp + 0x1c]
add esi, 0x70
call dword [sym.imp.mfc90u.dll_ATL::CSimpleStringT_wchar_t_1_::GetLength]
push eax
lea ecx, [esp + 0x20]
call dword [sym.imp.mfc90u.dll_]
push eax
mov eax, dword [esi]
mov ecx, edi
call eax
lea ecx, [esp + 0x14]
mov dword [esp + 0x2d8], 0xffffffff
call dword [sym.imp.mfc90u.dll_ATL::CStringT_wchar_t_class_StrTraitMFC_DLL_wchar_t_class_ATL::ChTraitsCRT_wchar_t_____::CStringT_wchar_t_clas]
jmp 0x23a2fd81
lea ebx, [esi + 0x100]
push ebx
lea ecx, [esp + 0xc0]
call fcn.23a2ebc0
mov ecx, dword [ebx + 0x18]
mov edx, dword [ecx + 4]
push edx
mov ecx, ebx
mov dword [esp + 0x2dc], 1
call fcn.23a2b8c0
mov eax, dword [ebx + 0x18]
mov dword [eax + 4], eax
mov eax, dword [ebx + 0x18]
xor ecx, ecx
mov dword [ebx + 0x1c], ecx
mov dword [eax], eax
mov ebx, dword [ebx + 0x18]
mov dword [ebx + 8], ebx
mov dword [esp + 0x14], ecx
lea ecx, [esp + 0xf4]
mov byte [esp + 0x2d8], 2
call dword [sym.imp.UICore.dll_public:_void___thiscall_CAdvImage::constructor_void_]
push 1
mov ecx, esi
mov byte [esp + 0x2dc], 3
call sub.mfc90u.dll_CWnd::GetScrollPos
mov ebx, dword [esi + 0xb4]
mov dword [esp + 0x1c], eax
cdq
idiv ebx
mov ecx, eax
mov eax, dword [esp + 0x1c]
sub eax, dword [esp + 0x7c]
add eax, dword [esp + 0x84]
cdq
idiv ebx
imul ebx, ecx
mov dword [esp + 0x34], ebx
mov ebx, dword [esi + 0xa8]
imul ebx, ecx
mov dword [esp + 0x40], ebx
cmp ecx, eax
jg 0x23a2fd18
sub eax, ecx
inc eax
mov dword [esp + 0x1c], eax
jmp 0x23a2f8f0
cmp dword [esi + 0xa8], 0
mov eax, dword [esi + 0xa4]
mov dword [esp + 0x38], eax
mov dword [esp + 0x58], 0
jle 0x23a2fd03
mov ecx, dword [esi + 0x130]
sub ecx, dword [esi + 0x12c]
mov eax, 0x84210843
imul ecx
add edx, ecx
sar edx, 6
mov ecx, edx
shr ecx, 0x1f
add ecx, edx
cmp ebx, ecx
jae 0x23a2fd03
mov ecx, dword [esi + 0x130]
sub ecx, dword [esi + 0x12c]
mov eax, 0x84210843
imul ecx
add edx, ecx
sar edx, 6
mov eax, edx
shr eax, 0x1f
add eax, edx
cmp ebx, eax
jb 0x23a2f95f
call dword [sym.imp.MSVCR90.dll__invalid_parameter_noinfo]
mov ecx, dword [esi + 0x12c]
mov edx, dword [esp + 0x38]
mov eax, ebx
imul eax, eax, 0x7c
add ecx, eax
mov dword [esp + 0x54], ecx
mov ecx, dword [esi + 0xb0]
add ecx, edx
mov dword [esp + 0x74], eax
mov eax, dword [esi + 0xb4]
add eax, dword [esp + 0x34]
add edx, 2
mov dword [esp + 0x24], edx
mov edx, dword [esp + 0x34]
add ecx, 0xfffffffe
add eax, 0xfffffffe
mov dword [esp + 0x2c], ecx
add edx, 2
mov dword [esp + 0x30], eax
mov eax, dword [edi]
lea ecx, [esp + 0x24]
mov dword [esp + 0x28], edx
mov edx, dword [eax + 0x60]
push ecx
mov ecx, edi
call edx
test eax, eax
je 0x23a2fc87
lea eax, [esp + 0x70]
push eax
lea edx, [esp + 0x90]
lea ecx, [esi + 0xc8]
push edx
mov dword [esp + 0x78], ebx
call fcn.23a2d390
mov eax, dword [esi + 0xe0]
mov ecx, dword [esp + 0x8c]
mov dword [esp + 0xb8], eax
mov eax, dword [esi + 0xc8]
test ecx, ecx
je 0x23a2f9fe
cmp ecx, eax
je 0x23a2fa04
call dword [sym.imp.MSVCR90.dll__invalid_parameter_noinfo]
mov ecx, dword [esp + 0xb8]
cmp dword [esp + 0x90], ecx
mov ecx, dword [edi + 4]
setne al
movzx edx, al
neg edx
sbb edx, edx
push 0x200f
and edx, 0xfffffffb
add edx, 0xa
mov byte [esp + 0x1f], al
push edx
lea eax, [esp + 0x2c]
push eax
push ecx
call dword [sym.imp.USER32.dll_DrawEdge]
cmp byte [esp + 0x1b], 0
lea eax, [esi + 0xf4]
jne 0x23a2fa4e
lea eax, [esi + 0xec]
test eax, eax
je 0x23a2fa55
mov eax, dword [eax + 4]
push eax
mov eax, dword [edi + 4]
lea edx, [esp + 0x28]
push edx
push eax
call dword [sym.imp.USER32.dll_FillRect]
mov ecx, dword [esp + 0x54]
mov eax, dword [ecx + 0x5c]
test eax, eax
je 0x23a2fa9c
cmp dword [eax + 0x10], 0
jbe 0x23a2fa9c
mov ecx, dword [ecx + 0x68]
mov edx, dword [eax + 8]
push ecx
mov ecx, dword [eax + 0x10]
push ecx
push edx
lea ecx, [esp + 0x100]
call dword [sym.imp.UICore.dll_public:_bool___thiscall_CAdvImage::Load_unsigned_char_const___unsigned_int__enum_AdvSoft::ActivityMon::_EImageFormat_]
test al, al
je 0x23a2fa9c
lea ebx, [esp + 0xf4]
jmp 0x23a2fb06
mov ecx, dword [esi + 0x130]
sub ecx, dword [esi + 0x12c]
mov eax, 0x84210843
imul ecx
add edx, ecx
sar edx, 6
mov eax, edx
shr eax, 0x1f
add eax, edx
cmp ebx, eax
jb 0x23a2fac5
call dword [sym.imp.MSVCR90.dll__invalid_parameter_noinfo]
mov eax, dword [esi + 0x12c]
add eax, dword [esp + 0x74]
lea ecx, [esp + 0x14]
push ecx
push eax
mov ecx, 0x23a7cc6c
call fcn.23a290d0
test al, al
je 0x23a2fb68
mov ecx, dword [esp + 0x14]
add ecx, 8
call sub.CxImage.dll_public:_bool___thiscall_CxImage::IsValid_void_const
test al, al
je 0x23a2fb60
mov ebx, dword [esp + 0x14]
test ebx, ebx
je 0x23a2fb68
add ebx, 8
test ebx, ebx
je 0x23a2fb68
mov ecx, ebx
call sub.CxImage.dll_public:_bool___thiscall_CxImage::IsValid_void_const
test al, al
je 0x23a2fb68
mov eax, dword [esp + 0x28]
mov edx, dword [esp + 0x24]
mov ecx, dword [esp + 0x2c]
mov dword [esp + 0x98], eax
mov dword [esp + 0x94], edx
mov edx, dword [esp + 0x30]
lea eax, [esp + 0x94]
mov dword [esp + 0x9c], ecx
push eax
mov ecx, ebx
mov dword [esp + 0xa4], edx
call dword [sym.imp.UICore.dll_public:_void___thiscall_CAdvImage::CalcPreview_class_CRect__const]
lea ecx, [esp + 0x94]
push ecx
push edi
mov ecx, ebx
call dword [sym.imp.UICore.dll_public:_void___thiscall_CAdvImage::Draw_class_CDC_const___class_CRect_const__]
jmp 0x23a2fbc3
push ebx
mov ecx, esi
call fcn.23a2e5d0
lea ecx, [esp + 0x20]
call dword [sym.imp.mfc90u.dll_ATL::CStringT_wchar_t_class_StrTraitMFC_DLL_wchar_t_class_ATL::ChTraitsCRT_wchar_t_____::CStringT_wchar_t_class]
push 0x78
lea ecx, [esp + 0x24]
mov byte [esp + 0x2dc], 4
call dword [sym.imp.mfc90u.dll_ATL::CStringT_wchar_t_class_StrTraitMFC_DLL_wchar_t_class_ATL::ChTraitsCRT_wchar_t_____::LoadStringW]
mov ebx, dword [edi]
push 0x811
lea edx, [esp + 0x28]
push edx
lea ecx, [esp + 0x28]
add ebx, 0x70
call dword [sym.imp.mfc90u.dll_ATL::CSimpleStringT_wchar_t_1_::GetLength]
push eax
lea ecx, [esp + 0x2c]
call dword [sym.imp.mfc90u.dll_]
push eax
mov eax, dword [ebx]
mov ecx, edi
call eax
lea ecx, [esp + 0x20]
mov byte [esp + 0x2d8], 3
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 edx, dword [esp + 0x54]
fldz
lea ecx, [esp + 0xa4]
fstp qword [esp + 0x44]
push ecx
add edx, 0x34
xor ebx, ebx
push edx
mov dword [esp + 0x54], ebx
call dword [sym.imp.KERNEL32.dll_FileTimeToLocalFileTime]
test eax, eax
je 0x23a2fc20
lea eax, [esp + 0xe4]
push eax
lea ecx, [esp + 0xa8]
push ecx
call dword [sym.imp.KERNEL32.dll_FileTimeToSystemTime]
test eax, eax
je 0x23a2fc20
lea edx, [esp + 0x44]
push edx
lea eax, [esp + 0xe8]
push eax
call fcn.23a08ec0
add esp, 8
mov dword [esp + 0x4c], ebx
test eax, eax
jne 0x23a2fc28
mov dword [esp + 0x4c], 1
push 0x400
push ebx
lea ecx, [esp + 0x44]
push ecx
lea ecx, [esp + 0x50]
call fcn.23a0a340
mov ebx, dword [edi]
push 0x829
lea edx, [esp + 0x28]
push edx
lea ecx, [esp + 0x44]
mov byte [esp + 0x2e0], 5
add ebx, 0x70
call dword [sym.imp.mfc90u.dll_ATL::CSimpleStringT_wchar_t_1_::GetLength]
push eax
lea ecx, [esp + 0x48]
call dword [sym.imp.mfc90u.dll_]
push eax
mov eax, dword [ebx]
mov ecx, edi
call eax
lea ecx, [esp + 0x3c]
mov byte [esp + 0x2d8], 3
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 + 0x40]
jmp 0x23a2fcdf
lea ecx, [esp + 0x40]
push ecx
lea edx, [esp + 0xe0]
push edx
lea ecx, [esp + 0xc4]
call fcn.23a2d300
mov ecx, dword [eax]
mov eax, dword [eax + 4]
mov edx, dword [esp + 0xd4]
mov dword [esp + 0x64], eax
mov dword [esp + 0xb0], edx
test ecx, ecx
je 0x23a2fcc4
cmp ecx, dword [esp + 0xbc]
je 0x23a2fcca
call dword [sym.imp.MSVCR90.dll__invalid_parameter_noinfo]
mov eax, dword [esp + 0xb0]
cmp dword [esp + 0x64], eax
je 0x23a2fcdf
push ebx
mov ecx, esi
call fcn.23a2e5d0
mov eax, dword [esp + 0x58]
mov ecx, dword [esi + 0xb0]
add dword [esp + 0x38], ecx
inc eax
inc ebx
cmp eax, dword [esi + 0xa8]
mov dword [esp + 0x40], ebx
mov dword [esp + 0x58], eax
jl 0x23a2f90f
mov edx, dword [esi + 0xb4]
add dword [esp + 0x34], edx
sub dword [esp + 0x1c], 1
jne 0x23a2f8f0
lea ecx, [esp + 0xf4]
mov byte [esp + 0x2d8], 2
call dword [sym.imp.UICore.dll_public:_void___thiscall_CAdvImage::destructor_void_]
mov eax, dword [esp + 0x14]
mov byte [esp + 0x2d8], 1
test eax, eax
je 0x23a2fd63
mov esi, eax
add eax, 4
push eax
call dword [sym.imp.KERNEL32.dll_InterlockedDecrement]
test eax, eax
jne 0x23a2fd5b
test esi, esi
je 0x23a2fd5b
mov eax, dword [esi]
mov edx, dword [eax]
push 1
mov ecx, esi
call edx
mov dword [esp + 0x14], 0
lea ecx, [esp + 0xbc]
mov dword [esp + 0x2d8], 0xffffffff
call fcn.23a2e9c0
mov ebx, dword [esp + 0x88]
test ebx, ebx
je 0x23a2fd8f
mov eax, dword [edi]
mov edx, dword [eax + 0x30]
push ebx
mov ecx, edi
call edx
mov ecx, dword [esp + 0x5c]
mov eax, dword [edi]
mov edx, dword [eax + 0x28]
push ecx
mov ecx, edi
call edx
mov ecx, dword [esp + 0x2d0]
mov dword fs:[0], ecx
pop ecx
pop edi
pop esi
pop ebx
mov ecx, dword [esp + 0x2b8]
xor ecx, esp
call fcn.23a41d28
mov esp, ebp
pop ebp
ret 4