Function at 0x1008e4f0
Capabilities:
Read file on windows

Disassembly:
push ebp
lea ebp, [esp - 0x50]
sub esp, 0x50
push 0xffffffffffffffff
push 0x1024b1ff
mov eax, dword fs:[0]
push eax
mov dword fs:[0], esp
sub esp, 0xb4
push ebx
push esi
push edi
mov dword [ebp - 0x10], esp
mov dword [ebp - 4], 0
mov dword [ebp + 0x44], vtable.WM::GMFile.0
mov dword [ebp + 0x48], 0xffffffff
push 0x80
push 3
push 1
push 0x120089
push dword [ebp + 0x64]
lea ecx, [ebp + 0x44]
mov byte [ebp - 4], 2
call sym.WMCommon.dll_public:_bool___thiscall_WM::GMFile::Create_class_std::basic_string_wchar_t__struct_std::char_traits_wchar_t___class_std::allocator_wchar_t___const___unsigned_int__unsigned_int__unsigned_int__unsigned_int_
test al, al
mov eax, dword [ebp + 0x48]
je 0x1008ef08
mov dword [ebp + 0x24], 0
mov dword [ebp - 0x50], 0
cmp eax, 0xffffffff
je 0x1008ef2b
mov esi, dword [sym.imp.KERNEL32.dll_ReadFile]
lea ecx, [ebp + 0x24]
push 0
push ecx
push 4
lea ecx, [ebp - 0x50]
push ecx
push eax
call esi
test eax, eax
je 0x1008ef05
mov eax, dword [ebp + 0x24]
test eax, eax
je 0x1008ef05
cmp eax, 4
jne 0x1008ef05
lea eax, [ebp - 0x50]
mov eax, dword [eax]
cmp eax, dword [str.GMUT]
je 0x1008e5d2
lea ecx, [ebp + 0x44]
call sym.WMCommon.dll_public_virtual:_void___thiscall_WM::GMFile::destructor_void_
mov edi, dword [ebp + 0x60]
test edi, edi
je 0x1008ef6e
or esi, 0xffffffff
lea ecx, [edi + 4]
mov eax, esi
lock xadd dword [ecx], eax
cmp eax, 1
jmp 0x1008ef48
mov eax, dword [ebp + 0x48]
mov byte [ebp + 0x4f], 0
cmp eax, 0xffffffff
je 0x1008e5ab
push 0
lea ecx, [ebp + 0x24]
mov dword [ebp + 0x24], 0
push ecx
push 1
lea ecx, [ebp + 0x4f]
push ecx
push eax
call esi
test eax, eax
je 0x1008e5ab
mov eax, dword [ebp + 0x24]
test eax, eax
je 0x1008e5ab
cmp eax, 1
jne 0x1008e5ab
cmp byte [ebp + 0x4f], 0
je 0x1008e5ab
mov dword [ebp - 0x24], vtable.WM::GMBuffer_unsigned_char_.0
mov dword [ebp - 0x20], 0
mov dword [ebp - 0x1c], 0
mov dword [ebp - 0x18], 0
push ecx
lea eax, [ebp - 0x24]
mov byte [ebp - 4], 3
push eax
lea edx, [ebp + 0x38]
lea ecx, [ebp + 0x44]
call fcn.10096b50
add esp, 8
test al, al
jne 0x1008e64e
lea ecx, [ebp - 0x24]
call sym.WMCommon.dll_public:_void___thiscall_WM::GMSerial::destructor_void_
jmp 0x1008e5ab
xor esi, esi
mov dword [ebp + 0x18], 0
mov dword [ebp + 0x1c], esi
mov dword [ebp + 0x20], esi
xor edi, edi
mov byte [ebp - 4], 4
cmp dword [ebp - 0x18], edi
jbe 0x1008e6c5
nop dword [eax + eax]
mov ecx, dword [ebp - 0x1c]
mov ebx, dword [ecx + edi]
add edi, 4
mov eax, ebx
shr eax, 1
push eax
lea eax, [ecx + edi]
push eax
lea ecx, [ebp - 0x3c]
call fcn.1001a330
mov byte [ebp - 4], 5
lea eax, [ebp - 0x3c]
push eax
cmp dword [ebp + 0x20], esi
je 0x1008e6a6
mov ecx, esi
call fcn.1001a380
add esi, 0x18
mov dword [ebp + 0x1c], esi
jmp 0x1008e6b2
push esi
lea ecx, [ebp + 0x18]
call fcn.1001d450
mov esi, dword [ebp + 0x1c]
lea ecx, [ebp - 0x3c]
mov byte [ebp - 4], 4
add edi, ebx
call fcn.1001a5a0
cmp edi, dword [ebp - 0x18]
jb 0x1008e670
mov dword [ebp + 0x38], 0
mov dword [ebp - 0x4c], vtable.WM::GMBuffer_unsigned_char_.0
mov dword [ebp - 0x48], 0
mov dword [ebp - 0x44], 0
mov dword [ebp - 0x40], 0
push ecx
lea eax, [ebp - 0x4c]
mov byte [ebp - 4], 6
push eax
lea edx, [ebp + 0x38]
lea ecx, [ebp + 0x44]
call fcn.10096b50
add esp, 8
test al, al
jne 0x1008e720
lea ecx, [ebp - 0x4c]
call sym.WMCommon.dll_public:_void___thiscall_WM::GMSerial::destructor_void_
lea ecx, [ebp + 0x18]
call fcn.1001d100
lea ecx, [ebp - 0x24]
call sym.WMCommon.dll_public:_void___thiscall_WM::GMSerial::destructor_void_
jmp 0x1008e5ab
lea ecx, [ebp - 0x60]
call sym.WMCommon.dll_public:_void___thiscall_WM::GMSpecialFolderMap::constructor_void_
push str.install
lea ecx, [ebp - 0x3c]
mov byte [ebp - 4], 7
call fcn.1001a2f0
lea eax, [ebp + 0x68]
mov byte [ebp - 4], 8
push eax
lea eax, [ebp - 0x3c]
push eax
lea ecx, [ebp - 0x60]
call sym.WMCommon.dll_public:_void___thiscall_WM::GMSpecialFolderMap::AddCustom_class_std::basic_string_wchar_t__struct_std::char_traits_wchar_t___class_std::allocator_wchar_t___const___class_std::basic_string_wchar_t__struct_std::char_traits_wchar_t___class_std::allocator_wchar_t___const__
lea ecx, [ebp - 0x3c]
mov byte [ebp - 4], 7
call fcn.1001a5a0
lea eax, [ebp - 0x60]
push eax
lea ecx, [ebp + 0x30]
call sym.WMCommon.dll_public:_void___thiscall_WM::GMReverseSpecialMap::constructor_class_WM::GMSpecialFolderMap__
mov edi, dword [ebp + 0x58]
mov eax, 0x2aaaaaab
mov byte [ebp - 4], 9
xor ebx, ebx
sub esi, dword [ebp + 0x18]
imul esi
sar edx, 2
mov eax, edx
shr eax, 0x1f
add eax, edx
je 0x1008e866
sub eax, ebx
lea ecx, [ebp + 0x18]
dec eax
push eax
call fcn.10027950
mov esi, eax
push esi
call sym.WMCommon.dll_public:_static_bool___cdecl_WM::GMFileName::IsCompletedPath_class_std::basic_string_wchar_t__struct_std::char_traits_wchar_t___class_std::allocator_wchar_t___const__
add esp, 4
test al, al
jne 0x1008e7ca
push esi
lea eax, [ebp + 0x68]
push eax
lea eax, [ebp - 0x88]
push eax
call sym.WMCommon.dll_public:_static_class_std::basic_string_wchar_t__struct_std::char_traits_wchar_t___class_std::allocator_wchar_t_____cdecl_WM::GMFileName::JoinFileName_class_std::basic_string_wchar_t__struct_std::char_traits_wchar_t___class_std::allocator_wchar_t___const___class_std::basic_string_wchar_t__struct_std::char_traits_wchar_t___class_std::allocator_wchar_t___const__
add esp, 0xc
mov ecx, esi
push eax
call fcn.1001a270
lea ecx, [ebp - 0x88]
call fcn.1001a5a0
xor eax, eax
mov dword [ebp + 0x10], 0
mov dword [ebp + 0x14], 7
mov word [ebp], ax
mov dword [ebp - 0x2c], eax
mov dword [ebp - 0x28], 7
mov word [ebp - 0x3c], ax
lea eax, [ebp - 0x3c]
mov byte [ebp - 4], 0xb
push eax
lea eax, [ebp]
push eax
sub esp, 0x18
mov ecx, esp
push esi
call fcn.1001a380
lea ecx, [ebp + 0x30]
call sym.WMCommon.dll_public:_bool___thiscall_WM::GMReverseSpecialMap::MaxMatchSplit_class_std::basic_string_wchar_t__struct_std::char_traits_wchar_t___class_std::allocator_wchar_t____class_std::basic_string_wchar_t__struct_std::char_traits_wchar_t___class_std::allocator_wchar_t_____class_std::basic_string_wchar_t__struct_std::char_traits_wchar_t___class_std::allocator_wchar_t____const
test al, al
je 0x1008e832
lea eax, [ebp - 0x3c]
push eax
lea eax, [ebp]
push eax
sub esp, 0xc
lea eax, [ebp + 0x5c]
mov ecx, esp
push eax
call fcn.1001ff50
mov edx, edi
lea ecx, [ebp - 0x60]
call fcn.1008efb0
add esp, 0x14
lea ecx, [ebp - 0x3c]
call fcn.1001a5a0
lea ecx, [ebp]
mov byte [ebp - 4], 9
call fcn.1001a5a0
mov ecx, dword [ebp + 0x1c]
mov eax, 0x2aaaaaab
sub ecx, dword [ebp + 0x18]
inc ebx
imul ecx
sar edx, 2
mov eax, edx
shr eax, 0x1f
add eax, edx
cmp ebx, eax
jb 0x1008e788
xor eax, eax
mov dword [ebp - 0x2c], 0
mov dword [ebp - 0x28], 7
mov word [ebp - 0x3c], ax
mov byte [ebp - 4], 0xc
mov al, byte [ebp + 0x4f]
cmp al, 2
jb 0x1008ecfe
mov dword [ebp + 0x40], 0
mov dword [ebp - 0x80], vtable.WM::GMBuffer_unsigned_char_.0
mov dword [ebp - 0x7c], 0
mov dword [ebp - 0x78], 0
mov dword [ebp - 0x74], 0
push ecx
lea eax, [ebp - 0x80]
mov byte [ebp - 4], 0xd
push eax
lea edx, [ebp + 0x40]
lea ecx, [ebp + 0x44]
call fcn.10096b50
add esp, 8
test al, al
jne 0x1008e943
lea ecx, [ebp - 0x80]
call sym.WMCommon.dll_public:_void___thiscall_WM::GMSerial::destructor_void_
lea ecx, [ebp - 0x3c]
call fcn.1001a5a0
mov byte [ebp - 4], 0xe
lea ecx, [ebp + 0x30]
mov esi, dword [ebp + 0x30]
push dword [esi + 4]
call fcn.10028c30
mov eax, dword [ebp + 0x30]
push 0x20
mov dword [eax + 4], esi
mov eax, dword [ebp + 0x30]
mov dword [eax], esi
mov eax, dword [ebp + 0x30]
mov dword [eax + 8], esi
push dword [ebp + 0x30]
mov dword [ebp + 0x34], 0
call fcn.1006e6d7
add esp, 8
lea ecx, [ebp - 0x60]
call sym.WMCommon.dll_public:_void___thiscall_WM::GMSpecialFolderMap::destructor_void_
lea ecx, [ebp - 0x4c]
call sym.WMCommon.dll_public:_void___thiscall_WM::GMSerial::destructor_void_
lea ecx, [ebp + 0x18]
call fcn.1001d100
lea ecx, [ebp - 0x24]
call sym.WMCommon.dll_public:_void___thiscall_WM::GMSerial::destructor_void_
lea ecx, [ebp + 0x44]
call sym.WMCommon.dll_public_virtual:_void___thiscall_WM::GMFile::destructor_void_
lea ecx, [ebp + 0x60]
call fcn.1001eb30
jmp 0x1008ef6e
mov dword [ebp + 0x38], 0
mov dword [ebp - 0x70], vtable.WM::GMBuffer_unsigned_char_.0
mov dword [ebp - 0x6c], 0
mov dword [ebp - 0x68], 0
mov dword [ebp - 0x64], 0
push ecx
lea eax, [ebp - 0x70]
mov byte [ebp - 4], 0xf
push eax
lea edx, [ebp + 0x38]
lea ecx, [ebp + 0x44]
call fcn.10096b50
add esp, 8
test al, al
jne 0x1008ea09
lea ecx, [ebp - 0x70]
call sym.WMCommon.dll_public:_void___thiscall_WM::GMSerial::destructor_void_
lea ecx, [ebp - 0x80]
call sym.WMCommon.dll_public:_void___thiscall_WM::GMSerial::destructor_void_
lea ecx, [ebp - 0x3c]
call fcn.1001a5a0
mov byte [ebp - 4], 0x10
lea ecx, [ebp + 0x30]
mov esi, dword [ebp + 0x30]
push dword [esi + 4]
call fcn.10028c30
mov eax, dword [ebp + 0x30]
push 0x20
mov dword [eax + 4], esi
mov eax, dword [ebp + 0x30]
mov dword [eax], esi
mov eax, dword [ebp + 0x30]
mov dword [eax + 8], esi
push dword [ebp + 0x30]
mov dword [ebp + 0x34], 0
call fcn.1006e6d7
add esp, 8
lea ecx, [ebp - 0x60]
call sym.WMCommon.dll_public:_void___thiscall_WM::GMSpecialFolderMap::destructor_void_
lea ecx, [ebp - 0x4c]
call sym.WMCommon.dll_public:_void___thiscall_WM::GMSerial::destructor_void_
lea ecx, [ebp + 0x18]
call fcn.1001d100
lea ecx, [ebp - 0x24]
call sym.WMCommon.dll_public:_void___thiscall_WM::GMSerial::destructor_void_
lea ecx, [ebp + 0x44]
call sym.WMCommon.dll_public_virtual:_void___thiscall_WM::GMFile::destructor_void_
lea ecx, [ebp + 0x60]
call fcn.1001eb30
jmp 0x1008ef6e
lea ecx, [ebp + 8]
mov dword [ebp - 0x14], 0
call fcn.100209f0
push ecx
mov eax, ecx
mov byte [ebp - 4], 0x11
push eax
lea edx, [ebp - 0x14]
lea ecx, [ebp + 0x44]
call fcn.10096b50
add esp, 8
test al, al
jne 0x1008ea5f
lea ecx, [ebp + 8]
call sym.WMCommon.dll_public:_void___thiscall_WM::GMSerial::destructor_void_
lea ecx, [ebp - 0x70]
call sym.WMCommon.dll_public:_void___thiscall_WM::GMSerial::destructor_void_
lea ecx, [ebp - 0x80]
call sym.WMCommon.dll_public:_void___thiscall_WM::GMSerial::destructor_void_
lea ecx, [ebp - 0x3c]
call fcn.1001a5a0
lea ecx, [ebp + 0x30]
call sym.WMCommon.dll_public:_void___thiscall_WM::GMReverseSpecialMap::destructor_void_
jmp 0x1008e90e
cmp dword [ebp - 0x14], 0
jbe 0x1008eb23
push 0x90
call fcn.1006e6a7
add esp, 4
mov dword [ebp - 0x14], eax
mov ecx, eax
push 3
push edi
call sym.WMCommon.dll_public:_void___thiscall_WM::GMTocNode::constructor_class_WM::GMTocNode___enum_WM::GMNodeType_
push eax
lea ecx, [ebp + 0x28]
call fcn.10020ba0
mov byte [ebp - 4], 0x12
mov ecx, dword [ebp + 0x28]
push 6
push str.gmmeta
lea ecx, [ecx + 0xc]
call fcn.1001a600
mov ecx, dword [ebp + 0x28]
lea eax, [ebp + 8]
push eax
lea ecx, [ecx + 0x78]
call fcn.10020a40
mov ecx, dword [ebp + 0x5c]
mov eax, dword [ecx]
mov eax, dword [eax + 8]
cmp eax, sym.WMCommon.dll_public_virtual:_enum_WM::GMCompressCodeType___thiscall_WM::GMPackerPolicy::GetDefaultCodec_void_
jne 0x1008ef8a
mov eax, dword [ecx + 4]
mov ecx, dword [ebp + 0x28]
mov dword [ecx + 0x60], eax
mov ecx, dword [edi + 4]
cmp dword [edi + 8], ecx
je 0x1008eb04
mov eax, dword [ebp + 0x28]
mov esi, 1
mov dword [ecx], eax
mov eax, dword [ebp + 0x2c]
mov dword [ecx + 4], eax
test eax, eax
je 0x1008eaf2
lea ecx, [eax + 4]
mov eax, esi
lock xadd dword [ecx], eax
add dword [edi + 4], 8
lea ecx, [ebp + 0x2c]
mov byte [ebp - 4], 0x11
call fcn.1001eb30
jmp 0x1008eb28
lea eax, [ebp + 0x28]
push eax
push ecx
mov ecx, edi
call fcn.10021400
lea ecx, [ebp + 0x2c]
mov byte [ebp - 4], 0x11
mov esi, 1
call fcn.1001eb30
jmp 0x1008eb28
mov esi, 1
cmp dword [ebp + 0x40], 0
jbe 0x1008ebd4
push 0x90
call fcn.1006e6a7
add esp, 4
mov dword [ebp + 0x40], eax
mov ecx, eax
push 3
push edi
call sym.WMCommon.dll_public:_void___thiscall_WM::GMTocNode::constructor_class_WM::GMTocNode___enum_WM::GMNodeType_
push eax
lea ecx, [ebp + 0x28]
call fcn.10020ba0
mov byte [ebp - 4], 0x13
mov ecx, dword [ebp + 0x28]
push 0xd
push str.tasks.txt
lea ecx, [ecx + 0xc]
call fcn.1001a600
mov ecx, dword [ebp + 0x28]
lea eax, [ebp - 0x80]
push eax
lea ecx, [ecx + 0x78]
call fcn.10020a40
mov ecx, dword [ebp + 0x5c]
mov eax, dword [ecx]
mov eax, dword [eax + 8]
cmp eax, sym.WMCommon.dll_public_virtual:_enum_WM::GMCompressCodeType___thiscall_WM::GMPackerPolicy::GetDefaultCodec_void_
jne 0x1008ef91
mov eax, dword [ecx + 4]
mov ecx, dword [ebp + 0x28]
mov dword [ecx + 0x60], eax
mov ecx, dword [edi + 4]
cmp dword [edi + 8], ecx
je 0x1008ebbc
mov eax, dword [ebp + 0x28]
mov dword [ecx], eax
mov eax, dword [ebp + 0x2c]
mov dword [ecx + 4], eax
test eax, eax
je 0x1008ebb6
lea ecx, [eax + 4]
mov eax, esi
lock xadd dword [ecx], eax
add dword [edi + 4], 8
jmp 0x1008ebc8
lea eax, [ebp + 0x28]
push eax
push ecx
mov ecx, edi
call fcn.10021400
lea ecx, [ebp + 0x2c]
mov byte [ebp - 4], 0x11
call fcn.1001eb30
cmp dword [ebp + 0x38], 0
jbe 0x1008ec8a
push 0x90
call fcn.1006e6a7
add esp, 4
mov dword [ebp + 0x38], eax
mov ecx, eax
push 2
push edi
call sym.WMCommon.dll_public:_void___thiscall_WM::GMTocNode::constructor_class_WM::GMTocNode___enum_WM::GMNodeType_
push eax
lea ecx, [ebp + 0x3c]
call fcn.10020ba0
mov byte [ebp - 4], 0x14
mov ecx, dword [ebp + 0x3c]
push 0xb
push str.reg.reg
lea ecx, [ecx + 0xc]
call fcn.1001a600
mov ecx, dword [ebp + 0x3c]
lea eax, [ebp - 0x70]
push eax
lea ecx, [ecx + 0x78]
call fcn.10020a40
mov ecx, dword [ebp + 0x3c]
mov eax, dword [ebp - 0x64]
mov dword [ecx + 0x58], eax
mov dword [ecx + 0x5c], 0
mov ecx, dword [ebp + 0x5c]
mov eax, dword [ecx]
mov eax, dword [eax + 8]
cmp eax, sym.WMCommon.dll_public_virtual:_enum_WM::GMCompressCodeType___thiscall_WM::GMPackerPolicy::GetDefaultCodec_void_
jne 0x1008ef98
mov eax, dword [ecx + 4]
mov ecx, dword [ebp + 0x3c]
mov dword [ecx + 0x60], eax
mov ecx, dword [edi + 4]
cmp dword [edi + 8], ecx
je 0x1008ec76
mov eax, dword [ebp + 0x3c]
mov dword [ecx], eax
mov eax, dword [ebp + 0x40]
mov dword [ecx + 4], eax
test eax, eax
je 0x1008ec70
add eax, 4
lock xadd dword [eax], esi
add dword [edi + 4], 8
jmp 0x1008ec82
lea eax, [ebp + 0x3c]
push eax
push ecx
mov ecx, edi
call fcn.10021400
lea ecx, [ebp + 0x40]
call fcn.1001eb30
lea ecx, [ebp + 8]
call sym.WMCommon.dll_public:_void___thiscall_WM::GMSerial::destructor_void_
lea ecx, [ebp - 0x70]
call sym.WMCommon.dll_public:_void___thiscall_WM::GMSerial::destructor_void_
lea ecx, [ebp - 0x80]
call sym.WMCommon.dll_public:_void___thiscall_WM::GMSerial::destructor_void_
lea ecx, [ebp - 0x3c]
call fcn.1001a5a0
lea ecx, [ebp + 0x30]
call sym.WMCommon.dll_public:_void___thiscall_WM::GMReverseSpecialMap::destructor_void_
lea ecx, [ebp - 0x60]
call sym.WMCommon.dll_public:_void___thiscall_WM::GMSpecialFolderMap::destructor_void_
lea ecx, [ebp - 0x4c]
call sym.WMCommon.dll_public:_void___thiscall_WM::GMSerial::destructor_void_
lea ecx, [ebp + 0x18]
call fcn.1001d100
lea ecx, [ebp - 0x24]
call sym.WMCommon.dll_public:_void___thiscall_WM::GMSerial::destructor_void_
lea ecx, [ebp + 0x44]
call sym.WMCommon.dll_public_virtual:_void___thiscall_WM::GMFile::destructor_void_
lea ecx, [ebp + 0x60]
call fcn.1001eb30
lea ecx, [ebp + 0x68]
call fcn.1001a5a0
mov al, 1
mov ecx, dword [ebp - 0xc]
mov dword fs:[0], ecx
pop edi
pop esi
pop ebx
lea esp, [ebp + 0x50]
pop ebp
ret
cmp al, 1
jne 0x1008eca2
cmp dword [ebp + 0x38], 0
jbe 0x1008eedf
mov ecx, 8
mov dword [ebp + 4], 0
mov dword [ebp + 8], 0
mov dword [ebp + 0xc], 0
mov dword [ebp + 0x10], 0
mov dword [ebp + 0x14], 0
call fcn.1001ae90
mov dword [ebp + 4], eax
lea ecx, [ebp + 4]
mov dword [eax], 0
mov dword [eax + 4], 0
mov eax, dword [ebp + 4]
mov dword [eax], ecx
mov eax, ecx
mov byte [ebp - 4], 0x15
push eax
lea eax, [ebp - 0x4c]
push eax
call sym.WMCommon.dll_public:_static_bool___cdecl_WM::GMRegInstall::DeserialRegFromBuffer_class_WM::GMBuffer_unsigned_char__const___class_std::deque_class_WM::GMRegKey__class_std::allocator_class_WM::GMRegKey____
add esp, 8
test al, al
jne 0x1008ed75
lea ecx, [ebp + 4]
call fcn.10027720
jmp 0x1008ea4a
xor esi, esi
mov dword [ebp + 0x38], esi
cmp esi, dword [ebp + 0x14]
jae 0x1008ee1b
push 0
push 0
push 0
push esi
lea ecx, [ebp + 4]
mov byte [ebp - 4], 0x16
call fcn.100274b0
push eax
lea eax, [ebp - 0xc0]
push eax
call sym.WMCommon.dll_public:_static_class_WM::GMRegKey___cdecl_WM::GMRegInstall::GenerateAntiReg_class_WM::GMRegKey_const___bool__bool__enum_WM::GMRegInstallType_
add esp, 0x14
push eax
push esi
lea ecx, [ebp + 4]
mov byte [ebp - 4], 0x17
call fcn.100274b0
mov ecx, eax
call sym.WMCommon.dll_public:_class_WM::GMRegKey____thiscall_WM::GMRegKey::operator_class_WM::GMRegKey_const__
lea ecx, [ebp - 0xc0]
mov byte [ebp - 4], 0x16
call sym.WMCommon.dll_public:_void___thiscall_WM::GMRegKey::destructor_void_
lea eax, [ebp - 0x60]
push eax
lea ecx, [ebp + 0x28]
call sym.WMCommon.dll_public:_void___thiscall_WM::GMReverseSpecialMap::constructor_class_WM::GMSpecialFolderMap__
push esi
lea ecx, [ebp + 4]
mov byte [ebp - 4], 0x18
call fcn.100274b0
lea edx, [ebp + 0x28]
mov ecx, eax
call fcn.10092ee0
lea ecx, [ebp + 0x28]
call sym.WMCommon.dll_public:_void___thiscall_WM::GMReverseSpecialMap::destructor_void_
mov dword [ebp - 4], 0x15
inc esi
jmp 0x1008ed77
push 0x90
call fcn.1006e6a7
add esp, 4
mov dword [ebp + 0x38], eax
mov ecx, eax
push 2
push edi
call sym.WMCommon.dll_public:_void___thiscall_WM::GMTocNode::constructor_class_WM::GMTocNode___enum_WM::GMNodeType_
push eax
lea ecx, [ebp + 0x3c]
call fcn.10020ba0
mov byte [ebp - 4], 0x1a
mov ecx, dword [ebp + 0x3c]
push 0xb
push str.reg.bin
lea ecx, [ecx + 0xc]
call fcn.1001a600
mov eax, dword [ebp + 0x3c]
add eax, 0x78
push eax
lea eax, [ebp + 4]
push eax
call sym.WMCommon.dll_public:_static_void___cdecl_WM::GMRegInstall::SerialRegToBuffer_class_std::deque_class_WM::GMRegKey__class_std::allocator_class_WM::GMRegKey_____class_WM::GMBuffer_unsigned_char___
mov ecx, dword [ebp + 0x3c]
add esp, 8
mov eax, dword [ecx + 0x84]
mov dword [ecx + 0x58], eax
mov dword [ecx + 0x5c], 0
mov ecx, dword [ebp + 0x5c]
mov eax, dword [ecx]
mov eax, dword [eax + 8]
cmp eax, sym.WMCommon.dll_public_virtual:_enum_WM::GMCompressCodeType___thiscall_WM::GMPackerPolicy::GetDefaultCodec_void_
jne 0x1008ef9f
mov eax, dword [ecx + 4]
mov ecx, dword [ebp + 0x3c]
mov dword [ecx + 0x60], eax
mov ecx, dword [edi + 4]
cmp dword [edi + 8], ecx
je 0x1008eebf
mov eax, dword [ebp + 0x3c]
mov dword [ecx], eax
mov eax, dword [ebp + 0x40]
mov dword [ecx + 4], eax
test eax, eax
je 0x1008eeb9
lea ecx, [eax + 4]
mov eax, 1
lock xadd dword [ecx], eax
add dword [edi + 4], 8
jmp 0x1008eecb
lea eax, [ebp + 0x3c]
push eax
push ecx
mov ecx, edi
call fcn.10021400
lea ecx, [ebp + 0x40]
call fcn.1001eb30
lea ecx, [ebp + 4]
mov byte [ebp - 4], 0xc
call fcn.10027720
lea eax, [ebp + 0x68]
push eax
lea eax, [ebp]
push eax
call sym.WMCommon.dll_public:_static_class_std::basic_string_wchar_t__struct_std::char_traits_wchar_t___class_std::allocator_wchar_t_____cdecl_WM::GMFileName::GetDirectory_class_std::basic_string_wchar_t__struct_std::char_traits_wchar_t___class_std::allocator_wchar_t___const__
add esp, 8
lea ecx, [ebp - 0x3c]
push eax
call fcn.1001a270
lea ecx, [ebp]
call fcn.1001a5a0
jmp 0x1008eca2
mov eax, dword [ebp + 0x48]
mov dword [ebp + 0x44], vtable.WM::GMFile.0
cmp eax, 0xffffffff
je 0x1008ef2b
push eax
call dword [sym.imp.KERNEL32.dll_CloseHandle]
mov ecx, dword [ebp + 0x48]
or esi, 0xffffffff
test eax, eax
cmovne ecx, esi
mov dword [ebp + 0x48], ecx
jmp 0x1008ef2e
or esi, 0xffffffff
mov edi, dword [ebp + 0x60]
mov dword [ebp + 0x44], vtable.WM::GMBaseFile.0
test edi, edi
je 0x1008ef6e
lea eax, [edi + 4]
mov ecx, esi
lock xadd dword [eax], ecx
cmp ecx, 1
jne 0x1008ef6e
mov eax, dword [edi]
mov ecx, edi
call dword [eax + 4]
lea eax, [edi + 8]
lock xadd dword [eax], esi
cmp esi, 1
jne 0x1008ef6e
mov edx, dword [edi]
mov ecx, edi
mov eax, dword [edx + 8]
cmp eax, fcn.1001eaf0
jne 0x1008efa6
push esi
call dword [edx]
lea ecx, [ebp + 0x68]
call fcn.1001a5a0
mov ecx, dword [ebp - 0xc]
xor al, al
pop edi
pop esi
mov dword fs:[0], ecx
pop ebx
lea esp, [ebp + 0x50]
pop ebp
ret
call eax
jmp 0x1008eac7
call eax
jmp 0x1008eb90
call eax
jmp 0x1008ec4c
call eax
jmp 0x1008ee90
call eax
jmp 0x1008ef6e