Function at 0x10002bf0
Capabilities:
Resolve function by parsing pe exports

Disassembly:
push ebp
mov ebp, esp
and esp, 0xfffffff8
sub esp, 0x45c
mov eax, dword [0x1015dfe0]
xor eax, esp
mov dword [esp + 0x458], eax
mov eax, dword [ebp + 8]
mov ecx, dword [ebp + 0x10]
push ebx
push esi
push edi
xor esi, esi
lea edx, [esp + 0x338]
push edx
push str.C:HnipDllLog.ini
mov dword [esp + 0x30], eax
mov dword [esp + 0x78], ecx
mov dword [esp + 0x340], esi
mov dword [esp + 0x344], esi
mov dword [esp + 0x348], esi
mov dword [esp + 0x34c], esi
mov dword [esp + 0x350], esi
mov dword [esp + 0x354], esi
call fcn.1000972e
mov eax, dword [esp + 0x338]
or eax, dword [esp + 0x33c]
je 0x10002c73
mov dword [0x1016503c], 1
push 0x200000
call fcn.100077f2
add esp, 4
mov ebx, eax
call fcn.10007d53
cmp eax, esi
jne 0x10002c95
push 0x80004005
call fcn.10001000
mov edx, dword [eax]
mov ecx, eax
mov eax, dword [edx + 0xc]
call eax
add eax, 0x10
mov dword [esp + 0x18], eax
call fcn.10007d53
cmp eax, esi
jne 0x10002cb8
push 0x80004005
call fcn.10001000
mov edx, dword [eax]
mov ecx, eax
mov eax, dword [edx + 0xc]
call eax
push 0x200000
add eax, 0x10
push 0
push ebx
mov dword [esp + 0x30], eax
call fcn.100f6740
mov esi, dword [esp + 0x34]
mov ecx, 0x11
mov edi, ebx
rep movsd dword es:[edi], dword [esi]
mov eax, ebx
add esp, 0xc
movsw word es:[edi], word [esi]
lea edx, [eax + 1]
lea esp, [esp]
mov cl, byte [eax]
inc eax
test cl, cl
jne 0x10002cf0
sub eax, edx
push eax
push ebx
lea ecx, [esp + 0x20]
call fcn.10004b90
cmp dword [0x10165038], 0
je 0x10002d83
push 0x10140f90
lea ecx, [esp + 0x1c]
push ecx
lea edx, [esp + 0x3c]
push str.HEADER_
push edx
call fcn.10004630
add esp, 0xc
push eax
lea eax, [esp + 0x1c]
push eax
call fcn.10004550
mov ecx, dword [eax]
add esp, 0xc
push 0
push 0
push ecx
call fcn.1000876c
mov eax, dword [esp + 0x14]
add eax, 0xfffffff0
lea edx, [eax + 0xc]
or ecx, 0xffffffff
lock xadd dword [edx], ecx
dec ecx
test ecx, ecx
jg 0x10002d63
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
mov eax, dword [edx + 4]
call eax
mov eax, dword [esp + 0x34]
add eax, 0xfffffff0
lea ecx, [eax + 0xc]
or edx, 0xffffffff
lock xadd dword [ecx], edx
dec edx
test edx, edx
jg 0x10002d83
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
mov eax, dword [edx + 4]
call eax
push 0x200000
push 0
push ebx
call fcn.100f6740
mov ecx, dword [ebp + 0xc]
mov edx, dword [esp + 0x34]
add esp, 0xc
add ecx, 0xffffffb6
push ecx
add edx, 0x4a
push edx
push ebx
call fcn.100f9ca0
mov eax, ebx
add esp, 0xc
lea edx, [eax + 1]
mov cl, byte [eax]
inc eax
test cl, cl
jne 0x10002db0
sub eax, edx
push eax
push ebx
lea ecx, [esp + 0x2c]
call fcn.10004b90
call fcn.10007d53
test eax, eax
jne 0x10002dd7
push 0x80004005
call fcn.10001000
mov edx, dword [eax]
mov ecx, eax
mov eax, dword [edx + 0xc]
call eax
add eax, 0x10
mov dword [esp + 0x38], eax
call fcn.10007d53
test eax, eax
jne 0x10002dfa
push 0x80004005
call fcn.10001000
mov edx, dword [eax]
mov ecx, eax
mov eax, dword [edx + 0xc]
call eax
add eax, 0x10
mov dword [esp + 0x60], eax
call fcn.10007d53
test eax, eax
jne 0x10002e1d
push 0x80004005
call fcn.10001000
mov edx, dword [eax]
mov ecx, eax
mov eax, dword [edx + 0xc]
call eax
add eax, 0x10
mov dword [esp + 0x5c], eax
call fcn.10007d53
test eax, eax
jne 0x10002e40
push 0x80004005
call fcn.10001000
mov edx, dword [eax]
mov ecx, eax
mov eax, dword [edx + 0xc]
call eax
push 0xa
push 0
lea ecx, [esp + 0x1c]
add eax, 0x10
push ecx
lea ecx, [esp + 0x24]
mov dword [esp + 0x60], eax
call fcn.100043b0
push eax
lea ecx, [esp + 0x3c]
call fcn.10004940
mov eax, dword [esp + 0x14]
add eax, 0xfffffff0
lea edx, [eax + 0xc]
or ecx, 0xffffffff
lock xadd dword [edx], ecx
dec ecx
test ecx, ecx
jg 0x10002e8c
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
mov eax, dword [edx + 4]
call eax
push 0x2c
push 0xa
lea ecx, [esp + 0x1c]
push ecx
lea ecx, [esp + 0x24]
call fcn.100043b0
push eax
lea ecx, [esp + 0x64]
call fcn.10004940
mov eax, dword [esp + 0x14]
add eax, 0xfffffff0
lea edx, [eax + 0xc]
or ecx, 0xffffffff
lock xadd dword [edx], ecx
dec ecx
test ecx, ecx
jg 0x10002ec8
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
mov eax, dword [edx + 4]
call eax
push 8
push 0x36
lea ecx, [esp + 0x1c]
push ecx
lea ecx, [esp + 0x24]
call fcn.100043b0
push eax
lea ecx, [esp + 0x60]
call fcn.10004940
mov eax, dword [esp + 0x14]
add eax, 0xfffffff0
lea edx, [eax + 0xc]
or ecx, 0xffffffff
lock xadd dword [edx], ecx
dec ecx
test ecx, ecx
jg 0x10002f04
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
mov eax, dword [edx + 4]
call eax
push 8
push 0x3e
lea ecx, [esp + 0x1c]
push ecx
lea ecx, [esp + 0x24]
call fcn.100043b0
push eax
lea ecx, [esp + 0x58]
call fcn.10004940
mov eax, dword [esp + 0x14]
add eax, 0xfffffff0
lea edx, [eax + 0xc]
or ecx, 0xffffffff
lock xadd dword [edx], ecx
dec ecx
test ecx, ecx
jg 0x10002f40
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
mov eax, dword [edx + 4]
call eax
call fcn.10007d53
test eax, eax
jne 0x10002f53
push 0x80004005
call fcn.10001000
mov edx, dword [eax]
mov ecx, eax
mov eax, dword [edx + 0xc]
call eax
push 0xa
add eax, 0x10
push str.IF_CRT_004
lea ecx, [esp + 0x40]
mov dword [esp + 0x70], eax
call fcn.10004b90
lea ecx, [esp + 0x5c]
push ecx
lea edx, [esp + 0x58]
push edx
lea eax, [esp + 0x68]
push eax
lea ecx, [esp + 0x44]
push ecx
lea edx, [esp + 0x44]
push edx
call fcn.10004490
add esp, 0xc
push eax
lea eax, [esp + 0x34]
push eax
call fcn.10004490
add esp, 0xc
push eax
lea ecx, [esp + 0x1c]
push ecx
call fcn.10004490
add esp, 0xc
push eax
lea ecx, [esp + 0x6c]
call fcn.10004940
mov eax, dword [esp + 0x14]
add eax, 0xfffffff0
lea edx, [eax + 0xc]
or ecx, 0xffffffff
lock xadd dword [edx], ecx
dec ecx
test ecx, ecx
jg 0x10002fda
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
mov eax, dword [edx + 4]
call eax
mov eax, dword [esp + 0x28]
add eax, 0xfffffff0
lea ecx, [eax + 0xc]
or edx, 0xffffffff
lock xadd dword [ecx], edx
dec edx
test edx, edx
jg 0x10002ffa
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
mov eax, dword [edx + 4]
call eax
mov eax, dword [esp + 0x34]
add eax, 0xfffffff0
lea ecx, [eax + 0xc]
or edx, 0xffffffff
lock xadd dword [ecx], edx
dec edx
test edx, edx
jg 0x1000301a
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
mov eax, dword [edx + 4]
call eax
cmp dword [0x10165038], 0
je 0x10003099
push 0x10140f90
lea ecx, [esp + 0x28]
push ecx
lea edx, [esp + 0x30]
push str.DATA_
push edx
call fcn.10004630
add esp, 0xc
push eax
lea eax, [esp + 0x1c]
push eax
call fcn.10004550
mov ecx, dword [eax]
add esp, 0xc
push 0
push 0
push ecx
call fcn.1000876c
mov eax, dword [esp + 0x14]
add eax, 0xfffffff0
lea edx, [eax + 0xc]
or ecx, 0xffffffff
lock xadd dword [edx], ecx
dec ecx
test ecx, ecx
jg 0x10003079
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
mov eax, dword [edx + 4]
call eax
mov eax, dword [esp + 0x28]
add eax, 0xfffffff0
lea ecx, [eax + 0xc]
or edx, 0xffffffff
lock xadd dword [ecx], edx
dec edx
test edx, edx
jg 0x10003099
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
mov eax, dword [edx + 4]
call eax
push ebx
call fcn.100077e7
add esp, 4
call fcn.10007d53
test eax, eax
jne 0x100030b5
push 0x80004005
call fcn.10001000
mov edx, dword [eax]
mov ecx, eax
mov eax, dword [edx + 0xc]
call eax
push 1
push 5
lea ecx, [esp + 0x1c]
add eax, 0x10
push ecx
lea ecx, [esp + 0x30]
mov dword [esp + 0x48], eax
call fcn.100043b0
push eax
lea ecx, [esp + 0x40]
call fcn.10004940
mov eax, dword [esp + 0x14]
add eax, 0xfffffff0
lea edx, [eax + 0xc]
or ecx, 0xffffffff
lock xadd dword [edx], ecx
dec ecx
test ecx, ecx
jg 0x10003101
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
mov eax, dword [edx + 4]
call eax
cmp dword [0x10165038], 0
je 0x10003180
push 0x10140f90
lea ecx, [esp + 0x40]
push ecx
lea edx, [esp + 0x30]
push 0x10140fb4
push edx
call fcn.10004630
add esp, 0xc
push eax
lea eax, [esp + 0x1c]
push eax
call fcn.10004550
mov ecx, dword [eax]
add esp, 0xc
push 0
push 0
push ecx
call fcn.1000876c
mov eax, dword [esp + 0x14]
add eax, 0xfffffff0
lea edx, [eax + 0xc]
or ecx, 0xffffffff
lock xadd dword [edx], ecx
dec ecx
test ecx, ecx
jg 0x10003160
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
mov eax, dword [edx + 4]
call eax
mov eax, dword [esp + 0x28]
add eax, 0xfffffff0
lea ecx, [eax + 0xc]
or edx, 0xffffffff
lock xadd dword [ecx], edx
dec edx
test edx, edx
jg 0x10003180
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
mov eax, dword [edx + 4]
call eax
lea ecx, [esp + 0x130]
push ecx
call fcn.10006410
lea esi, [esp + 0x98]
call fcn.10005300
mov ebx, dword [esp + 0x3c]
push 0x10140fc0
push ebx
call fcn.100f4e68
add esp, 8
test eax, eax
jne 0x1000320a
mov eax, dword [esp + 0x18]
push ecx
add eax, 0xfffffff0
mov dword [esp + 0x14], esp
mov esi, esp
push eax
mov dword [esp + 0x30], eax
call fcn.10004c80
add eax, 0x10
mov dword [esi], eax
add esp, 4
lea esi, [esp + 0x134]
call fcn.10006c30
mov eax, dword [esp + 0x24]
push ecx
add eax, 0xfffffff0
mov dword [esp + 0x14], esp
mov esi, esp
push eax
mov dword [esp + 0x3c], eax
call fcn.10004c80
add esp, 4
lea edx, [esp + 0x134]
add eax, 0x10
push edx
mov dword [esi], eax
call fcn.10006db0
jmp 0x10003278
push 0x10140fc4
push ebx
call fcn.100f4e68
add esp, 8
test eax, eax
jne 0x10003f1e
mov eax, dword [esp + 0x18]
push ecx
add eax, 0xfffffff0
mov dword [esp + 0x14], esp
mov esi, esp
push eax
mov dword [esp + 0x30], eax
call fcn.10004c80
add eax, 0x10
mov dword [esi], eax
add esp, 4
lea esi, [esp + 0x9c]
call fcn.10005730
mov eax, dword [esp + 0x24]
push ecx
add eax, 0xfffffff0
mov dword [esp + 0x14], esp
mov esi, esp
push eax
mov dword [esp + 0x3c], eax
call fcn.10004c80
add eax, 0x10
add esp, 4
lea edi, [esp + 0x9c]
mov dword [esi], eax
call fcn.100058b0
push 0
call dword [sym.imp.ole32.dll_CoInitialize]
lea eax, [esp + 0x120]
push eax
push str.HNIPCOMSrv.HNIPCOMObject
call dword [sym.imp.ole32.dll_CLSIDFromProgID]
lea ecx, [esp + 0x30]
push ecx
push 0x1014108c
push 1
push 0
lea edx, [esp + 0x130]
push edx
call dword [sym.imp.ole32.dll_CoCreateInstance]
test eax, eax
jge 0x1000340d
mov edi, dword [esp + 0x68]
mov eax, dword [edi - 0xc]
mov ebx, dword [esp + 0x70]
push eax
push edi
push ebx
call fcn.100f9ca0
add esp, 0xc
push str.C504OCSDLL_LOAD_ERROR_
lea ecx, [esp + 0x18]
call fcn.10004140
mov esi, dword [esp + 0x14]
mov ecx, dword [esi - 0xc]
push ecx
push esi
add ebx, 0x4a
push ebx
call fcn.100f9ca0
mov ebx, dword [esi - 0xc]
add esi, 0xfffffff0
add esp, 0xc
add ebx, 0x4a
lea edx, [esi + 0xc]
or eax, 0xffffffff
lock xadd dword [edx], eax
dec eax
test eax, eax
jg 0x10003312
mov ecx, dword [esi]
mov edx, dword [ecx]
mov eax, dword [edx + 4]
push esi
call eax
lea eax, [esp + 0x98]
call fcn.10004f30
lea ecx, [esp + 0x130]
push ecx
call fcn.10006890
mov eax, dword [esp + 0x3c]
add eax, 0xfffffff0
lea edx, [eax + 0xc]
or ecx, 0xffffffff
lock xadd dword [edx], ecx
dec ecx
test ecx, ecx
jg 0x1000334b
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
mov eax, dword [edx + 4]
call eax
add edi, 0xfffffff0
lea ecx, [edi + 0xc]
or edx, 0xffffffff
lock xadd dword [ecx], edx
dec edx
test edx, edx
jg 0x10003367
mov ecx, dword [edi]
mov eax, dword [ecx]
mov edx, dword [eax + 4]
push edi
call edx
mov eax, dword [esp + 0x54]
add eax, 0xfffffff0
or edx, 0xffffffff
lea ecx, [eax + 0xc]
lock xadd dword [ecx], edx
dec edx
test edx, edx
jg 0x10003387
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
mov eax, dword [edx + 4]
call eax
mov eax, dword [esp + 0x5c]
add eax, 0xfffffff0
or edx, 0xffffffff
lea ecx, [eax + 0xc]
lock xadd dword [ecx], edx
dec edx
test edx, edx
jg 0x100033a7
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
mov eax, dword [edx + 4]
call eax
mov eax, dword [esp + 0x60]
add eax, 0xfffffff0
or edx, 0xffffffff
lea ecx, [eax + 0xc]
lock xadd dword [ecx], edx
dec edx
test edx, edx
jg 0x100033c7
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
mov eax, dword [edx + 4]
call eax
mov eax, dword [esp + 0x38]
add eax, 0xfffffff0
or edx, 0xffffffff
lea ecx, [eax + 0xc]
lock xadd dword [ecx], edx
dec edx
test edx, edx
jg 0x100033e7
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
mov eax, dword [edx + 4]
call eax
mov eax, dword [esp + 0x34]
lea ecx, [eax + 0xc]
or edx, 0xffffffff
lock xadd dword [ecx], edx
dec edx
test edx, edx
jg 0x10003404
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
mov eax, dword [edx + 4]
call eax
mov eax, dword [esp + 0x28]
jmp 0x10004075
push 0x10140fc0
push ebx
mov dword [esp + 0x20], 0
call fcn.100f4e68
add esp, 8
test eax, eax
jne 0x10003867
mov ecx, dword [esp + 0x144]
mov edx, dword [esp + 0x150]
mov esi, dword [esp + 0x14c]
mov edi, dword [esp + 0x148]
push ecx
mov ebx, esp
mov dword [esp + 0x14], esp
push edx
mov dword [esp + 0x1c], ecx
call fcn.100012e0
push ecx
mov ebx, esp
mov dword [esp + 0x18], esp
push esi
call fcn.100012e0
push ecx
mov ebx, esp
mov dword [esp + 0x1c], esp
push edi
call fcn.100012e0
mov eax, dword [esp + 0x20]
push ecx
mov ebx, esp
mov dword [esp + 0x20], esp
push eax
call fcn.100012e0
mov ecx, dword [esp + 0x40]
call fcn.100016e0
mov ecx, 3
lea esi, [esp + 0x40]
lea edi, [esp + 0x18]
mov word [esp + 0x40], cx
mov dword [esp + 0x48], eax
call fcn.10001630
mov edx, esi
push edx
call dword [sym.imp.OLEAUT32.dll_VariantCopy]
mov eax, dword [esp + 0x16c]
mov ecx, dword [esp + 0x168]
mov edx, dword [esp + 0x164]
mov esi, dword [esp + 0x174]
mov edi, dword [esp + 0x170]
mov dword [esp + 0x14], eax
mov eax, dword [esp + 0x160]
mov dword [esp + 0x2c], ecx
mov ecx, dword [esp + 0x15c]
push ecx
mov dword [esp + 0x70], eax
mov eax, dword [esp + 0x17c]
mov dword [esp + 0x28], edx
mov edx, dword [esp + 0x15c]
mov ebx, esp
mov dword [esp + 0x14], esp
push eax
mov dword [esp + 0x80], ecx
mov dword [esp + 0x7c], edx
call fcn.100012e0
push ecx
mov ebx, esp
mov dword [esp + 0x18], esp
push esi
call fcn.100012e0
push ecx
mov ebx, esp
mov dword [esp + 0x1c], esp
push edi
call fcn.100012e0
push ecx
mov ecx, dword [esp + 0x24]
mov ebx, esp
mov dword [esp + 0x20], esp
push ecx
call fcn.100012e0
mov edx, dword [esp + 0x3c]
push ecx
mov ebx, esp
mov dword [esp + 0x24], esp
push edx
call fcn.100012e0
push ecx
mov ebx, esp
mov eax, dword [esp + 0x3c]
mov dword [esp + 0x28], esp
push eax
call fcn.100012e0
push ecx
mov ecx, dword [esp + 0x88]
mov ebx, esp
mov dword [esp + 0x2c], esp
push ecx
call fcn.100012e0
mov edx, dword [esp + 0x94]
push ecx
mov ebx, esp
mov dword [esp + 0x30], esp
push edx
call fcn.100012e0
mov eax, dword [esp + 0x94]
push ecx
mov ebx, esp
mov dword [esp + 0x34], esp
push eax
call fcn.100012e0
mov ecx, dword [esp + 0x54]
push ecx
call fcn.100018a0
mov edx, 3
lea esi, [esp + 0x40]
lea edi, [esp + 0x18]
mov word [esp + 0x40], dx
mov dword [esp + 0x48], eax
call fcn.10001630
mov ebx, dword [sym.imp.OLEAUT32.dll_VariantCopy]
mov eax, esi
push eax
call ebx
mov eax, dword [esp + 0x30]
mov edx, dword [esp + 0x130]
mov ecx, dword [eax]
push edx
mov edi, eax
push eax
mov eax, dword [ecx + 0x18]
call eax
mov esi, eax
test esi, esi
jge 0x100035f8
push 0x1014108c
push edi
push esi
call fcn.1010d0c0
mov ecx, 3
mov dword [esp + 0x48], esi
lea esi, [esp + 0x40]
lea edi, [esp + 0x18]
mov word [esp + 0x40], cx
call fcn.10001630
mov edx, esi
push edx
call ebx
xor esi, esi
cmp dword [esp + 0x130], esi
mov dword [esp + 0x2c], esi
jle 0x100037af
jmp 0x10003634
mov esi, dword [esp + 0x2c]
mov ecx, dword [esp + esi*4 + 0x2bc]
mov edx, dword [esp + esi*4 + 0x294]
mov eax, dword [esp + esi*4 + 0x30c]
mov edi, dword [esp + esi*4 + 0x2e4]
mov dword [esp + 0x74], ecx
mov ecx, dword [esp + esi*4 + 0x26c]
mov dword [esp + 0x6c], ecx
mov ecx, dword [esp + esi*4 + 0x21c]
mov dword [esp + 0x78], edx
mov edx, dword [esp + esi*4 + 0x244]
mov dword [esp + 0x24], ecx
mov ecx, dword [esp + esi*4 + 0x1cc]
mov dword [esp + 0x14], edx
mov edx, dword [esp + esi*4 + 0x1f4]
mov dword [esp + 0x80], ecx
mov ecx, dword [esp + esi*4 + 0x17c]
push ecx
mov dword [esp + 0x80], edx
mov edx, dword [esp + esi*4 + 0x1a8]
mov ebx, esp
mov dword [esp + 0x20], esp
push eax
mov dword [esp + 0x60], edx
mov dword [esp + 0x18], ecx
call fcn.100012e0
push ecx
mov ebx, esp
mov dword [esp + 0x24], esp
push edi
call fcn.100012e0
mov edx, dword [esp + 0x7c]
push ecx
mov ebx, esp
mov dword [esp + 0x28], esp
push edx
call fcn.100012e0
mov eax, dword [esp + 0x84]
push ecx
mov ebx, esp
mov dword [esp + 0x2c], esp
push eax
call fcn.100012e0
push ecx
mov ecx, dword [esp + 0x80]
mov ebx, esp
mov dword [esp + 0x30], esp
push ecx
call fcn.100012e0
mov edx, dword [esp + 0x28]
push ecx
mov ebx, esp
mov dword [esp + 0x34], esp
push edx
call fcn.100012e0
mov eax, dword [esp + 0x3c]
push ecx
mov ebx, esp
mov dword [esp + 0x38], esp
push eax
call fcn.100012e0
push ecx
mov ecx, dword [esp + 0x9c]
mov ebx, esp
mov dword [esp + 0x3c], esp
push ecx
call fcn.100012e0
mov edx, dword [esp + 0xa0]
push ecx
mov ebx, esp
mov dword [esp + 0x40], esp
push edx
call fcn.100012e0
mov eax, dword [esp + 0x7c]
push ecx
mov ebx, esp
mov dword [esp + 0x44], esp
push eax
call fcn.100012e0
push ecx
mov ebx, esp
mov dword [esp + 0x48], esp
mov ecx, dword [esp + 0x3c]
push ecx
call fcn.100012e0
mov edx, dword [esp + 0x5c]
push esi
push edx
call fcn.10001c10
mov ecx, 3
lea esi, [esp + 0x40]
lea edi, [esp + 0x18]
mov word [esp + 0x40], cx
mov dword [esp + 0x48], eax
call fcn.10001630
mov edx, esi
push edx
call dword [sym.imp.OLEAUT32.dll_VariantCopy]
mov eax, dword [esp + 0x2c]
inc eax
cmp eax, dword [esp + 0x130]
mov dword [esp + 0x2c], eax
jl 0x10003630
mov edi, dword [esp + 0x30]
lea eax, [esp + 0x10]
call fcn.10002030
mov edi, eax
lea eax, [esp + 0x18]
cmp eax, edi
je 0x10003816
mov esi, dword [esp + 0x18]
test esi, esi
je 0x10003802
lea ecx, [esi + 8]
push ecx
call dword [sym.imp.KERNEL32.dll_InterlockedDecrement]
test eax, eax
jne 0x10003802
mov eax, dword [esi]
test eax, eax
je 0x100037e9
push eax
call dword [sym.imp.OLEAUT32.dll_SysStringLen]
mov eax, dword [esi + 4]
test eax, eax
je 0x100037f9
push eax
call fcn.100077e7
add esp, 4
push esi
call fcn.100077e7
add esp, 4
mov eax, dword [edi]
mov dword [esp + 0x18], eax
test eax, eax
je 0x10003816
add eax, 8
push eax
call dword [sym.imp.KERNEL32.dll_InterlockedIncrement]
mov esi, dword [esp + 0x10]
test esi, esi
je 0x10003b08
lea edx, [esi + 8]
push edx
call dword [sym.imp.KERNEL32.dll_InterlockedDecrement]
test eax, eax
jne 0x10003b08
test esi, esi
je 0x10003b08
mov eax, dword [esi]
test eax, eax
je 0x10003849
push eax
call dword [sym.imp.OLEAUT32.dll_SysStringLen]
mov eax, dword [esi + 4]
test eax, eax
je 0x10003859
push eax
call fcn.100077e7
add esp, 4
push esi
call fcn.100077e7
add esp, 4
jmp 0x10003b08
push 0x10140fc4
push ebx
call fcn.100f4e68
add esp, 8
test eax, eax
jne 0x10003b08
mov eax, dword [esp + 0xb4]
push ecx
mov ebx, esp
mov dword [esp + 0x20], esp
push eax
call fcn.100012e0
push ecx
mov ecx, dword [esp + 0xb8]
mov ebx, esp
mov dword [esp + 0x24], esp
push ecx
call fcn.100012e0
mov edx, dword [esp + 0xb4]
push ecx
mov ebx, esp
mov dword [esp + 0x28], esp
push edx
call fcn.100012e0
mov eax, dword [esp + 0xb4]
push ecx
mov ebx, esp
mov dword [esp + 0x2c], esp
push eax
call fcn.100012e0
mov ecx, dword [esp + 0x40]
call fcn.10002070
mov ecx, 3
lea esi, [esp + 0x40]
lea edi, [esp + 0x18]
mov word [esp + 0x40], cx
mov dword [esp + 0x48], eax
call fcn.10001630
mov edx, esi
push edx
call dword [sym.imp.OLEAUT32.dll_VariantCopy]
mov eax, dword [esp + 0x118]
push ecx
mov ebx, esp
mov dword [esp + 0x20], esp
push eax
call fcn.100012e0
push ecx
mov ecx, dword [esp + 0x11c]
mov ebx, esp
mov dword [esp + 0x24], esp
push ecx
call fcn.100012e0
mov edx, dword [esp + 0x118]
push ecx
mov ebx, esp
mov dword [esp + 0x28], esp
push edx
call fcn.100012e0
mov eax, dword [esp + 0x118]
push ecx
mov ebx, esp
mov dword [esp + 0x2c], esp
push eax
call fcn.100012e0
push ecx
mov ecx, dword [esp + 0x11c]
mov ebx, esp
mov dword [esp + 0x30], esp
push ecx
call fcn.100012e0
mov edx, dword [esp + 0x118]
push ecx
mov ebx, esp
mov dword [esp + 0x34], esp
push edx
call fcn.100012e0
mov eax, dword [esp + 0x118]
push ecx
mov ebx, esp
mov dword [esp + 0x38], esp
push eax
call fcn.100012e0
push ecx
mov ecx, dword [esp + 0x11c]
mov ebx, esp
mov dword [esp + 0x3c], esp
push ecx
call fcn.100012e0
mov edx, dword [esp + 0x118]
push ecx
mov ebx, esp
mov dword [esp + 0x40], esp
push edx
call fcn.100012e0
mov eax, dword [esp + 0x118]
push ecx
mov ebx, esp
mov dword [esp + 0x44], esp
push eax
call fcn.100012e0
push ecx
mov ecx, dword [esp + 0x11c]
mov ebx, esp
mov dword [esp + 0x48], esp
push ecx
call fcn.100012e0
mov edx, dword [esp + 0x118]
push ecx
mov ebx, esp
mov dword [esp + 0x4c], esp
push edx
call fcn.100012e0
mov eax, dword [esp + 0x118]
push ecx
mov ebx, esp
mov dword [esp + 0x50], esp
push eax
call fcn.100012e0
push ecx
mov ecx, dword [esp + 0x11c]
mov ebx, esp
mov dword [esp + 0x54], esp
push ecx
call fcn.100012e0
mov edx, dword [esp + 0x118]
push ecx
mov ebx, esp
mov dword [esp + 0x58], esp
push edx
call fcn.100012e0
mov eax, dword [esp + 0x118]
push ecx
mov ebx, esp
mov dword [esp + 0x5c], esp
push eax
call fcn.100012e0
push ecx
mov ecx, dword [esp + 0x11c]
mov ebx, esp
mov dword [esp + 0x60], esp
push ecx
call fcn.100012e0
mov edx, dword [esp + 0x118]
push ecx
mov ebx, esp
mov dword [esp + 0x64], esp
push edx
call fcn.100012e0
mov eax, dword [esp + 0x118]
push ecx
mov ebx, esp
mov dword [esp + 0x68], esp
push eax
call fcn.100012e0
push ecx
mov ecx, dword [esp + 0x11c]
mov ebx, esp
mov dword [esp + 0x6c], esp
push ecx
call fcn.100012e0
mov edx, dword [esp + 0x118]
push ecx
mov ebx, esp
mov dword [esp + 0x70], esp
push edx
call fcn.100012e0
push ecx
mov eax, dword [esp + 0x11c]
mov ebx, esp
mov dword [esp + 0x74], esp
push eax
call fcn.100012e0
push ecx
mov ecx, dword [esp + 0x11c]
mov ebx, esp
mov dword [esp + 0x78], esp
push ecx
call fcn.100012e0
mov edx, dword [esp + 0x118]
push ecx
mov ebx, esp
mov dword [esp + 0x7c], esp
push edx
call fcn.100012e0
mov eax, dword [esp + 0x90]
push eax
call fcn.10002230
mov edi, dword [esp + 0x30]
lea eax, [esp + 0x10]
call fcn.10002bb0
mov ebx, eax
lea edi, [esp + 0x18]
call fcn.10001440
lea edi, [esp + 0x10]
call fcn.100013f0
mov eax, dword [esp + 0x30]
mov ecx, dword [eax]
mov edx, dword [ecx + 8]
push eax
call edx
call dword [sym.imp.ole32.dll_CoUninitialize]
lea esi, [esp + 0x18]
call fcn.100015a0
mov eax, dword [eax]
push eax
lea ecx, [esp + 0x68]
call fcn.10004200
cmp dword [0x10165038], 0
je 0x10003bae
push 0x10140f90
lea ecx, [esp + 0x68]
push ecx
lea edx, [esp + 0x60]
push str.OCS_DLL_RET_DATA_
push edx
call fcn.10004630
add esp, 0xc
push eax
lea eax, [esp + 0x18]
push eax
call fcn.10004550
mov ecx, dword [eax]
add esp, 0xc
push 0
push 0
push ecx
call fcn.1000876c
mov eax, dword [esp + 0x10]
add eax, 0xfffffff0
lea edx, [eax + 0xc]
or ecx, 0xffffffff
lock xadd dword [edx], ecx
dec ecx
test ecx, ecx
jg 0x10003b8e
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
mov eax, dword [edx + 4]
call eax
mov eax, dword [esp + 0x58]
add eax, 0xfffffff0
lea ecx, [eax + 0xc]
or edx, 0xffffffff
lock xadd dword [ecx], edx
dec edx
test edx, edx
jg 0x10003bae
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
mov eax, dword [edx + 4]
call eax
cmp dword [0x1016503c], 0
je 0x10003e37
call fcn.10007d53
test eax, eax
jne 0x10003bce
push 0x80004005
call fcn.10001000
mov edx, dword [eax]
mov ecx, eax
mov eax, dword [edx + 0xc]
call eax
add eax, 0x10
push 0
mov dword [esp + 0x28], eax
call fcn.100f4cf0
add esp, 4
lea ecx, [esp + 0x1c]
push ecx
mov esi, str._Y_m_d
lea edi, [esp + 0x14]
mov dword [esp + 0x20], eax
mov dword [esp + 0x24], edx
call fcn.100010f0
push eax
lea ecx, [esp + 0x28]
call fcn.10004940
mov eax, dword [esp + 0x10]
add eax, 0xfffffff0
lea edx, [eax + 0xc]
or ecx, 0xffffffff
lock xadd dword [edx], ecx
dec ecx
test ecx, ecx
jg 0x10003c2d
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
mov eax, dword [edx + 4]
call eax
call fcn.10007d53
test eax, eax
jne 0x10003c40
push 0x80004005
call fcn.10001000
mov edx, dword [eax]
mov ecx, eax
mov eax, dword [edx + 0xc]
call eax
mov esi, eax
add esi, 0x10
lea ecx, [esp + 0x40]
mov dword [esp + 0x2c], esi
call fcn.10008e5c
push 0
push 0xffffffffffffffff
push 0
lea ecx, [esp + 0x90]
call fcn.100011a0
push str._DLL_RETURN_DATA.dat
lea ecx, [esp + 0x28]
push ecx
lea edx, [esp + 0x1c]
push edx
call fcn.10004550
mov ecx, dword [esp + 0x20]
add esp, 0xc
lea eax, [esp + 0x84]
push eax
push 0x3001
push ecx
lea ecx, [esp + 0x4c]
call fcn.100093c1
test eax, eax
je 0x10003da4
push 2
push 0x10141078
lea ecx, [esp + 0x34]
call fcn.10004b90
lea edx, [esp + 0x1c]
push edx
mov esi, str._Y_m_d_H_M_S_
lea edi, [esp + 0x14]
call fcn.100010f0
push eax
lea ecx, [esp + 0x28]
call fcn.10004940
mov eax, dword [esp + 0x10]
add eax, 0xfffffff0
lea ecx, [eax + 0xc]
or edx, 0xffffffff
lock xadd dword [ecx], edx
dec edx
test edx, edx
jg 0x10003cf4
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
mov eax, dword [edx + 4]
call eax
mov edx, dword [esp + 0x40]
mov eax, dword [edx + 0x28]
push 2
push 0
push 0
lea ecx, [esp + 0x4c]
call eax
mov ecx, dword [esp + 0x64]
mov esi, dword [ecx - 0xc]
mov edx, dword [esp + 0x24]
mov edi, dword [edx - 0xc]
mov eax, dword [esp + 0x2c]
mov ebx, dword [eax - 0xc]
lea ecx, [esp + 0x2c]
push ecx
lea edx, [esp + 0x68]
push edx
lea eax, [esp + 0x2c]
push eax
lea ecx, [esp + 0x64]
push ecx
call fcn.10004490
add esp, 0xc
push eax
lea edx, [esp + 0x18]
push edx
call fcn.10004490
mov eax, dword [eax]
add esp, 0xc
add edi, ebx
add edi, esi
push edi
push eax
lea ecx, [esp + 0x48]
call fcn.10008b92
mov eax, dword [esp + 0x10]
add eax, 0xfffffff0
lea ecx, [eax + 0xc]
or edx, 0xffffffff
lock xadd dword [ecx], edx
dec edx
test edx, edx
jg 0x10003d77
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
mov eax, dword [edx + 4]
call eax
mov eax, dword [esp + 0x58]
add eax, 0xfffffff0
lea ecx, [eax + 0xc]
or edx, 0xffffffff
lock xadd dword [ecx], edx
dec edx
test edx, edx
jg 0x10003d97
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
mov eax, dword [edx + 4]
call eax
lea ecx, [esp + 0x40]
call fcn.10008df6
mov esi, dword [esp + 0x2c]
mov eax, dword [esp + 0x14]
add eax, 0xfffffff0
lea ecx, [eax + 0xc]
or edx, 0xffffffff
lock xadd dword [ecx], edx
dec edx
test edx, edx
jg 0x10003dc4
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
mov eax, dword [edx + 4]
call eax
mov eax, dword [esp + 0x94]
add eax, 0xfffffff0
mov dword [esp + 0x84], vtable.CFileException.0
lea ecx, [eax + 0xc]
or edx, 0xffffffff
lock xadd dword [ecx], edx
dec edx
test edx, edx
jg 0x10003df2
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
mov eax, dword [edx + 4]
call eax
lea ecx, [esp + 0x40]
call fcn.10008faa
lea eax, [esi - 0x10]
lea ecx, [eax + 0xc]
or edx, 0xffffffff
lock xadd dword [ecx], edx
dec edx
test edx, edx
jg 0x10003e17
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
mov eax, dword [edx + 4]
call eax
mov eax, dword [esp + 0x24]
add eax, 0xfffffff0
lea ecx, [eax + 0xc]
or edx, 0xffffffff
lock xadd dword [ecx], edx
dec edx
test edx, edx
jg 0x10003e37
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
mov eax, dword [edx + 4]
call eax
mov edi, dword [esp + 0x68]
mov ecx, dword [edi - 0xc]
mov ebx, dword [esp + 0x70]
push ecx
push edi
push ebx
call fcn.100f9ca0
mov esi, dword [esp + 0x70]
mov edx, dword [esi - 0xc]
add esp, 0xc
push edx
push esi
add ebx, 0x4a
push ebx
call fcn.100f9ca0
mov ebx, dword [esi - 0xc]
add esi, 0xfffffff0
add esp, 0xc
add ebx, 0x4a
lea eax, [esi + 0xc]
or ecx, 0xffffffff
lock xadd dword [eax], ecx
dec ecx
test ecx, ecx
jg 0x10003e84
mov ecx, dword [esi]
mov edx, dword [ecx]
mov eax, dword [edx + 4]
push esi
call eax
mov esi, dword [esp + 0x18]
test esi, esi
je 0x10003ec0
lea ecx, [esi + 8]
push ecx
call dword [sym.imp.KERNEL32.dll_InterlockedDecrement]
test eax, eax
jne 0x10003ec0
mov eax, dword [esi]
test eax, eax
je 0x10003ea7
push eax
call dword [sym.imp.OLEAUT32.dll_SysStringLen]
mov eax, dword [esi + 4]
test eax, eax
je 0x10003eb7
push eax
call fcn.100077e7
add esp, 4
push esi
call fcn.100077e7
add esp, 4
lea eax, [esp + 0x98]
call fcn.10004f30
lea edx, [esp + 0x130]
push edx
call fcn.10006890
mov eax, dword [esp + 0x3c]
add eax, 0xfffffff0
lea ecx, [eax + 0xc]
or edx, 0xffffffff
lock xadd dword [ecx], edx
dec edx
test edx, edx
jg 0x10003ef9
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
mov eax, dword [edx + 4]
call eax
lea eax, [edi - 0x10]
lea ecx, [eax + 0xc]
or edx, 0xffffffff
lock xadd dword [ecx], edx
dec edx
test edx, edx
jg 0x10003367
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
mov eax, dword [edx + 4]
call eax
jmp 0x10003367
mov edi, dword [esp + 0x68]
mov ecx, dword [edi - 0xc]
mov ebx, dword [esp + 0x70]
push ecx
push edi
push ebx
call fcn.100f9ca0
add esp, 0xc
push str.C505
lea ecx, [esp + 0x14]
call fcn.10004140
mov esi, dword [esp + 0x10]
mov edx, dword [esi - 0xc]
push edx
push esi
add ebx, 0x4a
push ebx
call fcn.100f9ca0
mov ebx, dword [esi - 0xc]
add esi, 0xfffffff0
add esp, 0xc
add ebx, 0x4a
lea eax, [esi + 0xc]
or ecx, 0xffffffff
lock xadd dword [eax], ecx
dec ecx
test ecx, ecx
jg 0x10003f79
mov ecx, dword [esi]
mov edx, dword [ecx]
mov eax, dword [edx + 4]
push esi
call eax
lea eax, [esp + 0x98]
call fcn.10004f30
lea ecx, [esp + 0x130]
push ecx
call fcn.10006890
mov eax, dword [esp + 0x3c]
add eax, 0xfffffff0
lea edx, [eax + 0xc]
or ecx, 0xffffffff
lock xadd dword [edx], ecx
dec ecx
test ecx, ecx
jg 0x10003fb2
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
mov eax, dword [edx + 4]
call eax
add edi, 0xfffffff0
lea ecx, [edi + 0xc]
or edx, 0xffffffff
lock xadd dword [ecx], edx
dec edx
test edx, edx
jg 0x10003fce
mov ecx, dword [edi]
mov eax, dword [ecx]
mov edx, dword [eax + 4]
push edi
call edx
mov eax, dword [esp + 0x54]
add eax, 0xfffffff0
lea ecx, [eax + 0xc]
or edx, 0xffffffff
lock xadd dword [ecx], edx
dec edx
test edx, edx
jg 0x10003fee
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
mov eax, dword [edx + 4]
call eax
mov eax, dword [esp + 0x5c]
add eax, 0xfffffff0
lea ecx, [eax + 0xc]
or edx, 0xffffffff
lock xadd dword [ecx], edx
dec edx
test edx, edx
jg 0x1000400e
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
mov eax, dword [edx + 4]
call eax
mov eax, dword [esp + 0x60]
add eax, 0xfffffff0
lea ecx, [eax + 0xc]
or edx, 0xffffffff
lock xadd dword [ecx], edx
dec edx
test edx, edx
jg 0x1000402e
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
mov eax, dword [edx + 4]
call eax
mov eax, dword [esp + 0x38]
add eax, 0xfffffff0
lea ecx, [eax + 0xc]
or edx, 0xffffffff
lock xadd dword [ecx], edx
dec edx
test edx, edx
jg 0x1000404e
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
mov eax, dword [edx + 4]
call eax
mov eax, dword [esp + 0x24]
add eax, 0xfffffff0
lea ecx, [eax + 0xc]
or edx, 0xffffffff
lock xadd dword [ecx], edx
dec edx
test edx, edx
jg 0x1000406e
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
mov eax, dword [edx + 4]
call eax
mov eax, dword [esp + 0x18]
add eax, 0xfffffff0
lea ecx, [eax + 0xc]
or edx, 0xffffffff
lock xadd dword [ecx], edx
dec edx
test edx, edx
jg 0x1000408e
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
mov eax, dword [edx + 4]
call eax
mov ecx, dword [esp + 0x464]
pop edi
pop esi
mov eax, ebx
pop ebx
xor ecx, esp
call fcn.100f3dd0
mov esp, ebp
pop ebp
ret