Function at 0x1003ab83
Capabilities:
Read .ini file

Disassembly:
mov edi, edi
push ebp
mov ebp, esp
sub esp, 0x30
push esi
push edi
xor eax, eax
mov dword [ebp - 0x28], ecx
mov ecx, dword [ebp + 8]
xor edi, edi
mov dword [ebp - 0x30], edx
inc edi
mov dword [ebp - 0x18], eax
mov esi, eax
call fcn.10081126
test eax, eax
je 0x1003ae34
push ebx
push 0xc
push 8
call dword [sym.imp.KERNEL32.dll_GetProcessHeap]
push eax
call dword [sym.imp.KERNEL32.dll_HeapAlloc]
mov ebx, eax
mov dword [ebp - 0x24], ebx
test ebx, ebx
je 0x1003ae74
push 0x10000
push 8
call dword [sym.imp.KERNEL32.dll_GetProcessHeap]
push eax
call dword [sym.imp.KERNEL32.dll_HeapAlloc]
mov esi, eax
mov dword [ebp - 0x10], esi
test esi, esi
je 0x1003ae74
push 0x20
push 8
mov dword [ebx], 4
mov dword [ebx + 4], 0x10001478
call dword [sym.imp.KERNEL32.dll_GetProcessHeap]
push eax
call dword [sym.imp.KERNEL32.dll_HeapAlloc]
mov dword [ebx + 8], eax
xor eax, eax
mov edx, eax
mov dword [ebp - 8], eax
cmp dword [ebx], eax
jbe 0x1003ae17
push dword [ebp + 8]
mov dword [ebp - 0x14], eax
mov eax, dword [ebx + 8]
push 0x8000
push esi
push dword [edx*4 + 0x10001478]
mov dword [ebp - 0xc], eax
call dword [sym.imp.KERNEL32.dll_GetPrivateProfileSectionW]
mov dword [ebp - 0x20], eax
mov edx, esi
mov dword [ebp - 0x1c], eax
test eax, eax
je 0x1003ac9b
mov edi, eax
xor ebx, ebx
cmp word [edx], bx
je 0x1003ac95
mov ecx, edx
lea eax, [ecx + 2]
mov dword [ebp - 0x1c], eax
mov ax, word [ecx]
add ecx, 2
cmp ax, bx
jne 0x1003ac59
sub ecx, dword [ebp - 0x1c]
or eax, 0xffffffff
sar ecx, 1
sub eax, ecx
mov ecx, edx
add edi, eax
lea eax, [ecx + 2]
mov dword [ebp - 0x1c], eax
mov ax, word [ecx]
add ecx, 2
cmp ax, bx
jne 0x1003ac78
sub ecx, dword [ebp - 0x1c]
sar ecx, 1
lea edx, [edx + ecx*2]
add edx, 2
inc dword [ebp - 0x14]
test edi, edi
jne 0x1003ac4c
mov ebx, dword [ebp - 0x24]
xor edi, edi
inc edi
mov eax, dword [ebp - 8]
mov edx, dword [ebp - 0xc]
mov ecx, dword [ebp - 0x14]
mov dword [edx + eax*8], ecx
mov eax, ecx
shl eax, 2
push eax
push 8
call dword [sym.imp.KERNEL32.dll_GetProcessHeap]
push eax
call dword [sym.imp.KERNEL32.dll_HeapAlloc]
mov edx, dword [ebp - 8]
mov ecx, dword [ebp - 0xc]
mov dword [ecx + edx*8 + 4], eax
test eax, eax
je 0x1003ae74
xor eax, eax
mov dword [ebp - 0x1c], esi
mov ecx, eax
mov dword [ebp - 4], ecx
cmp dword [ebp - 0x20], eax
jbe 0x1003ae08
movzx eax, word [esi]
test ax, ax
je 0x1003ae03
cmp ecx, dword [ebp - 0x14]
jae 0x1003ad32
cmp eax, 0x5c
jne 0x1003ad3a
mov ecx, dword [ebp - 0x28]
mov edx, esi
call fcn.10080125
mov edx, dword [ebp - 8]
mov ecx, eax
mov eax, dword [ebp - 0xc]
mov esi, dword [ebp - 4]
mov eax, dword [eax + edx*8 + 4]
mov dword [eax + esi*4], ecx
mov ecx, esi
mov eax, dword [ebp - 0xc]
mov esi, dword [ebp - 0x1c]
mov eax, dword [eax + edx*8 + 4]
xor edx, edx
cmp dword [eax + ecx*4], edx
jne 0x1003adb8
push 0xe
call dword [sym.imp.KERNEL32.dll_SetLastError]
mov esi, dword [ebp - 0x10]
jmp 0x1003ae7c
mov ecx, esi
lea edx, [ecx + 2]
mov ax, word [ecx]
add ecx, 2
cmp ax, word [ebp - 0x18]
jne 0x1003ad3f
sub ecx, edx
sar ecx, 1
lea eax, [ecx*2 + 2]
push eax
push 8
call dword [sym.imp.KERNEL32.dll_GetProcessHeap]
push eax
call dword [sym.imp.KERNEL32.dll_HeapAlloc]
mov edx, dword [ebp - 8]
mov esi, dword [ebp - 0xc]
mov ecx, dword [esi + edx*8 + 4]
mov esi, dword [ebp - 4]
mov dword [ecx + esi*4], eax
mov ecx, esi
mov eax, dword [ebp - 0xc]
mov esi, dword [ebp - 0x1c]
mov eax, dword [eax + edx*8 + 4]
mov eax, dword [eax + ecx*4]
mov dword [ebp - 0x2c], eax
test eax, eax
je 0x1003ad2a
mov edx, esi
lea ecx, [edx + 2]
mov ax, word [edx]
add edx, 2
cmp ax, word [ebp - 0x18]
jne 0x1003ad91
sub edx, ecx
mov ecx, dword [ebp - 0x2c]
sar edx, 1
push esi
inc edx
call fcn.10015ac7
mov esi, eax
test esi, esi
js 0x1003ae3c
mov esi, dword [ebp - 0x1c]
inc dword [ebp - 4]
mov ecx, esi
lea edx, [ecx + 2]
mov ax, word [ecx]
add ecx, 2
cmp ax, word [ebp - 0x18]
jne 0x1003adc0
sub ecx, edx
or eax, 0xffffffff
sar ecx, 1
sub eax, ecx
mov ecx, esi
add dword [ebp - 0x20], eax
lea edx, [ecx + 2]
mov ax, word [ecx]
add ecx, 2
cmp ax, word [ebp - 0x18]
jne 0x1003addd
sub ecx, edx
sar ecx, 1
lea esi, [esi + ecx*2]
mov ecx, dword [ebp - 4]
add esi, 2
cmp dword [ebp - 0x20], 0
mov dword [ebp - 0x1c], esi
ja 0x1003ace1
mov edx, dword [ebp - 8]
xor eax, eax
mov esi, dword [ebp - 0x10]
inc edx
mov dword [ebp - 8], edx
cmp edx, dword [ebx]
jb 0x1003ac1d
mov eax, dword [ebp - 0x30]
mov dword [eax], ebx
pop ebx
test esi, esi
je 0x1003ae32
push esi
xor eax, eax
push eax
call dword [sym.imp.KERNEL32.dll_GetProcessHeap]
push eax
call dword [sym.imp.KERNEL32.dll_HeapFree]
mov eax, edi
pop edi
pop esi
mov esp, ebp
pop ebp
ret 4
test esi, 0x10000000
je 0x1003ae5d
push esi
call dword [sym.imp.ntdll.dll_RtlNtStatusToDosError]
cmp eax, 0x13d
je 0x1003ae6e
push esi
call dword [sym.imp.ntdll.dll_RtlNtStatusToDosError]
mov esi, eax
jmp 0x1003ae6e
mov eax, esi
and eax, 0x1fff0000
cmp eax, 0x70000
jne 0x1003ae6e
movzx esi, si
push esi
jmp 0x1003ad2c
push 0xe
call dword [sym.imp.KERNEL32.dll_SetLastError]
xor eax, eax
mov edi, eax
mov ecx, ebx
call fcn.1003ae89
jmp 0x1003ae1c