Function at 0x401580
Capabilities:
Connect to wmi namespace via wbemlocator
Reference wmi statements

Disassembly:
push ebp
mov ebp, esp
push 0xffffffffffffffff
push 0x4041fe
mov eax, dword fs:[0]
push eax
sub esp, 0xc0
mov eax, dword [0x407040]
xor eax, ebp
mov dword [ebp - 0x10], eax
push esi
push edi
push eax
lea eax, [ebp - 0xc]
mov dword fs:[0], eax
mov eax, ecx
mov dword [ebp - 0x78], eax
mov dword [ebp - 0x6c], eax
mov dword [ebp - 0x6c], eax
xorps xmm0, xmm0
xor eax, eax
mov dword [ebp - 0x18], 0
movups xmmword [ebp - 0x28], xmm0
mov dword [ebp - 0x14], 7
mov word [ebp - 0x28], ax
push eax
push eax
mov dword [ebp - 4], eax
call dword [sym.imp.ole32.dll_CoInitializeEx]
test eax, eax
jns 0x40169e
mov eax, dword [ebp - 0x14]
cmp eax, 0x21
jb 0x401617
cmp eax, 7
mov dword [ebp - 0x18], 0x21
push 0x42
lea esi, [ebp - 0x28]
cmova esi, dword [ebp - 0x28]
push str.Failed_to_initialize_COM_library.
push esi
call sub.VCRUNTIME140.dll_memmove
add esp, 0xc
xor eax, eax
mov word [esi + 0x42], ax
jmp 0x40162d
push str.Failed_to_initialize_COM_library.
mov byte [ebp - 0x68], 0
lea ecx, [ebp - 0x28]
push dword [ebp - 0x68]
push 0x21
call fcn.004027e0
sub esp, 0x18
lea edx, [ebp - 0x28]
mov ecx, esp
call fcn.00401490
mov esi, dword [ebp - 0x78]
mov ecx, esi
call fcn.00401280
mov ecx, dword [ebp - 0x14]
add esp, 0x18
cmp ecx, 7
jbe 0x401681
mov edx, dword [ebp - 0x28]
lea ecx, [ecx*2 + 2]
mov eax, edx
cmp ecx, 0x1000
jb 0x401677
mov edx, dword [eax - 4]
add ecx, 0x23
sub eax, edx
add eax, 0xfffffffc
cmp eax, 0x1f
ja 0x4020da
push ecx
push edx
call fcn.00403248
add esp, 8
mov eax, esi
mov ecx, dword [ebp - 0xc]
mov dword fs:[0], ecx
pop ecx
pop edi
pop esi
mov ecx, dword [ebp - 0x10]
xor ecx, ebp
call fcn.00403205
mov esp, ebp
pop ebp
ret
push 0
push 0
push 0
push 3
push 0
push 0
push 0
push 0xffffffffffffffff
push 0
call dword [sym.imp.ole32.dll_CoInitializeSecurity]
test eax, eax
jns 0x401715
mov eax, dword [ebp - 0x14]
cmp eax, 0x1e
jb 0x4016f4
cmp eax, 7
mov dword [ebp - 0x18], 0x1e
push 0x3c
lea esi, [ebp - 0x28]
cmova esi, dword [ebp - 0x28]
push str.Failed_to_initialize_security.
push esi
call sub.VCRUNTIME140.dll_memmove
add esp, 0xc
xor eax, eax
mov word [esi + 0x3c], ax
call dword [sym.imp.ole32.dll_CoUninitialize]
jmp 0x40162d
push str.Failed_to_initialize_security.
mov byte [ebp - 0x68], 0
lea ecx, [ebp - 0x28]
push dword [ebp - 0x68]
push 0x1e
call fcn.004027e0
call dword [sym.imp.ole32.dll_CoUninitialize]
jmp 0x40162d
lea eax, [ebp - 0x4c]
mov dword [ebp - 0x4c], 0
push eax
push 0x405194
push 1
push 0
push 0x4051a4
call dword [sym.imp.ole32.dll_CoCreateInstance]
test eax, eax
jns 0x401793
mov eax, dword [ebp - 0x14]
cmp eax, 0x25
jb 0x401772
cmp eax, 7
mov dword [ebp - 0x18], 0x25
push 0x4a
lea esi, [ebp - 0x28]
cmova esi, dword [ebp - 0x28]
push str.Failed_to_create_IWbemLocator_object.
push esi
call sub.VCRUNTIME140.dll_memmove
add esp, 0xc
xor eax, eax
mov word [esi + 0x4a], ax
call dword [sym.imp.ole32.dll_CoUninitialize]
jmp 0x40162d
push str.Failed_to_create_IWbemLocator_object.
mov byte [ebp - 0x68], 0
lea ecx, [ebp - 0x28]
push dword [ebp - 0x68]
push 0x25
call fcn.004027e0
call dword [sym.imp.ole32.dll_CoUninitialize]
jmp 0x40162d
push 0xc
mov dword [ebp - 0x48], 0
call fcn.00403218
mov esi, eax
add esp, 4
mov dword [ebp - 0x6c], esi
mov byte [ebp - 4], 1
test esi, esi
je 0x4017e4
xorps xmm0, xmm0
movq qword [esi], xmm0
mov dword [esi + 8], 0
push str.ROOTCIMV2
mov dword [esi + 4], 0
mov dword [esi + 8], 1
call dword [sym.imp.OLEAUT32.dll_SysReAllocString]
mov dword [esi], eax
test eax, eax
je 0x4020e0
jmp 0x4017e6
xor esi, esi
mov byte [ebp - 4], 0
mov dword [ebp - 0x6c], esi
test esi, esi
je 0x4020ea
lea edx, [ebp - 0x48]
mov byte [ebp - 4], 2
mov eax, dword [ebp - 0x4c]
push edx
push 0
push 0
mov ecx, dword [eax]
push 0
push 0
push 0
push 0
push dword [esi]
push eax
call dword [ecx + 0xc]
or edi, 0xffffffff
mov dword [ebp - 0x68], eax
mov byte [ebp - 4], 0
mov ecx, edi
lock xadd dword [esi + 8], ecx
dec ecx
jne 0x401860
mov ecx, dword [esi]
test ecx, ecx
je 0x40183b
push ecx
call dword [sym.imp.OLEAUT32.dll_SysStringLen]
mov dword [esi], 0
mov eax, dword [esi + 4]
test eax, eax
je 0x401852
push eax
call fcn.00403213
add esp, 4
mov dword [esi + 4], 0
push 0xc
push esi
call fcn.00403248
mov eax, dword [ebp - 0x68]
add esp, 8
test eax, eax
jns 0x4018d1
mov eax, dword [ebp - 0x14]
cmp eax, 0x19
jb 0x4018a7
cmp eax, 7
mov dword [ebp - 0x18], 0x19
push 0x32
lea esi, [ebp - 0x28]
cmova esi, dword [ebp - 0x28]
push str.Could_not_connect_to_WMI.
push esi
call sub.VCRUNTIME140.dll_memmove
xor eax, eax
add esp, 0xc
mov word [esi + 0x32], ax
mov eax, dword [ebp - 0x4c]
push eax
mov ecx, dword [eax]
call dword [ecx + 8]
call dword [sym.imp.ole32.dll_CoUninitialize]
jmp 0x40162d
push str.Could_not_connect_to_WMI.
mov byte [ebp - 0x68], 0
lea ecx, [ebp - 0x28]
push dword [ebp - 0x68]
push 0x19
call fcn.004027e0
mov eax, dword [ebp - 0x4c]
push eax
mov ecx, dword [eax]
call dword [ecx + 8]
call dword [sym.imp.ole32.dll_CoUninitialize]
jmp 0x40162d
push 0
push 0
push 3
push 3
push 0
push 0
push 0xa
push dword [ebp - 0x48]
call dword [sym.imp.ole32.dll_CoSetProxyBlanket]
test eax, eax
jns 0x401950
mov eax, dword [ebp - 0x14]
cmp eax, 0x1c
jb 0x40191d
cmp eax, 7
mov dword [ebp - 0x18], 0x1c
push 0x38
lea esi, [ebp - 0x28]
cmova esi, dword [ebp - 0x28]
push str.Could_not_set_proxy_blanket.
push esi
call sub.VCRUNTIME140.dll_memmove
add esp, 0xc
xor eax, eax
mov word [esi + 0x38], ax
jmp 0x401933
push str.Could_not_set_proxy_blanket.
mov byte [ebp - 0x68], 0
lea ecx, [ebp - 0x28]
push dword [ebp - 0x68]
push 0x1c
call fcn.004027e0
mov eax, dword [ebp - 0x48]
push eax
mov ecx, dword [eax]
call dword [ecx + 8]
mov eax, dword [ebp - 0x4c]
push eax
mov ecx, dword [eax]
call dword [ecx + 8]
call dword [sym.imp.ole32.dll_CoUninitialize]
jmp 0x40162d
push str.SELECT__FROM_Win32_BIOS
lea ecx, [ebp - 0x68]
mov dword [ebp - 0x54], 0
call fcn.00401180
mov esi, eax
push 0x4053b0
lea ecx, [ebp - 0x70]
mov byte [ebp - 4], 3
call fcn.00401180
mov byte [ebp - 4], 4
mov esi, dword [esi]
test esi, esi
je 0x401985
mov esi, dword [esi]
jmp 0x401987
xor esi, esi
mov eax, dword [eax]
test eax, eax
je 0x401991
mov edx, dword [eax]
jmp 0x401993
xor edx, edx
mov eax, dword [ebp - 0x48]
mov ecx, dword [eax]
lea eax, [ebp - 0x54]
push eax
mov eax, dword [ebp - 0x48]
push 0
push 0x30
push esi
push edx
push eax
call dword [ecx + 0x50]
mov esi, dword [ebp - 0x70]
mov dword [ebp - 0x74], eax
test esi, esi
je 0x4019fd
mov ecx, edi
lock xadd dword [esi + 8], ecx
dec ecx
jne 0x4019f6
test esi, esi
je 0x4019f6
mov eax, dword [esi]
test eax, eax
je 0x4019d4
push eax
call dword [sym.imp.OLEAUT32.dll_SysStringLen]
mov dword [esi], 0
mov eax, dword [esi + 4]
test eax, eax
je 0x4019eb
push eax
call fcn.00403213
add esp, 4
mov dword [esi + 4], 0
push 0xc
push esi
call fcn.00403248
add esp, 8
mov dword [ebp - 0x70], 0
mov byte [ebp - 4], 0
mov esi, dword [ebp - 0x68]
test esi, esi
je 0x401a49
lock xadd dword [esi + 8], edi
dec edi
jne 0x401a49
test esi, esi
je 0x401a49
mov eax, dword [esi]
test eax, eax
je 0x401a27
push eax
call dword [sym.imp.OLEAUT32.dll_SysStringLen]
mov dword [esi], 0
mov eax, dword [esi + 4]
test eax, eax
je 0x401a3e
push eax
call fcn.00403213
add esp, 4
mov dword [esi + 4], 0
push 0xc
push esi
call fcn.00403248
add esp, 8
cmp dword [ebp - 0x74], 0
jge 0x401ab3
mov eax, dword [ebp - 0x14]
cmp eax, 0x22
jb 0x401a80
cmp eax, 7
mov dword [ebp - 0x18], 0x22
push 0x44
lea esi, [ebp - 0x28]
cmova esi, dword [ebp - 0x28]
push str.Query_for_BIOS_information_failed.
push esi
call sub.VCRUNTIME140.dll_memmove
add esp, 0xc
xor eax, eax
mov word [esi + 0x44], ax
jmp 0x401a96
push str.Query_for_BIOS_information_failed.
mov byte [ebp - 0x68], 0
lea ecx, [ebp - 0x28]
push dword [ebp - 0x68]
push 0x22
call fcn.004027e0
mov eax, dword [ebp - 0x48]
push eax
mov ecx, dword [eax]
call dword [ecx + 8]
mov eax, dword [ebp - 0x4c]
push eax
mov ecx, dword [eax]
call dword [ecx + 8]
call dword [sym.imp.ole32.dll_CoUninitialize]
jmp 0x40162d
mov ecx, dword [ebp - 0x54]
mov dword [ebp - 0x50], 0
mov dword [ebp - 0x2c], 0
test ecx, ecx
je 0x401f43
nop dword [eax]
mov eax, dword [ecx]
lea edx, [ebp - 0x2c]
push edx
lea edx, [ebp - 0x50]
push edx
push 1
push 0xffffffffffffffff
push ecx
call dword [eax + 0x10]
cmp dword [ebp - 0x2c], 0
je 0x401f40
mov eax, dword [ebp - 0x50]
lea edx, [ebp - 0x64]
push 0
push 0
push edx
mov ecx, dword [eax]
push 0
push str.BIOSVersion
push eax
call dword [ecx + 0x10]
test eax, eax
js 0x401d0b
push dword [ebp - 0x5c]
lea ecx, [ebp - 0xcc]
call fcn.00402220
push eax
mov edx, 0x40541c
mov byte [ebp - 4], 5
lea ecx, [ebp - 0xb0]
call fcn.00402480
add esp, 4
mov ecx, eax
mov byte [ebp - 4], 6
mov edi, dword [ecx + 0x14]
mov eax, edi
mov edx, dword [ecx + 0x10]
sub eax, edx
cmp eax, 1
jb 0x401b67
lea esi, [edx + 1]
mov eax, ecx
mov dword [ecx + 0x10], esi
cmp edi, 7
jbe 0x401b56
mov eax, dword [ecx]
mov edi, 0xa
mov word [eax + edx*2], di
xor edx, edx
mov word [eax + esi*2], dx
jmp 0x401b7e
push 1
push 0x405418
mov byte [ebp - 0x68], 0
push dword [ebp - 0x68]
push 1
call fcn.00402900
mov ecx, eax
movups xmm1, xmmword [ecx]
xor eax, eax
movq xmm0, qword [ecx + 0x10]
movups xmmword [ebp - 0x90], xmm1
mov dword [ecx + 0x10], 0
movq qword [ebp - 0x80], xmm0
mov dword [ecx + 0x14], 7
mov word [ecx], ax
mov byte [ebp - 4], 7
lea ecx, [ebp - 0x90]
cmp dword [ebp - 0x7c], 7
mov esi, dword [ebp - 0x18]
mov eax, dword [ebp - 0x14]
mov edx, dword [ebp - 0x80]
movd edi, xmm1
mov dword [ebp - 0x70], esi
cmova ecx, edi
sub eax, esi
mov dword [ebp - 0x74], ecx
cmp edx, eax
ja 0x401c04
cmp dword [ebp - 0x14], 7
lea eax, [edx + esi]
mov dword [ebp - 0x18], eax
lea esi, [ebp - 0x28]
cmova esi, dword [ebp - 0x28]
mov eax, dword [ebp - 0x70]
lea ecx, [esi + eax*2]
lea eax, [edx + edx]
push eax
push dword [ebp - 0x74]
push ecx
call sub.VCRUNTIME140.dll_memmove
mov eax, dword [ebp - 0x80]
add esp, 0xc
add eax, dword [ebp - 0x70]
xor ecx, ecx
mov word [esi + eax*2], cx
jmp 0x401c22
push edx
push ecx
mov byte [ebp - 0x94], 0
lea ecx, [ebp - 0x28]
push dword [ebp - 0x94]
push edx
call fcn.00402900
mov edi, dword [ebp - 0x90]
mov byte [ebp - 4], 6
mov eax, dword [ebp - 0x7c]
cmp eax, 7
jbe 0x401c5d
lea ecx, [eax*2 + 2]
mov eax, edi
cmp ecx, 0x1000
jb 0x401c53
mov edi, dword [eax - 4]
add ecx, 0x23
sub eax, edi
add eax, 0xfffffffc
cmp eax, 0x1f
ja 0x4020da
push ecx
push edi
call fcn.00403248
add esp, 8
mov byte [ebp - 4], 5
mov ecx, dword [ebp - 0x9c]
cmp ecx, 7
jbe 0x401ca1
mov edx, dword [ebp - 0xb0]
lea ecx, [ecx*2 + 2]
mov eax, edx
cmp ecx, 0x1000
jb 0x401c97
mov edx, dword [eax - 4]
add ecx, 0x23
sub eax, edx
add eax, 0xfffffffc
cmp eax, 0x1f
ja 0x4020da
push ecx
push edx
call fcn.00403248
add esp, 8
xor eax, eax
mov dword [ebp - 0xa0], 0
mov byte [ebp - 4], al
mov ecx, dword [ebp - 0xb8]
mov dword [ebp - 0x9c], 7
mov word [ebp - 0xb0], ax
cmp ecx, 7
jbe 0x401d01
mov edx, dword [ebp - 0xcc]
lea ecx, [ecx*2 + 2]
mov eax, edx
cmp ecx, 0x1000
jb 0x401cf7
mov edx, dword [eax - 4]
add ecx, 0x23
sub eax, edx
add eax, 0xfffffffc
cmp eax, 0x1f
ja 0x4020da
push ecx
push edx
call fcn.00403248
add esp, 8
lea eax, [ebp - 0x64]
push eax
call dword [sym.imp.OLEAUT32.dll_VariantCopy]
mov eax, dword [ebp - 0x50]
lea edx, [ebp - 0x64]
push 0
push 0
push edx
mov ecx, dword [eax]
push 0
push str.Manufacturer
push eax
call dword [ecx + 0x10]
test eax, eax
js 0x401f2a
push dword [ebp - 0x5c]
lea ecx, [ebp - 0xcc]
call fcn.00402220
push eax
mov edx, str.Manufacturer:
mov byte [ebp - 4], 8
lea ecx, [ebp - 0xb0]
call fcn.00402480
add esp, 4
mov ecx, eax
mov byte [ebp - 4], 9
mov edi, dword [ecx + 0x14]
mov eax, edi
mov edx, dword [ecx + 0x10]
sub eax, edx
cmp eax, 1
jb 0x401d86
lea esi, [edx + 1]
mov eax, ecx
mov dword [ecx + 0x10], esi
cmp edi, 7
jbe 0x401d75
mov eax, dword [ecx]
mov edi, 0xa
mov word [eax + edx*2], di
xor edx, edx
mov word [eax + esi*2], dx
jmp 0x401da3
push 1
push 0x405418
mov byte [ebp - 0x98], 0
push dword [ebp - 0x98]
push 1
call fcn.00402900
mov ecx, eax
movups xmm1, xmmword [ecx]
xor eax, eax
movq xmm0, qword [ecx + 0x10]
movups xmmword [ebp - 0x90], xmm1
mov dword [ecx + 0x10], 0
movq qword [ebp - 0x80], xmm0
mov dword [ecx + 0x14], 7
mov word [ecx], ax
mov byte [ebp - 4], 0xa
lea ecx, [ebp - 0x90]
cmp dword [ebp - 0x7c], 7
mov esi, dword [ebp - 0x18]
mov eax, dword [ebp - 0x14]
mov edx, dword [ebp - 0x80]
movd edi, xmm1
mov dword [ebp - 0x70], esi
cmova ecx, edi
sub eax, esi
mov dword [ebp - 0x74], ecx
cmp edx, eax
ja 0x401e29
cmp dword [ebp - 0x14], 7
lea eax, [esi + edx]
mov dword [ebp - 0x18], eax
lea esi, [ebp - 0x28]
cmova esi, dword [ebp - 0x28]
mov eax, dword [ebp - 0x70]
lea ecx, [esi + eax*2]
lea eax, [edx + edx]
push eax
push dword [ebp - 0x74]
push ecx
call sub.VCRUNTIME140.dll_memmove
mov eax, dword [ebp - 0x80]
add esp, 0xc
add eax, dword [ebp - 0x70]
xor ecx, ecx
mov word [esi + eax*2], cx
jmp 0x401e41
push edx
push ecx
mov byte [ebp - 0x6c], 0
lea ecx, [ebp - 0x28]
push dword [ebp - 0x6c]
push edx
call fcn.00402900
mov edi, dword [ebp - 0x90]
mov byte [ebp - 4], 9
mov eax, dword [ebp - 0x7c]
cmp eax, 7
jbe 0x401e7c
lea ecx, [eax*2 + 2]
mov eax, edi
cmp ecx, 0x1000
jb 0x401e72
mov edi, dword [eax - 4]
add ecx, 0x23
sub eax, edi
add eax, 0xfffffffc
cmp eax, 0x1f
ja 0x4020da
push ecx
push edi
call fcn.00403248
add esp, 8
mov byte [ebp - 4], 8
mov ecx, dword [ebp - 0x9c]
cmp ecx, 7
jbe 0x401ec0
mov edx, dword [ebp - 0xb0]
lea ecx, [ecx*2 + 2]
mov eax, edx
cmp ecx, 0x1000
jb 0x401eb6
mov edx, dword [eax - 4]
add ecx, 0x23
sub eax, edx
add eax, 0xfffffffc
cmp eax, 0x1f
ja 0x4020da
push ecx
push edx
call fcn.00403248
add esp, 8
xor eax, eax
mov dword [ebp - 0xa0], 0
mov byte [ebp - 4], al
mov ecx, dword [ebp - 0xb8]
mov dword [ebp - 0x9c], 7
mov word [ebp - 0xb0], ax
cmp ecx, 7
jbe 0x401f20
mov edx, dword [ebp - 0xcc]
lea ecx, [ecx*2 + 2]
mov eax, edx
cmp ecx, 0x1000
jb 0x401f16
mov edx, dword [eax - 4]
add ecx, 0x23
sub eax, edx
add eax, 0xfffffffc
cmp eax, 0x1f
ja 0x4020da
push ecx
push edx
call fcn.00403248
add esp, 8
lea eax, [ebp - 0x64]
push eax
call dword [sym.imp.OLEAUT32.dll_VariantCopy]
mov eax, dword [ebp - 0x50]
push eax
mov ecx, dword [eax]
call dword [ecx + 8]
mov ecx, dword [ebp - 0x54]
test ecx, ecx
jne 0x401ad0
jmp 0x401f43
mov ecx, dword [ebp - 0x54]
mov eax, dword [ecx]
push ecx
call dword [eax + 8]
mov eax, dword [ebp - 0x48]
push eax
mov ecx, dword [eax]
call dword [ecx + 8]
mov eax, dword [ebp - 0x4c]
push eax
mov ecx, dword [eax]
call dword [ecx + 8]
call dword [sym.imp.ole32.dll_CoUninitialize]
lea edx, [ebp - 0x28]
lea ecx, [ebp - 0x44]
call fcn.00401490
mov byte [ebp - 4], 0xb
lea eax, [ebp - 0x44]
cmp dword [ebp - 0x30], 0xf
xorps xmm0, xmm0
mov edi, dword [ebp - 0x44]
cmova eax, edi
sub esp, 0x18
mov ecx, esp
mov dword [ebp - 0x68], eax
mov esi, eax
mov dword [ebp - 0x74], ecx
movups xmmword [ecx], xmm0
mov dword [ecx + 0x10], 0
lea edx, [esi + 1]
mov dword [ecx + 0x14], 0
mov al, byte [esi]
inc esi
test al, al
jne 0x401fa1
sub esi, edx
cmp esi, 0x7fffffff
ja 0x4020f4
cmp esi, 0xf
ja 0x401fdb
push esi
push dword [ebp - 0x68]
mov dword [ecx + 0x10], esi
push ecx
mov dword [ecx + 0x14], 0xf
call sub.VCRUNTIME140.dll_memcpy
mov eax, dword [ebp - 0x74]
mov byte [eax + esi], 0
jmp 0x402063
mov edi, esi
or edi, 0xf
cmp edi, 0x7fffffff
jbe 0x402013
mov ecx, SysReAllocString
mov edi, SysReAllocString
add ecx, 0x23
push ecx
call fcn.00403218
mov ecx, eax
add esp, 4
test ecx, ecx
je 0x4020da
lea eax, [ecx + 0x23]
and eax, 0xffffffe0
mov dword [eax - 4], ecx
jmp 0x402041
mov eax, 0x16
cmp edi, eax
cmovb edi, eax
lea eax, [edi + 1]
test eax, eax
je 0x402044
cmp eax, 0x1000
jb 0x402038
lea ecx, [eax + 0x23]
cmp ecx, eax
jbe 0x4020f9
jmp 0x401ff5
push eax
call fcn.00403218
add esp, 4
mov ecx, dword [ebp - 0x74]
push esi
push dword [ebp - 0x68]
mov dword [ebp - 0x70], eax
push eax
mov dword [ecx], eax
mov dword [ecx + 0x10], esi
mov dword [ecx + 0x14], edi
call sub.VCRUNTIME140.dll_memcpy
mov eax, dword [ebp - 0x70]
mov edi, dword [ebp - 0x44]
mov byte [esi + eax], 0
mov esi, dword [ebp - 0x78]
add esp, 0xc
mov ecx, esi
call fcn.00401280
mov eax, dword [ebp - 0x30]
add esp, 0x18
cmp eax, 0xf
jbe 0x4020a2
lea ecx, [eax + 1]
mov eax, edi
cmp ecx, 0x1000
jb 0x402098
mov edi, dword [eax - 4]
add ecx, 0x23
sub eax, edi
add eax, 0xfffffffc
cmp eax, 0x1f
ja 0x4020da
push ecx
push edi
call fcn.00403248
add esp, 8
mov ecx, dword [ebp - 0x14]
cmp ecx, 7
jbe 0x401681
mov edx, dword [ebp - 0x28]
lea ecx, [ecx*2 + 2]
mov eax, edx
cmp ecx, 0x1000
jb 0x401677
mov edx, dword [eax - 4]
add ecx, 0x23
sub eax, edx
add eax, 0xfffffffc
cmp eax, 0x1f
jbe 0x401677
call dword [sym.imp.api_ms_win_crt_runtime_l1_1_0.dll__invalid_parameter_noinfo_noreturn]
push 0x8007000e
call fcn.00402ea0
push 0x8007000e
call fcn.00402ea0
call fcn.00401170
call fcn.004010d0
int3