Function at 0x100315a0
Capabilities:
Print debug messages
Read .ini file

Disassembly:
push ebp
mov ebp, esp
push 0xffffffffffffffff
push 0x100830fe
mov eax, dword fs:[0]
push eax
sub esp, 0x6b8
mov eax, dword [0x100a7070]
xor eax, ebp
mov dword [ebp - 0x10], eax
push ebx
push esi
push edi
push eax
lea eax, [ebp - 0xc]
mov dword fs:[0], eax
mov dword [ebp - 0x6c4], 0x100aa1d8
call fcn.100138c0
mov ecx, eax
test ecx, ecx
jne 0x100315ed
push 0x80004005
call fcn.100142e0
mov eax, dword [ecx]
mov edx, dword [eax + 0xc]
cmp eax, 0x10097a44
jne 0x10031602
lock inc dword [ecx + 0x14]
lea eax, [ecx + 8]
jmp 0x10031604
call edx
add eax, 0x10
mov dword [0x100aa1d8], eax
mov dword [ebp - 4], 0
call fcn.100138c0
mov ecx, eax
test ecx, ecx
jne 0x10031628
push 0x80004005
call fcn.100142e0
mov eax, dword [ecx]
mov edx, dword [eax + 0xc]
cmp eax, 0x10097a44
jne 0x1003163d
lock inc dword [ecx + 0x14]
lea eax, [ecx + 8]
jmp 0x1003163f
call edx
add eax, 0x10
mov dword [0x100aa1dc], eax
mov byte [ebp - 4], 1
call fcn.100138c0
mov ecx, eax
test ecx, ecx
jne 0x10031660
push 0x80004005
call fcn.100142e0
mov eax, dword [ecx]
mov edx, dword [eax + 0xc]
cmp eax, 0x10097a44
jne 0x10031675
lock inc dword [ecx + 0x14]
lea eax, [ecx + 8]
jmp 0x10031677
call edx
add eax, 0x10
mov dword [0x100aa1e0], eax
push 0x208
lea eax, [ebp - 0x420]
mov byte [ebp - 4], 2
push 0
push eax
call fcn.1005d9b0
add esp, 0xc
lea eax, [ebp - 0x420]
push 0x104
push eax
push 0x10000000
call dword [sym.imp.KERNEL32.dll_GetModuleFileNameW]
lea eax, [ebp - 0x420]
push eax
call dword [sym.imp.SHLWAPI.dll_PathRemoveFileSpecW]
push str.product.dat
lea eax, [ebp - 0x420]
push eax
call dword [sym.imp.SHLWAPI.dll_PathAppendW]
lea eax, [ebp - 0x420]
push eax
push 0x68
push 0x1009688c
push str.common
call dword [sym.imp.KERNEL32.dll_GetPrivateProfileIntW]
mov ebx, eax
lea eax, [ebp - 0x218]
push 0x208
push 0
push eax
mov dword [ebp - 0x6b4], ebx
call fcn.1005d9b0
mov esi, dword [sym.imp.KERNEL32.dll_GetPrivateProfileStringW]
lea eax, [ebp - 0x420]
add esp, 0xc
push eax
push 0x104
lea eax, [ebp - 0x218]
push eax
push str.datarecovery
push str.product
push str.common
call esi
push 0x208
lea eax, [ebp - 0x628]
push 0
push eax
call fcn.1005d9b0
add esp, 0xc
lea eax, [ebp - 0x420]
push eax
push 0x104
lea eax, [ebp - 0x628]
push eax
push 0x100969a4
push str.sign
push str.common
call esi
call fcn.100138c0
mov ecx, eax
test ecx, ecx
jne 0x1003177f
push 0x80004005
call fcn.100142e0
mov eax, dword [ecx]
mov edx, dword [eax + 0xc]
cmp eax, 0x10097a44
jne 0x10031794
lock inc dword [ecx + 0x14]
lea eax, [ecx + 8]
jmp 0x10031796
call edx
add eax, 0x10
mov dword [ebp - 0x6b8], eax
lea eax, [ebp - 0x218]
mov byte [ebp - 4], 3
push eax
push ebx
lea eax, [ebp - 0x6b8]
push str._common__r_nid_d_r_nproduct_s_r_nproducts_abcd___QWE
push eax
call fcn.10019da0
mov edi, dword [ebp - 0x6b8]
lea ecx, [ebp - 0x6c0]
add esp, 0x10
push edi
call fcn.1002d7a0
mov edx, eax
mov byte [ebp - 4], 4
lea ecx, [ebp - 0x6bc]
call fcn.100243e0
mov byte [ebp - 4], 6
or ebx, 0xffffffff
mov edx, dword [ebp - 0x6c0]
mov eax, ebx
add edx, 0xfffffff0
lock xadd dword [edx + 0xc], eax
dec eax
test eax, eax
jg 0x1003181f
mov ecx, dword [edx]
push edx
mov eax, dword [ecx]
mov esi, dword [eax + 4]
cmp eax, 0x10097a44
jne 0x1003181d
mov eax, dword [ecx + 4]
push 0
push dword [eax + 4]
call dword [sym.imp.KERNEL32.dll_HeapFree]
jmp 0x1003181f
call esi
lea eax, [ebp - 0x6a8]
mov dword [ebp - 0x6ac], eax
lea ecx, [ebp - 0x6ac]
push 3
lea eax, [ebp - 0x628]
push eax
call fcn.100190b0
mov byte [ebp - 4], 7
mov eax, dword [ebp - 0x6ac]
test eax, eax
jne 0x10031857
push 0x80004005
call fcn.100142e0
push eax
push dword [ebp - 0x6bc]
call fcn.1006b36b
add esp, 8
mov byte [ebp - 4], 6
test eax, eax
lea ecx, [ebp - 0x6a8]
mov eax, dword [ebp - 0x6ac]
sete byte [ebp - 0x6ad]
cmp eax, ecx
je 0x1003188c
push eax
call fcn.100637f8
add esp, 4
cmp byte [ebp - 0x6ad], 0
je 0x10031929
mov eax, dword [ebp - 0x6b4]
lea ecx, [ebp - 0x218]
mov dword [0x100aa1e4], eax
lea edx, [ecx + 2]
nop dword [eax]
mov ax, word [ecx]
add ecx, 2
test ax, ax
jne 0x100318b0
sub ecx, edx
lea eax, [ebp - 0x218]
sar ecx, 1
push ecx
push eax
mov ecx, 0x100aa1d8
call fcn.10019610
lea ecx, [ebp - 0x218]
lea edx, [ecx + 2]
nop word [eax + eax]
mov ax, word [ecx]
add ecx, 2
test ax, ax
jne 0x100318e0
sub ecx, edx
lea eax, [ebp - 0x218]
sar ecx, 1
push ecx
push eax
mov ecx, 0x100aa1dc
call fcn.10019610
lea ecx, [ebp - 0x218]
lea edx, [ecx + 2]
nop word [eax + eax]
mov ax, word [ecx]
add ecx, 2
test ax, ax
jne 0x10031910
sub ecx, edx
lea eax, [ebp - 0x218]
sar ecx, 1
push ecx
push eax
jmp 0x1003195c
push 0xc
push str.datarecovery
mov ecx, 0x100aa1d8
mov dword [0x100aa1e4], 0x68
call fcn.10019610
push 0xc
push str.datarecovery
mov ecx, 0x100aa1dc
call fcn.10019610
push 0xc
push str.datarecovery
mov ecx, 0x100aa1e0
call fcn.10019610
call fcn.100138c0
mov ecx, eax
test ecx, ecx
jne 0x1003197b
push 0x80004005
call fcn.100142e0
mov eax, dword [ecx]
mov edx, dword [eax + 0xc]
cmp eax, 0x10097a44
jne 0x10031990
lock inc dword [ecx + 0x14]
lea eax, [ecx + 8]
jmp 0x10031992
call edx
add eax, 0x10
mov dword [ebp - 0x6b4], eax
mov byte [ebp - 4], 8
lea eax, [ebp - 0x6b4]
push dword [0x100aa1d8]
push dword [0x100aa1e4]
push str._zbasic:product_id_d__product_s_n
push eax
call fcn.10019da0
mov esi, dword [ebp - 0x6b4]
add esp, 0x10
push esi
call dword [sym.imp.KERNEL32.dll_OutputDebugStringW]
mov byte [ebp - 4], 6
add esi, 0xfffffff0
mov eax, ebx
lock xadd dword [esi + 0xc], eax
dec eax
test eax, eax
jg 0x10031a00
mov ecx, dword [esi]
push esi
mov eax, dword [ecx]
mov edx, dword [eax + 4]
cmp eax, 0x10097a44
jne 0x100319fe
mov eax, dword [ecx + 4]
push 0
push dword [eax + 4]
call dword [sym.imp.KERNEL32.dll_HeapFree]
jmp 0x10031a00
call edx
mov byte [ebp - 4], 3
mov eax, ebx
mov ecx, dword [ebp - 0x6bc]
add ecx, 0xfffffff0
lock xadd dword [ecx + 0xc], eax
dec eax
test eax, eax
jg 0x10031a3e
mov edx, dword [ecx]
push ecx
mov eax, dword [edx]
mov esi, dword [eax + 4]
cmp eax, 0x10097a44
jne 0x10031a3a
mov eax, dword [edx + 4]
mov esi, dword [sym.imp.KERNEL32.dll_HeapFree]
push 0
push dword [eax + 4]
call esi
jmp 0x10031a44
mov ecx, edx
call esi
mov esi, dword [sym.imp.KERNEL32.dll_HeapFree]
mov byte [ebp - 4], 2
add edi, 0xfffffff0
lock xadd dword [edi + 0xc], ebx
dec ebx
test ebx, ebx
jg 0x10031a72
mov ecx, dword [edi]
push edi
mov eax, dword [ecx]
mov edx, dword [eax + 4]
cmp eax, 0x10097a44
jne 0x10031a70
mov eax, dword [ecx + 4]
push 0
push dword [eax + 4]
call esi
jmp 0x10031a72
call edx
mov eax, 0x100aa1d8
mov ecx, dword [ebp - 0xc]
mov dword fs:[0], ecx
pop ecx
pop edi
pop esi
pop ebx
mov ecx, dword [ebp - 0x10]
xor ecx, ebp
call fcn.1004450b
mov esp, ebp
pop ebp
ret