Function at 0x403870
Capabilities:
Read .ini file

Disassembly:
sub esp, 0xc88
mov eax, dword [0x410a08]
push ebx
mov ebx, dword [sym.imp.KERNEL32.dll_lstrcpyA]
push ebp
push esi
push edi
lea ecx, [esp + 0x218]
push 0x415080
push ecx
mov dword [esp + 0x18], eax
xor edi, edi
xor esi, esi
call ebx
push 0x415080
call dword [sym.imp.KERNEL32.dll_lstrlenA]
mov ebp, dword [sym.imp.KERNEL32.dll_lstrcatA]
cmp eax, 3
jle 0x4038c1
lea edx, [esp + 0x218]
push 0x410350
push edx
call ebp
cmp dword [0x410220], 4
je 0x4038d9
lea eax, [esp + 0x218]
push str.ltsetup.ini
push eax
jmp 0x4038e6
lea ecx, [esp + 0x218]
push str.agsetup.ini
push ecx
call ebp
mov al, byte [0x41600c]
cmp al, 1
jne 0x4038fd
lea edx, [esp + 0x18]
push str.COPY_FILES_NT
push edx
jmp 0x403917
cmp al, 2
jne 0x40390d
lea eax, [esp + 0x18]
push str.COPY_FILES_Win2K
push eax
jmp 0x403917
lea ecx, [esp + 0x18]
push str.COPY_FILES_9X
push ecx
call ebx
lea edx, [esp + 0x218]
lea eax, [esp + 0x498]
push edx
push 0x800
push eax
push 0
lea ecx, [esp + 0x28]
push 0
push ecx
call dword [sym.imp.KERNEL32.dll_GetPrivateProfileStringA]
mov al, byte [esp + edi + 0x498]
test al, al
je 0x403b4d
mov byte [esp + esi + 0x318], al
mov al, byte [esp + edi + 0x499]
inc esi
inc edi
test al, al
jne 0x40394c
lea edx, [esp + 0x218]
mov byte [esp + esi + 0x318], al
push edx
lea eax, [esp + 0x39c]
push 0x100
push eax
lea ecx, [esp + 0x324]
push 0
lea edx, [esp + 0x28]
push ecx
push edx
mov dword [esp + 0x2c], edi
call dword [sym.imp.KERNEL32.dll_GetPrivateProfileStringA]
lea eax, [esp + 0x10]
lea ecx, [esp + 0x398]
push eax
push ecx
call fcn.0040a180
add esp, 8
lea edx, [esp + 0x198]
push eax
push edx
call ebx
lea eax, [esp + 0x10]
push eax
push 0
call fcn.0040a180
mov ebp, eax
add esp, 8
test ebp, ebp
jne 0x4039e7
lea ecx, [esp + 0x198]
push ecx
push 0x414a20
call fcn.00403040
add esp, 8
xor esi, esi
inc edi
jmp 0x40393d
mov dl, byte [0x414a20]
mov al, byte [0x414a21]
mov byte [esp + 0x98], dl
mov byte [esp + 0x99], al
mov byte [esp + 0x9a], 0
mov edi, 0x410350
or ecx, 0xffffffff
xor eax, eax
lea edx, [esp + 0x98]
repne scasb al, byte es:[edi]
not ecx
sub edi, ecx
mov esi, edi
mov ebx, ecx
mov edi, edx
or ecx, 0xffffffff
repne scasb al, byte es:[edi]
mov ecx, ebx
dec edi
shr ecx, 2
rep movsd dword es:[edi], dword [esi]
mov ecx, ebx
and ecx, 3
rep movsb byte es:[edi], byte [esi]
mov edi, ebp
or ecx, 0xffffffff
repne scasb al, byte es:[edi]
not ecx
push ecx
call fcn.0040a280
mov edx, eax
add esp, 4
mov esi, str._windows
mov eax, ebp
mov bl, byte [eax]
mov cl, bl
cmp bl, byte [esi]
jne 0x403a78
test cl, cl
je 0x403a74
mov bl, byte [eax + 1]
mov cl, bl
cmp bl, byte [esi + 1]
jne 0x403a78
add eax, 2
add esi, 2
test cl, cl
jne 0x403a54
xor eax, eax
jmp 0x403a7d
sbb eax, eax
sbb eax, 0xffffffff
test eax, eax
jne 0x403abd
mov edi, 0x4148c0
or ecx, 0xffffffff
repne scasb al, byte es:[edi]
not ecx
sub edi, ecx
lea ebx, [esp + 0x98]
mov eax, ecx
mov esi, edi
mov edi, edx
shr ecx, 2
rep movsd dword es:[edi], dword [esi]
mov ecx, eax
xor eax, eax
and ecx, 3
rep movsb byte es:[edi], byte [esi]
mov edi, edx
or ecx, 0xffffffff
repne scasb al, byte es:[edi]
not ecx
sub edi, ecx
mov esi, edi
mov edx, ecx
mov edi, ebx
jmp 0x403afe
mov edi, ebp
or ecx, 0xffffffff
xor eax, eax
lea ebx, [esp + 0x98]
repne scasb al, byte es:[edi]
not ecx
sub edi, ecx
mov eax, ecx
mov esi, edi
mov edi, edx
shr ecx, 2
rep movsd dword es:[edi], dword [esi]
mov ecx, eax
xor eax, eax
and ecx, 3
rep movsb byte es:[edi], byte [esi]
mov edi, edx
or ecx, 0xffffffff
repne scasb al, byte es:[edi]
not ecx
sub edi, ecx
mov esi, edi
mov edx, ecx
mov edi, ebx
or ecx, 0xffffffff
repne scasb al, byte es:[edi]
dec edi
mov ecx, edx
shr ecx, 2
rep movsd dword es:[edi], dword [esi]
mov ecx, edx
lea eax, [esp + 0x10]
and ecx, 3
push eax
rep movsb byte es:[edi], byte [esi]
push 0
call fcn.0040a180
mov ebp, eax
add esp, 8
test ebp, ebp
jne 0x403a08
lea ecx, [esp + 0x198]
lea edx, [esp + 0x98]
push ecx
push edx
call fcn.00403040
mov edi, dword [esp + 0x1c]
mov ebx, dword [sym.imp.KERNEL32.dll_lstrcpyA]
add esp, 8
xor esi, esi
inc edi
jmp 0x40393d
pop edi
pop esi
pop ebp
pop ebx
add esp, 0xc88
ret