Function at 0x45de70
Capabilities:
Check if file exists
Create process on windows
Create process suspended
Create thread
Link many functions at runtime
Resume thread

Disassembly:
push ebp
lea ebp, [esp - 0x1814]
mov eax, 0x1814
call fcn.004d7c90
push 0xffffffffffffffff
push 0x516d03
mov eax, dword fs:[0]
push eax
sub esp, 0x158
mov eax, dword [0x56c3c0]
xor eax, ebp
mov dword [ebp + 0x1810], eax
push ebx
push esi
push edi
push eax
lea eax, [ebp - 0xc]
mov dword fs:[0], eax
mov eax, dword [ebp + 0x181c]
mov edi, dword [ebp + 0x1824]
xor edx, edx
push 0x3fe
mov esi, ecx
mov ecx, dword [ebp + 0x1820]
mov dword [ebp - 0x34], eax
push edx
lea eax, [ebp + 0x1412]
push eax
mov dword [ebp - 0x1c], esi
mov dword [ebp - 0x10], ecx
mov dword [ebp - 0x38], edi
mov word [ebp + 0x1410], dx
call fcn.004d5720
add esp, 0xc
push 0x200
lea ecx, [ebp + 0x1410]
push ecx
mov ecx, esi
call fcn.004577b0
push 0x522ac0
lea edx, [ebp + 0x1410]
push edx
call dword [sym.imp.KERNEL32.dll_lstrcatW]
mov esi, dword [sym.imp.KERNEL32.dll_GetModuleHandleW]
push str.NtSuspendProcess
push 0x522358
call esi
mov ebx, dword [sym.imp.KERNEL32.dll_GetProcAddress]
push eax
call ebx
push str.NtResumeProcess
push 0x522358
mov dword [ebp - 0x48], eax
call esi
push eax
call ebx
push str.OpenDoc_Start_
mov dword [ebp - 0x24], eax
call fcn.00468970
add esp, 4
test edi, edi
jne 0x45df59
mov dword [ebp - 0x14], edi
jmp 0x45df8a
push edi
call dword [sym.imp.KERNEL32.dll_lstrlenW]
inc eax
cmp eax, 0x3fffffff
jle 0x45df71
mov dword [ebp - 0x14], 0
jmp 0x45df8a
lea esi, [eax + eax]
mov eax, esi
call fcn.004d6570
mov eax, esp
push 3
push esi
push edi
push eax
call fcn.0044a300
mov dword [ebp - 0x14], eax
mov eax, dword [ebp - 0x10]
xor esi, esi
cmp eax, esi
jne 0x45df98
mov dword [ebp - 0x18], esi
jmp 0x45dfc8
push eax
call dword [sym.imp.KERNEL32.dll_lstrlenW]
inc eax
cmp eax, 0x3fffffff
jle 0x45dfac
mov dword [ebp - 0x18], esi
jmp 0x45dfc8
lea esi, [eax + eax]
mov eax, esi
call fcn.004d6570
mov ecx, dword [ebp - 0x10]
mov eax, esp
push 3
push esi
push ecx
push eax
call fcn.0044a300
mov dword [ebp - 0x18], eax
mov eax, dword [ebp - 0x34]
test eax, eax
je 0x45dffb
push eax
call dword [sym.imp.KERNEL32.dll_lstrlenW]
inc eax
cmp eax, 0x3fffffff
jle 0x45dfe2
xor eax, eax
jmp 0x45dffb
lea esi, [eax + eax]
mov eax, esi
call fcn.004d6570
mov edx, dword [ebp - 0x34]
mov eax, esp
push 3
push esi
push edx
push eax
call fcn.0044a300
mov ecx, dword [ebp - 0x14]
mov edx, dword [ebp - 0x18]
push ecx
push edx
push eax
push str.OpenDoc
call fcn.00468970
mov esi, dword [ebp - 0x1c]
add esp, 0x10
cmp dword [esi + 0x414], 0
jne 0x45e030
lea eax, [ebp + 0x1410]
push eax
call dword [sym.imp.KERNEL32.dll_LoadLibraryW]
mov dword [esi + 0x414], eax
mov ecx, esi
mov esi, dword [ecx + 0x414]
test esi, esi
jne 0x45e130
call dword [sym.imp.KERNEL32.dll_GetLastError]
mov ebx, eax
push 3
lea eax, [ebp + 0x1410]
lea edx, [ebp - 0x160]
push eax
lea ecx, [ebp - 0x164]
mov dword [ebp - 0x164], edx
call fcn.00458760
sub esp, 0x84
mov edi, esp
mov dword [ebp - 4], esi
push ebx
mov ecx, 0x21
lea esi, [ebp - 0x164]
push str.1178_Error__d__LoadLibrary___s_
rep movsd dword es:[edi], dword [esi]
call fcn.00468970
mov eax, dword [ebp - 0x164]
or edi, 0xffffffff
lea ecx, [ebp - 0x160]
add esp, 0x8c
mov dword [ebp - 4], edi
cmp eax, ecx
je 0x45e0b0
push eax
call fcn.004d5b05
add esp, 4
call fcn.0049f0da
xor ecx, ecx
test eax, eax
setne cl
test ecx, ecx
jne 0x45e0ca
push 0x80004005
call fcn.0044b810
mov edx, dword [eax]
mov ecx, eax
mov eax, dword [edx + 0xc]
call eax
add eax, 0x10
mov dword [ebp - 0x14], eax
lea ecx, [ebp + 0x1410]
push ecx
lea edx, [ebp - 0x14]
push 0x523618
push edx
mov dword [ebp - 4], 1
call fcn.0044ed60
mov esi, dword [ebp - 0x14]
add esp, 0xc
push 0x10
push 0x523610
push esi
push 0
call dword [sym.imp.USER32.dll_MessageBoxW]
lea eax, [esi - 0x10]
mov dword [ebp - 4], edi
lea ecx, [eax + 0xc]
lock xadd dword [ecx], edi
dec edi
test edi, edi
jg 0x45ee2c
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
mov eax, dword [edx + 4]
call eax
jmp 0x45ee2c
push str.CControlDll_Add
push esi
call ebx
push str.CControlDll_GetNum
push esi
mov dword [ebp - 0x28], eax
call ebx
push str.CControlDll_Del
push esi
mov dword [ebp - 0x30], eax
call ebx
push str.CControlDll_GetByPwd
push esi
mov dword [ebp - 0x44], eax
call ebx
cmp dword [ebp - 0x28], 0
je 0x45ed8d
mov ecx, dword [ebp - 0x30]
xor ebx, ebx
cmp ecx, ebx
je 0x45ed8d
cmp dword [ebp - 0x44], ebx
je 0x45ed8d
cmp eax, ebx
je 0x45ed8d
call ecx
cmp eax, 8
jl 0x45e1e9
push 1
lea ecx, [ebp - 0x30]
push ecx
mov ecx, 0x57148c
call fcn.0047c420
mov esi, eax
push 0x38
lea edx, [ebp - 0x38]
push edx
mov ecx, 0x57148c
mov dword [ebp - 4], 3
call fcn.0047c420
mov esi, dword [esi]
mov eax, dword [eax]
push 0x10
push esi
push eax
push ebx
call dword [sym.imp.USER32.dll_MessageBoxW]
lea ecx, [ebp - 0x38]
call fcn.0044c650
lea ecx, [ebp - 0x30]
mov dword [ebp - 4], 0xffffffff
call fcn.0044c650
push 0x5235f0
call fcn.00468970
add esp, 4
jmp 0x45ee2c
mov esi, dword [ebp - 0x34]
push esi
call fcn.00465110
add esp, 4
neg eax
sbb eax, eax
inc eax
mov dword [ebp - 0x40], eax
call fcn.00468930
test eax, eax
je 0x45e21a
push ecx
mov ecx, esp
mov dword [ebp - 0x30], esp
push esi
call fcn.0044d470
call fcn.00469900
add esp, 4
push 0x3fe
lea ecx, [ebp + 0x1012]
xor eax, eax
push ebx
push ecx
mov word [ebp + 0x1010], ax
call fcn.004d5720
mov edx, dword [ebp - 0x10]
add esp, 0xc
push edx
lea eax, [ebp + 0x1010]
push eax
call dword [sym.imp.KERNEL32.dll_lstrcpyW]
push 0x40
lea ecx, [ebp - 0xdc]
push ebx
push ecx
call fcn.004d5720
xor eax, eax
mov edx, 5
push 0x5235dc
mov dword [ebp - 0xe0], 0x44
mov word [ebp - 0xb0], dx
mov dword [ebp - 0x60], eax
mov dword [ebp - 0x5c], eax
mov dword [ebp - 0x58], eax
mov dword [ebp - 0x54], eax
mov dword [ebp - 0x30], ebx
mov dword [ebp - 0x44], ebx
call fcn.00468970
push 0x200
lea ecx, [ebp + 0xe0e]
xor eax, eax
push ebx
push ecx
mov word [ebp + 0xe0c], ax
call fcn.004d5720
push 0x100
lea edx, [ebp + 0xe0c]
push edx
push ebx
push ebx
push ebx
push ebx
push ebx
push ebx
push edi
call fcn.004d8112
add esp, 0x40
cmp esi, ebx
jne 0x45e2ca
xor eax, eax
jmp 0x45e2f3
push esi
call dword [sym.imp.KERNEL32.dll_lstrlenW]
inc eax
cmp eax, 0x3fffffff
jle 0x45e2dd
xor eax, eax
jmp 0x45e2f3
lea edi, [eax + eax]
mov eax, edi
call fcn.004d6570
mov eax, esp
push 3
push edi
push esi
push eax
call fcn.0044a300
push eax
push 0x5235cc
call fcn.00468970
add esp, 8
push esi
lea ecx, [ebp - 0x20]
call fcn.0044d470
lea ecx, [ebp - 0x20]
mov dword [ebp - 4], 4
call fcn.00459c30
mov ecx, dword [ebp - 0x20]
mov eax, dword [ecx - 0xc]
cmp eax, ebx
mov dword [ebp - 0x18], ebx
jl 0x45e45a
push str.WINWORD.EXE
push ecx
call fcn.004d8b29
add esp, 8
cmp eax, ebx
je 0x45e45a
mov ecx, dword [ebp - 0x20]
sub eax, ecx
sar eax, 1
jne 0x45e45a
cmp dword [ecx - 0xc], ebx
jl 0x45e45a
push str.EXCEL.EXE
push ecx
call fcn.004d8b29
add esp, 8
cmp eax, ebx
je 0x45e45a
mov ecx, dword [ebp - 0x20]
sub eax, ecx
sar eax, 1
jne 0x45e45a
cmp dword [ecx - 0xc], ebx
jl 0x45e45a
push 0x52338c
push ecx
call fcn.004d8b29
add esp, 8
cmp eax, ebx
je 0x45e45a
sub eax, dword [ebp - 0x20]
sar eax, 1
jne 0x45e45a
push str..dwg
lea eax, [ebp + 0xe0c]
push eax
call dword [sym.imp.KERNEL32.dll_lstrcmpiW]
test eax, eax
jne 0x45e6e4
call fcn.00468930
test eax, eax
je 0x45e6e4
mov edi, dword [ebp - 0x1c]
mov eax, dword [edi + 0x11d0]
cmp eax, ebx
je 0x45e3de
push eax
call dword [sym.imp.KERNEL32.dll_SetEvent]
mov eax, dword [edi + 0x11d8]
cmp eax, ebx
je 0x45e41e
push 0x2710
push eax
call dword [sym.imp.KERNEL32.dll_WaitForSingleObject]
mov eax, dword [edi + 0x11d0]
cmp eax, ebx
je 0x45e40b
push eax
call dword [sym.imp.KERNEL32.dll_CloseHandle]
mov dword [edi + 0x11d0], ebx
mov ecx, dword [edi + 0x11d8]
push ecx
call dword [sym.imp.KERNEL32.dll_CloseHandle]
mov dword [edi + 0x11d8], ebx
cmp dword [edi + 0x11d0], ebx
jne 0x45e437
push ebx
push ebx
push 1
push ebx
call dword [sym.imp.KERNEL32.dll_CreateEventW]
mov dword [edi + 0x11d0], eax
push ebx
push 4
push edi
push 0x45c130
push ebx
push ebx
call dword [sym.imp.KERNEL32.dll_CreateThread]
push eax
mov dword [edi + 0x11d8], eax
call dword [sym.imp.KERNEL32.dll_ResumeThread]
jmp 0x45e6e4
mov dword [ebp - 0x50], ebx
mov dword [ebp - 0x4c], ebx
push 0x523380
mov byte [ebp - 4], 5
call fcn.00468970
add esp, 4
push 0x2001f
push str.SOFTWAREMicrosoftOffice12.0MOC
push reloc.OLEAUT32.dll_SysReAllocString
lea ecx, [ebp - 0x50]
call fcn.004562c0
test eax, eax
jne 0x45e6d0
push 0x523328
call fcn.00468970
add esp, 4
lea ecx, [ebp - 0x10]
call fcn.0044c620
push str.C:Program_FilesMicrosoft_OfficeOffice12_
lea ecx, [ebp - 0x10]
mov byte [ebp - 4], 6
call fcn.0044d300
push str.OFFICE12
push str.OFFICE11
lea ecx, [ebp - 0x10]
call fcn.00455570
lea edx, [ebp - 0x10]
push edx
lea ecx, [ebp - 0x14]
call fcn.0044c790
mov eax, dword [ebp - 0x20]
push eax
mov byte [ebp - 4], 7
call dword [sym.imp.SHLWAPI.dll_PathFindFileNameW]
push eax
lea ecx, [ebp - 0x2c]
call fcn.0044d470
mov eax, dword [ebp - 0x2c]
cmp dword [eax - 0xc], ebx
mov byte [ebp - 4], 8
jge 0x45e501
push 0x80070057
call fcn.0044b810
movzx eax, word [eax]
add eax, 0xffffffbb
cmp eax, 0x32
ja case.0x45e517.70
movzx ecx, byte [eax + 0x45ee6c]
jmp dword [ecx*4 + 0x45ee5c]
push str.Wordconv.exe
lea ecx, [ebp - 0x10]
call fcn.0044d430
mov ebx, dword [ebp - 0x10]
mov esi, dword [sym.imp.SHLWAPI.dll_PathFileExistsW]
push ebx
call esi
test eax, eax
je 0x45e5a1
test ebx, ebx
jne 0x45e554
xor eax, eax
push eax
push str.office_InstallRoot:_s
call fcn.00468970
add esp, 8
jmp 0x45e69d
push ebx
call dword [sym.imp.KERNEL32.dll_lstrlenW]
inc eax
cmp eax, 0x3fffffff
jle 0x45e578
xor eax, eax
push eax
push str.office_InstallRoot:_s
call fcn.00468970
add esp, 8
jmp 0x45e69d
lea edi, [eax + eax]
mov eax, edi
call fcn.004d6570
mov eax, esp
push 3
push edi
push ebx
push eax
call fcn.0044a300
push eax
push str.office_InstallRoot:_s
call fcn.00468970
add esp, 8
jmp 0x45e69d
lea edx, [ebp - 0x14]
push edx
lea ecx, [ebp - 0x10]
call fcn.0044cdc0
push str.wordconv.exe
jmp 0x45e64c
push str.Excelcnv.exe
lea ecx, [ebp - 0x10]
call fcn.0044d430
mov ebx, dword [ebp - 0x10]
mov esi, dword [sym.imp.SHLWAPI.dll_PathFileExistsW]
push ebx
call esi
test eax, eax
je 0x45e5f1
test ebx, ebx
jne 0x45e554
xor eax, eax
push eax
push str.office_InstallRoot:_s
call fcn.00468970
add esp, 8
jmp 0x45e69d
lea eax, [ebp - 0x14]
push eax
lea ecx, [ebp - 0x10]
call fcn.0044cdc0
push str.excelcnv.exe
jmp 0x45e64c
push str.PPCNVCOM.exe
lea ecx, [ebp - 0x10]
call fcn.0044d430
mov ebx, dword [ebp - 0x10]
mov esi, dword [sym.imp.SHLWAPI.dll_PathFileExistsW]
push ebx
call esi
test eax, eax
je 0x45e63b
test ebx, ebx
jne 0x45e554
xor eax, eax
push eax
push str.office_InstallRoot:_s
call fcn.00468970
add esp, 8
jmp 0x45e69d
lea ecx, [ebp - 0x14]
push ecx
lea ecx, [ebp - 0x10]
call fcn.0044cdc0
push str.ppcnvcom.exe
lea ecx, [ebp - 0x10]
call fcn.0044d430
mov ebx, dword [ebp - 0x10]
test ebx, ebx
jne 0x45e65f
xor eax, eax
jmp 0x45e688
push ebx
call dword [sym.imp.KERNEL32.dll_lstrlenW]
inc eax
cmp eax, 0x3fffffff
jle 0x45e672
xor eax, eax
jmp 0x45e688
lea edi, [eax + eax]
mov eax, edi
call fcn.004d6570
mov eax, esp
push 3
push edi
push ebx
push eax
call fcn.0044a300
push eax
push str.office_InstallRoot:_s
call fcn.00468970
add esp, 8
push ebx
call esi
test eax, eax
je 0x45e6b3
mov ecx, dword [ebp - 0x1c]
lea edx, [ebp + 0x1410]
push edx
mov dword [ebp - 0x18], 1
call fcn.0045c1b0
xor ebx, ebx
lea ecx, [ebp - 0x2c]
call fcn.0044c650
lea ecx, [ebp - 0x14]
call fcn.0044c650
lea ecx, [ebp - 0x10]
call fcn.0044c650
mov esi, dword [ebp - 0x34]
lea ecx, [ebp - 0x50]
call fcn.00456290
lea ecx, [ebp - 0x50]
mov byte [ebp - 4], 4
call fcn.00457eb0
push 0x7fe
lea ecx, [ebp + 0x60e]
xor eax, eax
push ebx
push ecx
mov word [ebp + 0x60c], ax
call fcn.004d5720
lea edx, [ebp + 0x1010]
push edx
push esi
lea eax, [ebp + 0x60c]
push str._s__s
push eax
call dword [sym.imp.USER32.dll_wsprintfW]
add esp, 0x1c
lea ecx, [ebp - 0x60]
push ecx
lea edx, [ebp - 0xe0]
push edx
push 0x53f45c
push ebx
push 4
push ebx
push ebx
push ebx
lea eax, [ebp + 0x60c]
push eax
push ebx
call dword [sym.imp.KERNEL32.dll_CreateProcessW]
lea ecx, [ebp + 0x1010]
push ecx
mov dword [ebp - 0x2c], eax
call dword [sym.imp.KERNEL32.dll_lstrlenW]
inc eax
cmp eax, 0x3fffffff
jle 0x45e75c
xor esi, esi
jmp 0x45e77a
lea edi, [eax + eax]
mov eax, edi
call fcn.004d6570
mov eax, esp
push 3
push edi
lea edx, [ebp + 0x1010]
push edx
push eax
call fcn.0044a300
mov esi, eax
lea eax, [ebp + 0x60c]
push eax
call dword [sym.imp.KERNEL32.dll_lstrlenW]
inc eax
cmp eax, 0x3fffffff
jle 0x45e793
xor eax, eax
jmp 0x45e7af
lea edi, [eax + eax]
mov eax, edi
call fcn.004d6570
mov eax, esp
push 3
push edi
lea ecx, [ebp + 0x60c]
push ecx
push eax
call fcn.0044a300
mov edx, dword [ebp - 0x58]
push edx
push esi
push eax
push str.CreateProcess
call fcn.00468970
add esp, 0x10
cmp dword [ebp - 0x2c], ebx
je 0x45e8cc
mov ebx, dword [ebp - 0x58]
push ebx
push 0
push 0x400
call dword [sym.imp.KERNEL32.dll_OpenProcess]
test eax, eax
jne 0x45e7e5
or ebx, 0xffffffff
jmp 0x45e7ec
push eax
call dword [sym.imp.KERNEL32.dll_CloseHandle]
mov eax, dword [ebp - 0x5c]
push 0x523578
mov dword [ebp - 0x44], eax
call fcn.00468970
add esp, 4
cmp ebx, 0xffffffff
jne 0x45e8fd
xor ebx, ebx
push 0x523564
call fcn.00468970
push 0x3c
lea edx, [ebp - 0x9c]
push ebx
push edx
call fcn.004d5720
mov esi, dword [ebp - 0x34]
lea eax, [ebp + 0x1010]
push 0x523550
mov dword [ebp - 0x9c], 0x3c
mov dword [ebp - 0x98], 0x440
mov dword [ebp - 0x94], ebx
mov dword [ebp - 0x90], str.open
mov dword [ebp - 0x8c], esi
mov dword [ebp - 0x88], eax
mov dword [ebp - 0x84], 0x53f45c
mov dword [ebp - 0x80], 3
mov dword [ebp - 0x78], ebx
mov dword [ebp - 0x74], ebx
mov dword [ebp - 0x70], ebx
mov dword [ebp - 0x6c], ebx
mov dword [ebp - 0x64], ebx
call fcn.00468970
add esp, 0x14
lea ecx, [ebp - 0x9c]
push ecx
call dword [sym.imp.SHELL32.dll_ShellExecuteExW]
test eax, eax
je 0x45e8e5
mov edx, dword [ebp - 0x64]
push edx
call dword [ebp - 0x48]
mov eax, dword [ebp - 0x64]
mov ecx, dword [ebp - 0x1c]
push eax
call fcn.00456ad0
mov ebx, eax
push 1
push ebx
call fcn.00403c80
mov ecx, dword [ebp - 0x64]
push str.ShellExecuteEx
mov dword [ebp - 0x30], ecx
call fcn.00468970
add esp, 0xc
jmp 0x45e8fd
lea ecx, [ebp + 0x60c]
push ecx
push 0x52351c
call fcn.00468970
add esp, 8
jmp 0x45e80a
lea edx, [ebp + 0x1010]
push edx
push esi
push 0x5234fc
call fcn.00468970
add esp, 0xc
or ebx, 0xffffffff
push 0x5234e8
call fcn.00468970
add esp, 4
push 1
cmp ebx, 0xffffffff
jne 0x45e97e
lea eax, [ebp - 0x38]
push eax
mov ecx, 0x57148c
call fcn.0047c420
mov edi, eax
push 0x35
lea ecx, [ebp - 0x48]
push ecx
mov ecx, 0x57148c
mov byte [ebp - 4], 9
call fcn.0047c420
mov edi, dword [edi]
mov eax, dword [eax]
push 0x10
push edi
push eax
push 0
call dword [sym.imp.USER32.dll_MessageBoxW]
lea ecx, [ebp - 0x48]
call fcn.0044c650
lea ecx, [ebp - 0x38]
mov byte [ebp - 4], 4
call fcn.0044c650
mov eax, dword [ebp - 0x34]
lea edx, [ebp + 0x1010]
push edx
push eax
push 0x5234c8
call fcn.00468970
add esp, 0xc
lea ecx, [ebp - 0x20]
call fcn.0044c650
jmp 0x45ee2c
push ebx
call fcn.00403c80
add esp, 8
test eax, eax
jne 0x45e998
push str.CryptDiskSetAccessProcessId_failure
call fcn.00468970
add esp, 4
mov edi, dword [ebp - 0x1c]
add edi, 0x41c
jne 0x45e9a7
xor eax, eax
jmp 0x45e9d0
push edi
call dword [sym.imp.KERNEL32.dll_lstrlenW]
inc eax
cmp eax, 0x3fffffff
jle 0x45e9ba
xor eax, eax
jmp 0x45e9d0
lea esi, [eax + eax]
mov eax, esi
call fcn.004d6570
mov eax, esp
push 3
push esi
push edi
push eax
call fcn.0044a300
push ebx
push eax
push 0x523474
call fcn.00468970
push 0x60c
xor edi, edi
lea ecx, [ebp]
push edi
push ecx
call fcn.004d5720
mov esi, dword [ebp - 0x1c]
movzx edx, byte [esi + 0x94f]
mov eax, dword [esi + 0x947]
add esp, 0x18
lea ecx, [esi + 0x950]
mov dword [ebp + 0x10], edx
push ecx
lea edx, [ebp + 0x464]
push edx
mov dword [ebp], edi
mov dword [ebp + 4], edi
mov dword [ebp + 0xc], edi
mov dword [ebp + 8], eax
call dword [sym.imp.KERNEL32.dll_lstrcpyW]
add esi, 0xa50
mov ecx, 0x17
lea edi, [ebp + 0x564]
rep movsd dword es:[edi], dword [esi]
mov esi, dword [ebp - 0x1c]
mov cl, byte [esi + 0xac2]
movzx edx, byte [esi + 0x94b]
mov eax, dword [esi + 0xaac]
mov edi, dword [sym.imp.KERNEL32.dll_lstrcpyW]
mov byte [ebp + 0x5c4], cl
mov ecx, dword [ebp - 0x38]
mov dword [ebp + 0x5c8], edx
mov dword [ebp + 0x5c0], eax
mov al, byte [esi + 0xac3]
push ecx
lea edx, [ebp + 0x14]
push edx
mov byte [ebp + 0x5cc], al
call edi
lea eax, [esi + 0x41c]
push eax
lea eax, [ebp + 0x414]
push eax
call edi
lea ecx, [ebp]
push ecx
mov dword [ebp + 4], ebx
call dword [ebp - 0x28]
add esp, 4
cmp dword [ebp - 0x40], 0
je 0x45eaad
lea edx, [ebp + 0x1410]
push edx
push ebx
call fcn.004653c0
add esp, 8
push ebx
push 0x523448
call fcn.00468970
add esp, 8
push ebx
push 0
push 0x100000
call dword [sym.imp.KERNEL32.dll_OpenProcess]
push ebx
mov ecx, esi
mov dword [ebp - 0x28], eax
call fcn.00458cd0
cmp dword [ebp - 0x18], 0
je 0x45eb7d
mov eax, dword [esi + 0x11d0]
test eax, eax
je 0x45eaef
push eax
call dword [sym.imp.KERNEL32.dll_SetEvent]
mov eax, dword [esi + 0x11d8]
test eax, eax
je 0x45eb37
push 0x2710
push eax
call dword [sym.imp.KERNEL32.dll_WaitForSingleObject]
mov eax, dword [esi + 0x11d0]
mov edi, dword [sym.imp.KERNEL32.dll_CloseHandle]
test eax, eax
je 0x45eb22
push eax
call edi
mov dword [esi + 0x11d0], 0
mov eax, dword [esi + 0x11d8]
push eax
call edi
mov dword [esi + 0x11d8], 0
jmp 0x45eb3d
mov edi, dword [sym.imp.KERNEL32.dll_CloseHandle]
cmp dword [esi + 0x11d0], 0
jne 0x45eb5a
push 0
push 0
push 1
push 0
call dword [sym.imp.KERNEL32.dll_CreateEventW]
mov dword [esi + 0x11d0], eax
push 0
push 4
push esi
push 0x45c130
push 0
push 0
call dword [sym.imp.KERNEL32.dll_CreateThread]
push eax
mov dword [esi + 0x11d8], eax
call dword [sym.imp.KERNEL32.dll_ResumeThread]
jmp 0x45eb83
mov edi, dword [sym.imp.KERNEL32.dll_CloseHandle]
mov eax, dword [ebp - 0x44]
test eax, eax
je 0x45eb91
push eax
call dword [sym.imp.KERNEL32.dll_ResumeThread]
mov ebx, dword [ebp - 0x30]
test ebx, ebx
je 0x45eba2
mov eax, dword [ebp - 0x24]
test eax, eax
je 0x45eba2
push ebx
call eax
mov eax, dword [ebp - 0x5c]
test eax, eax
je 0x45ebac
push eax
call edi
mov eax, dword [ebp - 0x60]
test eax, eax
je 0x45ebb6
push eax
call edi
test ebx, ebx
je 0x45ebbd
push ebx
call edi
cmp dword [ebp - 0x28], 0
jne 0x45ec16
push 1
lea ecx, [ebp - 0x40]
push ecx
mov ecx, 0x57148c
call fcn.0047c420
mov esi, eax
push 0x35
lea edx, [ebp - 0x24]
push edx
mov ecx, 0x57148c
mov byte [ebp - 4], 0xa
call fcn.0047c420
mov ecx, dword [esi]
mov edx, dword [eax]
push 0x10
push ecx
push edx
push 0
call dword [sym.imp.USER32.dll_MessageBoxW]
lea ecx, [ebp - 0x24]
call fcn.0044c650
lea ecx, [ebp - 0x40]
call fcn.0044c650
lea ecx, [ebp - 0x20]
call fcn.0044c650
jmp 0x45ee2c
mov eax, dword [ebp - 0x28]
push eax
call edi
mov ebx, dword [ebp - 0x38]
push ebx
lea ecx, [ebp - 0x3c]
call fcn.0044d470
mov ecx, dword [ebp - 0x3c]
mov eax, dword [ecx - 0xc]
mov byte [ebp - 4], 0xb
test eax, eax
jl 0x45ec54
push str..igs
push ecx
call fcn.004d8b29
mov ecx, dword [ebp - 0x3c]
add esp, 8
test eax, eax
je 0x45ec54
sub eax, ecx
sar eax, 1
cmp eax, 0xffffffff
jne 0x45ec77
cmp dword [ecx - 0xc], 0
jl 0x45ecea
push str..igs
push ecx
call fcn.004d8b29
add esp, 8
test eax, eax
je 0x45ecea
sub eax, dword [ebp - 0x3c]
sar eax, 1
jne 0x45ecea
lea ecx, [ebp - 0x14]
call fcn.0044c620
push 0x4d
lea ecx, [ebp - 0x24]
push ecx
mov ecx, 0x57148c
mov byte [ebp - 4], 0xc
call fcn.0047c420
push eax
lea ecx, [ebp - 0x14]
mov byte [ebp - 4], 0xd
call fcn.0044cdc0
lea ecx, [ebp - 0x24]
mov byte [ebp - 4], 0xc
call fcn.0044c650
push ebx
lea ecx, [ebp - 0x14]
call fcn.0044d430
push 2
lea edx, [ebp - 0x28]
push edx
mov ecx, 0x57148c
call fcn.0047c420
mov eax, dword [eax]
push 0
push eax
mov eax, dword [ebp - 0x14]
push eax
push 0
call dword [sym.imp.USER32.dll_MessageBoxW]
lea ecx, [ebp - 0x28]
call fcn.0044c650
lea ecx, [ebp - 0x14]
mov byte [ebp - 4], 0xb
call fcn.0044c650
cmp dword [ebp + 0x182c], 0
je 0x45ed04
mov ecx, esi
mov dword [esi + 0x11e8], 1
call fcn.0045d260
mov eax, dword [esi + 0x11d0]
test eax, eax
je 0x45ed15
push eax
call dword [sym.imp.KERNEL32.dll_SetEvent]
mov eax, dword [esi + 0x11d4]
test eax, eax
je 0x45ed2c
push eax
call edi
mov dword [esi + 0x11d4], 0
mov eax, dword [esi + 0x11d8]
test eax, eax
je 0x45ed66
push 0x2710
push eax
call dword [sym.imp.KERNEL32.dll_WaitForSingleObject]
mov eax, dword [esi + 0x11d0]
xor ebx, ebx
cmp eax, ebx
je 0x45ed57
push eax
call edi
mov dword [esi + 0x11d0], ebx
mov ecx, dword [esi + 0x11d8]
push ecx
call edi
mov dword [esi + 0x11d8], ebx
push str.OpenDoc_Finsh_
call fcn.00468970
add esp, 4
lea ecx, [ebp - 0x3c]
call fcn.0044c650
lea ecx, [ebp - 0x20]
call fcn.0044c650
mov eax, 1
jmp 0x45ee2e
push str.1201_FreeLibrary_error
call fcn.00468970
add esp, 4
push 1
lea edx, [ebp - 0x40]
push edx
mov ecx, 0x57148c
call fcn.0047c420
mov esi, eax
push 0x33
lea eax, [ebp - 0x24]
push eax
mov ecx, 0x57148c
mov dword [ebp - 4], 2
call fcn.0047c420
mov esi, dword [esi]
mov eax, dword [eax]
push 0x10
push esi
push eax
push 0
call dword [sym.imp.USER32.dll_MessageBoxW]
mov eax, dword [ebp - 0x24]
add eax, 0xfffffff0
lea ecx, [eax + 0xc]
or edx, 0xffffffff
lock xadd dword [ecx], edx
dec edx
test edx, edx
jg 0x45edf2
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
mov eax, dword [edx + 4]
call eax
mov eax, dword [ebp - 0x40]
add eax, 0xfffffff0
mov dword [ebp - 4], 0xffffffff
lea ecx, [eax + 0xc]
or edx, 0xffffffff
lock xadd dword [ecx], edx
dec edx
test edx, edx
jg 0x45ee18
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
mov eax, dword [edx + 4]
call eax
lea ecx, [ebp + 0x1410]
push ecx
push 0x5233f4
call fcn.00468970
add esp, 8
xor eax, eax
lea esp, [ebp - 0x174]
mov ecx, dword [ebp - 0xc]
mov dword fs:[0], ecx
pop ecx
pop edi
pop esi
pop ebx
mov ecx, dword [ebp + 0x1810]
xor ecx, ebp
call fcn.004d6555
add ebp, 0x1814
mov esp, ebp
pop ebp
ret 0x14