Function at 0x408cb0
Capabilities:
Read .ini file

Disassembly:
mov eax, 0x5350
call fcn.0040d440
mov dl, byte [0x421d68]
push ebx
push ebp
push esi
push edi
mov ecx, 0x18
xor eax, eax
lea edi, [esp + 0x19]
mov byte [esp + 0x18], dl
mov byte [esp + 0xc0], 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 + 0xc1]
mov byte [esp + 0x540], 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 + 0x541]
mov byte [esp + 0x2c50], 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 + 0x2c51]
mov ebp, dword [esp + 0x5368]
rep stosd dword es:[edi], eax
stosw word es:[edi], ax
stosb byte es:[edi], al
mov ecx, 0x45
xor eax, eax
lea edi, [esp + 0x328]
mov dword [esp + 0x324], 0
rep stosd dword es:[edi], eax
push ebp
lea eax, [esp + 0x544]
push 0x2710
push eax
push str.Manufacturer
call dword [sym.imp.KERNEL32.dll_GetPrivateProfileSectionA]
cmp eax, 1
jb 0x4092dd
lea ecx, [esp + 0x540]
push 0x3d
push ecx
call fcn.0040d380
mov edi, eax
push 0x2c
inc edi
push edi
call fcn.0040d380
add esp, 0x10
test eax, eax
je 0x408d8e
mov byte [eax], 0
or ecx, 0xffffffff
xor eax, eax
repne scasb al, byte es:[edi]
not ecx
sub edi, ecx
lea edx, [esp + 0x18]
mov eax, ecx
mov esi, edi
mov edi, edx
lea ebx, [esp + 0x540]
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, 0x9c4
lea edi, [esp + 0x540]
rep stosd dword es:[edi], eax
call fcn.004057e0
cmp al, 1
jle 0x408dfd
mov edi, 0x418f4c
or ecx, 0xffffffff
xor eax, eax
lea edx, [esp + 0x18]
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 + 0x544]
push 0x2710
lea ecx, [esp + 0x20]
push eax
push ecx
call dword [sym.imp.KERNEL32.dll_GetPrivateProfileSectionA]
cmp eax, 1
jb 0x4092dd
mov al, byte [esp + 0x540]
test al, al
je 0x4092dd
cmp byte [ebx], 0x3b
jne 0x408e43
push ebx
call dword [sym.imp.KERNEL32.dll_lstrlenA]
lea ebx, [ebx + eax + 1]
cmp byte [ebx], 0x3b
je 0x408e33
cmp byte [ebx], 0
je 0x4092dd
mov edi, ebx
or ecx, 0xffffffff
xor eax, eax
lea edx, [esp + 0xc0]
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 + 0xc4]
push ecx
call fcn.0040d380
lea edx, [esp + 0xc8]
push 0x2c
push edx
mov esi, eax
call fcn.0040d380
add esp, 0x10
inc esi
mov edx, eax
je 0x4092dd
test edx, edx
je 0x4092dd
mov ebp, edx
sub ebp, esi
je 0x4092dd
mov ecx, 0x80
xor eax, eax
lea edi, [esp + 0x124]
rep stosd dword es:[edi], eax
mov ecx, ebp
lea edi, [esp + 0x124]
mov eax, ecx
shr ecx, 2
rep movsd dword es:[edi], dword [esi]
mov ecx, eax
and ecx, 3
inc edx
rep movsb byte es:[edi], byte [esi]
push edx
call fcn.00405340
mov edx, eax
or ecx, 0xffffffff
mov edi, edx
xor eax, eax
add esp, 4
xor esi, esi
repne scasb al, byte es:[edi]
not ecx
dec ecx
je 0x408f0e
cmp byte [esi + edx], 0x2c
jne 0x408efd
mov byte [esi + edx], 0
mov edi, edx
or ecx, 0xffffffff
xor eax, eax
inc esi
repne scasb al, byte es:[edi]
not ecx
dec ecx
cmp esi, ecx
jb 0x408ef3
mov ebp, dword [esp + 0x536c]
or ecx, 0xffffffff
xor eax, eax
lea esi, [ebp + 0x104]
mov edi, esi
repne scasb al, byte es:[edi]
not ecx
dec ecx
je 0x408f40
push esi
push edx
call fcn.0040cef0
add esp, 4
push eax
call fcn.0040ce70
add esp, 8
test eax, eax
jne 0x408f5f
push ebx
call dword [sym.imp.KERNEL32.dll_lstrlenA]
lea ebx, [ebx + eax + 1]
cmp byte [ebx], 0
jne 0x408e2e
pop edi
pop esi
pop ebp
pop ebx
add esp, 0x5350
ret
lea edi, [esp + 0x124]
or ecx, 0xffffffff
xor eax, eax
lea ebx, [ebp + 0x168]
repne scasb al, byte es:[edi]
not ecx
sub edi, ecx
push ebx
mov edx, ecx
mov esi, edi
mov edi, ebx
shr ecx, 2
rep movsd dword es:[edi], dword [esi]
mov ecx, edx
and ecx, 3
rep movsb byte es:[edi], byte [esi]
mov edi, dword [esp + 0x536c]
or ecx, 0xffffffff
repne scasb al, byte es:[edi]
not ecx
sub edi, ecx
mov eax, ecx
mov esi, edi
mov edi, ebp
shr ecx, 2
rep movsd dword es:[edi], dword [esi]
mov ecx, eax
and ecx, 3
rep movsb byte es:[edi], byte [esi]
inc byte [ebp + 0x5e8]
call fcn.00405340
mov edi, ebx
or ecx, 0xffffffff
xor eax, eax
add esp, 4
repne scasb al, byte es:[edi]
not ecx
sub edi, ecx
lea edx, [esp + 0x18]
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
jne 0x408ff1
lea edx, [esp + 0x18]
mov edi, str..RegHW
jmp 0x409015
lea eax, [esp + 0x18]
push 0x419c78
push eax
call fcn.0040ce70
add esp, 8
lea edx, [esp + 0x18]
test eax, eax
mov edi, str..RegHW
jne 0x409015
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 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 edx, [esp + 0x18]
and ecx, 3
rep movsb byte es:[edi], byte [esi]
mov ecx, 0x9c4
lea edi, [esp + 0x2c50]
rep stosd dword es:[edi], eax
mov eax, dword [esp + 0x5368]
lea ecx, [esp + 0x2c50]
push eax
push 0x2710
push ecx
push edx
call dword [sym.imp.KERNEL32.dll_GetPrivateProfileSectionA]
cmp eax, 1
jb 0x4092dd
mov al, byte [esp + 0x2c50]
lea ebp, [esp + 0x2c50]
test al, al
mov byte [esp + 0x10], 0
je 0x4092dd
push str.HardwareID
push ebp
call fcn.0040ce70
add esp, 8
test eax, eax
je 0x4092c8
cmp byte [ebp], 0x3b
je 0x4092c8
mov eax, dword [esp + 0x10]
push 0x2c
and eax, 0xff
push ebp
lea ecx, [eax*8]
sub ecx, eax
lea eax, [ecx + ecx*2]
mov ecx, dword [esp + 0x5374]
lea eax, [eax + eax*4]
shl eax, 4
lea ebx, [eax + ecx]
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 + 0x79c]
mov eax, ecx
mov esi, edi
mov edi, edx
lea edx, [esp + 0x444]
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 + 0x444]
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 + 0x32c]
and ecx, 3
push eax
rep movsb byte es:[edi], byte [esi]
lea ecx, [esp + 0x448]
push ecx
call fcn.0040d12c
mov esi, eax
add esp, 0x10
mov dword [esp + 0x14], esi
cmp esi, 0xffffffff
je 0x40928f
mov dl, byte [0x421d68]
mov ecx, 0x40
xor eax, eax
lea edi, [esp + 0x125]
mov byte [esp + 0x124], dl
mov byte [esp + 0x7c], 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 + 0x7d]
lea edx, [esp + 0x124]
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 + 0x124]
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 + 0x12c]
and ecx, 3
rep movsb byte es:[edi], byte [esi]
lea edi, [esp + 0x340]
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 + 0x84]
and ecx, 3
push eax
rep movsb byte es:[edi], byte [esi]
lea ecx, [esp + 0xbc]
lea edx, [esp + 0x130]
push ecx
push edx
call dword [sym.imp.SETUPAPI.dll_SetupDiGetINFClassA]
lea eax, [esp + 0x7c]
push str.Ports
push eax
call fcn.0040d0a0
add esp, 8
test eax, eax
jne 0x40928b
lea ecx, [ebx + 0x698]
lea edx, [esp + 0x124]
push ecx
push edx
call fcn.00405850
add esp, 8
mov esi, dword [esp + 0x14]
lea eax, [esp + 0x324]
push eax
push esi
call fcn.0040d1f6
add esp, 8
test eax, eax
je 0x409177
push esi
call fcn.0040d2bb
mov al, byte [esp + 0x14]
mov ecx, dword [esp + 0x5370]
add esp, 4
inc al
mov byte [esp + 0x10], al
mov byte [ecx + 0x690], al
push ebp
call dword [sym.imp.KERNEL32.dll_lstrlenA]
lea ebp, [eax + ebp + 1]
cmp byte [ebp], 0
jne 0x40908c
pop edi
pop esi
pop ebp
pop ebx
add esp, 0x5350
ret