Function at 0x403200
Capabilities:
Read .ini file

Disassembly:
mov eax, 0x5188
call fcn.00405dc0
mov dl, byte [0x410f30]
push ebx
push ebp
push esi
push edi
mov ecx, 0x18
xor eax, eax
lea edi, [esp + 0x5d]
mov byte [esp + 0x5c], dl
mov byte [esp + 0x134], dl
rep stosd dword es:[edi], eax
stosw word es:[edi], ax
stosb byte es:[edi], al
mov ecx, 0x18
xor eax, eax
lea edi, [esp + 0x135]
mov byte [esp + 0x378], dl
rep stosd dword es:[edi], eax
stosw word es:[edi], ax
stosb byte es:[edi], al
mov ecx, 0x9c3
xor eax, eax
lea edi, [esp + 0x379]
mov byte [esp + 0x2a88], dl
rep stosd dword es:[edi], eax
stosw word es:[edi], ax
stosb byte es:[edi], al
mov ecx, 0x9c3
xor eax, eax
lea edi, [esp + 0x2a89]
mov ebp, dword [esp + 0x51a0]
rep stosd dword es:[edi], eax
stosw word es:[edi], ax
stosb byte es:[edi], al
mov ebx, dword [sym.imp.KERNEL32.dll_GetPrivateProfileSectionA]
xor eax, eax
mov ecx, 0x45
lea edi, [esp + 0x19c]
mov dword [esp + 0x198], eax
mov dword [esp + 0x1c], eax
rep stosd dword es:[edi], eax
push ebp
lea eax, [esp + 0x37c]
push 0x2710
push eax
push str.Manufacturer
call ebx
cmp eax, 1
jb 0x403830
lea ecx, [esp + 0x378]
push 0x3d
push ecx
call fcn.00405d00
add esp, 8
inc eax
mov edi, eax
or ecx, 0xffffffff
xor eax, eax
lea edx, [esp + 0x5c]
repne scasb al, byte es:[edi]
not ecx
sub edi, ecx
push ebp
mov eax, ecx
mov esi, edi
mov edi, edx
push 0x2710
shr ecx, 2
rep movsd dword es:[edi], dword [esi]
mov ecx, eax
xor eax, eax
and ecx, 3
lea edx, [esp + 0x64]
rep movsb byte es:[edi], byte [esi]
mov ecx, 0x9c4
lea edi, [esp + 0x380]
rep stosd dword es:[edi], eax
lea ecx, [esp + 0x380]
lea edi, [esp + 0x380]
push ecx
push edx
mov dword [esp + 0x24], edi
call ebx
cmp eax, 1
jb 0x403830
mov eax, dword [esp + 0x51a4]
xor ecx, ecx
mov cl, byte [eax]
mov al, byte [esp + 0x378]
test al, al
mov dword [esp + 0x24], ecx
je 0x403830
mov eax, ecx
shl eax, 6
sub eax, ecx
lea eax, [eax + eax*4]
lea edx, [eax + eax*4]
lea ebp, [ecx + edx*2]
mov dword [esp + 0x18], ebp
jmp 0x403367
mov edi, dword [esp + 0x14]
mov ebp, dword [esp + 0x18]
cmp byte [edi], 0x3b
jne 0x403386
push edi
call dword [sym.imp.KERNEL32.dll_lstrlenA]
mov cl, byte [edi + eax + 1]
lea eax, [edi + eax + 1]
cmp cl, 0x3b
mov dword [esp + 0x14], eax
mov edi, eax
je 0x40336c
cmp byte [edi], 0
je 0x403830
or ecx, 0xffffffff
xor eax, eax
repne scasb al, byte es:[edi]
not ecx
sub edi, ecx
lea edx, [esp + 0x134]
mov eax, ecx
mov esi, edi
mov edi, edx
push 0x3d
shr ecx, 2
rep movsd dword es:[edi], dword [esi]
mov ecx, eax
and ecx, 3
rep movsb byte es:[edi], byte [esi]
lea ecx, [esp + 0x138]
push ecx
call fcn.00405d00
lea edx, [esp + 0x13c]
push 0x2c
push edx
mov esi, eax
call fcn.00405d00
mov ebx, eax
mov eax, dword [esp + 0x2c]
add esp, 0x10
inc esi
mov ecx, ebx
lea edx, [eax + 0x439f50]
sub ecx, esi
mov edi, edx
mov eax, ecx
push 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 ecx, dword [esp + 0x51a8]
mov edi, edx
lea esi, [ecx + ebp + 0x12d]
or ecx, 0xffffffff
repne scasb al, byte es:[edi]
not ecx
sub edi, ecx
mov dword [esp + 0x14], esi
mov eax, ecx
mov esi, edi
mov edi, dword [esp + 0x14]
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 ecx, dword [esp + 0x51a8]
mov edi, dword [esp + 0x51a4]
lea esi, [ecx + ebp + 1]
or ecx, 0xffffffff
repne scasb al, byte es:[edi]
not ecx
sub edi, ecx
mov dword [esp + 0x14], esi
mov eax, ecx
mov esi, edi
mov edi, dword [esp + 0x14]
shr ecx, 2
rep movsd dword es:[edi], dword [esi]
mov ecx, eax
and ecx, 3
rep movsb byte es:[edi], byte [esi]
call dword [sym.imp.KERNEL32.dll_lstrlenA]
mov ecx, dword [esp + 0x1c]
inc ebx
push ebx
lea edx, [ecx + eax + 1]
mov eax, dword [esp + 0x51a8]
mov dword [esp + 0x20], edx
lea ebp, [eax + ebp + 0xc9]
call fcn.004024a0
mov edi, eax
or ecx, 0xffffffff
xor eax, eax
add esp, 4
repne scasb al, byte es:[edi]
not ecx
sub edi, ecx
mov edx, ecx
mov esi, edi
mov edi, ebp
shr ecx, 2
rep movsd dword es:[edi], dword [esi]
mov ecx, edx
xor edx, edx
and ecx, 3
rep movsb byte es:[edi], byte [esi]
mov edi, ebp
or ecx, 0xffffffff
repne scasb al, byte es:[edi]
not ecx
dec ecx
je 0x4034d2
cmp byte [edx + ebp], 0x2c
jne 0x4034c1
mov byte [edx + ebp], 0
mov edi, ebp
or ecx, 0xffffffff
xor eax, eax
inc edx
repne scasb al, byte es:[edi]
not ecx
dec ecx
cmp edx, ecx
jb 0x4034b7
mov eax, dword [esp + 0x24]
mov ebx, dword [esp + 0x18]
mov ebp, dword [esp + 0x51a4]
inc eax
add ebx, 0xc4f
mov dword [esp + 0x24], eax
mov byte [ebp], al
or ecx, 0xffffffff
lea edi, [ebx + ebp - 0xb22]
xor eax, eax
repne scasb al, byte es:[edi]
not ecx
sub edi, ecx
lea edx, [esp + 0x5c]
mov eax, ecx
mov esi, edi
mov edi, edx
mov dword [esp + 0x18], ebx
shr ecx, 2
rep movsd dword es:[edi], dword [esi]
mov ecx, eax
and ecx, 3
rep movsb byte es:[edi], byte [esi]
call fcn.00402d50
cmp al, 1
lea edx, [esp + 0x5c]
mov edi, str..RegHW
je 0x403532
mov edi, str..NT.RegHW
or ecx, 0xffffffff
xor eax, eax
repne scasb al, byte es:[edi]
not ecx
sub edi, ecx
mov esi, edi
mov edi, edx
mov edx, ecx
or ecx, 0xffffffff
repne scasb al, byte es:[edi]
mov ecx, edx
dec edi
shr ecx, 2
rep movsd dword es:[edi], dword [esi]
mov ecx, edx
lea edx, [esp + 0x5c]
and ecx, 3
rep movsb byte es:[edi], byte [esi]
mov ecx, 0x9c4
lea edi, [esp + 0x2a88]
rep stosd dword es:[edi], eax
mov eax, dword [esp + 0x51a0]
lea ecx, [esp + 0x2a88]
push eax
push 0x2710
push ecx
push edx
call dword [sym.imp.KERNEL32.dll_GetPrivateProfileSectionA]
cmp eax, 1
jb 0x403830
mov al, byte [esp + 0x2a88]
lea esi, [esp + 0x2a88]
test al, al
mov dword [esp + 0x10], esi
mov dword [esp + 0x20], 0
je 0x403811
lea ebp, [ebx + ebp - 0xa27]
jmp 0x4035bd
mov esi, dword [esp + 0x10]
push str.HardwareID
push esi
call fcn.00405ea0
add esp, 8
test eax, eax
je 0x4037f6
cmp byte [esi], 0x3b
je 0x4037f6
push 0x2c
push esi
call fcn.00405df0
mov edi, eax
or ecx, 0xffffffff
inc edi
xor eax, eax
repne scasb al, byte es:[edi]
not ecx
sub edi, ecx
mov edx, dword [esp + 0x51ac]
mov eax, ecx
mov esi, edi
mov edi, ebp
push ebp
shr ecx, 2
rep movsd dword es:[edi], dword [esi]
mov ecx, eax
lea eax, [ebx + edx - 0xb86]
and ecx, 3
rep movsb byte es:[edi], byte [esi]
mov ecx, dword [esp + 0x2c]
push ecx
mov ecx, dword [esp + 0x34]
push eax
push ecx
push str.PDOCount:_x_:_s_FDOCount:_x_:_s
call fcn.00401000
mov edi, 0x43e418
or ecx, 0xffffffff
xor eax, eax
lea edx, [esp + 0x2cc]
repne scasb al, byte es:[edi]
not ecx
sub edi, ecx
mov eax, ecx
mov esi, edi
mov edi, edx
lea edx, [esp + 0x2cc]
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, str..inf
or ecx, 0xffffffff
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
lea eax, [esp + 0x1b4]
and ecx, 3
push eax
rep movsb byte es:[edi], byte [esi]
lea ecx, [esp + 0x2d0]
push ecx
call fcn.00405a42
add esp, 0x24
mov ebx, eax
cmp ebx, 0xffffffff
je 0x4037ad
mov dl, byte [0x410f30]
mov ecx, 0x18
xor eax, eax
lea edi, [esp + 0xc1]
mov byte [esp + 0xc0], dl
mov byte [esp + 0x28], dl
rep stosd dword es:[edi], eax
stosw word es:[edi], ax
stosb byte es:[edi], al
mov ecx, 0xc
xor eax, eax
lea edi, [esp + 0x29]
lea edx, [esp + 0xc0]
rep stosd dword es:[edi], eax
stosb byte es:[edi], al
or ecx, 0xffffffff
mov edi, 0x43e418
xor eax, eax
repne scasb al, byte es:[edi]
not ecx
sub edi, ecx
mov eax, ecx
mov esi, edi
shr ecx, 2
mov edi, edx
lea edx, [esp + 0xc0]
rep movsd dword es:[edi], dword [esi]
mov ecx, eax
xor eax, eax
and ecx, 3
push eax
rep movsb byte es:[edi], byte [esi]
mov edi, 0x40f278
or ecx, 0xffffffff
repne scasb al, byte es:[edi]
not ecx
sub edi, ecx
push 0x64
mov esi, edi
mov edi, edx
mov edx, ecx
or ecx, 0xffffffff
repne scasb al, byte es:[edi]
mov ecx, edx
dec edi
shr ecx, 2
rep movsd dword es:[edi], dword [esi]
mov ecx, edx
lea edx, [esp + 0xc8]
and ecx, 3
rep movsb byte es:[edi], byte [esi]
lea edi, [esp + 0x1b4]
or ecx, 0xffffffff
repne scasb al, byte es:[edi]
not ecx
sub edi, ecx
mov esi, edi
mov edi, edx
mov edx, ecx
or ecx, 0xffffffff
repne scasb al, byte es:[edi]
mov ecx, edx
dec edi
shr ecx, 2
rep movsd dword es:[edi], dword [esi]
mov ecx, edx
lea eax, [esp + 0x30]
and ecx, 3
push eax
rep movsb byte es:[edi], byte [esi]
lea ecx, [esp + 0x130]
lea edx, [esp + 0xcc]
push ecx
push edx
call dword [sym.imp.SETUPAPI.dll_SetupDiGetINFClassA]
lea eax, [esp + 0x28]
push str.Ports
push eax
call fcn.00405c60
add esp, 8
test eax, eax
jne 0x4037ad
lea ecx, [ebp - 0xc8]
lea edx, [esp + 0xc0]
push ecx
push edx
call fcn.00402ff0
add esp, 8
lea eax, [esp + 0x198]
push eax
push ebx
call fcn.00405b0c
add esp, 8
test eax, eax
je 0x40369c
push ebx
call fcn.00405bd1
mov eax, dword [esp + 0x24]
mov ecx, dword [esp + 0x1c]
mov edx, dword [esp + 0x51a8]
mov esi, dword [esp + 0x14]
add esp, 4
inc eax
mov dword [esp + 0x20], eax
add ebp, 0x15e
mov byte [ecx + edx - 0xaf0], al
mov ebx, ecx
push esi
call dword [sym.imp.KERNEL32.dll_lstrlenA]
mov cl, byte [esi + eax + 1]
lea eax, [esi + eax + 1]
test cl, cl
mov dword [esp + 0x10], eax
jne 0x4035b9
mov esi, dword [esp + 0x14]
push esi
call dword [sym.imp.KERNEL32.dll_lstrlenA]
mov cl, byte [esi + eax + 1]
lea eax, [esi + eax + 1]
test cl, cl
mov dword [esp + 0x14], eax
jne 0x40335f
pop edi
pop esi
pop ebp
pop ebx
add esp, 0x5188
ret