Function at 0x40bb80
Capabilities:
Access peb ldr_data
Get ntdll base address
Get process heap force flags

Disassembly:
push 0xffffffffffffffff
push 0x43daf8
mov eax, dword fs:[0]
push eax
mov dword fs:[0], esp
sub esp, 0x18
push ebx
xor ebx, ebx
push esi
push edi
mov esi, ecx
mov dword [esp + 0x18], ebx
mov dword [esp + 0x1c], ebx
mov dword [esp + 0x20], ebx
mov dword [esp + 0x2c], ebx
call fcn.004336c7
mov edx, dword [eax]
mov ecx, eax
call dword [edx + 0xc]
lea edi, [eax + 0x10]
mov dword [esp + 0xc], edi
push ebx
mov byte [esp + 0x30], 1
mov dword [esi + 0x94], 1
call fcn.00416850
add esp, 4
test al, al
je 0x40bc04
push 0x151
push str.LoadConfig__d_n
push 0x151
push str..ProductInfoMgr.cpp
push ebx
call fcn.00416960
add esp, 0xc
push eax
call fcn.00416930
add esp, 0xc
mov ecx, esi
call fcn.0040aa20
test eax, eax
push ebx
jne 0x40bc70
call fcn.00416850
add esp, 4
test al, al
je 0x40bc3d
push str.App_LoadProductInfo_Error_n
push 0x157
push str..ProductInfoMgr.cpp
push ebx
call fcn.00416960
add esp, 0xc
push eax
call fcn.00416930
add esp, 8
lea eax, [edi - 0x10]
mov byte [esp + 0x2c], bl
lea ecx, [eax + 0xc]
or edx, 0xffffffff
lock xadd dword [ecx], edx
dec edx
test edx, edx
jg 0x40bc5b
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
call dword [edx + 4]
pop edi
pop esi
or eax, 0xffffffff
pop ebx
mov ecx, dword [esp + 0x18]
mov dword fs:[0], ecx
add esp, 0x24
ret
call fcn.00416850
add esp, 4
test al, al
je 0x40bca2
push 0x15b
push str.LoadConfig__d_n
push 0x15b
push str..ProductInfoMgr.cpp
push ebx
call fcn.00416960
add esp, 0xc
push eax
call fcn.00416930
add esp, 0xc
lea eax, [esp + 0x10]
push eax
mov ecx, esi
call fcn.004089d0
push eax
lea ecx, [esp + 0x10]
mov byte [esp + 0x30], 2
call fcn.00402080
mov eax, dword [esp + 0x10]
add eax, 0xfffffff0
mov byte [esp + 0x2c], 1
lea ecx, [eax + 0xc]
or edx, 0xffffffff
lock xadd dword [ecx], edx
dec edx
test edx, edx
jg 0x40bce0
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
call dword [edx + 4]
push ebx
call fcn.00416850
add esp, 4
test al, al
je 0x40bd13
push 0x15f
push str.LoadConfig__d_n
push 0x15f
push str..ProductInfoMgr.cpp
push ebx
call fcn.00416960
add esp, 0xc
push eax
call fcn.00416930
add esp, 0xc
mov edi, dword [esp + 0xc]
push edi
mov ecx, esi
call fcn.0040afc0
push ebx
mov esi, eax
call fcn.00416850
add esp, 4
cmp esi, 1
je 0x40bd88
test al, al
je 0x40bd56
push esi
push edi
push str.App_GetProductInfo__s__Error__d_n
push 0x164
push str..ProductInfoMgr.cpp
push ebx
call fcn.00416960
add esp, 0xc
push eax
call fcn.00416930
add esp, 0x10
lea eax, [edi - 0x10]
mov byte [esp + 0x2c], bl
lea ecx, [eax + 0xc]
or edx, 0xffffffff
lock xadd dword [ecx], edx
dec edx
test edx, edx
jg 0x40bd74
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
call dword [edx + 4]
pop edi
mov eax, esi
pop esi
pop ebx
mov ecx, dword [esp + 0x18]
mov dword fs:[0], ecx
add esp, 0x24
ret
test al, al
je 0x40bdb2
push 0x168
push str.LoadConfig__d_n
push 0x168
push str..ProductInfoMgr.cpp
push ebx
call fcn.00416960
add esp, 0xc
push eax
call fcn.00416930
add esp, 0xc
lea eax, [edi - 0x10]
mov byte [esp + 0x2c], bl
lea ecx, [eax + 0xc]
or edx, 0xffffffff
lock xadd dword [ecx], edx
dec edx
test edx, edx
jg 0x40bdd0
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
call dword [edx + 4]
mov ecx, dword [esp + 0x24]
pop edi
pop esi
mov eax, 1
pop ebx
mov dword fs:[0], ecx
add esp, 0x24
ret