Function at 0x547550
Capabilities:
Read .ini file

Disassembly:
push ebp
mov ebp, esp
sub esp, 0x1e0
push ebx
push esi
push edi
push 0x80
lea eax, [ebp - 0xe0]
push 0
push eax
call fcn.004e43a0
xorps xmm0, xmm0
xor ebx, ebx
add esp, 0xc
movq qword [ebp - 0x20], xmm0
movups xmmword [ebp - 0x30], xmm0
cmp dword [ebp + 0xc], ebx
jle 0x5477b2
nop dword [eax]
mov eax, dword [ebp + 8]
mov al, byte [ebx + eax]
mov byte [ebp - 1], al
movzx eax, al
push eax
lea eax, [ebp - 0x60]
push str._02X
push eax
call fcn.00413510
lea edx, [ebp - 0x60]
add esp, 0xc
mov esi, edx
mov al, byte [edx]
inc edx
test al, al
jne 0x5475b3
lea edi, [ebp - 0xe0]
sub edx, esi
dec edi
mov al, byte [edi + 1]
inc edi
test al, al
jne 0x5475c3
mov ecx, edx
mov eax, ebx
shr ecx, 2
and eax, 7
rep movsd dword es:[edi], dword [esi]
mov ecx, edx
and ecx, 3
rep movsb byte es:[edi], byte [esi]
cmp al, 7
jne 0x54760b
lea ecx, [ebp - 0xe0]
dec ecx
nop dword [eax]
mov al, byte [ecx + 1]
lea ecx, [ecx + 1]
test al, al
jne 0x5475f0
mov ax, word [0x560820]
mov word [ecx], ax
mov al, byte [0x560822]
mov byte [ecx + 2], al
cmp byte [ebp - 1], 0x20
mov eax, 0x2e
movzx ecx, byte [ebp - 1]
cmovb ecx, eax
mov eax, ebx
and eax, 0xf
mov byte [ebp + eax - 0x30], cl
cmp eax, 0xf
jne 0x5477a8
lea edx, [ebp - 0x30]
mov esi, edx
mov al, byte [edx]
inc edx
test al, al
jne 0x547632
lea edi, [ebp - 0xe0]
sub edx, esi
dec edi
mov al, byte [edi + 1]
inc edi
test al, al
jne 0x547642
movq xmm0, qword [str.CPQDIAG.INI]
mov ecx, edx
mov eax, dword [0x57db2c]
shr ecx, 2
rep movsd dword es:[edi], dword [esi]
movq qword [ebp - 0x54], xmm0
mov ecx, edx
movq xmm0, qword [str.DFW_UTIL]
and ecx, 3
cmp byte [0x59cb43], 0
mov dword [ebp - 0x4c], eax
mov al, byte [0x57db38]
movq qword [ebp - 0x18], xmm0
movq xmm0, qword [str.UserLevel]
mov byte [ebp - 0x10], al
movzx eax, word [0x57db44]
movq qword [ebp - 0x3c], xmm0
movq xmm0, qword [str.Developer]
mov word [ebp - 0x34], ax
movzx eax, word [0x57db50]
rep movsb byte es:[edi], byte [esi]
mov byte [ebp - 1], 0
mov dword [ebp - 0xc], 0x69647541
mov dword [ebp - 8], 0x726f74
movq qword [ebp - 0x48], xmm0
mov word [ebp - 0x40], ax
je 0x547743
push 0x100
lea eax, [ebp - 0x1e0]
mov byte [0x59cb43], 0
push 0
push eax
call fcn.004e43a0
add esp, 0xc
lea eax, [ebp - 0x54]
push eax
push 0x100
lea eax, [ebp - 0x1e0]
push eax
lea eax, [ebp - 1]
push eax
lea eax, [ebp - 0x3c]
push eax
lea eax, [ebp - 0x18]
push eax
call dword [sym.imp.KERNEL32.dll_GetPrivateProfileStringA]
lea eax, [ebp - 0xc]
push eax
lea eax, [ebp - 0x1e0]
push eax
call fcn.004e5900
add esp, 8
test eax, eax
jne 0x54773a
lea eax, [ebp - 0x48]
push eax
lea eax, [ebp - 0x1e0]
push eax
call fcn.004e5900
add esp, 8
test eax, eax
je 0x547743
mov byte [0x5d421c], 1
jmp 0x54774c
cmp byte [0x5d421c], 0
je 0x547786
push 0x59cb40
push str.PCIIRT.LOG
call fcn.00504bca
mov esi, eax
add esp, 8
test esi, esi
je 0x547786
lea eax, [ebp - 0xe0]
mov byte [0x59cb40], 0x61
push eax
push 0x562140
push esi
call fcn.00417e20
push esi
call fcn.00504888
add esp, 0x10
push 0x80
lea eax, [ebp - 0xe0]
push 0
push eax
call fcn.004e43a0
xorps xmm0, xmm0
add esp, 0xc
movups xmmword [ebp - 0x30], xmm0
movq qword [ebp - 0x20], xmm0
inc ebx
cmp ebx, dword [ebp + 0xc]
jl 0x547590
cmp byte [ebp - 0xe0], 0
je 0x54782d
and ebx, 0x8000000f
jns 0x5477c8
dec ebx
or ebx, 0xfffffff0
inc ebx
cmp ebx, 0xf
jge 0x5477f3
mov eax, dword [0x5645e8]
lea edi, [ebp - 0xe0]
dec edi
nop dword [eax]
mov cl, byte [edi + 1]
lea edi, [edi + 1]
test cl, cl
jne 0x5477e0
mov dword [edi], eax
mov byte [ebp + ebx - 0x30], 0x20
jmp 0x5477d2
lea edx, [ebp - 0x30]
mov esi, edx
mov al, byte [edx]
inc edx
test al, al
jne 0x5477f8
lea edi, [ebp - 0xe0]
sub edx, esi
dec edi
mov al, byte [edi + 1]
inc edi
test al, al
jne 0x547808
mov ecx, edx
lea eax, [ebp - 0xe0]
shr ecx, 2
rep movsd dword es:[edi], dword [esi]
mov ecx, edx
and ecx, 3
rep movsb byte es:[edi], byte [esi]
push eax
call fcn.00547840
add esp, 4
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
ret