Function at 0x40ef10
Capabilities:
Read .ini file

Disassembly:
push 0xffffffffffffffff
mov eax, dword fs:[0]
push 0x4a0b27
push eax
mov eax, 0x204c
mov dword fs:[0], esp
call fcn.004999f0
push ebx
push ebp
push esi
mov ebx, ecx
push edi
mov ecx, 0x800
xor eax, eax
lea edi, [esp + 0x5c]
rep stosd dword es:[edi], eax
mov eax, dword [ebx]
lea ecx, [esp + 0x5c]
mov dword [esp + 0x14], eax
mov eax, dword [esp + 0x206c]
mov dword [esp + 0x20], ecx
lea ecx, [esp + 0x14]
mov dword [esp + 0x2c], ebx
mov dword [esp + 0x18], eax
mov dword [esp + 0x24], 0x1000
mov dword [esp + 0x1c], 0
call fcn.0040c740
mov ecx, dword [esp + 0x14]
test ecx, ecx
je 0x40ef9c
mov esi, dword [esp + 0x18]
test esi, esi
je 0x40ef9c
mov eax, dword [esp + 0x20]
test eax, eax
je 0x40ef9c
mov edx, dword [esp + 0x24]
cmp edx, 0x80
jg 0x40efa3
xor eax, eax
jmp 0x40f307
mov ebp, dword [sym.imp.KERNEL32.dll_GetPrivateProfileStringW]
push ecx
push edx
mov edx, dword [esp + 0x24]
push eax
push edx
push str.BDProduct
push esi
call ebp
mov eax, dword [esp + 0x20]
cmp word [eax], 0
je 0x40effc
test eax, eax
mov edi, eax
je 0x40effc
push eax
call dword [sym.imp.MSVCRT.dll_wcslen]
mov esi, eax
mov ax, word [0x4c71ec]
push eax
lea ecx, [esp + 0x64]
push 0x2c
push ecx
call fcn.00431d20
add esp, 0x10
mov ecx, ebx
push 1
push 0
push 1
push esi
push edi
call fcn.0040d790
jmp 0x40f297
mov edx, dword [esp + 0x14]
mov ecx, dword [esp + 0x24]
push edx
mov edx, dword [esp + 0x20]
push ecx
push eax
mov eax, dword [esp + 0x24]
push edx
push str.FixedProduct
push eax
call ebp
mov eax, dword [esp + 0x20]
cmp word [eax], 0
je 0x40f05b
test eax, eax
mov edi, eax
je 0x40f05b
push eax
call dword [sym.imp.MSVCRT.dll_wcslen]
mov cx, word [0x4c71ec]
lea edx, [esp + 0x60]
push ecx
push 0x2c
push edx
mov esi, eax
call fcn.00431d20
add esp, 0x10
mov ecx, ebx
push 0
push 1
push 1
push esi
push edi
call fcn.0040d790
mov eax, dword [esp + 0x20]
mov ecx, dword [esp + 0x14]
mov edx, dword [esp + 0x24]
push ecx
mov ecx, dword [esp + 0x1c]
push edx
push eax
mov eax, dword [esp + 0x28]
push eax
push 0x4b9688
push ecx
call ebp
mov eax, dword [esp + 0x20]
cmp word [eax], 0
je 0x40f29b
test eax, eax
mov edi, eax
je 0x40f29b
push eax
call dword [sym.imp.MSVCRT.dll_wcslen]
mov dx, word [0x4c71ec]
mov esi, eax
push edx
lea eax, [esp + 0x64]
push 0x2c
push eax
call fcn.00431d20
add esp, 0x10
mov ecx, ebx
push 0
push 1
push 0
push esi
push edi
call fcn.0040d790
mov ecx, dword [ebx + 0x1c]
push 0
call fcn.004348b0
mov ecx, dword [eax + 4]
test ecx, ecx
je 0x40f297
mov edx, dword [eax + 8]
mov eax, 0x4ec4ec4f
sub edx, ecx
imul edx
sar edx, 6
mov ecx, edx
shr ecx, 0x1f
add edx, ecx
cmp edx, 1
jne 0x40f297
mov ecx, dword [ebx + 0x1c]
push 0
call fcn.004348b0
mov esi, dword [eax + 4]
test esi, esi
je 0x40f11b
mov ecx, dword [eax + 8]
mov eax, 0x4ec4ec4f
sub ecx, esi
imul ecx
sar edx, 6
mov eax, edx
shr eax, 0x1f
add edx, eax
jne 0x40f158
lea ecx, [esp + 0x2b]
push ecx
push str.invalid_vector_T__subscript
lea ecx, [esp + 0x38]
call dword [sym.imp.MSVCP60.dll_public:_void___thiscall_std::basic_string_char__struct_std::char_traits_char___class_std::allocator_char__::constructor_char_const___class_std::allocator_char__const__]
lea edx, [esp + 0x30]
lea ecx, [esp + 0x40]
push edx
mov dword [esp + 0x2068], 0
call dword [sym.imp.MSVCP60.dll_public:_void___thiscall_std::out_of_range::constructor_class_std::basic_string_char__struct_std::char_traits_char___class_std::allocator_char___const__]
lea eax, [esp + 0x40]
push 0x4ad9c0
push eax
call sub.MSVCRT.dll__CxxThrowException
mov eax, dword [esi + 8]
mov ecx, dword [eax - 8]
test ecx, ecx
jl 0x40f297
push str.OmhV
push eax
call dword [sym.imp.MSVCRT.dll_wcsstr]
add esp, 8
test eax, eax
je 0x40f297
sub eax, dword [esi + 8]
sar eax, 1
cmp eax, 0xffffffff
je 0x40f297
mov ecx, dword [0x4b7080]
mov dword [esp + 0x10], ecx
lea edx, [esp + 0x10]
mov ecx, 0x4c6f80
push edx
mov dword [esp + 0x2068], 1
call fcn.004045a0
test eax, eax
jne 0x40f1ca
lea eax, [esp + 0x10]
mov ecx, 0x4c6f80
push eax
call fcn.00404400
test eax, eax
je 0x40f251
lea ecx, [esp + 0x10]
push ecx
mov ecx, 0x4c6f80
call fcn.004045a0
test eax, eax
je 0x40f1e9
push 0x46
mov ecx, 0x4c6f80
call fcn.00403450
lea edx, [esp + 0x10]
mov ecx, 0x4c6f80
push edx
call fcn.00404400
test eax, eax
je 0x40f208
push 0x47
mov ecx, 0x4c6f80
call fcn.00403450
mov ecx, dword [ebx + 0x1c]
push 0
call fcn.004348b0
mov ebp, eax
mov esi, dword [ebp + 8]
mov ebx, dword [ebp + 4]
cmp esi, esi
mov edi, esi
je 0x40f238
push edi
mov ecx, ebx
call fcn.00411330
add edi, 0xd0
add ebx, 0xd0
cmp edi, esi
jne 0x40f220
mov eax, dword [ebp + 8]
mov ecx, ebp
push eax
push ebx
call fcn.0040fe40
mov dword [ebp + 8], ebx
mov ebp, dword [sym.imp.KERNEL32.dll_GetPrivateProfileStringW]
mov ebx, dword [esp + 0x2c]
push 0x43
mov ecx, 0x4c6f80
call fcn.00403450
mov eax, dword [esp + 0x10]
mov edx, dword [0x4b7084]
mov dword [esp + 0x2064], 0xffffffff
lea ecx, [eax - 0xc]
cmp ecx, edx
je 0x40f297
add eax, 0xfffffff4
push eax
call dword [sym.imp.KERNEL32.dll_InterlockedDecrement]
test eax, eax
jg 0x40f297
mov edx, dword [esp + 0x10]
add edx, 0xfffffff4
push edx
call fcn.00437568
add esp, 4
mov eax, dword [esp + 0x20]
mov ecx, dword [esp + 0x14]
mov edx, dword [esp + 0x24]
push ecx
mov ecx, dword [esp + 0x1c]
push edx
push eax
mov eax, dword [esp + 0x28]
push eax
push str.OptionalProductEx
push ecx
call ebp
mov eax, dword [esp + 0x20]
cmp word [eax], 0
je 0x40f2f8
test eax, eax
mov edi, eax
je 0x40f2f8
push eax
call dword [sym.imp.MSVCRT.dll_wcslen]
mov dx, word [0x4c71ec]
mov esi, eax
push edx
lea eax, [esp + 0x64]
push 0x2c
push eax
call fcn.00431d20
add esp, 0x10
mov ecx, ebx
push 0
push 1
push 2
push esi
push edi
call fcn.0040d790
jmp 0x40f302
mov ecx, dword [ebx + 0x1c]
push 0
call fcn.00435220
mov eax, 1
mov ecx, dword [esp + 0x205c]
pop edi
pop esi
pop ebp
pop ebx
mov dword fs:[0], ecx
add esp, 0x2058
ret 4