Function at 0x416e10
Capabilities:
Get disk information
Get session user name
Read .ini file

Disassembly:
sub esp, 0x5c
push ebx
push ebp
push esi
push edi
push 0
push str.Morrowind
call dword [sym.imp.USER32.dll_FindWindowA]
test eax, eax
je 0x416e3b
push eax
call dword [sym.imp.USER32.dll_SetForegroundWindow]
pop edi
pop esi
pop ebp
xor eax, eax
pop ebx
add esp, 0x5c
ret 0x10
mov ecx, 0x7cb478
call fcn.004d51b0
mov ecx, 0x7cb478
mov ebp, eax
call fcn.004d51e0
push ebp
push 0x200
mov ebx, eax
call dword [sym.imp.KERNEL32.dll_GetLogicalDriveStringsA]
mov al, byte [ebp]
xor esi, esi
test al, al
mov byte [esp + 0x13], 0
je 0x416eca
mov al, byte [0x7c6d8c]
test al, al
jne 0x416ec2
lea edi, [esi + ebp]
push edi
call dword [sym.imp.KERNEL32.dll_GetDriveTypeA]
cmp eax, 5
jmp 0x416ea2
mov al, 0x2e
mov byte [0x7c6d8c], al
mov byte [esp + 0x13], 1
or ecx, 0xffffffff
xor eax, eax
repne scasb al, byte es:[edi]
not ecx
dec ecx
lea esi, [esi + ecx + 1]
cmp byte [esi + ebp], 0
jne 0x416e6d
mov al, byte [esp + 0x13]
test al, al
jne 0x416f3b
mov ecx, 0x7cb478
call fcn.004d51b0
mov ecx, 0x7cb478
mov esi, eax
call fcn.004d51e0
mov ebp, dword [sym.imp.KERNEL32.dll_GetPrivateProfileStringA]
push str..Morrowind.ini
push 0x200
push esi
push str.Unable_to_find_a_CD_ROM_DVD_drive_on_this_computer.
push str.No_CDROM_Message
push str.CopyProtectionStrings
mov edi, eax
call ebp
push str..Morrowind.ini
push 0x200
push edi
push str.CD_ROM_Drive_Not_Found
push str.No_CDROM_Title
push str.CopyProtectionStrings
call ebp
push 0x40010
push edi
push esi
push 0
call dword [sym.imp.USER32.dll_MessageBoxA]
pop edi
pop esi
pop ebp
xor eax, eax
pop ebx
add esp, 0x5c
ret 0x10
mov al, byte [0x7c6d8c]
test al, al
jne 0x417041
mov ecx, 0x7cb478
call fcn.004d51b0
mov ecx, 0x7cb478
mov esi, eax
call fcn.004d51e0
mov ebx, dword [sym.imp.KERNEL32.dll_GetPrivateProfileStringA]
push str..Morrowind.ini
push 0x200
push esi
push str.Insert_the_Morrowind_CD.
push str.Enter_CD_Message
push str.CopyProtectionStrings
mov edi, eax
call ebx
push str..Morrowind.ini
push 0x200
push edi
push str.Morrowind_CD_Not_Found
push str.Enter_CD_Title_Message
push str.CopyProtectionStrings
call ebx
push 0x40035
push edi
push esi
push 0
call dword [sym.imp.USER32.dll_MessageBoxA]
cmp eax, 2
je 0x4171b7
mov ecx, 0x7cb478
call fcn.004d51b0
mov ecx, 0x7cb478
mov ebp, eax
call fcn.004d51e0
push ebp
push 0x200
mov ebx, eax
call dword [sym.imp.KERNEL32.dll_GetLogicalDriveStringsA]
mov al, byte [ebp]
xor esi, esi
test al, al
je 0x417034
mov al, byte [0x7c6d8c]
test al, al
jne 0x417041
lea edi, [esi + ebp]
push edi
call dword [sym.imp.KERNEL32.dll_GetDriveTypeA]
cmp eax, 5
jne 0x417020
push edi
push str._sAutoRunMorrowind.exe
push ebx
call dword [sym.imp.MSVCRT.dll_sprintf]
push 0
push ebx
call dword [sym.imp.MSVCRT.dll__access]
add esp, 0x14
test eax, eax
jne 0x417020
mov cl, byte [edi]
mov byte [0x7c6d8c], cl
or ecx, 0xffffffff
xor eax, eax
repne scasb al, byte es:[edi]
not ecx
dec ecx
lea esi, [esi + ecx + 1]
cmp byte [esi + ebp], 0
jne 0x416fe3
mov al, byte [0x7c6d8c]
test al, al
je 0x416f48
call fcn.00476c70
push str.Program_Started
call fcn.00477fa0
add esp, 4
mov ecx, 0x7cb478
mov dword [esp + 0x14], 0x104
call fcn.004d51e0
lea edx, [esp + 0x14]
push edx
push 0x7c6b3c
mov esi, eax
call dword [sym.imp.ADVAPI32.dll_GetUserNameA]
test eax, eax
je 0x417098
push 0x7c6b3c
push str.Computer_Name:__s
push esi
call dword [sym.imp.MSVCRT.dll_sprintf]
add esp, 0xc
push esi
call fcn.00477fa0
add esp, 4
push str.Creating_Windows
call fcn.00477fa0
mov esi, dword [esp + 0x74]
add esp, 4
push 0x65
xor edi, edi
push esi
mov dword [esp + 0x4c], 3
mov dword [esp + 0x50], 0x416b50
mov dword [esp + 0x54], edi
mov dword [esp + 0x58], edi
mov dword [esp + 0x5c], esi
call dword [sym.imp.USER32.dll_LoadIconA]
push 4
mov dword [esp + 0x5c], eax
mov dword [esp + 0x60], edi
call dword [sym.imp.GDI32.dll_GetStockObject]
mov dword [esp + 0x60], eax
lea eax, [esp + 0x44]
push eax
mov dword [esp + 0x6c], str.Morrowind
mov dword [esp + 0x68], edi
call dword [sym.imp.USER32.dll_RegisterClassA]
push edi
push 0xca0000
lea ecx, [esp + 0x20]
push ecx
mov dword [esp + 0x24], edi
mov dword [esp + 0x28], edi
mov dword [esp + 0x2c], 0x140
mov dword [esp + 0x30], 0xf0
call dword [sym.imp.USER32.dll_AdjustWindowRect]
mov edx, dword [esp + 0x24]
mov ebp, dword [esp + 0x1c]
mov eax, dword [esp + 0x20]
push edi
push esi
push edi
push edi
sub edx, ebp
push edx
sub eax, dword [esp + 0x2c]
push eax
push edi
push edi
push 0x10ca0000
push str.Morrowind
push str.Morrowind
push edi
call dword [sym.imp.USER32.dll_CreateWindowExA]
push 0x110
mov edi, eax
call sub.MSVCRT.dll_void____cdecl_operator_new_unsigned_int_
add esp, 4
test eax, eax
je 0x417170
mov ecx, eax
call fcn.00417280
jmp 0x417172
xor eax, eax
mov ecx, dword [0x7c67dc]
mov dword [0x7c6cdc], eax
mov dword [ecx + 0xd0], esi
mov edx, dword [0x7c67dc]
mov dword [edx + 0xc8], edi
mov ecx, dword [0x7c6cdc]
call fcn.00417880
test al, al
jne 0x4171aa
pop edi
pop esi
pop ebp
xor eax, eax
pop ebx
add esp, 0x5c
ret 0x10
mov edx, dword [0x7c67dc]
mov eax, dword [edx + 0x4c]
test eax, eax
jne 0x4171c3
pop edi
pop esi
pop ebp
xor eax, eax
pop ebx
add esp, 0x5c
ret 0x10
xor eax, eax
mov ecx, 7
lea edi, [esp + 0x28]
rep stosd dword es:[edi], eax
mov al, byte [edx + 0xdb]
test al, al
jne 0x417242
mov esi, dword [sym.imp.USER32.dll_PeekMessageA]
mov edi, dword [sym.imp.USER32.dll_TranslateMessage]
mov ebx, dword [sym.imp.USER32.dll_DispatchMessageA]
push 1
push 0
push 0
push 0
lea eax, [esp + 0x38]
push eax
call esi
test eax, eax
je 0x41720f
lea ecx, [esp + 0x28]
push ecx
call edi
lea edx, [esp + 0x28]
push edx
call ebx
jmp 0x417232
mov al, byte [0x776d08]
test al, al
jne 0x417227
mov eax, dword [0x7c67e0]
mov cl, byte [eax + 0xb4dd]
test cl, cl
je 0x417232
mov ecx, dword [0x7c6cdc]
call fcn.0041aaf0
mov ecx, dword [0x7c67dc]
mov al, byte [ecx + 0xdb]
test al, al
je 0x4171ec
mov ecx, dword [0x7c6cdc]
test ecx, ecx
je 0x417252
mov edx, dword [ecx]
push 1
call dword [edx]
mov ecx, 0x7c9520
mov dword [0x7c6cdc], 0
call fcn.006e9a00
call fcn.00476dd0
mov eax, dword [esp + 0x30]
pop edi
pop esi
pop ebp
pop ebx
add esp, 0x5c
ret 0x10