Function at 0x4010e0
Capabilities:
Access peb ldr_data
Get common file path
Get cpu information
Get file version info
Query or enumerate registry value
Read .ini file
Read file on windows

Disassembly:
push 0xffffffffffffffff
mov eax, dword fs:[0]
push 0x40268b
push eax
mov eax, 0x5034
mov dword fs:[0], esp
call fcn.00402490
push ebx
push ebp
push esi
push edi
xor ebx, ebx
mov ecx, 0x9ff
xor eax, eax
lea edi, [esp + 0x845]
mov byte [esp + 0x844], bl
push str._error_log_dll.htm
rep stosd dword es:[edi], eax
stosw word es:[edi], ax
stosb byte es:[edi], al
lea eax, [esp + 0x848]
push eax
call dword [sym.imp.KERNEL32.dll_lstrcpyA]
mov ebp, dword [sym.imp.KERNEL32.dll_lstrcatA]
lea ecx, [esp + 0x844]
push str.type
push ecx
call ebp
mov edx, dword [esp + 0x5054]
lea eax, [esp + 0x844]
push edx
push eax
call ebp
lea edi, [esp + 0x844]
or ecx, 0xffffffff
xor eax, eax
repne scasb al, byte es:[edi]
not ecx
dec ecx
mov esi, ecx
lea ecx, [esp + 0x30]
push ecx
call dword [sym.imp.MSVCRT.dll_time]
lea edx, [esp + 0x34]
push edx
call dword [sym.imp.MSVCRT.dll_localtime]
mov ecx, dword [eax + 0xc]
mov edx, dword [eax + 0x10]
mov eax, dword [eax + 0x14]
add esp, 8
inc edx
add eax, 0x76c
push ecx
push edx
push eax
lea ecx, [esp + esi + 0x850]
push str._dt_04d__02d__02d
push ecx
call dword [sym.imp.MSVCRT.dll_sprintf]
add esi, eax
mov ecx, 0x40
xor eax, eax
lea edi, [esp + 0x5d]
mov byte [esp + 0x5c], bl
add esp, 0x14
rep stosd dword es:[edi], eax
stosw word es:[edi], ax
lea edx, [esp + 0x48]
push 0x104
push edx
push ebx
mov dword [esp + 0x30], ebx
mov dword [esp + 0x34], ebx
stosb byte es:[edi], al
call dword [sym.imp.KERNEL32.dll_GetModuleFileNameA]
lea eax, [esp + 0x48]
push eax
call dword [sym.imp.SHLWAPI.dll_PathRemoveFileSpecA]
mov ebx, dword [sym.imp.SHLWAPI.dll_PathAddBackslashA]
lea ecx, [esp + 0x48]
push ecx
call ebx
mov ecx, 0x4f
xor eax, eax
lea edi, [esp + 0x560]
lea edx, [esp + 0x48]
mov dword [esp + 0x55c], 0
push str.current.ecs
rep stosd dword es:[edi], eax
push edx
push str._s_s
lea eax, [esp + 0x158]
push 0x104
push eax
call dword [sym.imp.MSVCRT.dll__snprintf]
add esp, 0x14
lea ecx, [esp + 0x55c]
lea edx, [esp + 0x14c]
push ecx
push edx
call dword [sym.imp.KERNEL32.dll_FindFirstFileA]
cmp eax, 0xffffffff
je 0x401332
mov ecx, dword [esp + 0x57c]
test ecx, ecx
jne 0x40126d
mov ecx, dword [esp + 0x578]
test ecx, ecx
je 0x40132b
push eax
call dword [sym.imp.KERNEL32.dll_FindClose]
push 0
push 0x80
push 3
push 0
push 3
lea eax, [esp + 0x160]
push 0x80000000
push eax
call dword [sym.imp.KERNEL32.dll_CreateFileA]
mov edi, eax
cmp edi, 0xffffffff
je 0x401332
lea ecx, [esp + 0x14]
push 0
push ecx
lea edx, [esp + 0x2c]
push 8
push edx
push edi
mov dword [esp + 0x28], 0
call dword [sym.imp.KERNEL32.dll_ReadFile]
test eax, eax
je 0x401332
push edi
call dword [sym.imp.KERNEL32.dll_CloseHandle]
mov edx, dword [esp + 0x28]
mov eax, edx
mov ecx, edx
sar eax, 0x10
mov edi, eax
mov eax, edx
sar ecx, 0x1f
sar eax, 0x1f
mov eax, dword [esp + 0x24]
mov ebx, edx
mov ecx, 0x10
and edi, 0xff
and ebx, 0xff
call fcn.004024c0
mov ecx, dword [esp + 0x24]
and eax, 0xff
and ecx, 0xff
push ecx
push eax
push ebx
push edi
lea ecx, [esp + esi + 0x854]
push str.ecs_d._d._d._d
push ecx
call dword [sym.imp.MSVCRT.dll_sprintf]
mov ebx, dword [sym.imp.SHLWAPI.dll_PathAddBackslashA]
add esp, 0x18
add esi, eax
jmp 0x40134a
push eax
call dword [sym.imp.KERNEL32.dll_FindClose]
lea edx, [esp + esi + 0x844]
push str.ecs0.00.00.00
push edx
call dword [sym.imp.MSVCRT.dll_sprintf]
add esp, 8
add esi, eax
mov ecx, 0x40
xor eax, eax
lea edi, [esp + 0x49]
mov byte [esp + 0x48], 0
rep stosd dword es:[edi], eax
stosw word es:[edi], ax
stosb byte es:[edi], al
lea eax, [esp + 0x48]
push 0x104
push eax
push 0
call dword [sym.imp.KERNEL32.dll_GetModuleFileNameA]
lea ecx, [esp + 0x48]
push ecx
call dword [sym.imp.SHLWAPI.dll_PathRemoveFileSpecA]
lea edx, [esp + 0x48]
push edx
call ebx
mov ecx, 0x40
xor eax, eax
lea edi, [esp + 0x14d]
mov byte [esp + 0x14c], 0
rep stosd dword es:[edi], eax
stosw word es:[edi], ax
stosb byte es:[edi], al
lea eax, [esp + 0x48]
push str.mee.db
push eax
push str._s_s
lea ecx, [esp + 0x158]
push 0x104
push ecx
call dword [sym.imp.MSVCRT.dll__snprintf]
add esp, 0x14
lea edx, [esp + 0x14c]
push 0
push 0x80
push 3
push 0
push 3
push 0x80000000
push edx
call dword [sym.imp.KERNEL32.dll_CreateFileA]
mov edi, eax
cmp edi, 0xffffffff
je 0x40147c
lea eax, [esp + 0x14]
push 0
push eax
lea ecx, [esp + 0x2c]
push 8
push ecx
push edi
mov dword [esp + 0x28], 0
call dword [sym.imp.KERNEL32.dll_ReadFile]
test eax, eax
je 0x40147c
push edi
call dword [sym.imp.KERNEL32.dll_CloseHandle]
mov edx, dword [esp + 0x28]
mov ebp, dword [esp + 0x24]
mov eax, edx
mov ecx, edx
sar eax, 0x10
mov edi, eax
mov eax, edx
sar ecx, 0x1f
sar eax, 0x1f
mov ebx, edx
mov ecx, 0x10
mov eax, ebp
and edi, 0xff
and ebx, 0xff
call fcn.004024c0
and ebp, 0xff
and eax, 0xff
push ebp
push eax
push ebx
push edi
lea ecx, [esp + esi + 0x854]
push str.meedb_d._d._d._d
push ecx
call dword [sym.imp.MSVCRT.dll_sprintf]
mov ebp, dword [sym.imp.KERNEL32.dll_lstrcatA]
mov ebx, dword [sym.imp.SHLWAPI.dll_PathAddBackslashA]
add esp, 0x18
jmp 0x401492
lea edx, [esp + esi + 0x844]
push str.meedb0.00.00.00
push edx
call dword [sym.imp.MSVCRT.dll_sprintf]
add esp, 8
lea edi, [esp + 0x844]
or ecx, 0xffffffff
xor eax, eax
mov esi, 0x404010
repne scasb al, byte es:[edi]
not ecx
dec ecx
mov dword [esp + 0x14], ecx
mov al, byte [0x4043a0]
mov ecx, 0x7ff
mov byte [esp + 0x3044], al
xor eax, eax
lea edi, [esp + 0x3045]
push 0x104
rep stosd dword es:[edi], eax
stosw word es:[edi], ax
lea ecx, [esp + 0x4c]
push ecx
push 0
stosb byte es:[edi], al
call dword [sym.imp.KERNEL32.dll_GetModuleFileNameA]
lea edx, [esp + 0x48]
push 0x5c
push edx
call dword [sym.imp.MSVCRT.dll_strrchr]
add esp, 8
mov byte [eax], 0
lea eax, [esp + 0x48]
push eax
call ebx
mov ecx, dword [esi]
lea edx, [esp + 0x48]
push ecx
push edx
call ebp
lea eax, [esp + 0x40]
lea ecx, [esp + 0x48]
push eax
push ecx
call sub.VERSION.dll_GetFileVersionInfoSizeA
test eax, eax
je 0x4015b4
cmp eax, 0x1fff
ja 0x4015b4
lea edx, [esp + 0x3044]
push edx
push eax
lea eax, [esp + 0x50]
push 0
push eax
call sub.VERSION.dll_GetFileVersionInfoA
test eax, eax
je 0x4015b4
lea ecx, [esp + 0x44]
lea edx, [esp + 0x3c]
push ecx
push edx
lea eax, [esp + 0x304c]
push 0x404230
push eax
call sub.VERSION.dll_VerQueryValueA
test eax, eax
je 0x4015b4
mov ecx, dword [esi]
push 0x5c
push ecx
call dword [sym.imp.MSVCRT.dll_strchr]
add esp, 8
test eax, eax
jne 0x401572
mov eax, dword [esi]
jmp 0x401573
inc eax
mov ecx, dword [esp + 0x3c]
xor edx, edx
mov edi, dword [esp + 0x14]
mov dx, word [ecx + 0xc]
push edx
mov edx, dword [ecx + 0xc]
shr edx, 0x10
push edx
xor edx, edx
mov dx, word [ecx + 8]
mov ecx, dword [ecx + 8]
shr ecx, 0x10
push edx
push ecx
push eax
lea edx, [esp + edi + 0x858]
push str._s_d._d._d._d
push edx
call dword [sym.imp.MSVCRT.dll_sprintf]
add esp, 0x1c
add edi, eax
mov dword [esp + 0x14], edi
add esi, 4
cmp esi, str.uninst.exe
jl 0x4014ac
lea eax, [esp + 0x354]
push eax
push 0
push 0
push 0x23
push 0
call dword [sym.imp.SHELL32.dll_SHGetFolderPathA]
lea ecx, [esp + 0x354]
push ecx
call ebx
lea edx, [esp + 0x354]
push str.StormConfig.ini
push edx
call ebp
mov esi, dword [sym.imp.KERNEL32.dll_GetPrivateProfileStringA]
lea eax, [esp + 0x354]
push eax
lea ecx, [esp + 0x45c]
push 0x104
push ecx
push 0
push 0x404208
push str.INSTALL
call esi
lea edx, [esp + 0x844]
push str.pid
push edx
call ebp
lea eax, [esp + 0x458]
lea ecx, [esp + 0x844]
push eax
push ecx
call ebp
lea edx, [esp + 0x354]
lea eax, [esp + 0x458]
push edx
push 0x104
push eax
push 0
push 0x4041f4
push str.INSTALL
call esi
lea ecx, [esp + 0x844]
push str.uid
push ecx
call ebp
lea edx, [esp + 0x458]
lea eax, [esp + 0x844]
push edx
push eax
call ebp
lea ecx, [esp + 0x354]
lea edx, [esp + 0x458]
push ecx
push 0x104
push edx
push 0
push 0x4041e8
push str.INSTALL
call esi
lea eax, [esp + 0x844]
push str.aid
push eax
call ebp
lea ecx, [esp + 0x458]
lea edx, [esp + 0x844]
push ecx
push edx
call ebp
mov eax, dword [0x4040f4]
mov dword [esp + 0x10], eax
mov ecx, 0x6a
xor eax, eax
lea edi, [esp + 0x69c]
mov dword [esp + 0x504c], 0
rep stosd dword es:[edi], eax
lea ecx, [esp + 0x69c]
mov dword [esp + 0x69c], 0x1a8
push ecx
call fcn.00401e40
add esp, 4
mov esi, 1
test eax, eax
je 0x4019b9
lea edx, [esp + 0x6c0]
test edx, edx
jne 0x40171f
xor ebx, ebx
jmp 0x40172f
lea eax, [esp + 0x6c0]
push eax
call dword [sym.imp.KERNEL32.dll_lstrlenA]
mov ebx, eax
mov edi, dword [esp + 0x10]
cmp dword [edi - 0xc], esi
jg 0x40173d
cmp ebx, dword [edi - 4]
jle 0x401758
lea ecx, [esp + 0x10]
call fcn.00401d30
push ebx
lea ecx, [esp + 0x14]
call fcn.00401cd0
test eax, eax
je 0x40177e
mov edi, dword [esp + 0x10]
mov ecx, ebx
lea esi, [esp + 0x6c0]
mov edx, ecx
shr ecx, 2
rep movsd dword es:[edi], dword [esi]
mov ecx, edx
and ecx, 3
rep movsb byte es:[edi], byte [esi]
mov eax, dword [esp + 0x10]
mov dword [eax - 8], ebx
mov ecx, dword [esp + 0x10]
mov byte [ebx + ecx], 0
mov edx, 0x4041dc
test edx, edx
je 0x401996
mov esi, dword [sym.imp.KERNEL32.dll_lstrlenA]
push edx
call esi
mov ebx, eax
xor edi, edi
cmp ebx, edi
je 0x401996
mov eax, 0x4041d8
test eax, eax
jne 0x4017af
mov dword [esp + 0x1c], edi
jmp 0x4017ba
push 0x4041d8
call esi
mov dword [esp + 0x1c], eax
mov esi, dword [esp + 0x10]
mov dword [esp + 0x18], edi
mov eax, dword [esi - 8]
add eax, esi
cmp esi, eax
mov dword [esp + 0x14], eax
jae 0x401996
mov edi, dword [sym.imp.MSVCRT.dll__mbsstr]
push 0x4041dc
push esi
call edi
add esp, 8
test eax, eax
je 0x401803
mov edx, dword [esp + 0x18]
lea esi, [eax + ebx]
inc edx
push 0x4041dc
push esi
mov dword [esp + 0x20], edx
call edi
add esp, 8
test eax, eax
jne 0x4017e8
push esi
call dword [sym.imp.KERNEL32.dll_lstrlenA]
lea esi, [esi + eax + 1]
mov eax, dword [esp + 0x14]
cmp esi, eax
jb 0x4017d9
mov eax, dword [esp + 0x18]
test eax, eax
jle 0x401996
mov esi, dword [esp + 0x10]
mov eax, dword [esi - 0xc]
lea edi, [esi - 0xc]
cmp eax, 1
jle 0x401868
lea ecx, [esp + 0x10]
call fcn.00401d30
mov ecx, dword [edi + 4]
push ecx
lea ecx, [esp + 0x14]
call fcn.00401cd0
test eax, eax
je 0x401864
mov ecx, dword [edi + 4]
lea esi, [edi + 0xc]
mov edi, dword [esp + 0x10]
inc ecx
mov edx, ecx
shr ecx, 2
rep movsd dword es:[edi], dword [esi]
mov ecx, edx
and ecx, 3
rep movsb byte es:[edi], byte [esi]
mov esi, dword [esp + 0x10]
mov eax, dword [esp + 0x1c]
mov ecx, dword [esi - 8]
sub eax, ebx
mov dword [esp + 0x20], ecx
imul eax, dword [esp + 0x18]
add eax, ecx
mov ecx, dword [esi - 4]
cmp ecx, eax
mov dword [esp + 0x18], eax
jl 0x401891
cmp dword [esi - 0xc], 1
jle 0x4018e3
mov eax, dword [esp + 0x18]
lea ecx, [esi - 0xc]
push eax
mov dword [esp + 0x18], ecx
lea ecx, [esp + 0x14]
call fcn.00401cd0
test eax, eax
je 0x401996
mov ebp, dword [esp + 0x14]
mov edi, dword [esp + 0x10]
mov ecx, dword [ebp + 4]
mov edx, ecx
shr ecx, 2
rep movsd dword es:[edi], dword [esi]
mov ecx, edx
and ecx, 3
rep movsb byte es:[edi], byte [esi]
cmp ebp, dword [0x4040f8]
je 0x4018df
push ebp
call dword [sym.imp.KERNEL32.dll_InterlockedDecrement]
test eax, eax
jg 0x4018df
push ebp
call sub.MSVCRT.dll_void___cdecl_operator_delete_void__
add esp, 4
mov esi, dword [esp + 0x10]
mov ebp, dword [esi - 8]
add ebp, esi
cmp esi, ebp
mov dword [esp + 0x14], ebp
jae 0x401989
push 0x4041dc
push esi
call dword [sym.imp.MSVCRT.dll__mbsstr]
mov edi, eax
add esp, 8
test edi, edi
je 0x401972
mov ebp, dword [esp + 0x20]
mov edx, dword [esp + 0x10]
mov esi, dword [esp + 0x1c]
sub ebp, edi
sub ebp, ebx
lea ecx, [edi + ebx]
add ebp, edx
lea eax, [edi + esi]
push ebp
push ecx
push eax
mov dword [esp + 0x38], eax
call dword [sym.imp.MSVCRT.dll_memmove]
mov ecx, esi
mov esi, 0x4041d8
mov edx, ecx
push 0x4041dc
shr ecx, 2
rep movsd dword es:[edi], dword [esi]
mov ecx, edx
mov eax, edx
and ecx, 3
sub eax, ebx
rep movsb byte es:[edi], byte [esi]
mov esi, dword [esp + 0x3c]
push esi
mov byte [esi + ebp], 0
mov ebp, dword [esp + 0x34]
add ebp, eax
mov dword [esp + 0x34], ebp
call dword [sym.imp.MSVCRT.dll__mbsstr]
mov edi, eax
add esp, 0x14
test edi, edi
jne 0x401909
mov ebp, dword [esp + 0x14]
push esi
call dword [sym.imp.KERNEL32.dll_lstrlenA]
lea esi, [esi + eax + 1]
cmp esi, ebp
jb 0x4018f4
mov esi, dword [esp + 0x10]
mov ecx, dword [esp + 0x18]
mov ebp, dword [sym.imp.KERNEL32.dll_lstrcatA]
mov dword [esi - 8], ecx
lea edx, [esp + 0x844]
push str.gpu
push edx
call ebp
mov eax, dword [esp + 0x10]
lea ecx, [esp + 0x844]
push eax
push ecx
call ebp
mov esi, 1
mov dl, byte [0x4043a0]
mov ecx, 0x40
xor eax, eax
lea edi, [esp + 0x251]
mov byte [esp + 0x250], dl
lea edx, [esp + 0x34]
rep stosd dword es:[edi], eax
stosw word es:[edi], ax
stosb byte es:[edi], al
lea eax, [esp + 0x38]
lea ecx, [esp + 0x250]
push eax
push ecx
push edx
push str.ProcessorNameString
push str.HARDWAREDESCRIPTIONSystemCentralProcessor0
push 0x80000002
mov dword [esp + 0x4c], esi
mov dword [esp + 0x50], 0x104
call dword [sym.imp.SHLWAPI.dll_SHGetValueA]
test eax, eax
jne 0x401c6d
lea eax, [esp + 0x250]
test eax, eax
jne 0x401a23
xor ebx, ebx
jmp 0x401a33
lea ecx, [esp + 0x250]
push ecx
call dword [sym.imp.KERNEL32.dll_lstrlenA]
mov ebx, eax
mov edi, dword [esp + 0x10]
cmp dword [edi - 0xc], esi
jg 0x401a41
cmp ebx, dword [edi - 4]
jle 0x401a5c
lea ecx, [esp + 0x10]
call fcn.00401d30
push ebx
lea ecx, [esp + 0x14]
call fcn.00401cd0
test eax, eax
je 0x401a82
mov edi, dword [esp + 0x10]
mov ecx, ebx
lea esi, [esp + 0x250]
mov edx, ecx
shr ecx, 2
rep movsd dword es:[edi], dword [esi]
mov ecx, edx
and ecx, 3
rep movsb byte es:[edi], byte [esi]
mov eax, dword [esp + 0x10]
mov dword [eax - 8], ebx
mov ecx, dword [esp + 0x10]
mov byte [ebx + ecx], 0
mov edx, 0x4041dc
test edx, edx
je 0x401c49
mov esi, dword [sym.imp.KERNEL32.dll_lstrlenA]
push edx
call esi
mov ebx, eax
xor edi, edi
cmp ebx, edi
je 0x401c49
mov eax, 0x4041d8
test eax, eax
jne 0x401ab3
mov dword [esp + 0x1c], edi
jmp 0x401abe
push 0x4041d8
call esi
mov dword [esp + 0x1c], eax
mov esi, dword [esp + 0x10]
mov eax, dword [esi - 8]
add eax, esi
cmp esi, eax
mov dword [esp + 0x14], eax
jae 0x401c49
mov ebp, dword [sym.imp.MSVCRT.dll__mbsstr]
push 0x4041dc
push esi
call ebp
add esp, 8
test eax, eax
je 0x401afb
lea esi, [eax + ebx]
push 0x4041dc
push esi
inc edi
call ebp
add esp, 8
test eax, eax
jne 0x401ae8
push esi
call dword [sym.imp.KERNEL32.dll_lstrlenA]
lea esi, [esi + eax + 1]
mov eax, dword [esp + 0x14]
cmp esi, eax
jb 0x401ad9
test edi, edi
jle 0x401c49
lea ecx, [esp + 0x10]
call fcn.00401d70
mov ebp, dword [esp + 0x1c]
mov esi, dword [esp + 0x10]
sub ebp, ebx
imul ebp, edi
mov eax, dword [esi - 8]
mov dword [esp + 0x20], eax
add ebp, eax
mov eax, dword [esi - 4]
mov dword [esp + 0x18], ebp
cmp eax, ebp
jl 0x401b46
cmp dword [esi - 0xc], 1
jle 0x401b9c
lea ecx, [esi - 0xc]
push ebp
mov dword [esp + 0x18], ecx
lea ecx, [esp + 0x14]
call fcn.00401cd0
test eax, eax
je 0x401c49
mov eax, dword [esp + 0x14]
mov edi, dword [esp + 0x10]
mov ecx, dword [eax + 4]
mov edx, ecx
shr ecx, 2
rep movsd dword es:[edi], dword [esi]
mov ecx, edx
and ecx, 3
rep movsb byte es:[edi], byte [esi]
cmp eax, dword [0x4040f8]
je 0x401b98
push eax
call dword [sym.imp.KERNEL32.dll_InterlockedDecrement]
test eax, eax
jg 0x401b98
mov ecx, dword [esp + 0x14]
push ecx
call sub.MSVCRT.dll_void___cdecl_operator_delete_void__
add esp, 4
mov esi, dword [esp + 0x10]
mov eax, dword [esi - 8]
add eax, esi
cmp esi, eax
mov dword [esp + 0x14], eax
jae 0x401c46
push 0x4041dc
push esi
call dword [sym.imp.MSVCRT.dll__mbsstr]
mov edi, eax
add esp, 8
test edi, edi
je 0x401c2b
mov ebp, dword [esp + 0x20]
mov esi, dword [esp + 0x10]
sub ebp, edi
lea edx, [edi + ebx]
sub ebp, ebx
add ebp, esi
mov esi, dword [esp + 0x1c]
push ebp
push edx
lea eax, [edi + esi]
push eax
mov dword [esp + 0x38], eax
call dword [sym.imp.MSVCRT.dll_memmove]
mov ecx, esi
mov esi, 0x4041d8
mov eax, ecx
push 0x4041dc
shr ecx, 2
rep movsd dword es:[edi], dword [esi]
mov ecx, eax
and ecx, 3
rep movsb byte es:[edi], byte [esi]
mov esi, dword [esp + 0x3c]
mov ecx, eax
sub ecx, ebx
push esi
mov byte [esi + ebp], 0
mov ebp, dword [esp + 0x34]
add ebp, ecx
mov dword [esp + 0x34], ebp
call dword [sym.imp.MSVCRT.dll__mbsstr]
mov edi, eax
add esp, 0x14
test edi, edi
jne 0x401bc2
mov ebp, dword [esp + 0x18]
push esi
call dword [sym.imp.KERNEL32.dll_lstrlenA]
lea esi, [esi + eax + 1]
mov eax, dword [esp + 0x14]
cmp esi, eax
jb 0x401bad
mov esi, dword [esp + 0x10]
mov dword [esi - 8], ebp
mov esi, dword [sym.imp.KERNEL32.dll_lstrcatA]
lea edx, [esp + 0x844]
push str.cpu
push edx
call esi
mov eax, dword [esp + 0x10]
lea ecx, [esp + 0x844]
push eax
push ecx
call esi
lea edx, [esp + 0x844]
push edx
call fcn.004023d0
mov eax, dword [esp + 0x14]
mov edx, dword [0x4040f8]
add esp, 4
mov dword [esp + 0x504c], 0xffffffff
lea ecx, [eax - 0xc]
pop edi
pop esi
pop ebp
cmp ecx, edx
pop ebx
je 0x401cbb
add eax, 0xfffffff4
push eax
call dword [sym.imp.KERNEL32.dll_InterlockedDecrement]
test eax, eax
jg 0x401cbb
mov edx, dword [esp]
add edx, 0xfffffff4
push edx
call sub.MSVCRT.dll_void___cdecl_operator_delete_void__
add esp, 4
mov ecx, dword [esp + 0x5034]
mov dword fs:[0], ecx
add esp, 0x5040
ret