Function at 0x4033e0
Capabilities:
Read .ini file

Disassembly:
push ebp
mov ebp, esp
sub esp, 0x6a8
mov eax, dword [0x45c008]
xor eax, ebp
mov dword [ebp - 4], eax
mov eax, dword [ebp + 8]
push ebx
push esi
push edi
push 0x100
mov dword [ebp - 0x670], eax
lea eax, [ebp - 0x104]
push eax
push 0x452730
push str.sDecimal
push str.Intl
call dword [sym.imp.KERNEL32.dll_GetProfileStringA]
movzx eax, byte [ebp - 0x104]
lea ecx, [ebp - 0x668]
push 5
push 8
mov byte [0x45d154], al
call fcn.00401a00
lea ecx, [eax + 0xc]
mov eax, dword [str.UCalc]
mov dword [ebp - 0x668], ecx
mov dword [ecx], eax
movzx eax, byte [0x4526d8]
mov byte [ecx + 4], al
lea eax, [ebp - 0x668]
push eax
lea eax, [ebp - 0x66c]
push eax
call dword [sym.imp.Bentley.Staad.SharedUtilities.Native.dll_public:_static_struct_Bentley::Utf8String___cdecl_Bentley::Staad::SharedUtilities::Native::LanguageHelper::GetCurrentLanguageSectionWizardDllPath_struct_Bentley::Utf8String_const__]
add esp, 8
push dword [eax]
call dword [sym.imp.KERNEL32.dll_LoadLibraryA]
mov edi, dword [ebp - 0x66c]
mov dword [ebp - 0x674], eax
add edi, 0xfffffff4
call dword [sym.imp.BentleyAllocator.dll_bentleyAllocator_getNullRefBuffer]
mov ebx, dword [sym.imp.BentleyAllocator.dll_bentleyAllocator_free]
or esi, 0xffffffff
cmp edi, eax
je 0x4034b6
mov eax, esi
lock xadd dword [edi], eax
test eax, eax
jg 0x4034b6
mov eax, dword [ebp - 0x66c]
mov ecx, dword [eax - 8]
add eax, 0xfffffff4
add ecx, 0xe
push ecx
push eax
call ebx
add esp, 8
mov edi, dword [ebp - 0x668]
mov dword [ebp - 0x66c], 0
add edi, 0xfffffff4
call dword [sym.imp.BentleyAllocator.dll_bentleyAllocator_getNullRefBuffer]
cmp edi, eax
je 0x4034f1
lock xadd dword [edi], esi
test esi, esi
jg 0x4034f1
mov eax, dword [ebp - 0x668]
mov ecx, dword [eax - 8]
add eax, 0xfffffff4
add ecx, 0xe
push ecx
push eax
call ebx
add esp, 8
mov eax, dword [ebp - 0x674]
push 0x460
mov dword [0x45d150], eax
lea eax, [ebp - 0x664]
push 0
push eax
call fcn.00404730
push 0x34
lea eax, [ebp - 0x6a8]
push 0
push eax
call fcn.00404730
push str.UCALC.INI
call fcn.004019d0
add esp, 0x1c
push eax
push 0
push str.Language
push str.LANGUAGE
call dword [sym.imp.KERNEL32.dll_GetPrivateProfileIntA]
mov dword [0x45d15c], eax
call fcn.00402c00
xor edx, edx
lea ecx, [ebp - 0x660]
mov ebx, eax
mov esi, 0x45d160
mov eax, dword [ebp - 0x670]
lea edi, [edx + 0x14]
nop dword [eax]
nop word [eax + eax]
mov dword [ecx - 4], 0x38
mov dword [ecx], 0x28
mov dword [ecx + 4], eax
mov dword [ecx + 8], str.Units
mov dword [ecx + 0x14], 0x402f90
mov dword [ecx + 0x18], edx
cmp edx, ebx
jge 0x403598
mov dword [ecx + 0x10], esi
inc edx
add esi, 0x44c
add ecx, 0x38
sub edi, 1
jne 0x403570
push edi
call fcn.004012f0
lea edx, [ebp - 0x204]
add esp, 4
sub edx, eax
nop dword [eax + eax]
mov cl, byte [eax]
lea eax, [eax + 1]
mov byte [edx + eax - 1], cl
test cl, cl
jne 0x4035c0
mov eax, dword [ebp - 0x670]
mov dword [ebp - 0x6a8], 0x34
mov dword [ebp - 0x69c], eax
mov dword [ebp - 0x690], ebx
mov dword [ebp - 0x6a4], 0x388
mov dword [ebp - 0x684], 0x402b70
call dword [sym.imp.USER32.dll_GetDesktopWindow]
mov dword [ebp - 0x6a0], eax
lea eax, [ebp - 0x204]
mov dword [ebp - 0x694], eax
lea eax, [ebp - 0x664]
mov dword [ebp - 0x688], eax
lea eax, [ebp - 0x6a8]
push eax
call dword [sym.imp.COMCTL32.dll_PropertySheetA]
push str.UCALC.INI
call fcn.004019d0
push eax
push dword [0x45d15c]
push str.Language
push str.LANGUAGE
call fcn.00401fe0
mov eax, dword [0x4627b4]
add esp, 0x14
pop edi
pop esi
pop ebx
test eax, eax
je 0x403664
push eax
call dword [sym.imp.GDI32.dll_DeleteObject]
mov ecx, dword [ebp - 4]
xor eax, eax
xor ecx, ebp
call fcn.004037f6
mov esp, ebp
pop ebp
ret 0x10