Function at 0x38046
Capabilities:
Read .ini file

Disassembly:
push ebp
mov ebp, esp
sub esp, 0x38
push ebx
push esi
push edi
mov byte [ebp - 0x38], 0
xor eax, eax
mov al, byte [0x1b146c]
or eax, eax
jne 0x38741
push 0x1b1478
push 0
push str.delay
push 0x1b148c
call sub.KERNEL32.dll_GetPrivateProfileIntA
mov word [ebp - 0x18], ax
mov eax, dword [ebp - 0x18]
and eax, 0xffff
or eax, eax
je 0x38096
mov ax, word [ebp - 0x18]
mov word [0x1b1468], ax
push 0x1b1498
push 0x14
lea eax, [ebp - 0x14]
push eax
push 0x1b14a4
push str.port1
push 0x1b14b0
call sub.KERNEL32.dll_GetPrivateProfileStringA
mov dword [ebp - 0x1c], eax
cmp dword [ebp - 0x1c], 0
je 0x383c8
push 0x2c
lea eax, [ebp - 0x14]
push eax
call fcn.00037d57
mov word [ebp - 0x30], ax
lea eax, [ebp - 0x14]
push eax
call fcn.00037d0f
and eax, 0xffff
mov ecx, dword [ebp - 0x30]
and ecx, 0xffff
cmp eax, ecx
jle 0x38100
mov eax, dword [ebp - 0x30]
and eax, 0xffff
mov byte [ebp + eax - 0x14], 0
inc byte [ebp - 0x38]
xor eax, eax
mov al, byte [ebp - 0x14]
cmp eax, 0x30
jne 0x38132
mov al, byte [ebp - 0x13]
and eax, 0xdf
cmp al, 0x58
jne 0x38132
lea eax, [ebp - 0x12]
push eax
call fcn.00037dbb
mov word [0x1b1458], ax
jmp 0x38141
lea eax, [ebp - 0x14]
push eax
call fcn.00037f22
mov word [0x1b1458], ax
xor eax, eax
mov al, byte [ebp - 0x38]
or eax, eax
je 0x381a3
mov eax, dword [ebp - 0x30]
and eax, 0xffff
mov al, byte [ebp + eax - 0x13]
and eax, 0xff
sub eax, 0x54
cmp eax, 1
sbb eax, eax
neg eax
test al, 0xdf
je 0x381a3
mov eax, dword [ebp - 0x30]
and eax, 0xffff
mov al, byte [ebp + eax - 0x12]
and eax, 0xff
cmp eax, 0x3a
jne 0x381a3
mov eax, dword [ebp - 0x30]
and eax, 0xffff
lea eax, [ebp + eax - 0x11]
push eax
call fcn.00037f22
mov word [0x1b1460], ax
push 0x1b14bc
push 0x14
lea eax, [ebp - 0x14]
push eax
push 0x1b14c8
push str.port2
push 0x1b14d4
call sub.KERNEL32.dll_GetPrivateProfileStringA
mov dword [ebp - 0x1c], eax
cmp dword [ebp - 0x1c], 0
je 0x38215
xor eax, eax
mov al, byte [ebp - 0x14]
cmp eax, 0x30
jne 0x38201
mov al, byte [ebp - 0x13]
and eax, 0xdf
cmp al, 0x58
jne 0x38201
lea eax, [ebp - 0x12]
push eax
call fcn.00037dbb
mov word [0x1b145a], ax
jmp 0x38210
lea eax, [ebp - 0x14]
push eax
call fcn.00037f22
mov word [0x1b145a], ax
jmp 0x3821e
mov word [0x1b145a], 0
push 0x1b14e0
push 0x14
lea eax, [ebp - 0x14]
push eax
push 0x1b14ec
push str.port3
push 0x1b14f8
call sub.KERNEL32.dll_GetPrivateProfileStringA
mov dword [ebp - 0x1c], eax
cmp dword [ebp - 0x1c], 0
je 0x38290
xor eax, eax
mov al, byte [ebp - 0x14]
cmp eax, 0x30
jne 0x3827c
mov al, byte [ebp - 0x13]
and eax, 0xdf
cmp al, 0x58
jne 0x3827c
lea eax, [ebp - 0x12]
push eax
call fcn.00037dbb
mov word [0x1b145c], ax
jmp 0x3828b
lea eax, [ebp - 0x14]
push eax
call fcn.00037f22
mov word [0x1b145c], ax
jmp 0x38299
mov word [0x1b145c], 0
push 0x1b1504
push 0x14
lea eax, [ebp - 0x14]
push eax
push 0x1b1510
push str.port4
push 0x1b151c
call sub.KERNEL32.dll_GetPrivateProfileStringA
mov dword [ebp - 0x1c], eax
cmp dword [ebp - 0x1c], 0
je 0x3830b
xor eax, eax
mov al, byte [ebp - 0x14]
cmp eax, 0x30
jne 0x382f7
mov al, byte [ebp - 0x13]
and eax, 0xdf
cmp al, 0x58
jne 0x382f7
lea eax, [ebp - 0x12]
push eax
call fcn.00037dbb
mov word [0x1b145e], ax
jmp 0x38306
lea eax, [ebp - 0x14]
push eax
call fcn.00037f22
mov word [0x1b145e], ax
jmp 0x38314
mov word [0x1b145e], 0
mov word [ebp - 0x34], 0
jmp 0x38323
inc word [ebp - 0x34]
mov eax, dword [ebp - 0x34]
and eax, 0xffff
cmp eax, 4
jge 0x383c8
mov eax, dword [ebp - 0x34]
and eax, 0xffff
inc eax
mov word [ebp - 0x20], ax
jmp 0x3834a
inc word [ebp - 0x20]
mov eax, dword [ebp - 0x20]
and eax, 0xffff
cmp eax, 4
jge 0x383c3
mov eax, dword [ebp - 0x34]
and eax, 0xffff
mov ax, word [eax*2 + 0x1b1458]
and eax, 0xffff
or eax, eax
je 0x383c3
mov eax, dword [ebp - 0x20]
and eax, 0xffff
mov ax, word [eax*2 + 0x1b1458]
and eax, 0xffff
mov ecx, dword [ebp - 0x34]
and ecx, 0xffff
mov cx, word [ecx*2 + 0x1b1458]
and ecx, 0xffff
cmp eax, ecx
jne 0x383be
mov eax, dword [ebp - 0x20]
and eax, 0xffff
mov word [eax*2 + 0x1b1458], 0
jmp 0x38346
jmp 0x3831f
mov word [0x1b1448], 0
push 0x1b1528
push 0xa
lea eax, [ebp - 0x2c]
push eax
push 0x1b1534
push str.machine
push 0x1b1540
call sub.KERNEL32.dll_GetPrivateProfileStringA
mov dword [ebp - 0x1c], eax
cmp dword [ebp - 0x1c], 0
je 0x384df
mov word [ebp - 0x34], 0
jmp 0x3840c
inc word [ebp - 0x34]
mov eax, dword [ebp - 0x34]
and eax, 0xffff
cmp eax, dword [ebp - 0x1c]
jae 0x38474
mov eax, dword [ebp - 0x34]
and eax, 0xffff
mov al, byte [ebp + eax - 0x2c]
and eax, 0xff
cmp eax, 0x61
jl 0x3846f
mov eax, dword [ebp - 0x34]
and eax, 0xffff
mov al, byte [ebp + eax - 0x2c]
and eax, 0xff
cmp eax, 0x7a
jg 0x3846f
mov eax, dword [ebp - 0x34]
and eax, 0xffff
mov al, byte [ebp + eax - 0x2c]
and eax, 0xdf
mov ecx, dword [ebp - 0x34]
and ecx, 0xffff
mov byte [ebp + ecx - 0x2c], al
jmp 0x38408
xor eax, eax
mov al, byte [ebp - 0x2c]
cmp eax, 0x4e
jne 0x384df
xor eax, eax
mov al, byte [ebp - 0x2b]
cmp eax, 0x45
jne 0x384df
xor eax, eax
mov al, byte [ebp - 0x2a]
cmp eax, 0x43
jne 0x384df
xor eax, eax
mov al, byte [ebp - 0x29]
cmp eax, 0x39
jne 0x384df
xor eax, eax
mov al, byte [ebp - 0x28]
cmp eax, 0x38
jne 0x384df
xor eax, eax
mov al, byte [ebp - 0x27]
cmp eax, 0x30
jne 0x384df
xor eax, eax
mov al, byte [ebp - 0x26]
cmp eax, 0x30
jne 0x384df
mov word [0x1b1448], 1
xor eax, eax
mov ax, word [0x1b1448]
cmp eax, 1
jne 0x384fe
mov word [0x1b144c], 0
jmp 0x38507
mov word [0x1b144c], 1
push 0x1b154c
push 0x14
lea eax, [ebp - 0x14]
push eax
push 0x1b1558
push str.PortVerify
push 0x1b1568
call sub.KERNEL32.dll_GetPrivateProfileStringA
mov dword [ebp - 0x1c], eax
cmp dword [ebp - 0x1c], 0
je 0x38646
xor eax, eax
mov al, byte [ebp - 0x14]
cmp eax, 0x54
je 0x3854f
xor eax, eax
mov al, byte [ebp - 0x14]
cmp eax, 0x74
jne 0x385b1
xor eax, eax
mov al, byte [ebp - 0x13]
cmp eax, 0x52
je 0x3856b
xor eax, eax
mov al, byte [ebp - 0x13]
cmp eax, 0x72
jne 0x385b1
xor eax, eax
mov al, byte [ebp - 0x12]
cmp eax, 0x55
je 0x38587
xor eax, eax
mov al, byte [ebp - 0x12]
cmp eax, 0x75
jne 0x385b1
xor eax, eax
mov al, byte [ebp - 0x11]
cmp eax, 0x45
je 0x385a3
xor eax, eax
mov al, byte [ebp - 0x11]
cmp eax, 0x65
jne 0x385b1
mov word [0x1b144c], 1
jmp 0x38646
xor eax, eax
mov al, byte [ebp - 0x14]
cmp eax, 0x46
je 0x385cd
xor eax, eax
mov al, byte [ebp - 0x14]
cmp eax, 0x66
jne 0x38646
xor eax, eax
mov al, byte [ebp - 0x13]
cmp eax, 0x41
je 0x385e9
xor eax, eax
mov al, byte [ebp - 0x13]
cmp eax, 0x61
jne 0x38646
xor eax, eax
mov al, byte [ebp - 0x12]
cmp eax, 0x4c
je 0x38605
xor eax, eax
mov al, byte [ebp - 0x12]
cmp eax, 0x6c
jne 0x38646
xor eax, eax
mov al, byte [ebp - 0x12]
cmp eax, 0x53
je 0x38621
xor eax, eax
mov al, byte [ebp - 0x12]
cmp eax, 0x73
jne 0x38646
xor eax, eax
mov al, byte [ebp - 0x11]
cmp eax, 0x45
je 0x3863d
xor eax, eax
mov al, byte [ebp - 0x11]
cmp eax, 0x65
jne 0x38646
mov word [0x1b144c], 0
push str.system.ini
push 0x14
lea eax, [ebp - 0x14]
push eax
push 0x1b1580
push str.Read2X
push str.sentinel
call sub.KERNEL32.dll_GetPrivateProfileStringA
mov dword [ebp - 0x1c], eax
cmp dword [ebp - 0x1c], 0
je 0x386eb
xor eax, eax
mov al, byte [ebp - 0x14]
cmp eax, 0x54
je 0x3868e
xor eax, eax
mov al, byte [ebp - 0x14]
cmp eax, 0x74
jne 0x386eb
xor eax, eax
mov al, byte [ebp - 0x13]
cmp eax, 0x52
je 0x386aa
xor eax, eax
mov al, byte [ebp - 0x13]
cmp eax, 0x72
jne 0x386eb
xor eax, eax
mov al, byte [ebp - 0x12]
cmp eax, 0x55
je 0x386c6
xor eax, eax
mov al, byte [ebp - 0x12]
cmp eax, 0x75
jne 0x386eb
xor eax, eax
mov al, byte [ebp - 0x11]
cmp eax, 0x45
je 0x386e2
xor eax, eax
mov al, byte [ebp - 0x11]
cmp eax, 0x65
jne 0x386eb
mov word [0x1b1450], 1
mov word [ebp - 0x34], 0
jmp 0x386fa
inc word [ebp - 0x34]
mov eax, dword [ebp - 0x34]
and eax, 0xffff
cmp eax, 3
jge 0x3873a
mov al, byte [ebp - 0x34]
and eax, 0xffff00ff
push eax
push 1
push 0
mov eax, dword [ebp - 0x34]
and eax, 0xffff
mov ecx, eax
lea eax, [eax + eax*4]
lea eax, [ecx + eax*2]
lea eax, [eax*2 + 0x1a60d0]
push eax
call fcn.0003877a
jmp 0x386f6
mov byte [0x1b146c], 1
mov eax, dword [ebp + 8]
mov al, byte [eax + 0xa]
and eax, 0xffff00ff
push eax
push 2
mov eax, dword [ebp + 8]
push eax
mov eax, dword [ebp + 8]
mov al, byte [eax + 0xa]
and eax, 0xff
mov ecx, eax
lea eax, [eax + eax*4]
lea eax, [ecx + eax*2]
lea eax, [eax*2 + 0x1a60d0]
push eax
call fcn.0003877a
pop edi
pop esi
pop ebx
leave
ret 4