Function at 0x4221e0
Capabilities:
Read .ini file

Disassembly:
push 0xffffffffffffffff
push 0x436c60
mov eax, dword fs:[0]
push eax
mov dword fs:[0], esp
push ecx
push ebp
mov ebp, ecx
lea eax, [ebp + 0x140]
push eax
call dword [sym.imp.KERNEL32.dll_EnterCriticalSection]
mov ecx, dword [ebp + 0x158]
test ecx, ecx
je 0x422217
mov edx, dword [ecx]
push 0xffffffffffffffff
call dword [edx + 0x14]
push esi
push edi
mov edi, dword [esp + 0x20]
xor esi, esi
cmp edi, 0xc
ja 0x422228
mov esi, dword [ebp + edi*4]
test esi, esi
je 0x42245c
lea ecx, [esp + 0xc]
call sub.MFC42.DLL_CString::CString_3
lea ecx, [esp + 0xc]
mov dword [esp + 0x18], 0
call sub.MFC42.DLL_CString::Empty
lea eax, [ebp + 0x34]
lea ecx, [esp + 0xc]
push eax
call fcn.0043185a
push str.OSF.ini
lea ecx, [esp + 0x10]
call sub.MFC42.DLL_CString::operator_2
lea ecx, [esp + 0x20]
call sub.MFC42.DLL_CString::CString_3
lea ecx, [esp + 0x20]
mov byte [esp + 0x18], 1
call sub.MFC42.DLL_CString::Empty
cmp edi, 5
ja case.default.0x422281
jmp dword [edi*4 + 0x422490]
push str.Environment
jmp 0x4222b0
push str.MainWindow
jmp 0x4222b0
push str.Option.IEEE1284
jmp 0x4222b0
push str.Option.IEEE1394
jmp 0x4222b0
push str.Option.USB11
jmp 0x4222b0
push str.Option.USB20
lea ecx, [esp + 0x24]
call fcn.0043185a
cmp dword [esi], 0
je 0x42243d
add esi, 0x108
mov eax, dword [esi - 4]
cmp eax, 2
je 0x4223f7
test eax, eax
push 0
lea ecx, [esp + 0x10]
jne 0x422367
call sub.MFC42.DLL_CString::GetBuffer
mov ecx, dword [esi + 0x104]
push eax
lea edx, [esi - 0x104]
push ecx
push edx
push 0
lea ecx, [esp + 0x30]
call sub.MFC42.DLL_CString::GetBuffer
push eax
mov ecx, ebp
call fcn.00423a10
mov ecx, dword [esi + 0x204]
test ecx, ecx
jne 0x42233c
test edx, edx
jl 0x42232f
jg 0x42231d
test eax, eax
jb 0x42232f
test edx, edx
jg 0x42232f
jl 0x422328
cmp eax, 0xffffffff
ja 0x42232f
mov dword [esi], eax
jmp 0x422429
mov eax, dword [esi + 0x104]
mov dword [esi], eax
jmp 0x422429
mov edi, dword [esi + 0x208]
xor ecx, ecx
cmp edx, ecx
jl 0x4223bd
jg 0x42234e
cmp eax, edi
jb 0x4223bd
mov edi, dword [esi + 0x308]
xor ecx, ecx
cmp edx, ecx
jg 0x4223bd
jl 0x422360
cmp eax, edi
ja 0x4223bd
mov dword [esi], eax
jmp 0x422429
call sub.MFC42.DLL_CString::GetBuffer
mov edx, dword [esi + 0x104]
push eax
lea eax, [esi - 0x104]
push edx
push eax
push 0
lea ecx, [esp + 0x30]
call sub.MFC42.DLL_CString::GetBuffer
push eax
mov ecx, ebp
call fcn.00423b00
mov edi, eax
mov eax, dword [esi + 0x204]
test eax, eax
mov ecx, edx
jne 0x4223c7
cmp ecx, 0xffffffff
jl 0x4223bd
jg 0x4223ab
cmp edi, 0x80000000
jb 0x4223bd
test ecx, ecx
jg 0x4223bd
jl 0x4223b9
cmp edi, 0x7fffffff
ja 0x4223bd
mov dword [esi], edi
jmp 0x422429
mov ecx, dword [esi + 0x104]
mov dword [esi], ecx
jmp 0x422429
mov eax, dword [esi + 0x208]
cdq
cmp ecx, edx
jl 0x4223ed
jg 0x4223d8
cmp edi, eax
jb 0x4223ed
mov eax, dword [esi + 0x308]
cdq
cmp ecx, edx
jg 0x4223ed
jl 0x4223e9
cmp edi, eax
ja 0x4223ed
mov dword [esi], edi
jmp 0x422429
mov edx, dword [esi + 0x104]
mov dword [esi], edx
jmp 0x422429
push 0
lea ecx, [esp + 0x10]
call sub.MFC42.DLL_CString::GetBuffer
push eax
push pe_nt_image_headers32
lea eax, [esi + 0x104]
push esi
lea ecx, [esi - 0x104]
push eax
push ecx
push 0
lea ecx, [esp + 0x38]
call sub.MFC42.DLL_CString::GetBuffer
push eax
call dword [sym.imp.KERNEL32.dll_GetPrivateProfileStringA]
mov eax, dword [esi + 0x408]
add esi, 0x510
test eax, eax
jne 0x4222c8
lea ecx, [esp + 0x20]
mov byte [esp + 0x18], 0
call sub.MFC42.DLL_CString::CString
lea ecx, [esp + 0xc]
mov dword [esp + 0x18], 0xffffffff
call sub.MFC42.DLL_CString::CString
mov ecx, dword [ebp + 0x158]
pop edi
test ecx, ecx
pop esi
je 0x42246d
mov edx, dword [ecx]
call dword [edx + 0x1c]
mov eax, dword [ebp + 0x138]
lea ecx, [ebp + 0x138]
call dword [eax + 0x1c]
mov ecx, dword [esp + 8]
pop ebp
mov dword fs:[0], ecx
add esp, 0x10
ret 4