Function at 0x1002ed50
Capabilities:
Check os version
Get process heap force flags
Resolve function by parsing pe exports

Disassembly:
push 0xffffffffffffffff
push 0x1003bd15
mov eax, dword fs:[0]
push eax
mov dword fs:[0], esp
sub esp, 0xc0
mov eax, dword [0x1005d1c0]
push ebx
push ebp
push esi
mov esi, ecx
push edi
lea ecx, [esp + 0x2c]
mov dword [esp + 0xcc], eax
mov dword [esp + 0x24], esi
call dword [sym.imp.MFC71.DLL_ATL::CStringT::CStringT_4]
xor ebp, ebp
mov dword [esp + 0xd8], ebp
mov dword [esp + 0x30], 0x10042af4
mov dword [esp + 0x34], ebp
mov dword [esp + 0x40], ebp
mov dword [esp + 0x3c], ebp
mov dword [esp + 0x38], ebp
mov eax, 0xa
mov dword [esp + 0x44], 0x10042b1c
mov dword [esp + 0x50], ebp
mov dword [esp + 0x54], ebp
mov dword [esp + 0x4c], ebp
mov dword [esp + 0x48], ebp
mov dword [esp + 0x58], ebp
mov dword [esp + 0x5c], eax
mov dword [esp + 0x6c], ebp
mov dword [esp + 0x70], ebp
mov dword [esp + 0x68], ebp
mov dword [esp + 0x64], ebp
mov dword [esp + 0x74], ebp
mov dword [esp + 0x78], eax
mov dword [esp + 0x60], 0x10042b30
mov ecx, esi
mov byte [esp + 0xd8], 3
call fcn.1002ed00
lea eax, [esp + 0x90]
push eax
push 0x3c
push 0x11
call dword [sym.imp.GDI32.dll_GetStockObject]
push eax
call dword [sym.imp.GDI32.dll_GetObjectA]
mov edi, dword [sym.imp.USER32.dll_GetSysColor]
push 5
mov byte [esp + 0x1b], 0
call edi
lea edx, [esp + 0xac]
lea ecx, [esi + 0x18]
push edx
mov dword [esi + 0x14], eax
call dword [sym.imp.MFC71.DLL_ATL::CStringT::operator_1]
push 0x10
call sub.MFC71.DLL_operator_new
add esp, 4
mov esi, eax
cmp esi, ebp
je 0x1002ee6b
push 8
call edi
mov ebx, dword [0x1005d188]
lea ecx, [esi + 0xc]
mov edi, eax
call dword [sym.imp.MFC71.DLL_ATL::CStringT::CStringT_4]
mov dword [esi], ebx
mov dword [esi + 4], ebp
mov dword [esi + 8], edi
jmp 0x1002ee6d
xor esi, esi
mov ebp, dword [esp + 0xe0]
mov al, byte [ebp]
test al, al
mov byte [esp + 0xd8], 3
mov dword [esp + 0x18], esi
je 0x1002f2ca
jmp 0x1002ee90
cmp al, 0x3c
je 0x1002f016
test al, al
mov ecx, ebp
mov dword [esp + 0x1c], ecx
je 0x1002eeb2
cmp al, 0x3c
je 0x1002eeae
mov al, byte [ecx + 1]
inc ecx
test al, al
jne 0x1002eea2
mov dword [esp + 0x1c], ecx
mov dl, byte [esp + 0x17]
mov eax, ecx
sub eax, ebp
cmp dl, 1
jne 0x1002f00f
test eax, eax
jbe 0x1002f00f
inc eax
push eax
call sub.MFC71.DLL_operator_new_1
mov ebx, eax
mov eax, dword [esp + 0x20]
add esp, 4
cmp ebp, eax
mov dword [esp + 0x20], ebx
mov edi, ebx
jae 0x1002ef82
lea esp, [esp]
mov al, byte [ebp]
cmp al, 0x20
jg 0x1002ef09
cmp edi, ebx
je 0x1002ef03
jbe 0x1002ef75
cmp byte [edi - 1], 0x20
je 0x1002ef75
mov byte [edi], 0x20
inc edi
jmp 0x1002ef75
cmp al, 0x25
jne 0x1002efcd
movsx eax, byte [ebp + 1]
mov esi, dword [sym.imp.MSVCR71.dll_tolower]
inc ebp
push eax
call esi
add esp, 4
cmp al, 0x30
jl 0x1002ef2e
cmp al, 0x39
jg 0x1002ef2e
sub al, 0x30
jmp 0x1002ef38
cmp al, 0x61
jl 0x1002ef71
cmp al, 0x66
jg 0x1002ef71
sub al, 0x57
movsx ecx, byte [ebp + 1]
inc ebp
push ecx
mov bl, al
call esi
add esp, 4
cmp al, 0x30
jl 0x1002ef51
cmp al, 0x39
jg 0x1002ef51
sub al, 0x30
jmp 0x1002ef5b
cmp al, 0x61
jl 0x1002ef6d
cmp al, 0x66
jg 0x1002ef6d
sub al, 0x57
shl bl, 4
or bl, al
cmp bl, 0x20
jb 0x1002ef6d
cmp bl, 0x7f
ja 0x1002ef6d
mov byte [edi], bl
inc edi
mov ebx, dword [esp + 0x20]
mov esi, dword [esp + 0x18]
mov eax, dword [esp + 0x1c]
inc ebp
cmp ebp, eax
jb 0x1002eef0
mov byte [edi], 0
mov eax, dword [esp + 0x38]
test eax, eax
mov edi, ebx
jne 0x1002efa1
mov al, byte [ebx]
test al, al
je 0x1002efa1
cmp al, 0x20
jne 0x1002efa1
mov al, byte [edi + 1]
inc edi
test al, al
jne 0x1002ef95
cmp byte [edi], 0
je 0x1002f002
push 0x14
call sub.MFC71.DLL_operator_new
add esp, 4
mov dword [esp + 0x28], eax
test eax, eax
mov byte [esp + 0xd8], 0xc
je 0x1002efd2
push esi
push edi
mov ecx, eax
call fcn.1002d490
mov ebx, eax
jmp 0x1002efd4
mov byte [edi], al
inc edi
jmp 0x1002ef75
xor ebx, ebx
mov eax, dword [esp + 0x38]
test eax, eax
mov byte [esp + 0xd8], 3
mov edi, eax
jl 0x1002f39e
push 0xffffffffffffffff
inc eax
push eax
lea ecx, [esp + 0x38]
call fcn.1002d600
mov edx, dword [esp + 0x34]
mov dword [edx + edi*4], ebx
mov ebx, dword [esp + 0x20]
push ebx
call sub.MFC71.DLL_operator_delete
mov ecx, dword [esp + 0x20]
add esp, 4
mov ebp, ecx
jmp case.default.0x1002f063
lea ecx, [esp + 0x60]
call fcn.1002e350
mov ebx, dword [esp + 0x24]
lea eax, [esp + 0x60]
push eax
lea ecx, [esp + 0x88]
push ecx
lea edx, [esp + 0x34]
push edx
push ebp
mov ecx, ebx
call fcn.1002e910
mov edi, dword [esp + 0x84]
mov ebp, eax
mov al, byte [esp + 0x17]
test al, al
jne 0x1002f057
cmp edi, 6
jne case.default.0x1002f063
lea eax, [edi - 1]
cmp eax, 0x16
ja case.default.0x1002f063
jmp dword [eax*4 + 0x1002f3a4]
push esi
lea ecx, [esp + 0x48]
call fcn.1002e760
push 0x10
call sub.MFC71.DLL_operator_new
add esp, 4
mov dword [esp + 0x28], eax
test eax, eax
mov byte [esp + 0xd8], 6
je 0x1002f09a
push esi
mov ecx, eax
call fcn.1002d340
mov esi, eax
jmp 0x1002f09c
xor esi, esi
mov eax, dword [esi + 8]
push eax
lea ecx, [esp + 0x64]
mov byte [esp + 0xdc], 3
mov dword [esp + 0x1c], esi
call fcn.1002dcd0
mov dword [esi + 8], eax
mov ecx, dword [edi*4 + 0x1005d184]
lea edi, [esi + 0xc]
push edi
lea edx, [esp + 0x80]
mov dword [esi], ecx
push edx
lea ecx, [esp + 0x68]
call fcn.1002db60
push eax
mov ecx, edi
mov byte [esp + 0xdc], 7
call dword [sym.imp.MFC71.DLL_ATL::CStringT::operator_2]
lea ecx, [esp + 0x7c]
mov byte [esp + 0xd8], 3
call dword [sym.imp.MFC71.DLL_ATL::CStringT::CStringT]
jmp case.default.0x1002f063
mov eax, dword [esp + 0x50]
test eax, eax
je case.default.0x1002f063
test esi, esi
je 0x1002f120
lea ecx, [esi + 0xc]
call dword [sym.imp.MFC71.DLL_ATL::CStringT::CStringT]
push esi
call sub.MFC71.DLL_operator_delete_1
add esp, 4
lea ecx, [esp + 0x44]
call fcn.1002e170
mov dword [esp + 0x18], eax
mov esi, eax
jmp case.default.0x1002f063
push esi
lea ecx, [esp + 0x48]
call fcn.1002e760
push 0x10
call sub.MFC71.DLL_operator_new
add esp, 4
mov dword [esp + 0x28], eax
test eax, eax
mov byte [esp + 0xd8], 8
je 0x1002f164
push esi
mov ecx, eax
call fcn.1002d340
mov esi, eax
jmp 0x1002f166
xor esi, esi
mov eax, dword [esi + 8]
push eax
lea ecx, [esp + 0x64]
mov byte [esp + 0xdc], 3
mov dword [esp + 0x1c], esi
call fcn.1002dcd0
mov ecx, dword [esi]
push ecx
lea ecx, [esp + 0x64]
mov dword [esi + 8], eax
call fcn.1002dca0
lea edi, [esi + 0xc]
push edi
lea edx, [esp + 0x90]
push edx
lea ecx, [esp + 0x68]
mov dword [esi], eax
call fcn.1002db60
push eax
mov ecx, edi
mov byte [esp + 0xdc], 9
call dword [sym.imp.MFC71.DLL_ATL::CStringT::operator_2]
lea ecx, [esp + 0x8c]
mov byte [esp + 0xd8], 3
call dword [sym.imp.MFC71.DLL_ATL::CStringT::CStringT]
jmp case.default.0x1002f063
mov byte [esp + 0x17], 0
jmp case.default.0x1002f063
mov eax, dword [ebx + 0x14]
push eax
lea ecx, [esp + 0x64]
mov byte [esp + 0x1b], 1
call fcn.1002dd00
lea ecx, [esp + 0xac]
push ecx
lea ecx, [esp + 0x8c]
mov dword [ebx + 0x14], eax
call dword [sym.imp.MFC71.DLL_ATL::CStringT::CStringT_2]
push eax
lea edx, [esp + 0x84]
push edx
lea ecx, [esp + 0x68]
mov byte [esp + 0xe0], 0xa
call fcn.1002db60
push eax
lea ecx, [ebx + 0x18]
mov byte [esp + 0xdc], 0xb
call dword [sym.imp.MFC71.DLL_ATL::CStringT::operator_2]
lea ecx, [esp + 0x80]
call dword [sym.imp.MFC71.DLL_ATL::CStringT::CStringT]
lea ecx, [esp + 0x88]
mov byte [esp + 0xd8], 3
call dword [sym.imp.MFC71.DLL_ATL::CStringT::CStringT]
jmp case.default.0x1002f063
mov eax, dword [esi + 4]
and eax, 0xfffffff9
or eax, 1
mov dword [esi + 4], eax
jmp case.default.0x1002f063
mov ecx, dword [esi + 4]
and ecx, 0xfffffffc
or ecx, 4
mov dword [esi + 4], ecx
jmp case.default.0x1002f063
mov edx, dword [esi + 4]
and edx, 0xfffffffa
or edx, 2
mov dword [esi + 4], edx
jmp case.default.0x1002f063
and dword [esi + 4], 0xfffffff8
jmp case.default.0x1002f063
or dword [esi + 4], 0x10
jmp case.default.0x1002f063
and dword [esi + 4], 0xffffffef
jmp case.default.0x1002f063
or dword [esi + 4], 0x40
jmp case.default.0x1002f063
and dword [esi + 4], 0xffffffbf
jmp case.default.0x1002f063
or dword [esi + 4], 0x20
jmp case.default.0x1002f063
and dword [esi + 4], 0xffffffdf
jmp case.default.0x1002f063
lea eax, [esp + 0x30]
push eax
mov ecx, ebx
call fcn.1002e530
push 0
lea ecx, [esp + 0x34]
call fcn.1002e440
mov al, byte [ebp]
test al, al
jne 0x1002ee90
mov eax, dword [esp + 0x38]
xor edi, edi
cmp eax, edi
je 0x1002f2ec
lea ecx, [esp + 0x30]
push ecx
mov ecx, dword [esp + 0x28]
call fcn.1002e530
push edi
lea ecx, [esp + 0x34]
call fcn.1002e440
lea ecx, [esp + 0x60]
call fcn.1002e350
cmp esi, edi
je 0x1002f30b
lea ecx, [esi + 0xc]
call dword [sym.imp.MFC71.DLL_ATL::CStringT::CStringT]
push esi
call sub.MFC71.DLL_operator_delete_1
add esp, 4
lea ecx, [esp + 0x60]
mov byte [esp + 0xd8], 2
call fcn.1002e790
mov eax, dword [esp + 0x48]
cmp eax, edi
mov byte [esp + 0xd8], 1
mov dword [esp + 0x44], 0x10042b1c
je 0x1002f33a
mov eax, dword [eax]
cmp eax, edi
jne 0x1002f334
mov ecx, dword [esp + 0x58]
mov dword [esp + 0x50], edi
mov dword [esp + 0x54], edi
mov dword [esp + 0x4c], edi
mov dword [esp + 0x48], edi
call sub.MFC71.DLL_CPlex::FreeDataChain
lea ecx, [esp + 0x30]
mov dword [esp + 0x58], edi
mov byte [esp + 0xd8], 0
call fcn.1002e830
lea ecx, [esp + 0x2c]
call dword [sym.imp.MFC71.DLL_ATL::CStringT::CStringT]
mov ecx, dword [esp + 0xd0]
pop edi
pop esi
pop ebp
mov dword fs:[0], ecx
mov ecx, dword [esp + 0xc0]
mov eax, 1
pop ebx
call fcn.10038e11
add esp, 0xcc
ret 4
call fcn.1003785a
nop
push 0xfffffffffffffff0
add dl, byte [eax]
push 0xfffffffffffffff0
add dl, byte [eax]
push 0xfffffffffffffff0
add dl, byte [eax]
push 0xfffffffffffffff0
add dl, byte [eax]
push 0xfffffffffffffff0
add dl, byte [eax]
invalid