Function at 0x405ab0
Capabilities:
Read .ini file

Disassembly:
mov eax, 0x5264
call fcn.0040d440
mov dl, byte [0x421d68]
push ebx
push ebp
push esi
push edi
mov ecx, 0x18
xor eax, eax
lea edi, [esp + 0x29]
mov byte [esp + 0x28], dl
mov byte [esp + 0xd0], 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 + 0xd1]
mov byte [esp + 0x454], 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 + 0x455]
mov byte [esp + 0x2b64], 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 + 0x2b65]
mov ebp, dword [esp + 0x527c]
rep stosd dword es:[edi], eax
stosw word es:[edi], ax
stosb byte es:[edi], al
xor esi, esi
mov ecx, 0x45
xor eax, eax
lea edi, [esp + 0x23c]
mov dword [esp + 0x238], esi
push ebp
rep stosd dword es:[edi], eax
lea eax, [esp + 0x458]
push 0x2710
push eax
push str.Manufacturer
mov dword [esp + 0x30], esi
call dword [sym.imp.KERNEL32.dll_GetPrivateProfileSectionA]
cmp eax, 1
jb 0x40616d
lea ecx, [esp + 0x454]
push 0x3d
push ecx
call fcn.0040d380
mov edi, eax
push 0x2c
inc edi
push edi
call fcn.0040d380
add esp, 0x10
cmp eax, esi
je 0x405b90
mov byte [eax], 0
or ecx, 0xffffffff
xor eax, eax
repne scasb al, byte es:[edi]
not ecx
sub edi, ecx
lea edx, [esp + 0x28]
mov eax, ecx
mov esi, edi
mov edi, edx
lea ebx, [esp + 0x454]
shr ecx, 2
rep movsd dword es:[edi], dword [esi]
mov ecx, eax
xor eax, eax
and ecx, 3
mov dword [esp + 0x14], ebx
rep movsb byte es:[edi], byte [esi]
mov ecx, 0x9c4
lea edi, [esp + 0x454]
rep stosd dword es:[edi], eax
call fcn.004057e0
cmp al, 1
jle 0x405c03
mov edi, 0x418f4c
or ecx, 0xffffffff
xor eax, eax
lea edx, [esp + 0x28]
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
and ecx, 3
rep movsb byte es:[edi], byte [esi]
push ebp
lea eax, [esp + 0x458]
push 0x2710
lea ecx, [esp + 0x30]
push eax
push ecx
call dword [sym.imp.KERNEL32.dll_GetPrivateProfileSectionA]
cmp eax, 1
jb 0x40616d
mov edx, dword [esp + 0x5280]
mov al, byte [edx]
mov byte [esp + 0x18], al
mov al, byte [esp + 0x454]
test al, al
je 0x40616d
jmp 0x405c47
mov ebx, dword [esp + 0x14]
cmp byte [ebx], 0x3b
jne 0x405c66
push ebx
call dword [sym.imp.KERNEL32.dll_lstrlenA]
mov cl, byte [ebx + eax + 1]
lea eax, [ebx + eax + 1]
cmp cl, 0x3b
mov dword [esp + 0x14], eax
mov ebx, eax
je 0x405c4c
cmp byte [ebx], 0
je 0x40616d
mov edi, ebx
or ecx, 0xffffffff
xor eax, eax
lea edx, [esp + 0xd0]
repne scasb al, byte es:[edi]
not ecx
sub edi, ecx
push 0x3d
mov eax, ecx
mov esi, edi
mov edi, edx
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 + 0xd4]
push ecx
call fcn.0040d380
lea edx, [esp + 0xd8]
push 0x2c
push edx
mov esi, eax
call fcn.0040d380
add esp, 0x10
inc esi
mov ebx, eax
je 0x40616d
test ebx, ebx
je 0x40616d
mov ecx, ebx
sub ecx, esi
je 0x40616d
mov eax, dword [esp + 0x20]
lea edx, [eax + 0x548170]
mov eax, ecx
mov edi, edx
push edx
shr ecx, 2
rep movsd dword es:[edi], dword [esi]
mov ecx, eax
mov eax, dword [esp + 0x1c]
and ecx, 3
and eax, 0xff
rep movsb byte es:[edi], byte [esi]
lea ecx, [eax + eax*2]
mov edi, edx
shl ecx, 7
add ecx, eax
lea ecx, [ecx + ecx*8]
lea eax, [eax + ecx*2]
mov ecx, dword [esp + 0x5284]
lea ebp, [ecx + eax*8]
or ecx, 0xffffffff
xor eax, eax
repne scasb al, byte es:[edi]
not ecx
lea esi, [ebp + 0x16c]
sub edi, ecx
mov eax, ecx
mov dword [esp + 0x14], esi
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 edi, dword [esp + 0x5280]
or ecx, 0xffffffff
repne scasb al, byte es:[edi]
not ecx
lea esi, [ebp + 4]
sub edi, ecx
mov eax, ecx
mov dword [esp + 0x14], esi
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 + 0x20]
add ebp, 0x108
inc ebx
lea edx, [ecx + eax + 1]
push ebx
mov dword [esp + 0x24], edx
call fcn.00405340
mov edi, eax
or ecx, 0xffffffff
xor eax, eax
add esp, 4
repne scasb al, byte es:[edi]
not ecx
sub edi, ecx
xor edx, edx
mov eax, ecx
mov esi, edi
mov edi, ebp
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, ebp
or ecx, 0xffffffff
repne scasb al, byte es:[edi]
not ecx
dec ecx
je 0x405dd3
cmp byte [edx + ebp], 0x2c
jne 0x405dc2
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 0x405db8
push str._4348
push ebp
call fcn.0040ce70
add esp, 8
test eax, eax
jne 0x405dfb
push str._1C00
push ebp
call fcn.0040ce70
add esp, 8
test eax, eax
je 0x40614e
mov al, byte [esp + 0x18]
mov ebx, dword [esp + 0x5280]
inc al
mov byte [esp + 0x18], al
mov byte [ebx], al
mov eax, dword [esp + 0x18]
and eax, 0xff
lea ecx, [eax + eax*2]
shl ecx, 7
add ecx, eax
lea ecx, [ecx + ecx*8]
lea ebp, [eax + ecx*2]
shl ebp, 3
lea edi, [ebx + ebp - 0xd72c]
push edi
call fcn.00405340
or ecx, 0xffffffff
xor eax, eax
add esp, 4
lea edx, [esp + 0x28]
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
and ecx, 3
rep movsb byte es:[edi], byte [esi]
call fcn.004057e0
cmp al, 1
lea edx, [esp + 0x28]
mov edi, str..RegHW
je 0x405e70
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 + 0x28]
and ecx, 3
rep movsb byte es:[edi], byte [esi]
mov ecx, 0x9c4
lea edi, [esp + 0x2b64]
rep stosd dword es:[edi], eax
mov eax, dword [esp + 0x527c]
lea ecx, [esp + 0x2b64]
push eax
push 0x2710
push ecx
push edx
call dword [sym.imp.KERNEL32.dll_GetPrivateProfileSectionA]
cmp eax, 1
jb 0x40616d
mov al, byte [esp + 0x2b64]
lea esi, [esp + 0x2b64]
test al, al
mov dword [esp + 0x24], esi
mov byte [esp + 0x1c], 0
je 0x40614e
jmp 0x405ef1
mov esi, dword [esp + 0x24]
push str.HardwareID
push esi
call fcn.0040ce70
add esp, 8
test eax, eax
je 0x406136
cmp byte [esi], 0x3b
je 0x406136
mov eax, dword [esp + 0x1c]
push 0x2c
and eax, 0xff
push esi
lea ecx, [eax*8]
sub ecx, eax
lea eax, [ecx + ecx*2]
lea eax, [eax + eax*4]
shl eax, 4
add eax, ebp
add ebx, eax
call fcn.0040d340
mov edi, eax
or ecx, 0xffffffff
inc edi
xor eax, eax
repne scasb al, byte es:[edi]
not ecx
sub edi, ecx
lea edx, [ebx - 0xd0f8]
mov eax, ecx
mov esi, edi
mov edi, edx
lea edx, [esp + 0x358]
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, 0x54e294
or ecx, 0xffffffff
repne scasb al, byte es:[edi]
not ecx
sub edi, ecx
mov eax, ecx
mov esi, edi
mov edi, edx
lea edx, [esp + 0x358]
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 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 + 0x240]
and ecx, 3
push eax
rep movsb byte es:[edi], byte [esi]
lea ecx, [esp + 0x35c]
push ecx
call fcn.0040d12c
mov esi, eax
add esp, 0x10
mov dword [esp + 0x10], esi
cmp esi, 0xffffffff
je 0x4060f6
mov dl, byte [0x421d68]
mov ecx, 0x40
xor eax, eax
lea edi, [esp + 0x135]
mov byte [esp + 0x134], dl
mov byte [esp + 0x8c], 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 + 0x8d]
lea edx, [esp + 0x134]
rep stosd dword es:[edi], eax
stosb byte es:[edi], al
or ecx, 0xffffffff
mov edi, 0x54e294
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 + 0x134]
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, 0x418e18
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 + 0x13c]
and ecx, 3
rep movsb byte es:[edi], byte [esi]
lea edi, [esp + 0x254]
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 + 0x94]
and ecx, 3
push eax
rep movsb byte es:[edi], byte [esi]
lea ecx, [esp + 0xcc]
lea edx, [esp + 0x140]
push ecx
push edx
call dword [sym.imp.SETUPAPI.dll_SetupDiGetINFClassA]
lea eax, [esp + 0x8c]
push str.Ports
push eax
call fcn.0040d0a0
add esp, 8
test eax, eax
jne 0x4060f2
lea ecx, [ebx - 0xd1fc]
lea edx, [esp + 0x134]
push ecx
push edx
call fcn.00405850
add esp, 8
mov esi, dword [esp + 0x10]
lea eax, [esp + 0x238]
push eax
push esi
call fcn.0040d1f6
add esp, 8
test eax, eax
je 0x405fd5
push esi
call fcn.0040d2bb
mov al, byte [esp + 0x20]
mov ecx, dword [esp + 0x5284]
mov esi, dword [esp + 0x28]
add esp, 4
inc al
mov ebx, ecx
mov byte [esp + 0x1c], al
mov byte [ecx + ebp - 0xd204], al
push esi
call dword [sym.imp.KERNEL32.dll_lstrlenA]
lea esi, [esi + eax + 1]
mov dword [esp + 0x24], esi
cmp byte [esi], 0
jne 0x405eed
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 0x405c43
pop edi
pop esi
pop ebp
pop ebx
add esp, 0x5264
ret