Function at 0x408880
Capabilities:
Contain obfuscated stackstrings

Disassembly:
push ebp
mov ebp, esp
push ebx
push edi
push esi
sub esp, 0x590
mov dword [ebp - 0x18], edx
mov dword [ebp - 0x24], ecx
mov esi, dword [ebp + 0x18]
mov edi, dword [ebp + 0x14]
movsd xmm0, qword [0x40deb0]
movsd qword [ebp - 0xea], xmm0
movups xmm0, xmmword [str.interface]
movups xmmword [ebp - 0xf8], xmm0
movups xmm0, xmmword [0x40dec6]
movups xmmword [ebp - 0x18e], xmm0
movups xmm0, xmmword [str.dispinterface]
movups xmmword [ebp - 0x19c], xmm0
movsd xmm0, qword [0x40dd50]
movsd qword [ebp - 0x118], xmm0
movups xmm0, xmmword [str.helpcontext]
movups xmmword [ebp - 0x128], xmm0
movups xmm0, xmmword [str.appobject]
movups xmmword [ebp - 0xa0], xmm0
mov dword [ebp - 0x90], 0x74
movups xmm0, xmmword [str.cancreate]
movups xmmword [ebp - 0x8c], xmm0
mov dword [ebp - 0x7c], 0x65
movups xmm0, xmmword [str.licensed]
movups xmmword [ebp - 0x64], xmm0
mov word [ebp - 0x54], 0
movups xmm0, xmmword [str.predeclid]
movups xmmword [ebp - 0x78], xmm0
mov dword [ebp - 0x68], 0x64
mov word [ebp - 0x38], 0
mov dword [ebp - 0x3c], 0x6e0065
mov dword [ebp - 0x40], 0x640064
mov dword [ebp - 0x44], 0x690068
movups xmm0, xmmword [str.control]
movups xmmword [ebp - 0xb0], xmm0
mov word [ebp - 0x28], 0
mov dword [ebp - 0x2c], 0x6c0061
mov dword [ebp - 0x30], 0x750064
movups xmm0, xmmword [0x40ddda]
movups xmmword [ebp - 0x170], xmm0
movups xmm0, xmmword [str.nonextensible]
movups xmmword [ebp - 0x17c], xmm0
movups xmm0, xmmword [0x40ddf6]
movups xmmword [ebp - 0x154], xmm0
movups xmm0, xmmword [str.oleautomation]
movups xmmword [ebp - 0x160], xmm0
movsd xmm0, qword [0x40df02]
movsd qword [ebp - 0xd2], xmm0
movups xmm0, xmmword [str.restricted]
movups xmmword [ebp - 0xe0], xmm0
movups xmm0, xmmword [0x40de10]
movups xmmword [ebp - 0x13a], xmm0
movups xmm0, xmmword [str.aggregatable]
movups xmmword [ebp - 0x144], xmm0
movsd xmm0, qword [0x40de2e]
movsd qword [ebp - 0xba], xmm0
movups xmm0, xmmword [str.replacable]
movups xmmword [ebp - 0xc8], xmm0
movsd xmm0, qword [0x40de46]
movsd qword [ebp - 0x100], xmm0
movups xmm0, xmmword [str.reversebind]
movups xmmword [ebp - 0x110], xmm0
mov dword [ebp - 0x48], 0x79
mov dword [ebp - 0x4c], 0x78006f
mov dword [ebp - 0x50], 0x720070
mov eax, dword [esi + 0x204]
lea eax, [eax*2 + 6]
push eax
push dword [esi]
call dword [sym.imp.ucrtbase.dll_realloc]
mov ecx, esi
add esp, 8
mov dword [esi], eax
mov ebx, dword [esi + 0x204]
mov word [eax + ebx*2 + 4], 0
mov dword [eax + ebx*2], 0xa005b
lea esi, [ebx + 2]
mov dword [ecx + 0x204], esi
cmp dword [edi + 0x28], 4
lea edi, [ebx + ebx + 4]
je 0x408b2e
add edi, 4
mov esi, dword [sym.imp.ucrtbase.dll_realloc]
push edi
push eax
call esi
add esp, 8
mov dword [eax + ebx*2 + 4], 0x20
lea ecx, [ebx*2 + 0xa]
push ecx
push eax
call esi
add esp, 8
mov dword [eax + ebx*2 + 6], 0x20
lea ecx, [ebx*2 + 0xc]
push ecx
push eax
call esi
add esp, 8
mov dword [eax + ebx*2 + 8], 0x20
lea ecx, [ebx*2 + 0xe]
push ecx
push eax
call esi
add esp, 8
mov dword [eax + ebx*2 + 0xa], 0x20
lea ecx, [ebx*2 + 0x14]
push ecx
push eax
call esi
mov edx, esi
add esp, 8
mov dword [eax + ebx*2 + 0x10], 0x6c
mov dword [eax + ebx*2 + 0xc], 0x64006f
lea esi, [ebx + 0xb]
lea edi, [ebx*2 + 0x16]
lea ecx, [ebx*2 + 0x18]
push ecx
push eax
call edx
add esp, 8
mov ecx, dword [ebp + 0x18]
mov dword [ecx], eax
mov dword [eax + ebx*2 + 0x12], 0xa002c
mov word [eax + ebx*2 + 0x16], 0
add edi, 4
mov ebx, dword [sym.imp.ucrtbase.dll_realloc]
push edi
push eax
call ebx
add esp, 8
mov dword [eax + esi*2], 0x20
lea ecx, [esi*2 + 6]
push ecx
push eax
call ebx
add esp, 8
mov dword [eax + esi*2 + 2], 0x20
lea ecx, [esi*2 + 8]
push ecx
push eax
call ebx
add esp, 8
mov dword [eax + esi*2 + 4], 0x20
lea ecx, [esi*2 + 0xa]
push ecx
push eax
call ebx
add esp, 8
mov dword [eax + esi*2 + 6], 0x20
lea ecx, [esi*2 + 0x12]
push ecx
push eax
call ebx
mov edx, ebx
add esp, 8
mov ebx, dword [ebp + 0x18]
mov dword [ebx], eax
mov dword [eax + esi*2 + 8], 0x750075
mov word [eax + esi*2 + 0x10], 0
mov dword [eax + esi*2 + 0xc], 0x640069
lea edi, [esi + 9]
lea ecx, [esi*2 + 0x14]
push ecx
push eax
call edx
add esp, 8
mov dword [ebx], eax
mov dword [eax + esi*2 + 0x10], 0x28
mov dword [ebx + 0x204], edi
lea esi, [ebp - 0x39c]
push 0x100
push esi
push dword [ebp + 0x14]
call dword [sym.imp.ole32.dll_StringFromGUID2]
mov eax, 0xfffffffe
nop
cmp word [ebp + eax - 0x39a], 0
lea eax, [eax + 2]
jne 0x408bf0
mov word [eax + esi - 2], 0
xor edi, edi
nop word [eax + eax]
cmp word [ebp + edi - 0x39a], 0
lea edi, [edi + 2]
jne 0x408c10
lea ebx, [edi - 2]
sar ebx, 1
mov esi, dword [ebp + 0x18]
mov eax, dword [esi + 0x204]
add eax, ebx
lea eax, [eax*2 + 2]
push eax
push dword [esi]
call dword [sym.imp.ucrtbase.dll_realloc]
add esp, 8
mov dword [ebp - 0x10], eax
mov esi, dword [esi + 0x204]
lea edx, [eax + esi*2]
push edi
lea ecx, [ebp - 0x39a]
push ecx
push edx
call sym._memcpy
add esp, 0xc
mov eax, esi
add esi, ebx
lea edi, [eax + ebx + 1]
lea eax, [esi*2 + 4]
push eax
push dword [ebp - 0x10]
call dword [sym.imp.ucrtbase.dll_realloc]
add esp, 8
mov ebx, eax
mov eax, dword [ebp + 0x18]
mov dword [eax], ebx
mov dword [ebx + esi*2], 0x29
mov dword [eax + 0x204], edi
cmp dword [ebp + 0xc], 0
je 0x408e0b
lea eax, [esi*2 + 8]
push eax
push ebx
mov ebx, dword [sym.imp.ucrtbase.dll_realloc]
call ebx
add esp, 8
mov ecx, dword [ebp + 0x18]
mov dword [ecx], eax
mov dword [eax + edi*2], 0xa002c
mov word [eax + edi*2 + 4], 0
lea ecx, [esi*2 + 0xa]
push ecx
push eax
call ebx
add esp, 8
mov dword [eax + esi*2 + 6], 0x20
lea ecx, [esi*2 + 0xc]
push ecx
push eax
call ebx
add esp, 8
mov dword [eax + esi*2 + 8], 0x20
lea ecx, [esi*2 + 0xe]
push ecx
push eax
call ebx
add esp, 8
mov dword [eax + esi*2 + 0xa], 0x20
lea ecx, [esi*2 + 0x10]
push ecx
push eax
call ebx
add esp, 8
mov dword [eax + esi*2 + 0xc], 0x20
lea ecx, [esi*2 + 0x24]
push ecx
push eax
call ebx
add esp, 8
mov ecx, dword [ebp + 0x18]
mov dword [ecx], eax
movups xmm0, xmmword [0x40dc80]
movups xmmword [eax + esi*2 + 0xe], xmm0
movsd xmm0, qword [0x40dc8e]
movsd qword [eax + esi*2 + 0x1c], xmm0
lea edi, [esi + 0x13]
lea ecx, [esi*2 + 0x28]
push ecx
push eax
call ebx
mov ecx, dword [ebp + 0xc]
add esp, 8
mov edx, dword [ebp + 0x18]
mov dword [edx], eax
mov dword [eax + esi*2 + 0x22], 0x220028
mov word [eax + esi*2 + 0x26], 0
mov dword [ebp - 0x10], edi
mov dword [edx + 0x204], edi
xor edi, edi
nop word [eax + eax]
cmp word [ecx + edi], 0
lea edi, [edi + 2]
jne 0x408d80
lea esi, [edi - 2]
sar esi, 1
mov edx, dword [ebp - 0x10]
add edx, esi
mov dword [ebp - 0x14], edx
lea ecx, [edx + edx + 2]
push ecx
push eax
mov eax, dword [sym.imp.ucrtbase.dll_realloc]
call eax
add esp, 8
mov ebx, eax
mov ecx, dword [ebp + 0x18]
mov dword [ecx], eax
mov eax, dword [ebp - 0x10]
lea eax, [ebx + eax*2]
push edi
mov edi, ecx
push dword [ebp + 0xc]
push eax
call sym._memcpy
add esp, 0xc
mov eax, dword [ebp - 0x10]
add eax, esi
add eax, 2
mov dword [ebp - 0x10], eax
mov esi, dword [ebp - 0x14]
lea eax, [esi*2 + 6]
push eax
push ebx
call dword [sym.imp.ucrtbase.dll_realloc]
add esp, 8
mov ebx, eax
mov dword [edi], eax
mov eax, esi
mov esi, dword [ebp - 0x10]
mov dword [ebx + eax*2], 0x290022
mov word [ebx + eax*2 + 4], 0
mov dword [edi + 0x204], esi
cmp dword [ebp + 0x10], 0
jne 0x408e1a
jmp 0x408faf
mov esi, edi
mov edi, dword [ebp + 0x18]
cmp dword [ebp + 0x10], 0
je 0x408faf
lea eax, [esi*2 + 6]
push eax
push ebx
mov ebx, esi
mov esi, dword [sym.imp.ucrtbase.dll_realloc]
call esi
add esp, 8
mov dword [edi], eax
mov dword [eax + ebx*2], 0xa002c
mov word [eax + ebx*2 + 4], 0
lea ecx, [ebx*2 + 8]
push ecx
push eax
call esi
add esp, 8
mov dword [eax + ebx*2 + 4], 0x20
lea ecx, [ebx*2 + 0xa]
push ecx
push eax
call esi
add esp, 8
mov dword [eax + ebx*2 + 6], 0x20
lea ecx, [ebx*2 + 0xc]
push ecx
push eax
call esi
add esp, 8
mov dword [eax + ebx*2 + 8], 0x20
lea edi, [ebx + 6]
lea ecx, [ebx*2 + 0xe]
push ecx
push eax
call esi
add esp, 8
mov dword [eax + ebx*2 + 0xa], 0x20
xor esi, esi
nop dword [eax]
cmp word [ebp + esi - 0x128], 0
lea esi, [esi + 2]
jne 0x408ea0
lea ebx, [esi - 2]
sar ebx, 1
lea ecx, [ebx + edi]
mov dword [ebp - 0x10], ecx
lea ecx, [ecx*2 + 2]
push ecx
push eax
call dword [sym.imp.ucrtbase.dll_realloc]
add esp, 8
mov dword [ebp - 0x14], eax
lea edx, [eax + edi*2]
lea ecx, [ebp - 0x128]
push esi
push ecx
push edx
call sym._memcpy
add esp, 0xc
lea esi, [ebx + edi]
inc esi
mov ebx, dword [sym.imp.ucrtbase.dll_realloc]
mov edi, dword [ebp - 0x10]
lea eax, [edi*2 + 4]
push eax
push dword [ebp - 0x14]
call ebx
add esp, 8
mov ecx, dword [ebp + 0x18]
mov dword [ecx], eax
mov dword [eax + edi*2], 0x28
mov dword [ecx + 0x204], esi
lea eax, [ebp - 0x59c]
push dword [ebp + 0x10]
push 0x40de60
push eax
call dword [sym.imp.user32.dll_wsprintfW]
add esp, 0xc
xor edi, edi
nop dword [eax + eax]
cmp word [ebp + edi - 0x59c], 0
lea edi, [edi + 2]
jne 0x408f30
lea esi, [edi - 2]
sar esi, 1
mov ecx, dword [ebp + 0x18]
mov eax, dword [ecx + 0x204]
add eax, esi
lea eax, [eax*2 + 2]
push eax
push dword [ecx]
call ebx
add esp, 8
mov ecx, eax
mov dword [ebp - 0x10], eax
mov eax, dword [ebp + 0x18]
mov ebx, dword [eax + 0x204]
lea eax, [ecx + ebx*2]
push edi
lea ecx, [ebp - 0x59c]
push ecx
push eax
call sym._memcpy
add esp, 0xc
lea edi, [ebx + esi]
add esi, ebx
inc esi
lea eax, [edi*2 + 4]
push eax
push dword [ebp - 0x10]
call dword [sym.imp.ucrtbase.dll_realloc]
add esp, 8
mov ebx, eax
mov eax, dword [ebp + 0x18]
mov dword [eax], ebx
mov dword [ebx + edi*2], 0x29
mov edi, eax
mov dword [eax + 0x204], esi
mov eax, dword [ebp + 0x14]
movzx eax, word [eax + 0x36]
test ax, ax
je 0x409d4c
test al, 1
jne 0x409042
test al, 2
jne 0x409131
test al, 4
jne 0x409221
test al, 8
jne 0x40930b
test al, 0x10
jne 0x4093fb
test al, 0x20
jne 0x4094eb
test al, 0x40
jne 0x4095e1
test al, al
js 0x4096cb
test eax, 0x100
jne 0x4097c4
test eax, 0x200
jne 0x4098b4
test eax, 0x400
jne 0x4099a4
test eax, 0x800
jne 0x409a94
test eax, 0x2000
jne 0x409b84
test eax, 0x4000
jne 0x409c74
jmp 0x409d4c
lea eax, [esi*2 + 6]
push eax
push ebx
mov ebx, dword [sym.imp.ucrtbase.dll_realloc]
call ebx
add esp, 8
mov dword [edi], eax
mov esi, dword [edi + 0x204]
mov word [eax + esi*2 + 4], 0
mov dword [eax + esi*2], 0xa002c
lea ecx, [esi*2 + 8]
push ecx
push eax
call ebx
add esp, 8
mov dword [eax + esi*2 + 4], 0x20
lea ecx, [esi*2 + 0xa]
push ecx
push eax
call ebx
add esp, 8
mov dword [eax + esi*2 + 6], 0x20
lea ecx, [esi*2 + 0xc]
push ecx
push eax
call ebx
add esp, 8
mov dword [eax + esi*2 + 8], 0x20
lea ecx, [esi + 6]
mov dword [ebp - 0x10], ecx
lea ecx, [esi*2 + 0xe]
push ecx
push eax
call ebx
add esp, 8
mov dword [eax + esi*2 + 0xa], 0x20
xor esi, esi
nop dword [eax]
cmp word [ebp + esi - 0xa0], 0
lea esi, [esi + 2]
jne 0x4090d0
lea edi, [esi - 2]
sar edi, 1
add edi, dword [ebp - 0x10]
lea ecx, [edi*2 + 2]
push ecx
push eax
call dword [sym.imp.ucrtbase.dll_realloc]
add esp, 8
mov ebx, eax
mov ecx, dword [ebp + 0x18]
mov dword [ecx], eax
mov eax, dword [ebp - 0x10]
lea eax, [ebx + eax*2]
mov edx, ecx
lea ecx, [ebp - 0xa0]
push esi
mov esi, edi
mov edi, edx
push ecx
push eax
call sym._memcpy
add esp, 0xc
mov dword [edi + 0x204], esi
mov eax, dword [ebp + 0x14]
movzx eax, word [eax + 0x36]
test al, 2
je 0x408fcb
lea eax, [esi*2 + 6]
push eax
push ebx
mov ebx, dword [sym.imp.ucrtbase.dll_realloc]
call ebx
add esp, 8
mov dword [edi], eax
mov esi, dword [edi + 0x204]
mov word [eax + esi*2 + 4], 0
mov dword [eax + esi*2], 0xa002c
lea ecx, [esi*2 + 8]
push ecx
push eax
call ebx
add esp, 8
mov dword [eax + esi*2 + 4], 0x20
lea ecx, [esi*2 + 0xa]
push ecx
push eax
call ebx
add esp, 8
mov dword [eax + esi*2 + 6], 0x20
lea ecx, [esi*2 + 0xc]
push ecx
push eax
call ebx
add esp, 8
mov dword [eax + esi*2 + 8], 0x20
lea ecx, [esi + 6]
mov dword [ebp - 0x10], ecx
lea ecx, [esi*2 + 0xe]
push ecx
push eax
call ebx
add esp, 8
mov dword [eax + esi*2 + 0xa], 0x20
xor esi, esi
nop dword [eax + eax]
cmp word [ebp + esi - 0x8c], 0
lea esi, [esi + 2]
jne 0x4091c0
lea edi, [esi - 2]
sar edi, 1
add edi, dword [ebp - 0x10]
lea ecx, [edi*2 + 2]
push ecx
push eax
call dword [sym.imp.ucrtbase.dll_realloc]
add esp, 8
mov ebx, eax
mov ecx, dword [ebp + 0x18]
mov dword [ecx], eax
mov eax, dword [ebp - 0x10]
lea eax, [ebx + eax*2]
mov edx, ecx
lea ecx, [ebp - 0x8c]
push esi
mov esi, edi
mov edi, edx
push ecx
push eax
call sym._memcpy
add esp, 0xc
mov dword [edi + 0x204], esi
mov eax, dword [ebp + 0x14]
movzx eax, word [eax + 0x36]
test al, 4
je 0x408fd3
lea eax, [esi*2 + 6]
push eax
push ebx
mov ebx, dword [sym.imp.ucrtbase.dll_realloc]
call ebx
add esp, 8
mov dword [edi], eax
mov esi, dword [edi + 0x204]
mov word [eax + esi*2 + 4], 0
mov dword [eax + esi*2], 0xa002c
lea ecx, [esi*2 + 8]
push ecx
push eax
call ebx
add esp, 8
mov dword [eax + esi*2 + 4], 0x20
lea ecx, [esi*2 + 0xa]
push ecx
push eax
call ebx
add esp, 8
mov dword [eax + esi*2 + 6], 0x20
lea ecx, [esi*2 + 0xc]
push ecx
push eax
call ebx
add esp, 8
mov dword [eax + esi*2 + 8], 0x20
lea ecx, [esi + 6]
mov dword [ebp - 0x10], ecx
lea ecx, [esi*2 + 0xe]
push ecx
push eax
call ebx
add esp, 8
mov dword [eax + esi*2 + 0xa], 0x20
xor esi, esi
nop dword [eax + eax]
cmp word [ebp + esi - 0x64], 0
lea esi, [esi + 2]
jne 0x4092b0
lea edi, [esi - 2]
sar edi, 1
add edi, dword [ebp - 0x10]
lea ecx, [edi*2 + 2]
push ecx
push eax
call dword [sym.imp.ucrtbase.dll_realloc]
add esp, 8
mov ebx, eax
mov ecx, dword [ebp + 0x18]
mov dword [ecx], eax
mov eax, dword [ebp - 0x10]
lea eax, [ebx + eax*2]
mov edx, ecx
lea ecx, [ebp - 0x64]
push esi
mov esi, edi
mov edi, edx
push ecx
push eax
call sym._memcpy
add esp, 0xc
mov dword [edi + 0x204], esi
mov eax, dword [ebp + 0x14]
movzx eax, word [eax + 0x36]
test al, 8
je 0x408fdb
lea eax, [esi*2 + 6]
push eax
push ebx
mov ebx, dword [sym.imp.ucrtbase.dll_realloc]
call ebx
add esp, 8
mov dword [edi], eax
mov esi, dword [edi + 0x204]
mov word [eax + esi*2 + 4], 0
mov dword [eax + esi*2], 0xa002c
lea ecx, [esi*2 + 8]
push ecx
push eax
call ebx
add esp, 8
mov dword [eax + esi*2 + 4], 0x20
lea ecx, [esi*2 + 0xa]
push ecx
push eax
call ebx
add esp, 8
mov dword [eax + esi*2 + 6], 0x20
lea ecx, [esi*2 + 0xc]
push ecx
push eax
call ebx
add esp, 8
mov dword [eax + esi*2 + 8], 0x20
lea ecx, [esi + 6]
mov dword [ebp - 0x10], ecx
lea ecx, [esi*2 + 0xe]
push ecx
push eax
call ebx
add esp, 8
mov dword [eax + esi*2 + 0xa], 0x20
xor esi, esi
nop word cs:[eax + eax]
cmp word [ebp + esi - 0x78], 0
lea esi, [esi + 2]
jne 0x4093a0
lea edi, [esi - 2]
sar edi, 1
add edi, dword [ebp - 0x10]
lea ecx, [edi*2 + 2]
push ecx
push eax
call dword [sym.imp.ucrtbase.dll_realloc]
add esp, 8
mov ebx, eax
mov ecx, dword [ebp + 0x18]
mov dword [ecx], eax
mov eax, dword [ebp - 0x10]
lea eax, [ebx + eax*2]
mov edx, ecx
lea ecx, [ebp - 0x78]
push esi
mov esi, edi
mov edi, edx
push ecx
push eax
call sym._memcpy
add esp, 0xc
mov dword [edi + 0x204], esi
mov eax, dword [ebp + 0x14]
movzx eax, word [eax + 0x36]
test al, 0x10
je 0x408fe3
lea eax, [esi*2 + 6]
push eax
push ebx
mov ebx, dword [sym.imp.ucrtbase.dll_realloc]
call ebx
add esp, 8
mov dword [edi], eax
mov esi, dword [edi + 0x204]
mov word [eax + esi*2 + 4], 0
mov dword [eax + esi*2], 0xa002c
lea ecx, [esi*2 + 8]
push ecx
push eax
call ebx
add esp, 8
mov dword [eax + esi*2 + 4], 0x20
lea ecx, [esi*2 + 0xa]
push ecx
push eax
call ebx
add esp, 8
mov dword [eax + esi*2 + 6], 0x20
lea ecx, [esi*2 + 0xc]
push ecx
push eax
call ebx
add esp, 8
mov dword [eax + esi*2 + 8], 0x20
lea ecx, [esi + 6]
mov dword [ebp - 0x10], ecx
lea ecx, [esi*2 + 0xe]
push ecx
push eax
call ebx
add esp, 8
mov dword [eax + esi*2 + 0xa], 0x20
xor esi, esi
nop word cs:[eax + eax]
cmp word [ebp + esi - 0x44], 0
lea esi, [esi + 2]
jne 0x409490
lea edi, [esi - 2]
sar edi, 1
add edi, dword [ebp - 0x10]
lea ecx, [edi*2 + 2]
push ecx
push eax
call dword [sym.imp.ucrtbase.dll_realloc]
add esp, 8
mov ebx, eax
mov ecx, dword [ebp + 0x18]
mov dword [ecx], eax
mov eax, dword [ebp - 0x10]
lea eax, [ebx + eax*2]
mov edx, ecx
lea ecx, [ebp - 0x44]
push esi
mov esi, edi
mov edi, edx
push ecx
push eax
call sym._memcpy
add esp, 0xc
mov dword [edi + 0x204], esi
mov eax, dword [ebp + 0x14]
movzx eax, word [eax + 0x36]
test al, 0x20
je 0x408feb
lea eax, [esi*2 + 6]
push eax
push ebx
mov ebx, dword [sym.imp.ucrtbase.dll_realloc]
call ebx
add esp, 8
mov dword [edi], eax
mov esi, dword [edi + 0x204]
mov word [eax + esi*2 + 4], 0
mov dword [eax + esi*2], 0xa002c
lea ecx, [esi*2 + 8]
push ecx
push eax
call ebx
add esp, 8
mov dword [eax + esi*2 + 4], 0x20
lea ecx, [esi*2 + 0xa]
push ecx
push eax
call ebx
add esp, 8
mov dword [eax + esi*2 + 6], 0x20
lea ecx, [esi*2 + 0xc]
push ecx
push eax
call ebx
add esp, 8
mov dword [eax + esi*2 + 8], 0x20
lea ecx, [esi + 6]
mov dword [ebp - 0x10], ecx
lea ecx, [esi*2 + 0xe]
push ecx
push eax
call ebx
add esp, 8
mov dword [eax + esi*2 + 0xa], 0x20
xor esi, esi
nop word cs:[eax + eax]
cmp word [ebp + esi - 0xb0], 0
lea esi, [esi + 2]
jne 0x409580
lea edi, [esi - 2]
sar edi, 1
add edi, dword [ebp - 0x10]
lea ecx, [edi*2 + 2]
push ecx
push eax
call dword [sym.imp.ucrtbase.dll_realloc]
add esp, 8
mov ebx, eax
mov ecx, dword [ebp + 0x18]
mov dword [ecx], eax
mov eax, dword [ebp - 0x10]
lea eax, [ebx + eax*2]
mov edx, ecx
lea ecx, [ebp - 0xb0]
push esi
mov esi, edi
mov edi, edx
push ecx
push eax
call sym._memcpy
add esp, 0xc
mov dword [edi + 0x204], esi
mov eax, dword [ebp + 0x14]
movzx eax, word [eax + 0x36]
test al, 0x40
je 0x408ff3
lea eax, [esi*2 + 6]
push eax
push ebx
mov ebx, dword [sym.imp.ucrtbase.dll_realloc]
call ebx
add esp, 8
mov dword [edi], eax
mov esi, dword [edi + 0x204]
mov word [eax + esi*2 + 4], 0
mov dword [eax + esi*2], 0xa002c
lea ecx, [esi*2 + 8]
push ecx
push eax
call ebx
add esp, 8
mov dword [eax + esi*2 + 4], 0x20
lea ecx, [esi*2 + 0xa]
push ecx
push eax
call ebx
add esp, 8
mov dword [eax + esi*2 + 6], 0x20
lea ecx, [esi*2 + 0xc]
push ecx
push eax
call ebx
add esp, 8
mov dword [eax + esi*2 + 8], 0x20
lea ecx, [esi + 6]
mov dword [ebp - 0x10], ecx
lea ecx, [esi*2 + 0xe]
push ecx
push eax
call ebx
add esp, 8
mov dword [eax + esi*2 + 0xa], 0x20
xor esi, esi
nop dword [eax + eax]
cmp word [ebp + esi - 0x30], 0
lea esi, [esi + 2]
jne 0x409670
lea edi, [esi - 2]
sar edi, 1
add edi, dword [ebp - 0x10]
lea ecx, [edi*2 + 2]
push ecx
push eax
call dword [sym.imp.ucrtbase.dll_realloc]
add esp, 8
mov ebx, eax
mov ecx, dword [ebp + 0x18]
mov dword [ecx], eax
mov eax, dword [ebp - 0x10]
lea eax, [ebx + eax*2]
mov edx, ecx
lea ecx, [ebp - 0x30]
push esi
mov esi, edi
mov edi, edx
push ecx
push eax
call sym._memcpy
add esp, 0xc
mov dword [edi + 0x204], esi
mov eax, dword [ebp + 0x14]
movzx eax, word [eax + 0x36]
test al, al
jns 0x408ffb
lea eax, [esi*2 + 6]
push eax
push ebx
mov ebx, dword [sym.imp.ucrtbase.dll_realloc]
call ebx
add esp, 8
mov dword [edi], eax
mov esi, dword [edi + 0x204]
mov word [eax + esi*2 + 4], 0
mov dword [eax + esi*2], 0xa002c
lea ecx, [esi*2 + 8]
push ecx
push eax
call ebx
add esp, 8
mov dword [eax + esi*2 + 4], 0x20
lea ecx, [esi*2 + 0xa]
push ecx
push eax
call ebx
add esp, 8
mov dword [eax + esi*2 + 6], 0x20
lea ecx, [esi*2 + 0xc]
push ecx
push eax
call ebx
add esp, 8
mov dword [eax + esi*2 + 8], 0x20
lea ecx, [esi + 6]
mov dword [ebp - 0x10], ecx
lea ecx, [esi*2 + 0xe]
push ecx
push eax
call ebx
add esp, 8
mov dword [eax + esi*2 + 0xa], 0x20
xor esi, esi
nop word cs:[eax + eax]
cmp word [ebp + esi - 0x17c], 0
lea esi, [esi + 2]
jne 0x409760
lea edi, [esi - 2]
sar edi, 1
add edi, dword [ebp - 0x10]
lea ecx, [edi*2 + 2]
push ecx
push eax
call dword [sym.imp.ucrtbase.dll_realloc]
add esp, 8
mov ebx, eax
mov ecx, dword [ebp + 0x18]
mov dword [ecx], eax
mov eax, dword [ebp - 0x10]
lea eax, [ebx + eax*2]
mov edx, ecx
lea ecx, [ebp - 0x17c]
push esi
mov esi, edi
mov edi, edx
push ecx
push eax
call sym._memcpy
add esp, 0xc
mov dword [edi + 0x204], esi
mov eax, dword [ebp + 0x14]
movzx eax, word [eax + 0x36]
test eax, 0x100
je 0x409006
lea eax, [esi*2 + 6]
push eax
push ebx
mov ebx, dword [sym.imp.ucrtbase.dll_realloc]
call ebx
add esp, 8
mov dword [edi], eax
mov esi, dword [edi + 0x204]
mov word [eax + esi*2 + 4], 0
mov dword [eax + esi*2], 0xa002c
lea ecx, [esi*2 + 8]
push ecx
push eax
call ebx
add esp, 8
mov dword [eax + esi*2 + 4], 0x20
lea ecx, [esi*2 + 0xa]
push ecx
push eax
call ebx
add esp, 8
mov dword [eax + esi*2 + 6], 0x20
lea ecx, [esi*2 + 0xc]
push ecx
push eax
call ebx
add esp, 8
mov dword [eax + esi*2 + 8], 0x20
lea ecx, [esi + 6]
mov dword [ebp - 0x10], ecx
lea ecx, [esi*2 + 0xe]
push ecx
push eax
call ebx
add esp, 8
mov dword [eax + esi*2 + 0xa], 0x20
xor esi, esi
nop
cmp word [ebp + esi - 0x160], 0
lea esi, [esi + 2]
jne 0x409850
lea edi, [esi - 2]
sar edi, 1
add edi, dword [ebp - 0x10]
lea ecx, [edi*2 + 2]
push ecx
push eax
call dword [sym.imp.ucrtbase.dll_realloc]
add esp, 8
mov ebx, eax
mov ecx, dword [ebp + 0x18]
mov dword [ecx], eax
mov eax, dword [ebp - 0x10]
lea eax, [ebx + eax*2]
mov edx, ecx
lea ecx, [ebp - 0x160]
push esi
mov esi, edi
mov edi, edx
push ecx
push eax
call sym._memcpy
add esp, 0xc
mov dword [edi + 0x204], esi
mov eax, dword [ebp + 0x14]
movzx eax, word [eax + 0x36]
test eax, 0x200
je 0x409011
lea eax, [esi*2 + 6]
push eax
push ebx
mov ebx, dword [sym.imp.ucrtbase.dll_realloc]
call ebx
add esp, 8
mov dword [edi], eax
mov esi, dword [edi + 0x204]
mov word [eax + esi*2 + 4], 0
mov dword [eax + esi*2], 0xa002c
lea ecx, [esi*2 + 8]
push ecx
push eax
call ebx
add esp, 8
mov dword [eax + esi*2 + 4], 0x20
lea ecx, [esi*2 + 0xa]
push ecx
push eax
call ebx
add esp, 8
mov dword [eax + esi*2 + 6], 0x20
lea ecx, [esi*2 + 0xc]
push ecx
push eax
call ebx
add esp, 8
mov dword [eax + esi*2 + 8], 0x20
lea ecx, [esi + 6]
mov dword [ebp - 0x10], ecx
lea ecx, [esi*2 + 0xe]
push ecx
push eax
call ebx
add esp, 8
mov dword [eax + esi*2 + 0xa], 0x20
xor esi, esi
nop
cmp word [ebp + esi - 0xe0], 0
lea esi, [esi + 2]
jne 0x409940
lea edi, [esi - 2]
sar edi, 1
add edi, dword [ebp - 0x10]
lea ecx, [edi*2 + 2]
push ecx
push eax
call dword [sym.imp.ucrtbase.dll_realloc]
add esp, 8
mov ebx, eax
mov ecx, dword [ebp + 0x18]
mov dword [ecx], eax
mov eax, dword [ebp - 0x10]
lea eax, [ebx + eax*2]
mov edx, ecx
lea ecx, [ebp - 0xe0]
push esi
mov esi, edi
mov edi, edx
push ecx
push eax
call sym._memcpy
add esp, 0xc
mov dword [edi + 0x204], esi
mov eax, dword [ebp + 0x14]
movzx eax, word [eax + 0x36]
test eax, 0x400
je 0x40901c
lea eax, [esi*2 + 6]
push eax
push ebx
mov ebx, dword [sym.imp.ucrtbase.dll_realloc]
call ebx
add esp, 8
mov dword [edi], eax
mov esi, dword [edi + 0x204]
mov word [eax + esi*2 + 4], 0
mov dword [eax + esi*2], 0xa002c
lea ecx, [esi*2 + 8]
push ecx
push eax
call ebx
add esp, 8
mov dword [eax + esi*2 + 4], 0x20
lea ecx, [esi*2 + 0xa]
push ecx
push eax
call ebx
add esp, 8
mov dword [eax + esi*2 + 6], 0x20
lea ecx, [esi*2 + 0xc]
push ecx
push eax
call ebx
add esp, 8
mov dword [eax + esi*2 + 8], 0x20
lea ecx, [esi + 6]
mov dword [ebp - 0x10], ecx
lea ecx, [esi*2 + 0xe]
push ecx
push eax
call ebx
add esp, 8
mov dword [eax + esi*2 + 0xa], 0x20
xor esi, esi
nop
cmp word [ebp + esi - 0x144], 0
lea esi, [esi + 2]
jne 0x409a30
lea edi, [esi - 2]
sar edi, 1
add edi, dword [ebp - 0x10]
lea ecx, [edi*2 + 2]
push ecx
push eax
call dword [sym.imp.ucrtbase.dll_realloc]
add esp, 8
mov ebx, eax
mov ecx, dword [ebp + 0x18]
mov dword [ecx], eax
mov eax, dword [ebp - 0x10]
lea eax, [ebx + eax*2]
mov edx, ecx
lea ecx, [ebp - 0x144]
push esi
mov esi, edi
mov edi, edx
push ecx
push eax
call sym._memcpy
add esp, 0xc
mov dword [edi + 0x204], esi
mov eax, dword [ebp + 0x14]
movzx eax, word [eax + 0x36]
test eax, 0x800
je 0x409027
lea eax, [esi*2 + 6]
push eax
push ebx
mov ebx, dword [sym.imp.ucrtbase.dll_realloc]
call ebx
add esp, 8
mov dword [edi], eax
mov esi, dword [edi + 0x204]
mov word [eax + esi*2 + 4], 0
mov dword [eax + esi*2], 0xa002c
lea ecx, [esi*2 + 8]
push ecx
push eax
call ebx
add esp, 8
mov dword [eax + esi*2 + 4], 0x20
lea ecx, [esi*2 + 0xa]
push ecx
push eax
call ebx
add esp, 8
mov dword [eax + esi*2 + 6], 0x20
lea ecx, [esi*2 + 0xc]
push ecx
push eax
call ebx
add esp, 8
mov dword [eax + esi*2 + 8], 0x20
lea ecx, [esi + 6]
mov dword [ebp - 0x10], ecx
lea ecx, [esi*2 + 0xe]
push ecx
push eax
call ebx
add esp, 8
mov dword [eax + esi*2 + 0xa], 0x20
xor esi, esi
nop
cmp word [ebp + esi - 0xc8], 0
lea esi, [esi + 2]
jne 0x409b20
lea edi, [esi - 2]
sar edi, 1
add edi, dword [ebp - 0x10]
lea ecx, [edi*2 + 2]
push ecx
push eax
call dword [sym.imp.ucrtbase.dll_realloc]
add esp, 8
mov ebx, eax
mov ecx, dword [ebp + 0x18]
mov dword [ecx], eax
mov eax, dword [ebp - 0x10]
lea eax, [ebx + eax*2]
mov edx, ecx
lea ecx, [ebp - 0xc8]
push esi
mov esi, edi
mov edi, edx
push ecx
push eax
call sym._memcpy
add esp, 0xc
mov dword [edi + 0x204], esi
mov eax, dword [ebp + 0x14]
movzx eax, word [eax + 0x36]
test eax, 0x2000
je 0x409032
lea eax, [esi*2 + 6]
push eax
push ebx
mov ebx, dword [sym.imp.ucrtbase.dll_realloc]
call ebx
add esp, 8
mov dword [edi], eax
mov esi, dword [edi + 0x204]
mov word [eax + esi*2 + 4], 0
mov dword [eax + esi*2], 0xa002c
lea ecx, [esi*2 + 8]
push ecx
push eax
call ebx
add esp, 8
mov dword [eax + esi*2 + 4], 0x20
lea ecx, [esi*2 + 0xa]
push ecx
push eax
call ebx
add esp, 8
mov dword [eax + esi*2 + 6], 0x20
lea ecx, [esi*2 + 0xc]
push ecx
push eax
call ebx
add esp, 8
mov dword [eax + esi*2 + 8], 0x20
lea ecx, [esi + 6]
mov dword [ebp - 0x10], ecx
lea ecx, [esi*2 + 0xe]
push ecx
push eax
call ebx
add esp, 8
mov dword [eax + esi*2 + 0xa], 0x20
xor esi, esi
nop
cmp word [ebp + esi - 0x110], 0
lea esi, [esi + 2]
jne 0x409c10
lea edi, [esi - 2]
sar edi, 1
add edi, dword [ebp - 0x10]
lea ecx, [edi*2 + 2]
push ecx
push eax
call dword [sym.imp.ucrtbase.dll_realloc]
add esp, 8
mov ebx, eax
mov ecx, dword [ebp + 0x18]
mov dword [ecx], eax
mov eax, dword [ebp - 0x10]
lea eax, [ebx + eax*2]
mov edx, ecx
lea ecx, [ebp - 0x110]
push esi
mov esi, edi
mov edi, edx
push ecx
push eax
call sym._memcpy
add esp, 0xc
mov dword [edi + 0x204], esi
mov eax, dword [ebp + 0x14]
movzx eax, word [eax + 0x36]
test eax, 0x4000
je 0x409d4c
lea eax, [esi*2 + 6]
push eax
push ebx
mov ebx, dword [sym.imp.ucrtbase.dll_realloc]
call ebx
add esp, 8
mov dword [edi], eax
mov esi, dword [edi + 0x204]
mov word [eax + esi*2 + 4], 0
mov dword [eax + esi*2], 0xa002c
lea ecx, [esi*2 + 8]
push ecx
push eax
call ebx
add esp, 8
mov dword [eax + esi*2 + 4], 0x20
lea ecx, [esi*2 + 0xa]
push ecx
push eax
call ebx
add esp, 8
mov dword [eax + esi*2 + 6], 0x20
lea ecx, [esi*2 + 0xc]
push ecx
push eax
call ebx
add esp, 8
mov dword [eax + esi*2 + 8], 0x20
lea ecx, [esi + 6]
mov dword [ebp - 0x10], ecx
lea ecx, [esi*2 + 0xe]
push ecx
push eax
call ebx
add esp, 8
mov dword [eax + esi*2 + 0xa], 0x20
xor esi, esi
nop
cmp word [ebp + esi - 0x50], 0
lea esi, [esi + 2]
jne 0x409d00
lea edi, [esi - 2]
sar edi, 1
add edi, dword [ebp - 0x10]
lea ecx, [edi*2 + 2]
push ecx
push eax
call dword [sym.imp.ucrtbase.dll_realloc]
add esp, 8
mov ebx, eax
mov ecx, dword [ebp + 0x18]
mov dword [ecx], eax
mov eax, dword [ebp - 0x10]
lea eax, [ebx + eax*2]
mov edx, ecx
lea ecx, [ebp - 0x50]
push esi
mov esi, edi
mov edi, edx
push ecx
push eax
call sym._memcpy
add esp, 0xc
mov dword [edi + 0x204], esi
lea eax, [esi*2 + 8]
push eax
push ebx
call dword [sym.imp.ucrtbase.dll_realloc]
add esp, 8
mov dword [edi], eax
mov ebx, dword [edi + 0x204]
mov dword [eax + ebx*2 + 4], 0xa
mov dword [eax + ebx*2], 0x5d000a
add ebx, 3
mov dword [edi + 0x204], ebx
mov ecx, dword [ebp + 0x14]
cmp dword [ecx + 0x28], 4
jne 0x409dac
lea edi, [ebp - 0x19e]
lea ecx, [ebp - 0x19c]
nop word cs:[eax + eax]
cmp word [edi + 2], 0
lea edi, [edi + 2]
jne 0x409da0
jmp 0x409dca
lea edi, [ebp - 0xfa]
lea ecx, [ebp - 0xf8]
nop dword [eax + eax]
cmp word [edi + 2], 0
lea edi, [edi + 2]
jne 0x409dc0
mov dword [ebp - 0x14], ecx
sub edi, ecx
mov esi, edi
sar esi, 1
add esi, ebx
lea ecx, [esi*2 + 2]
push ecx
push eax
call dword [sym.imp.ucrtbase.dll_realloc]
add esp, 8
mov ecx, eax
mov eax, dword [ebp + 0x18]
mov dword [eax], ecx
mov dword [ebp - 0x10], ecx
lea eax, [ecx + ebx*2]
add edi, 2
push edi
push dword [ebp - 0x14]
push eax
call sym._memcpy
add esp, 0xc
mov eax, dword [ebp + 0x18]
mov dword [eax + 0x204], esi
xor edi, edi
mov eax, dword [ebp + 8]
nop word cs:[eax + eax]
cmp word [eax + edi], 0
lea edi, [edi + 2]
jne 0x409e20
lea ebx, [edi - 2]
sar ebx, 1
lea ecx, [esi + ebx]
mov dword [ebp - 0x14], ecx
lea eax, [ecx*2 + 2]
push eax
push dword [ebp - 0x10]
call dword [sym.imp.ucrtbase.dll_realloc]
add esp, 8
mov dword [ebp - 0x10], eax
mov ecx, dword [ebp + 0x18]
mov dword [ecx], eax
lea eax, [eax + esi*2]
push edi
mov edi, ecx
push dword [ebp + 8]
push eax
call sym._memcpy
add esp, 0xc
add esi, ebx
inc esi
mov ebx, dword [ebp - 0x14]
lea eax, [ebx*2 + 4]
push eax
push dword [ebp - 0x10]
call dword [sym.imp.ucrtbase.dll_realloc]
add esp, 8
mov dword [edi], eax
mov dword [eax + ebx*2], 0x20
mov dword [edi + 0x204], esi
cmp dword [ebp - 0x18], 0
je 0x409fe5
mov ecx, dword [ebp + 0x14]
cmp dword [ecx + 0x28], 4
je 0x409fe5
lea ecx, [ebx*2 + 8]
add ebx, 3
push ecx
push eax
call dword [sym.imp.ucrtbase.dll_realloc]
add esp, 8
mov dword [edi], eax
mov dword [eax + esi*2], 0x20003a
mov word [eax + esi*2 + 4], 0
mov dword [edi + 0x204], ebx
mov esi, dword [ebp - 0x24]
mov eax, dword [esi]
lea ecx, [ebp - 0x34]
push ecx
push 0
push esi
call dword [eax + 0x20]
mov eax, dword [esi]
lea ecx, [ebp - 0x20]
push ecx
push dword [ebp - 0x34]
push esi
call dword [eax + 0x38]
test eax, eax
js 0x409fa9
mov eax, dword [ebp - 0x20]
mov ecx, dword [eax]
lea edx, [ebp - 0x1c]
push 0
push 0
push 0
push edx
push 0xffffffffffffffff
push eax
call dword [ecx + 0x30]
xor ebx, ebx
mov edi, dword [ebp - 0x1c]
nop dword [eax]
cmp word [edi + ebx], 0
lea ebx, [ebx + 2]
jne 0x409f10
lea esi, [ebx - 2]
sar esi, 1
mov ecx, dword [ebp + 0x18]
mov eax, dword [ecx + 0x204]
add eax, esi
lea eax, [eax*2 + 2]
push eax
push dword [ecx]
call dword [sym.imp.ucrtbase.dll_realloc]
add esp, 8
mov dword [ebp - 0x10], eax
mov ecx, dword [ebp + 0x18]
mov dword [ecx], eax
mov ecx, dword [ecx + 0x204]
mov dword [ebp - 0x18], ecx
lea ecx, [eax + ecx*2]
push ebx
push edi
push ecx
call sym._memcpy
add esp, 0xc
mov eax, dword [ebp - 0x18]
lea edi, [eax + esi]
add esi, eax
inc esi
lea eax, [edi*2 + 4]
push eax
push dword [ebp - 0x10]
call dword [sym.imp.ucrtbase.dll_realloc]
add esp, 8
mov ecx, dword [ebp + 0x18]
mov dword [ecx], eax
mov dword [eax + edi*2], 0x20
mov edi, ecx
mov dword [ecx + 0x204], esi
push dword [ebp - 0x1c]
call dword [sym.imp.oleaut32.dll_SysFreeString]
mov eax, dword [ebp - 0x20]
mov ecx, dword [eax]
push eax
call dword [ecx + 8]
mov eax, dword [edi]
mov esi, dword [edi + 0x204]
jmp 0x409fe5
mov eax, dword [edi + 0x204]
lea eax, [eax*2 + 0x12]
push eax
push dword [edi]
call dword [sym.imp.ucrtbase.dll_realloc]
add esp, 8
mov dword [edi], eax
mov esi, dword [edi + 0x204]
movups xmm0, xmmword [str._failed_]
movups xmmword [eax + esi*2], xmm0
mov word [eax + esi*2 + 0x10], 0
add esi, 8
mov dword [edi + 0x204], esi
lea ecx, [esi*2 + 6]
push ecx
push eax
call dword [sym.imp.ucrtbase.dll_realloc]
add esp, 8
mov dword [edi], eax
mov ecx, dword [edi + 0x204]
mov word [eax + ecx*2 + 4], 0
mov dword [eax + ecx*2], 0xa007b
add ecx, 2
mov dword [edi + 0x204], ecx
add edi, 4
nop dword [eax]
mov eax, edi
cmp word [edi], 0
lea edi, [edi + 2]
jne 0x40a020
movsd xmm0, qword [0x40d860]
movsd qword [edi - 2], xmm0
add esp, 0x590
pop esi
pop edi
pop ebx
pop ebp
ret