Function at 0x10002770
Capabilities:
Reference sql statements
Resolve function by parsing pe exports

Disassembly:
push ebp
mov ebp, esp
and esp, 0xfffffff8
push 0xffffffffffffffff
push 0x1005af58
mov eax, dword fs:[0]
push eax
sub esp, 0x150
push ebx
push esi
push edi
mov eax, dword [0x1006e020]
xor eax, esp
push eax
lea eax, [esp + 0x160]
mov dword fs:[0], eax
call fcn.1000c820
mov dword [esp + 0x5c], eax
mov byte [eax + 0x15], 1
mov eax, dword [esp + 0x5c]
mov dword [eax + 4], eax
mov eax, dword [esp + 0x5c]
mov dword [eax], eax
mov eax, dword [esp + 0x5c]
mov dword [eax + 8], eax
xor eax, eax
mov dword [esp + 0x60], eax
mov dword [esp + 0x168], eax
mov eax, dword [0x1006eb44]
mov dword [esp + 0x14], eax
mov eax, dword [ebp + 8]
mov byte [esp + 0x168], 1
mov ecx, dword [eax + 0x44]
mov ecx, dword [ecx]
add eax, 0x40
mov esi, eax
mov edi, ecx
mov dword [esp + 0x20], eax
mov dword [esp + 0x3c], esi
mov dword [esp + 0x40], edi
lea esp, [esp]
test esi, esi
mov ebx, dword [eax + 4]
je 0x1000280b
cmp esi, eax
je 0x10002811
call dword [sym.imp.MSVCR80.dll__invalid_parameter_noinfo]
cmp edi, ebx
je 0x10002c96
test esi, esi
jne 0x10002823
call dword [sym.imp.MSVCR80.dll__invalid_parameter_noinfo]
cmp edi, dword [esi + 4]
jne 0x1000282e
call dword [sym.imp.MSVCR80.dll__invalid_parameter_noinfo]
mov ecx, dword [edi + 0x10]
mov eax, dword [ecx + 0x10]
cmp dword [eax - 0xc], 0
push ecx
push ecx
mov dword [esp + 0x24], ecx
mov dword [esp + 0x3c], esp
mov esi, esp
jl 0x10002857
mov dword [esi], eax
add eax, 0xfffffff4
push eax
call dword [sym.imp.KERNEL32.dll_InterlockedIncrement]
jmp 0x100028df
mov edx, dword [0x1006eb44]
mov dword [esi], edx
mov ecx, dword [ecx + 0x10]
test ecx, ecx
mov dword [esp + 0x20], ecx
jne 0x1000286e
xor edi, edi
jmp 0x10002877
push ecx
call dword [sym.imp.KERNEL32.dll_lstrlenW]
mov edi, eax
mov eax, dword [esi]
cmp dword [eax - 0xc], 1
lea ecx, [eax - 0xc]
jg 0x10002887
cmp edi, dword [eax - 4]
jle 0x100028be
add eax, 0xfffffff4
cmp eax, 0x1006eb34
je 0x100028b1
push ecx
call dword [sym.imp.KERNEL32.dll_InterlockedDecrement]
test eax, eax
jg 0x100028aa
mov eax, dword [esi]
sub eax, 0xc
push eax
call sub.MSVCR80.dll_void___cdecl_operator_delete___void__
add esp, 4
mov eax, dword [0x1006eb44]
mov dword [esi], eax
mov ecx, edi
mov edx, esi
call fcn.10011c80
test eax, eax
je 0x100028df
mov ecx, dword [esp + 0x20]
mov edx, dword [esi]
lea ebx, [edi + edi]
push ebx
push ecx
push edx
call sub.MSVCR80.dll_memcpy
mov eax, dword [esi]
mov dword [eax - 8], edi
mov ecx, dword [esi]
add esp, 0xc
mov word [ebx + ecx], 0
lea ecx, [esp + 0x4c]
call fcn.1000fd50
add esp, 8
mov dword [esp + 0x38], eax
mov byte [esp + 0x168], 2
mov eax, dword [eax]
cmp dword [eax - 0xc], 0
mov dword [esp + 0x18], eax
jl 0x10002915
mov esi, eax
lea edx, [esi - 0xc]
push edx
mov dword [esp + 0x50], esi
call dword [sym.imp.KERNEL32.dll_InterlockedIncrement]
jmp 0x10002994
test eax, eax
mov esi, dword [0x1006eb44]
mov dword [esp + 0x4c], esi
jne 0x10002927
xor ebx, ebx
jmp 0x10002930
push eax
call dword [sym.imp.KERNEL32.dll_lstrlenW]
mov ebx, eax
cmp dword [esi - 0xc], 1
lea edi, [esi - 0xc]
jg 0x1000293e
cmp ebx, dword [esi - 4]
jle 0x10002979
add esi, 0xfffffff4
cmp esi, 0x1006eb34
je 0x10002966
push edi
call dword [sym.imp.KERNEL32.dll_InterlockedDecrement]
test eax, eax
jg 0x1000295d
push edi
call sub.MSVCR80.dll_void___cdecl_operator_delete___void__
add esp, 4
mov eax, dword [0x1006eb44]
mov dword [esp + 0x4c], eax
mov ecx, ebx
lea edx, [esp + 0x4c]
call fcn.10011c80
test eax, eax
mov esi, dword [esp + 0x4c]
je 0x10002994
mov ecx, dword [esp + 0x18]
lea edi, [ebx + ebx]
push edi
push ecx
push esi
call sub.MSVCR80.dll_memcpy
mov dword [esi - 8], ebx
add esp, 0xc
mov word [esi + edi], 0
mov edx, dword [esp + 0x38]
mov eax, dword [edx + 4]
mov dword [esp + 0x50], eax
lea ecx, [esp + 0x70]
push ecx
lea edx, [esp + 0x5c]
push edx
lea ebx, [esp + 0x54]
mov byte [esp + 0x170], 3
call fcn.10008a30
lea eax, [esi - 0xc]
cmp eax, 0x1006eb34
je 0x100029db
add esi, 0xfffffff4
push esi
call dword [sym.imp.KERNEL32.dll_InterlockedDecrement]
test eax, eax
jg 0x100029db
push esi
call sub.MSVCR80.dll_void___cdecl_operator_delete___void__
add esp, 4
mov byte [esp + 0x168], 1
mov eax, dword [esp + 0x44]
lea ecx, [eax - 0xc]
cmp ecx, 0x1006eb34
je 0x10002a10
add eax, 0xfffffff4
push eax
call dword [sym.imp.KERNEL32.dll_InterlockedDecrement]
test eax, eax
jg 0x10002a10
mov eax, dword [esp + 0x44]
add eax, 0xfffffff4
push eax
call sub.MSVCR80.dll_void___cdecl_operator_delete___void__
add esp, 4
mov edi, dword [esp + 0x40]
mov edx, dword [esp + 0x3c]
cmp edi, dword [edx + 4]
jne 0x10002a23
call dword [sym.imp.MSVCR80.dll__invalid_parameter_noinfo]
mov eax, dword [edi + 0xc]
cmp dword [eax - 0xc], 0
push ecx
mov dword [esp + 0x38], esp
mov esi, esp
jl 0x10002a44
mov dword [esi], eax
add eax, 0xfffffff4
push eax
call dword [sym.imp.KERNEL32.dll_InterlockedIncrement]
jmp 0x10002aca
mov eax, dword [0x1006eb44]
mov dword [esi], eax
mov edi, dword [edi + 0xc]
test edi, edi
mov dword [esp + 0x1c], edi
je 0x10002a61
mov ecx, edi
push ecx
call dword [sym.imp.KERNEL32.dll_lstrlenW]
mov edi, eax
mov eax, dword [esi]
cmp dword [eax - 0xc], 1
lea ecx, [eax - 0xc]
jg 0x10002a71
cmp edi, dword [eax - 4]
jle 0x10002aa9
add eax, 0xfffffff4
cmp eax, 0x1006eb34
je 0x10002a9c
push ecx
call dword [sym.imp.KERNEL32.dll_InterlockedDecrement]
test eax, eax
jg 0x10002a94
mov eax, dword [esi]
sub eax, 0xc
push eax
call sub.MSVCR80.dll_void___cdecl_operator_delete___void__
add esp, 4
mov edx, dword [0x1006eb44]
mov dword [esi], edx
mov ecx, edi
mov edx, esi
call fcn.10011c80
test eax, eax
je 0x10002aca
mov eax, dword [esp + 0x1c]
mov ecx, dword [esi]
lea ebx, [edi + edi]
push ebx
push eax
push ecx
call sub.MSVCR80.dll_memcpy
mov edx, dword [esi]
mov dword [edx - 8], edi
mov eax, dword [esi]
add esp, 0xc
mov word [ebx + eax], 0
mov byte [esp + 0x16c], 4
push ecx
mov ecx, dword [esp + 0x24]
mov eax, dword [ecx + 0x10]
cmp dword [eax - 0xc], 0
mov dword [esp + 0x40], esp
mov esi, esp
jl 0x10002af7
mov dword [esi], eax
add eax, 0xfffffff4
push eax
call dword [sym.imp.KERNEL32.dll_InterlockedIncrement]
jmp 0x10002b84
mov edx, dword [0x1006eb44]
mov dword [esi], edx
mov eax, dword [ecx + 0x10]
test eax, eax
mov dword [esp + 0x24], eax
jne 0x10002b0e
xor edi, edi
jmp 0x10002b1b
mov eax, dword [esp + 0x24]
push eax
call dword [sym.imp.KERNEL32.dll_lstrlenW]
mov edi, eax
mov eax, dword [esi]
cmp dword [eax - 0xc], 1
lea ecx, [eax - 0xc]
jg 0x10002b2b
cmp edi, dword [eax - 4]
jle 0x10002b63
add eax, 0xfffffff4
cmp eax, 0x1006eb34
je 0x10002b56
push ecx
call dword [sym.imp.KERNEL32.dll_InterlockedDecrement]
test eax, eax
jg 0x10002b4e
mov eax, dword [esi]
sub eax, 0xc
push eax
call sub.MSVCR80.dll_void___cdecl_operator_delete___void__
add esp, 4
mov ecx, dword [0x1006eb44]
mov dword [esi], ecx
mov ecx, edi
mov edx, esi
call fcn.10011c80
test eax, eax
je 0x10002b84
mov edx, dword [esp + 0x24]
mov eax, dword [esi]
lea ebx, [edi + edi]
push ebx
push edx
push eax
call sub.MSVCR80.dll_memcpy
mov ecx, dword [esi]
mov dword [ecx - 8], edi
mov edx, dword [esi]
add esp, 0xc
mov word [ebx + edx], 0
mov esi, dword [sym.imp.KERNEL32.dll_InterlockedDecrement]
lea ebx, [esp + 0x34]
mov byte [esp + 0x170], 1
call fcn.1000fca0
add esp, 8
push eax
lea eax, [esp + 0x28]
push eax
mov byte [esp + 0x170], 5
call fcn.1000c8d0
lea ecx, [esp + 0x24]
push ecx
lea edx, [esp + 0x8c]
push edx
push 0x10070c58
mov byte [esp + 0x174], 6
call fcn.10008050
mov eax, dword [esp + 0x28]
lea ecx, [eax - 0xc]
cmp ecx, 0x1006eb34
je 0x10002bf9
add eax, 0xfffffff4
push eax
call esi
test eax, eax
jg 0x10002bf9
mov eax, dword [esp + 0x28]
add eax, 0xfffffff4
push eax
call sub.MSVCR80.dll_void___cdecl_operator_delete___void__
add esp, 4
mov eax, dword [esp + 0x24]
lea edx, [eax - 0xc]
cmp edx, 0x1006eb34
je 0x10002c22
add eax, 0xfffffff4
push eax
call esi
test eax, eax
jg 0x10002c22
mov eax, dword [esp + 0x24]
add eax, 0xfffffff4
push eax
call sub.MSVCR80.dll_void___cdecl_operator_delete___void__
add esp, 4
mov byte [esp + 0x168], 1
mov eax, dword [esp + 0x30]
lea ecx, [eax - 0xc]
cmp ecx, 0x1006eb34
je 0x10002c53
add eax, 0xfffffff4
push eax
call esi
test eax, eax
jg 0x10002c53
mov edx, dword [esp + 0x30]
add edx, 0xfffffff4
push edx
call sub.MSVCR80.dll_void___cdecl_operator_delete___void__
add esp, 4
mov eax, dword [esp + 0x2c]
lea ecx, [eax - 0xc]
cmp ecx, 0x1006eb34
je 0x10002c7c
add eax, 0xfffffff4
push eax
call esi
test eax, eax
jg 0x10002c7c
mov edx, dword [esp + 0x2c]
add edx, 0xfffffff4
push edx
call sub.MSVCR80.dll_void___cdecl_operator_delete___void__
add esp, 4
lea esi, [esp + 0x3c]
call fcn.1000af80
mov edi, dword [esp + 0x40]
mov esi, dword [esp + 0x3c]
mov eax, dword [esp + 0x20]
jmp 0x10002800
mov eax, dword [0x1006eb44]
mov ecx, str.SELECT__Directory_._Directory___Directory_._Directory_Parent___Directory_._DefaultDir_
shr ecx, 0x10
mov dword [esp + 0x18], eax
jne 0x10002cc3
mov edx, str.SELECT__Directory_._Directory___Directory_._Directory_Parent___Directory_._DefaultDir_
movzx eax, dx
push eax
lea ecx, [esp + 0x1c]
call fcn.10013a10
mov edi, dword [sym.imp.KERNEL32.dll_lstrlenW]
jmp 0x10002cfb
mov edi, dword [sym.imp.KERNEL32.dll_lstrlenW]
push str.SELECT__Directory_._Directory___Directory_._Directory_Parent___Directory_._DefaultDir_
call edi
mov esi, eax
test esi, esi
je 0x10002cfb
mov ecx, esi
lea edx, [esp + 0x18]
call fcn.10011c80
test eax, eax
je 0x10002cfb
mov ecx, dword [esp + 0x18]
lea eax, [esi + esi]
push eax
push str.SELECT__Directory_._Directory___Directory_._Directory_Parent___Directory_._DefaultDir_
push ecx
call sub.MSVCR80.dll_memcpy
add esp, 0xc
mov ebx, 7
push str.FROM__Directory___CustomAction_
mov byte [esp + 0x16c], bl
call edi
test eax, eax
je 0x10002d22
mov esi, eax
mov edx, str.FROM__Directory___CustomAction_
lea eax, [esp + 0x18]
call fcn.10013510
push str.WHERE__CustomAction_._Action__Directory_._Directory__AND__Directory_._Directory_Parent___TARGETDIR
call edi
test eax, eax
je 0x10002d3d
mov esi, eax
mov edx, str.WHERE__CustomAction_._Action__Directory_._Directory__AND__Directory_._Directory_Parent___TARGETDIR
lea eax, [esp + 0x18]
call fcn.10013510
mov edx, dword [ebp + 8]
mov eax, dword [edx + 0x28]
mov ecx, dword [esp + 0x18]
mov dword [esp + 0x118], ecx
mov dword [esp + 0x11c], ebx
mov dword [esp + 0x120], eax
mov dword [esp + 0x124], 0
mov eax, dword [0x1006eb44]
mov dword [esp + 0xa0], eax
mov dword [esp + 0x94], vtable.DirectoryData.0
mov dword [esp + 0x98], vtable.DirectoryData.1.0
mov dword [esp + 0xa4], eax
mov dword [esp + 0xa8], eax
mov dword [esp + 0xac], eax
lea ecx, [esp + 0x94]
lea edi, [esp + 0x118]
mov byte [esp + 0x168], 9
call fcn.1000fe50
test al, al
je 0x10003137
lea edi, [esp + 0xa4]
call fcn.1004b3c0
test al, al
je 0x1000311c
mov eax, dword [esp + 0x14]
mov ecx, dword [esp + 0xac]
cmp eax, ecx
je 0x10002e4b
cmp dword [eax - 0xc], 0
lea edx, [eax - 0xc]
jge 0x10002df8
lea esi, [eax - 0xc]
cmp esi, 0x1006eb34
jne 0x10002dfe
cmp dword [ecx - 0xc], 0
jge 0x10002e0d
mov ebx, dword [ecx - 8]
push ecx
lea esi, [esp + 0x18]
call fcn.100158a0
jmp 0x10002e47
add eax, 0xfffffff4
cmp eax, 0x1006eb34
je 0x10002e39
push edx
call dword [sym.imp.KERNEL32.dll_InterlockedDecrement]
test eax, eax
jg 0x10002e32
mov eax, dword [esp + 0x14]
add eax, 0xfffffff4
push eax
call sub.MSVCR80.dll_void___cdecl_operator_delete___void__
add esp, 4
mov ecx, dword [esp + 0xac]
mov dword [esp + 0x14], ecx
add ecx, 0xfffffff4
push ecx
call dword [sym.imp.KERNEL32.dll_InterlockedIncrement]
mov eax, dword [esp + 0x14]
mov ecx, dword [eax - 8]
test ecx, ecx
je 0x1000311c
jl 0x1000311c
push str.DRIVE_
push eax
call dword [sym.imp.MSVCR80.dll_wcsstr]
add esp, 8
test eax, eax
je 0x1000311c
mov ecx, dword [esp + 0x14]
sub eax, ecx
sar eax, 1
js 0x1000311c
mov esi, dword [ecx - 8]
mov ecx, str.DRIVE_
call fcn.10015150
mov ecx, esi
lea edx, [esp + 0x1c]
sub ecx, eax
push edx
lea eax, [esp + 0x18]
push eax
call fcn.10015170
mov edi, eax
lea eax, [esp + 0x14]
mov byte [esp + 0x168], 0xa
call fcn.10015ac0
mov byte [esp + 0x168], 9
mov eax, dword [esp + 0x1c]
lea ecx, [eax - 0xc]
cmp ecx, 0x1006eb34
je 0x10002ee9
add eax, 0xfffffff4
push eax
call dword [sym.imp.KERNEL32.dll_InterlockedDecrement]
test eax, eax
jg 0x10002ee9
mov eax, dword [esp + 0x1c]
add eax, 0xfffffff4
push eax
call sub.MSVCR80.dll_void___cdecl_operator_delete___void__
add esp, 4
mov ebx, dword [sym.imp.KERNEL32.dll_lstrlenW]
push 0x1005e064
call ebx
test eax, eax
je 0x10002f0a
mov esi, eax
mov edx, 0x1005e064
lea eax, [esp + 0x14]
call fcn.10013510
mov edx, dword [esp + 0x14]
push edx
call dword [sym.imp.SHLWAPI.dll_PathGetDriveNumberW]
test eax, eax
jl 0x1000311c
mov eax, dword [esp + 0x14]
cmp dword [eax - 0xc], 0
push ecx
mov dword [esp + 0x38], esp
mov esi, esp
jl 0x10002f40
mov dword [esi], eax
mov eax, dword [esp + 0x18]
add eax, 0xfffffff4
push eax
call dword [sym.imp.KERNEL32.dll_InterlockedIncrement]
jmp 0x10002f63
mov ecx, dword [0x1006eb44]
mov dword [esi], ecx
mov eax, dword [esp + 0x18]
test eax, eax
mov edi, eax
je 0x10002f55
push eax
call ebx
push edi
mov ebx, eax
call fcn.100158a0
mov ebx, dword [sym.imp.KERNEL32.dll_lstrlenW]
mov byte [esp + 0x16c], 0xb
mov eax, dword [esp + 0xa8]
cmp dword [eax - 0xc], 0
push ecx
mov dword [esp + 0x40], esp
mov esi, esp
jl 0x10002f94
mov dword [esi], eax
mov edx, dword [esp + 0xac]
add edx, 0xfffffff4
push edx
call dword [sym.imp.KERNEL32.dll_InterlockedIncrement]
jmp 0x10002fb3
mov eax, dword [0x1006eb44]
mov dword [esi], eax
mov eax, dword [esp + 0xac]
test eax, eax
mov edi, eax
je 0x10002fab
push eax
call ebx
push edi
mov ebx, eax
call fcn.100158a0
lea ebx, [esp + 0x78]
mov byte [esp + 0x170], 9
call fcn.1000fca0
add esp, 8
push eax
lea ecx, [esp + 0x48]
push ecx
mov byte [esp + 0x170], 0xc
call fcn.1000c8d0
lea edx, [esp + 0x44]
push edx
lea eax, [esp + 0x50]
push eax
push 0x10070c58
mov byte [esp + 0x174], 0xd
call fcn.10008050
lea esi, [esp + 0x44]
call fcn.10004030
mov esi, ebx
mov byte [esp + 0x168], 9
call fcn.10004030
mov esi, dword [esp + 0x20]
mov ebx, dword [esi + 4]
lea ecx, [esp + 0x88]
push ecx
lea eax, [esp + 0x18]
call fcn.10008b30
mov edi, eax
mov eax, dword [edi]
test eax, eax
je 0x10003032
cmp eax, esi
je 0x10003038
call dword [sym.imp.MSVCR80.dll__invalid_parameter_noinfo]
cmp dword [edi + 4], ebx
jne 0x1000311c
push 0x1c
call sub.MSVCR80.dll_void____cdecl_operator_new_unsigned_int_
add esp, 4
test eax, eax
je 0x10003058
call fcn.10004090
mov esi, eax
jmp 0x1000305a
xor esi, esi
lea ebx, [esp + 0x94]
call fcn.100040d0
lea ecx, [esi + 0x10]
lea edx, [esp + 0x58]
call fcn.100088b0
push esi
push ecx
mov dword [eax], esi
lea ecx, [esp + 0x1c]
mov eax, esp
mov dword [esp + 0x3c], esp
call fcn.10015820
lea ecx, [esp + 0x2c]
call fcn.1000fd50
add esp, 8
push eax
lea eax, [esp + 0x30]
mov byte [esp + 0x16c], 0xe
call fcn.1000fdf0
lea edx, [esp + 0xe8]
mov byte [esp + 0x168], 0xf
mov eax, dword [esp + 0x20]
push edx
push eax
lea ebx, [esp + 0x34]
call fcn.10008a30
mov eax, dword [esp + 0x2c]
lea ecx, [eax - 0xc]
cmp ecx, 0x1006eb34
je 0x100030e7
lea esi, [eax - 0xc]
push esi
call dword [sym.imp.KERNEL32.dll_InterlockedDecrement]
test eax, eax
jg 0x100030e7
push esi
call sub.MSVCR80.dll_void___cdecl_operator_delete___void__
add esp, 4
mov byte [esp + 0x168], 9
mov eax, dword [esp + 0x24]
lea edx, [eax - 0xc]
cmp edx, 0x1006eb34
je 0x1000311c
add eax, 0xfffffff4
push eax
call dword [sym.imp.KERNEL32.dll_InterlockedDecrement]
test eax, eax
jg 0x1000311c
mov eax, dword [esp + 0x24]
add eax, 0xfffffff4
push eax
call sub.MSVCR80.dll_void___cdecl_operator_delete___void__
add esp, 4
lea ecx, [esp + 0x94]
lea edi, [esp + 0x118]
call fcn.1000fe50
test al, al
jne 0x10002dc1
push str.SELECT__Directory_._Directory___Directory_._Directory_Parent___Directory_._DefaultDir_
push str.SELECT__Directory_._Directory___Directory_._Directory_Parent___Directory_._DefaultDir_
call dword [sym.imp.KERNEL32.dll_lstrlenW]
mov ebx, eax
lea esi, [esp + 0x1c]
call fcn.100158a0
mov edi, dword [sym.imp.KERNEL32.dll_lstrlenW]
push str.FROM__Directory___Component___AdskCustomFile_
call edi
test eax, eax
je 0x10003173
mov esi, eax
mov edx, str.FROM__Directory___Component___AdskCustomFile_
lea eax, [esp + 0x18]
call fcn.10013510
push str.WHERE__AdskCustomFile_._Component___Component_._Component_
call edi
test eax, eax
je 0x1000318e
mov esi, eax
mov edx, str.WHERE__AdskCustomFile_._Component___Component_._Component_
lea eax, [esp + 0x18]
call fcn.10013510
push str.AND__Component_._Directory___Directory_._Directory_
call edi
test eax, eax
je 0x100031a9
mov esi, eax
mov edx, str.AND__Component_._Directory___Directory_._Directory_
lea eax, [esp + 0x18]
call fcn.10013510
mov eax, dword [ebp + 8]
mov eax, dword [eax + 0x28]
mov ecx, dword [esp + 0x18]
xor esi, esi
mov dword [esp + 0xf8], ecx
mov dword [esp + 0xfc], 7
mov dword [esp + 0x100], eax
mov dword [esp + 0x104], esi
mov eax, dword [0x1006eb44]
mov dword [esp + 0xbc], eax
mov dword [esp + 0xb0], vtable.DirectoryData.0
mov dword [esp + 0xb4], vtable.DirectoryData.1.0
mov dword [esp + 0xc0], eax
mov dword [esp + 0xc4], eax
mov dword [esp + 0xc8], eax
mov byte [esp + 0x168], 0x11
call fcn.1000c820
mov dword [esp + 0x80], eax
mov byte [eax + 0x15], 1
mov eax, dword [esp + 0x80]
mov dword [eax + 4], eax
mov eax, dword [esp + 0x80]
mov dword [eax], eax
mov eax, dword [esp + 0x80]
mov dword [eax + 8], eax
mov dword [esp + 0x84], esi
lea ecx, [esp + 0xb0]
lea edi, [esp + 0xf8]
mov byte [esp + 0x168], 0x12
call fcn.1000fe50
test al, al
je 0x10003631
jmp 0x10003270
lea edi, [esp + 0xc0]
call fcn.1004b3c0
test al, al
je 0x10003616
mov eax, dword [esp + 0x5c]
mov esi, dword [eax + 4]
cmp byte [esi + 0x15], 0
mov ebx, eax
mov edi, eax
jne 0x100032c1
mov edx, dword [esp + 0xc0]
mov eax, dword [esi + 0xc]
push edx
push eax
call dword [sym.imp.MSVCR80.dll__wcsicmp]
add esp, 8
test eax, eax
jge 0x100032b3
mov esi, dword [esi + 8]
jmp 0x100032b7
mov edi, esi
mov esi, dword [esi]
cmp byte [esi + 0x15], 0
je 0x10003295
mov eax, dword [esp + 0x5c]
cmp edi, eax
lea ecx, [esp + 0x58]
mov dword [esp + 0x48], edi
mov dword [esp + 0x44], ecx
je 0x100032f4
mov edi, dword [edi + 0xc]
mov edx, dword [esp + 0xc0]
push edi
push edx
call dword [sym.imp.MSVCR80.dll__wcsicmp]
add esp, 8
test eax, eax
jl 0x100032f0
lea eax, [esp + 0x44]
jmp 0x10003304
mov eax, dword [esp + 0x5c]
mov dword [esp + 0x30], eax
lea eax, [esp + 0x58]
mov dword [esp + 0x2c], eax
lea eax, [esp + 0x2c]
mov ecx, dword [eax]
test ecx, ecx
mov esi, dword [eax + 4]
je 0x10003315
lea edx, [esp + 0x58]
cmp ecx, edx
je 0x1000331b
call dword [sym.imp.MSVCR80.dll__invalid_parameter_noinfo]
cmp esi, ebx
jne 0x10003616
push 0x1c
call sub.MSVCR80.dll_void____cdecl_operator_new_unsigned_int_
add esp, 4
test eax, eax
je 0x10003377
mov dword [eax], vtable.IMsiReader.0
mov dword [eax + 4], vtable.IMsiWriter.0
mov ecx, dword [0x1006eb44]
mov dword [eax + 0xc], ecx
mov dword [eax], vtable.DirectoryData.0
mov dword [eax + 4], vtable.DirectoryData.1.0
mov edx, dword [0x1006eb44]
mov dword [eax + 0x10], edx
mov ecx, dword [0x1006eb44]
mov dword [eax + 0x14], ecx
mov edx, dword [0x1006eb44]
mov esi, eax
mov dword [eax + 0x18], edx
mov dword [esp + 0x1c], esi
jmp 0x10003383
mov dword [esp + 0x1c], 0
mov esi, dword [esp + 0x1c]
mov eax, dword [esp + 0xb8]
mov dword [esi + 8], eax
lea eax, [esi + 0xc]
lea edi, [esp + 0xbc]
call fcn.10015ac0
lea ebx, [esi + 0x10]
lea edi, [esp + 0xc0]
mov eax, ebx
mov dword [esp + 0x34], ebx
call fcn.10015ac0
lea eax, [esi + 0x14]
lea edi, [esp + 0xc4]
call fcn.10015ac0
lea eax, [esi + 0x18]
lea edi, [esp + 0xc8]
call fcn.10015ac0
mov eax, dword [ebx]
cmp dword [eax - 0xc], 0
push esi
push ecx
mov dword [esp + 0x40], esp
mov edi, esp
jl 0x100033ed
mov dword [edi], eax
add eax, 0xfffffff4
push eax
call dword [sym.imp.KERNEL32.dll_InterlockedIncrement]
jmp 0x10003414
mov ecx, dword [0x1006eb44]
mov dword [edi], ecx
mov ebx, dword [ebx]
test ebx, ebx
jne 0x100033ff
xor eax, eax
jmp 0x10003406
push ebx
call dword [sym.imp.KERNEL32.dll_lstrlenW]
push ebx
mov ebx, eax
mov esi, edi
call fcn.100158a0
mov esi, dword [esp + 0x24]
lea ecx, [esp + 0x90]
call fcn.1000fd50
add esp, 8
mov dword [esp + 0x38], eax
mov byte [esp + 0x168], 0x13
mov ebx, dword [eax]
cmp dword [ebx - 0xc], 0
jl 0x10003449
mov edi, ebx
lea edx, [edi - 0xc]
push edx
mov dword [esp + 0x28], edi
call dword [sym.imp.KERNEL32.dll_InterlockedIncrement]
jmp 0x10003475
test ebx, ebx
mov eax, dword [0x1006eb44]
mov dword [esp + 0x24], eax
jne 0x1000345a
xor eax, eax
jmp 0x10003461
push ebx
call dword [sym.imp.KERNEL32.dll_lstrlenW]
push ebx
mov ebx, eax
lea esi, [esp + 0x28]
call fcn.100158a0
mov edi, dword [esp + 0x24]
mov esi, dword [esp + 0x1c]
mov ecx, dword [esp + 0x38]
mov edx, dword [ecx + 4]
mov dword [esp + 0x28], edx
lea eax, [esp + 0xe8]
push eax
lea ecx, [esp + 0x80]
push ecx
lea ebx, [esp + 0x2c]
mov byte [esp + 0x170], 0x14
call fcn.10008a30
lea edx, [edi - 0xc]
cmp edx, 0x1006eb34
je 0x100034c3
add edi, 0xfffffff4
push edi
call dword [sym.imp.KERNEL32.dll_InterlockedDecrement]
test eax, eax
jg 0x100034c3
push edi
call sub.MSVCR80.dll_void___cdecl_operator_delete___void__
add esp, 4
mov byte [esp + 0x168], 0x12
mov eax, dword [esp + 0x88]
lea ecx, [eax - 0xc]
cmp ecx, 0x1006eb34
je 0x100034fe
add eax, 0xfffffff4
push eax
call dword [sym.imp.KERNEL32.dll_InterlockedDecrement]
test eax, eax
jg 0x100034fe
mov eax, dword [esp + 0x88]
add eax, 0xfffffff4
push eax
call sub.MSVCR80.dll_void___cdecl_operator_delete___void__
add esp, 4
push esi
push ecx
mov ecx, dword [esp + 0x3c]
mov eax, dword [ecx]
cmp dword [eax - 0xc], 0
mov dword [esp + 0x40], esp
mov edi, esp
jl 0x10003520
mov dword [edi], eax
add eax, 0xfffffff4
push eax
call dword [sym.imp.KERNEL32.dll_InterlockedIncrement]
jmp 0x10003543
mov edx, dword [0x1006eb44]
mov dword [edi], edx
mov esi, dword [ecx]
test esi, esi
jne 0x10003532
xor eax, eax
jmp 0x10003539
push esi
call dword [sym.imp.KERNEL32.dll_lstrlenW]
push esi
mov ebx, eax
mov esi, edi
call fcn.100158a0
lea ecx, [esp + 0x78]
call fcn.1000fd50
add esp, 8
mov edi, eax
mov byte [esp + 0x168], 0x15
mov esi, dword [edi]
cmp dword [esi - 0xc], 0
jl 0x10003571
lea eax, [esi - 0xc]
push eax
mov dword [esp + 0x50], esi
call dword [sym.imp.KERNEL32.dll_InterlockedIncrement]
jmp 0x1000359a
test esi, esi
mov ecx, dword [0x1006eb44]
mov dword [esp + 0x4c], ecx
jne 0x10003583
xor eax, eax
jmp 0x1000358a
push esi
call dword [sym.imp.KERNEL32.dll_lstrlenW]
push esi
mov ebx, eax
lea esi, [esp + 0x50]
call fcn.100158a0
mov esi, dword [esp + 0x4c]
mov edx, dword [edi + 4]
mov dword [esp + 0x50], edx
lea eax, [esp + 0x150]
push eax
lea ecx, [esp + 0x5c]
push ecx
lea ebx, [esp + 0x54]
mov byte [esp + 0x170], 0x16
call fcn.10008a30
lea edx, [esi - 0xc]
cmp edx, 0x1006eb34
je 0x100035e1
add esi, 0xfffffff4
push esi
call dword [sym.imp.KERNEL32.dll_InterlockedDecrement]
test eax, eax
jg 0x100035e1
push esi
call sub.MSVCR80.dll_void___cdecl_operator_delete___void__
add esp, 4
mov byte [esp + 0x168], 0x12
mov eax, dword [esp + 0x70]
lea ecx, [eax - 0xc]
cmp ecx, 0x1006eb34
je 0x10003616
add eax, 0xfffffff4
push eax
call dword [sym.imp.KERNEL32.dll_InterlockedDecrement]
test eax, eax
jg 0x10003616
mov eax, dword [esp + 0x70]
add eax, 0xfffffff4
push eax
call sub.MSVCR80.dll_void___cdecl_operator_delete___void__
add esp, 4
lea ecx, [esp + 0xb0]
lea edi, [esp + 0xf8]
call fcn.1000fe50
test al, al
jne 0x10003270
mov edx, dword [esp + 0x80]
mov esi, dword [edx]
lea ebx, [esp + 0x7c]
mov dword [esp + 0x2c], ebx
mov dword [esp + 0x30], esi
test ebx, ebx
mov edi, dword [esp + 0x80]
je 0x10003659
lea eax, [esp + 0x7c]
cmp ebx, eax
je 0x1000365f
call dword [sym.imp.MSVCR80.dll__invalid_parameter_noinfo]
cmp esi, edi
je 0x10003896
test ebx, ebx
jne 0x10003671
call dword [sym.imp.MSVCR80.dll__invalid_parameter_noinfo]
cmp esi, dword [ebx + 4]
jne 0x1000367c
call dword [sym.imp.MSVCR80.dll__invalid_parameter_noinfo]
mov eax, dword [esi + 0x10]
lea ecx, [esp + 0x14]
push ecx
mov ecx, dword [ebp + 8]
lea edx, [esp + 0x5c]
push edx
push eax
mov dword [esp + 0x28], eax
call fcn.100069d0
mov eax, dword [esp + 0x14]
cmp dword [eax - 8], 0
je 0x10003646
mov edi, dword [esp + 0x20]
mov ecx, dword [edi + 4]
mov eax, ecx
mov esi, dword [eax + 4]
cmp byte [esi + 0x15], 0
mov dword [esp + 0x50], ecx
mov ebx, eax
jne 0x100036dd
mov edx, dword [esp + 0x14]
mov eax, dword [esi + 0xc]
push edx
push eax
call dword [sym.imp.MSVCR80.dll__wcsicmp]
add esp, 8
test eax, eax
jge 0x100036d3
mov esi, dword [esi + 8]
jmp 0x100036d7
mov ebx, esi
mov esi, dword [esi]
cmp byte [esi + 0x15], 0
je 0x100036b8
cmp ebx, dword [edi + 4]
mov dword [esp + 0x74], ebx
mov dword [esp + 0x70], edi
je 0x10003706
mov ebx, dword [ebx + 0xc]
mov eax, dword [esp + 0x14]
push ebx
push eax
call dword [sym.imp.MSVCR80.dll__wcsicmp]
add esp, 8
test eax, eax
jl 0x10003706
lea eax, [esp + 0x70]
jmp 0x1000371e
mov ecx, dword [edi + 4]
mov dword [esp + 0x8c], ecx
mov dword [esp + 0x88], edi
lea eax, [esp + 0x88]
mov ecx, dword [eax]
test ecx, ecx
mov esi, dword [eax + 4]
je 0x1000372b
cmp ecx, edi
je 0x10003731
call dword [sym.imp.MSVCR80.dll__invalid_parameter_noinfo]
cmp esi, dword [esp + 0x50]
jne 0x1000386c
mov edx, dword [esp + 0x1c]
mov eax, dword [esp + 0x14]
cmp dword [eax - 0xc], 0
push edx
push ecx
mov dword [esp + 0x3c], esp
mov esi, esp
jl 0x10003763
mov dword [esi], eax
mov eax, dword [esp + 0x1c]
add eax, 0xfffffff4
push eax
call dword [sym.imp.KERNEL32.dll_InterlockedIncrement]
jmp 0x10003784
mov ecx, dword [0x1006eb44]
mov dword [esi], ecx
mov eax, dword [esp + 0x1c]
test eax, eax
mov edi, eax
je 0x1000377c
push eax
call dword [sym.imp.KERNEL32.dll_lstrlenW]
push edi
mov ebx, eax
call fcn.100158a0
lea ecx, [esp + 0x4c]
call fcn.1000fd50
add esp, 8
mov edi, eax
mov byte [esp + 0x168], 0x17
mov esi, dword [edi]
cmp dword [esi - 0xc], 0
jl 0x100037b2
lea edx, [esi - 0xc]
push edx
mov dword [esp + 0x28], esi
call dword [sym.imp.KERNEL32.dll_InterlockedIncrement]
jmp 0x100037da
test esi, esi
mov eax, dword [0x1006eb44]
mov dword [esp + 0x24], eax
jne 0x100037c3
xor eax, eax
jmp 0x100037ca
push esi
call dword [sym.imp.KERNEL32.dll_lstrlenW]
push esi
mov ebx, eax
lea esi, [esp + 0x28]
call fcn.100158a0
mov esi, dword [esp + 0x24]
mov ecx, dword [edi + 4]
mov dword [esp + 0x28], ecx
lea edx, [esp + 0x150]
mov byte [esp + 0x168], 0x18
mov eax, dword [esp + 0x20]
push edx
push eax
lea ebx, [esp + 0x2c]
call fcn.10008a30
lea ecx, [esi - 0xc]
cmp ecx, 0x1006eb34
je 0x10003821
add esi, 0xfffffff4
push esi
call dword [sym.imp.KERNEL32.dll_InterlockedDecrement]
test eax, eax
jg 0x10003821
push esi
call sub.MSVCR80.dll_void___cdecl_operator_delete___void__
add esp, 4
mov byte [esp + 0x168], 0x12
mov eax, dword [esp + 0x44]
lea edx, [eax - 0xc]
cmp edx, 0x1006eb34
je 0x10003880
add eax, 0xfffffff4
push eax
call dword [sym.imp.KERNEL32.dll_InterlockedDecrement]
test eax, eax
jg 0x10003880
mov eax, dword [esp + 0x44]
add eax, 0xfffffff4
push eax
call sub.MSVCR80.dll_void___cdecl_operator_delete___void__
add esp, 4
lea esi, [esp + 0x2c]
call fcn.1000af80
mov esi, dword [esp + 0x30]
mov ebx, dword [esp + 0x2c]
jmp 0x10003646
mov ecx, dword [esp + 0x1c]
test ecx, ecx
je 0x10003880
mov edx, dword [ecx + 4]
mov eax, dword [edx]
add ecx, 4
push 1
call eax
lea esi, [esp + 0x2c]
call fcn.1000af80
mov esi, dword [esp + 0x30]
mov ebx, dword [esp + 0x2c]
jmp 0x10003646
mov eax, dword [esp + 0x20]
mov ecx, dword [eax + 4]
mov ecx, dword [ecx]
mov esi, eax
mov ebx, ecx
mov dword [esp + 0x3c], esi
mov dword [esp + 0x40], ebx
jmp 0x100038b0
test esi, esi
mov edi, dword [eax + 4]
je 0x100038bb
cmp esi, eax
je 0x100038c1
call dword [sym.imp.MSVCR80.dll__invalid_parameter_noinfo]
cmp ebx, edi
je 0x1000391b
test esi, esi
jne 0x100038cf
call dword [sym.imp.MSVCR80.dll__invalid_parameter_noinfo]
cmp ebx, dword [esi + 4]
jne 0x100038da
call dword [sym.imp.MSVCR80.dll__invalid_parameter_noinfo]
cmp ebx, dword [esi + 4]
mov edi, dword [ebx + 0x10]
jne 0x100038e8
call dword [sym.imp.MSVCR80.dll__invalid_parameter_noinfo]
push 0
add edi, 0x10
push ecx
call fcn.1004b3c0
mov ecx, dword [ebp + 8]
add esp, 4
add ebx, 0xc
push eax
push edi
push ebx
call fcn.10005980
lea esi, [esp + 0x3c]
call fcn.1000af80
mov ebx, dword [esp + 0x40]
mov esi, dword [esp + 0x3c]
mov eax, dword [esp + 0x20]
jmp 0x100038b0
mov eax, dword [0x1006eb44]
mov dword [esp + 0xd8], eax
mov dword [esp + 0xcc], vtable.CustomFileData.0
mov dword [esp + 0xd0], vtable.CustomFileData.1.0
mov dword [esp + 0xdc], eax
mov dword [esp + 0xe0], eax
mov byte [esp + 0x168], 0x19
call fcn.1000c750
mov dword [esp + 0x68], eax
mov byte [eax + 0x2d], 1
mov eax, dword [esp + 0x68]
mov dword [eax + 4], eax
mov eax, dword [esp + 0x68]
mov dword [eax], eax
mov eax, dword [esp + 0x68]
xor ecx, ecx
mov dword [eax + 8], eax
mov dword [esp + 0x6c], ecx
mov eax, dword [0x1006eb44]
mov dword [esp + 0x134], eax
mov dword [esp + method.ComponentData.virtual_0], vtable.ComponentData.0
mov dword [esp + method.ComponentData.1.virtual_0], vtable.ComponentData.1.0
mov dword [esp + 0x138], eax
mov dword [esp + 0x13c], eax
mov dword [esp + 0x140], eax
mov dword [esp + 0x148], eax
mov dword [esp + 0x14c], eax
mov dword [esp + 0x20], eax
mov edx, dword [ebp + 8]
mov eax, dword [edx + 0x28]
mov dword [esp + 0x108], str.SELECT__FROM__AdskCustomFile__WHERE__Flags_0
mov dword [esp + 0x10c], 3
mov dword [esp + 0x110], eax
mov dword [esp + 0x114], ecx
lea ecx, [esp + 0xcc]
lea edi, [esp + 0x108]
mov byte [esp + 0x168], 0x1d
call fcn.1000fe50
test al, al
je 0x10003ecd
test byte [0x10071538], 1
mov esi, dword [ebp + 8]
jne 0x10003aa6
or dword [0x10071538], 1
mov byte [esp + 0x168], 0x1e
mov eax, dword [0x1006eb44]
mov ecx, str.SELECT__Directory___FROM__Component__WHERE__Component__s
shr ecx, 0x10
mov dword [0x10071534], eax
jne 0x10003a58
mov edx, str.SELECT__Directory___FROM__Component__WHERE__Component__s
movzx eax, dx
push eax
mov ecx, 0x10071534
call fcn.10013a10
jmp 0x10003a91
push str.SELECT__Directory___FROM__Component__WHERE__Component__s
call dword [sym.imp.KERNEL32.dll_lstrlenW]
mov edi, eax
test edi, edi
je 0x10003a91
mov ecx, edi
mov edx, 0x10071534
call fcn.10011c80
test eax, eax
je 0x10003a91
mov ecx, dword [0x10071534]
lea eax, [edi + edi]
push eax
push str.SELECT__Directory___FROM__Component__WHERE__Component__s
push ecx
call sub.MSVCR80.dll_memcpy
add esp, 0xc
push 0x1005c530
call fcn.10056d2b
add esp, 4
mov byte [esp + 0x168], 0x1d
mov edx, dword [esp + 0xdc]
mov eax, dword [0x10071534]
push edx
push eax
lea edx, [esp + 0x20]
call fcn.10014ab0
mov eax, dword [esi + 0x28]
mov ecx, dword [esp + 0x20]
add esp, 8
mov dword [esp + 0xe8], ecx
mov dword [esp + 0xec], 4
mov dword [esp + 0xf0], eax
mov dword [esp + 0xf4], 0
lea ecx, [esp + 0x128]
lea edi, [esp + 0xe8]
mov byte [esp + 0x168], 0x1f
call fcn.1000fe50
test al, al
je 0x10003e99
lea edx, [esp + 0x14]
push edx
push esi
lea ecx, [esp + 0x148]
call fcn.10006bb0
mov eax, dword [esp + 0xe0]
push eax
call dword [sym.imp.SHLWAPI.dll_PathFindFileNameW]
mov esi, eax
test esi, esi
jne 0x10003b38
xor edi, edi
jmp 0x10003b41
push esi
call dword [sym.imp.KERNEL32.dll_lstrlenW]
mov edi, eax
mov eax, dword [esp + 0x20]
cmp dword [eax - 0xc], 1
lea ebx, [eax - 0xc]
jg 0x10003b53
cmp edi, dword [eax - 4]
jle 0x10003b8a
add eax, 0xfffffff4
cmp eax, 0x1006eb34
je 0x10003b7b
push ebx
call dword [sym.imp.KERNEL32.dll_InterlockedDecrement]
test eax, eax
jg 0x10003b71
push ebx
call sub.MSVCR80.dll_void___cdecl_operator_delete___void__
add esp, 4
mov ecx, dword [0x1006eb44]
mov dword [esp + 0x20], ecx
mov ecx, edi
lea edx, [esp + 0x20]
call fcn.10011c80
test eax, eax
je 0x10003ba9
mov edx, dword [esp + 0x20]
lea ebx, [edi + edi]
push ebx
push esi
push edx
call sub.MSVCR80.dll_memcpy
mov eax, dword [esp + 0x2c]
mov dword [eax - 8], edi
add esp, 0xc
mov word [ebx + eax], 0
mov eax, dword [esp + 0x14]
cmp dword [eax - 0xc], 1
mov esi, dword [esp + 0x20]
mov edi, dword [eax - 8]
mov ecx, dword [esi - 8]
lea ebx, [eax - 0xc]
lea ecx, [ecx + edi + 2]
jg 0x10003bc9
cmp ecx, dword [eax - 4]
jle 0x10003c18
cmp ecx, edi
lea edx, [esp + 0x14]
cmovl ecx, edi
call fcn.10011c80
test eax, eax
je 0x10003c18
mov edx, dword [esp + 0x14]
lea eax, [edi + edi + 2]
push eax
lea ecx, [ebx + 0xc]
push ecx
push edx
call sub.MSVCR80.dll_memcpy
mov eax, dword [esp + 0x20]
add esp, 0xc
cmp ebx, 0x1006eb34
mov dword [eax - 8], edi
je 0x10003c14
push ebx
call dword [sym.imp.KERNEL32.dll_InterlockedDecrement]
test eax, eax
jg 0x10003c14
push ebx
call sub.MSVCR80.dll_void___cdecl_operator_delete___void__
add esp, 4
mov eax, dword [esp + 0x14]
push esi
push eax
call dword [sym.imp.SHLWAPI.dll_PathAppendW]
mov eax, dword [esp + 0x14]
cmp dword [eax - 0xc], 1
lea edi, [eax - 0xc]
jle 0x10003c85
add eax, 0xfffffff4
cmp eax, 0x1006eb34
je 0x10003c5c
push edi
call dword [sym.imp.KERNEL32.dll_InterlockedDecrement]
test eax, eax
jg 0x10003c52
mov eax, dword [esp + 0x14]
add eax, 0xfffffff4
push eax
call sub.MSVCR80.dll_void___cdecl_operator_delete___void__
add esp, 4
mov ecx, dword [0x1006eb44]
mov dword [esp + 0x14], ecx
mov ecx, dword [edi + 4]
lea edx, [esp + 0x14]
call fcn.10011c80
test eax, eax
je 0x10003c85
mov edx, dword [edi + 4]
mov ecx, dword [esp + 0x14]
lea eax, [edx + edx + 2]
push eax
add edi, 0xc
push edi
push ecx
call sub.MSVCR80.dll_memcpy
add esp, 0xc
mov edx, dword [esp + 0x14]
push edx
call dword [sym.imp.KERNEL32.dll_lstrlenW]
mov ecx, dword [esp + 0x14]
mov dword [ecx - 8], eax
mov edx, dword [esp + 0x14]
mov word [edx + eax*2], 0
mov eax, dword [esp + 0x14]
cmp dword [eax - 8], 0
je 0x10003e99
mov esi, dword [0x10070c5c]
lea ecx, [esp + 0x70]
push ecx
lea edi, [esp + 0xe0]
mov ebx, 0x10070c58
call fcn.1003f280
mov edi, eax
mov eax, dword [edi]
test eax, eax
je 0x10003cd7
cmp eax, ebx
je 0x10003cdd
call dword [sym.imp.MSVCR80.dll__invalid_parameter_noinfo]
cmp dword [edi + 4], esi
jne 0x10003e7a
mov eax, dword [esp + 0x14]
cmp dword [eax - 0xc], 0
push ecx
mov dword [esp + 0x38], esp
mov edi, esp
jl 0x10003d09
mov dword [edi], eax
mov edx, dword [esp + 0x18]
add edx, 0xfffffff4
push edx
call dword [sym.imp.KERNEL32.dll_InterlockedIncrement]
jmp 0x10003d2b
mov eax, dword [0x1006eb44]
mov dword [edi], eax
mov eax, dword [esp + 0x18]
test eax, eax
mov esi, eax
je 0x10003d21
push eax
call dword [sym.imp.KERNEL32.dll_lstrlenW]
push esi
mov ebx, eax
mov esi, edi
call fcn.100158a0
mov byte [esp + 0x16c], 0x20
mov eax, dword [esp + 0xe0]
cmp dword [eax - 0xc], 0
push ecx
mov dword [esp + 0x40], esp
mov edi, esp
jl 0x10003d5c
mov dword [edi], eax
mov ecx, dword [esp + 0xe4]
add ecx, 0xfffffff4
push ecx
call dword [sym.imp.KERNEL32.dll_InterlockedIncrement]
jmp 0x10003d82
mov edx, dword [0x1006eb44]
mov dword [edi], edx
mov eax, dword [esp + 0xe4]
test eax, eax
mov esi, eax
je 0x10003d78
push eax
call dword [sym.imp.KERNEL32.dll_lstrlenW]
push esi
mov ebx, eax
mov esi, edi
call fcn.100158a0
lea ebx, [esp + 0x34]
mov byte [esp + 0x170], 0x1f
call fcn.1000fca0
add esp, 8
push eax
lea eax, [esp + 0x28]
push eax
mov byte [esp + 0x170], 0x21
call fcn.1000c8d0
lea ecx, [esp + 0x24]
push ecx
lea edx, [esp + 0x154]
push edx
push 0x10070c58
mov byte [esp + 0x174], 0x22
call fcn.10008050
mov eax, dword [esp + 0x28]
mov esi, dword [sym.imp.KERNEL32.dll_InterlockedDecrement]
lea ecx, [eax - 0xc]
cmp ecx, 0x1006eb34
je 0x10003df7
add eax, 0xfffffff4
push eax
call esi
test eax, eax
jg 0x10003df7
mov eax, dword [esp + 0x28]
add eax, 0xfffffff4
push eax
call sub.MSVCR80.dll_void___cdecl_operator_delete___void__
add esp, 4
mov eax, dword [esp + 0x24]
lea edx, [eax - 0xc]
cmp edx, 0x1006eb34
je 0x10003e20
add eax, 0xfffffff4
push eax
call esi
test eax, eax
jg 0x10003e20
mov eax, dword [esp + 0x24]
add eax, 0xfffffff4
push eax
call sub.MSVCR80.dll_void___cdecl_operator_delete___void__
add esp, 4
mov byte [esp + 0x168], 0x1f
mov eax, dword [esp + 0x30]
lea ecx, [eax - 0xc]
cmp ecx, 0x1006eb34
je 0x10003e51
add eax, 0xfffffff4
push eax
call esi
test eax, eax
jg 0x10003e51
mov eax, dword [esp + 0x30]
add eax, 0xfffffff4
push eax
call sub.MSVCR80.dll_void___cdecl_operator_delete___void__
add esp, 4
mov eax, dword [esp + 0x2c]
lea edx, [eax - 0xc]
cmp edx, 0x1006eb34
je 0x10003e7a
add eax, 0xfffffff4
push eax
call esi
test eax, eax
jg 0x10003e7a
mov eax, dword [esp + 0x2c]
add eax, 0xfffffff4
push eax
call sub.MSVCR80.dll_void___cdecl_operator_delete___void__
add esp, 4
mov eax, dword [esp + 0xe0]
push eax
push 1
lea ecx, [esp + 0xe4]
push ecx
mov ecx, dword [ebp + 8]
lea edx, [esp + 0x20]
push edx
call fcn.10005980
mov byte [esp + 0x168], 0x1d
mov eax, dword [esp + 0xf4]
test eax, eax
je 0x10003eb2
push eax
call sub.msi.dll_MsiConfigureFeatureFromDescriptorA
lea ecx, [esp + 0xcc]
lea edi, [esp + 0x108]
call fcn.1000fe50
test al, al
jne 0x10003a10
mov eax, dword [esp + 0x114]
xor ebx, ebx
cmp eax, ebx
je 0x10003ee0
push eax
call sub.msi.dll_MsiConfigureFeatureFromDescriptorA
mov eax, dword [esp + 0x20]
lea ecx, [eax - 0xc]
cmp ecx, 0x1006eb34
je 0x10003f06
lea esi, [eax - 0xc]
push esi
call dword [sym.imp.KERNEL32.dll_InterlockedDecrement]
test eax, eax
jg 0x10003f06
push esi
call sub.MSVCR80.dll_void___cdecl_operator_delete___void__
add esp, 4
lea ecx, [esp + 0x128]
call fcn.10014fa0
mov byte [esp + 0x168], 0x19
mov eax, dword [esp + 0x68]
mov edx, dword [eax]
push eax
lea ecx, [esp + 0x68]
push ecx
push edx
mov esi, ecx
push esi
lea edx, [esp + 0x80]
push edx
mov edi, ecx
call fcn.1000bd60
mov eax, dword [esp + 0x68]
push eax
call sub.MSVCR80.dll_void___cdecl_operator_delete_void__
add esp, 4
lea ecx, [esp + 0xcc]
mov dword [esp + 0x68], ebx
mov dword [esp + 0x6c], ebx
call fcn.100150b0
lea eax, [esp + 0x7c]
mov byte [esp + 0x168], 0x11
call fcn.10035950
lea ecx, [esp + 0xb0]
call fcn.10015240
mov eax, dword [esp + 0x104]
cmp eax, ebx
je 0x10003f88
push eax
call sub.msi.dll_MsiConfigureFeatureFromDescriptorA
lea ecx, [esp + 0x94]
call fcn.10015240
mov eax, dword [esp + 0x124]
cmp eax, ebx
je 0x10003fa5
push eax
call sub.msi.dll_MsiConfigureFeatureFromDescriptorA
mov eax, dword [esp + 0x18]
lea ecx, [eax - 0xc]
cmp ecx, 0x1006eb34
je 0x10003fcb
lea esi, [eax - 0xc]
push esi
call dword [sym.imp.KERNEL32.dll_InterlockedDecrement]
test eax, eax
jg 0x10003fcb
push esi
call sub.MSVCR80.dll_void___cdecl_operator_delete___void__
add esp, 4
mov eax, dword [esp + 0x14]
lea edx, [eax - 0xc]
cmp edx, 0x1006eb34
je 0x10003ff8
add eax, 0xfffffff4
push eax
call dword [sym.imp.KERNEL32.dll_InterlockedDecrement]
test eax, eax
jg 0x10003ff8
mov eax, dword [esp + 0x14]
add eax, 0xfffffff4
push eax
call sub.MSVCR80.dll_void___cdecl_operator_delete___void__
add esp, 4
lea eax, [esp + 0x58]
mov dword [esp + 0x168], 0xffffffff
call fcn.10035950
mov ecx, dword [esp + 0x160]
mov dword fs:[0], ecx
pop ecx
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
ret 4