Function at 0x637c28e0
Capabilities:
Get number of processors
Get process heap flags

Disassembly:
push ebp
mov ebp, esp
push edi
push esi
push ebx
sub esp, 0x4c
mov ebx, dword [ebp + 8]
mov edi, dword [ebp + 0x10]
mov esi, dword [ebp + 0x14]
test byte [0x637c5018], 8
jne 0x637c2a68
cmp edi, 0x400e
ja 0x637c2930
cmp edi, 0x4005
ja 0x637c2958
lea eax, [edi - 1]
cmp eax, 5
ja case.0x637c2967.16391
cmp edi, 6
ja case.0x637c2967.16391
jmp dword [edi*4 + 0x637c7414]
cmp edi, 0x5002
je 0x637c2e40
cmp edi, 0x500a
jne 0x637c296e
mov edx, 0xffffffff
lea esp, [ebp - 0xc]
mov eax, edx
pop ebx
pop esi
pop edi
pop ebp
ret 0x14
lea eax, [edi - 0x4006]
cmp eax, 8
ja case.0x637c2967.16391
jmp dword [eax*4 + 0x637c7430]
cmp edi, 0x403e
jne case.0x637c2967.16391
test byte [0x637c5018], 8
jne 0x637c2f00
test ebx, ebx
je 0x637c29ab
cmp dword [ebx], 0x64697663
jne 0x637c29ab
mov edi, dword [ebx + 8]
test edi, edi
jne 0x637c2c71
test byte [0x637c5018], 2
jne 0x637c3585
mov edx, 0xfffffffa
jmp 0x637c2949
test byte [0x637c5018], 8
je 0x637c29ee
mov eax, dword [ebp + 0x18]
mov dword [esp + 0x14], esi
mov dword [esp + 0x10], ebx
mov dword [esp + 0x18], eax
mov dword [esp + 0xc], str.ICM_DECOMPRESS_GETFORMAT__p__p__p_n
mov dword [esp + 8], str.ICCVID_DecompressGetFormat
mov dword [esp + 4], 0x637c5018
mov dword [esp], 3
call fcn.637c15f0
test ebx, ebx
je 0x637c29ab
cmp dword [ebx], 0x64697663
jne 0x637c29ab
cmp word [esi + 0xe], 8
mov edx, dword [esi]
ja 0x637c2a09
mov eax, dword [esi + 0x20]
lea edx, [edx + eax*4]
mov ebx, dword [ebp + 0x18]
test ebx, ebx
je 0x637c2949
mov eax, dword [ebp + 0x18]
mov dword [esp + 8], edx
mov dword [esp + 4], esi
mov dword [esp], eax
call sub.ucrtbase.dll_memcpy
mov eax, dword [ebp + 0x18]
mov ecx, 0x18
mov ebx, dword [ebp + 0x18]
mov word [eax + 0xe], cx
mov dword [eax + 0x10], 0
mov eax, dword [esi + 4]
lea eax, [eax + eax*2]
lea eax, [eax*8 + 0x1f]
sar eax, 3
and eax, 0xfffffffc
imul eax, dword [esi + 8]
mov dword [ebx + 0x14], eax
xor edx, edx
lea esp, [ebp - 0xc]
mov eax, edx
pop ebx
pop esi
pop edi
pop ebp
ret 0x14
mov eax, dword [ebp + 0x18]
mov dword [esp + 0x1c], esi
mov dword [esp + 0x18], edi
mov dword [esp + 0x20], eax
mov eax, dword [ebp + 0xc]
mov dword [esp + 0x10], ebx
mov dword [esp + 0x14], eax
mov dword [esp + 0xc], str._ld__p__d__ld__ld_n
mov dword [esp + 8], str.ICCVID_DriverProc
mov dword [esp + 4], 0x637c5018
mov dword [esp], 3
call fcn.637c15f0
jmp 0x637c28ff
mov edx, 1
test byte [0x637c5018], 8
je 0x637c2949
mov dword [esp + 0xc], str.Loaded_n
mov dword [esp + 8], str.ICCVID_DriverProc
mov dword [esp + 4], 0x637c5018
mov dword [esp], 3
mov dword [ebp - 0x1c], edx
call fcn.637c15f0
mov edx, dword [ebp - 0x1c]
jmp 0x637c2949
test byte [0x637c5018], 8
jne 0x637c2f80
mov eax, dword [ebp + 0x18]
test eax, eax
je 0x637c2b16
mov eax, dword [ebp + 0x18]
mov eax, dword [eax + 4]
xor eax, 0x63646976
test eax, 0xdfdfdfdf
jne case.0x637c2924.2
mov dword [esp + 8], 0xc
mov dword [esp + 4], 0
mov eax, dword fs:[0x18]
mov eax, dword [eax + 0x30]
mov eax, dword [eax + 0x18]
mov dword [esp], eax
call sub.kernel32.dll_HeapAlloc
sub esp, 0xc
mov edx, eax
test eax, eax
je 0x637c2949
mov dword [eax], 0x64697663
mov dword [eax + 8], 0
jmp 0x637c2949
test ebx, ebx
je case.0x637c2924.2
cmp dword [ebx], 0x64697663
jne case.0x637c2924.2
mov eax, dword [ebx + 8]
test eax, eax
je 0x637c2b79
call fcn.637c1550
mov dword [esp + 8], ebx
mov dword [esp + 4], 0
mov eax, dword fs:[0x18]
mov eax, dword [eax + 0x30]
mov eax, dword [eax + 0x18]
mov dword [esp], eax
call sub.kernel32.dll_HeapFree
mov edx, 1
sub esp, 0xc
jmp 0x637c2949
test byte [0x637c5018], 8
jne 0x637c2f40
test ebx, ebx
je 0x637c29ab
cmp dword [ebx], 0x64697663
jne 0x637c29ab
mov eax, dword [ebp + 0x18]
movzx edx, word [eax + 0xe]
movzx eax, byte [0x637c5018]
mov dword [ebx + 4], edx
and eax, 8
cmp edx, 0x10
je 0x637c2ee0
test al, al
jne 0x637c3030
mov eax, dword [ebx + 8]
test eax, eax
je 0x637c2bf8
call fcn.637c1550
mov dword [esp + 8], 0x104
mov dword [esp + 4], 0
mov eax, dword fs:[0x18]
mov eax, dword [eax + 0x30]
mov eax, dword [eax + 0x18]
mov dword [esp], eax
call sub.kernel32.dll_HeapAlloc
sub esp, 0xc
test eax, eax
je 0x637c2c3b
mov edx, dword [section..bss]
mov dword [eax + 0x100], 0
test edx, edx
je 0x637c30a0
mov dword [ebx + 8], eax
xor edx, edx
jmp 0x637c2949
test byte [0x637c5018], 8
jne 0x637c2ff0
test ebx, ebx
je 0x637c29ab
cmp dword [ebx], 0x64697663
jne 0x637c29ab
mov edi, dword [ebx + 8]
test edi, edi
je 0x637c343d
mov eax, dword [esi + 4]
mov ecx, dword [eax + 8]
mov edx, ecx
mov ecx, dword [eax + 0x14]
mov dword [ebp - 0x20], ecx
mov ecx, dword [esi + 8]
mov dword [ebp - 0x24], ecx
mov ecx, dword [esi + 0xc]
mov dword [ebp - 0x1c], edx
add edx, dword [ecx + 8]
mov ecx, dword [ebp - 0x20]
sete dl
movzx edx, dl
mov dword [esp + 0x10], edx
mov edx, dword [ebp - 0x1c]
mov ebx, dword [ebx + 4]
mov dword [esp + 8], edx
mov edx, dword [ebp - 0x24]
mov dword [esp + 0xc], ebx
mov eax, dword [eax + 4]
mov dword [esp + 4], eax
mov eax, dword [esi + 0x10]
mov dword [esp], eax
mov eax, edi
call fcn.637c1920
lea esp, [ebp - 0xc]
xor edx, edx
pop ebx
mov eax, edx
pop esi
pop edi
pop ebp
ret 0x14
mov eax, dword [ebx + 8]
xor edx, edx
test eax, eax
je 0x637c2949
mov dword [ebp - 0x1c], edx
call fcn.637c1550
mov dword [ebx + 8], 0
mov edx, dword [ebp - 0x1c]
jmp 0x637c2949
mov edx, 0xfffffffe
test byte [0x637c5018], 1
je 0x637c2949
mov dword [esp + 0xc], str.compression_not_implemented_n
mov dword [esp + 8], str.ICCVID_DriverProc
mov dword [esp + 4], 0x637c5018
mov dword [esp], 0
mov dword [ebp - 0x1c], edx
call fcn.637c15f0
mov edx, dword [ebp - 0x1c]
jmp 0x637c2949
test byte [0x637c5018], 8
jne 0x637c2fb0
test ebx, ebx
je 0x637c29ab
cmp dword [ebx], 0x64697663
jne 0x637c29ab
test byte [0x637c5018], 8
jne 0x637c3060
cmp dword [esi + 0x10], 0x64697663
jne 0x637c2de4
mov edi, dword [ebp + 0x18]
test edi, edi
je case.0x637c2924.2
test byte [0x637c5018], 8
jne 0x637c30f0
mov eax, dword [ebp + 0x18]
movzx eax, word [eax + 0xc]
cmp word [esi + 0xc], ax
jne 0x637c2de4
mov ebx, dword [ebp + 0x18]
mov eax, dword [esi + 8]
mov edx, dword [ebx + 8]
cmp eax, edx
je 0x637c2dad
add eax, edx
jne 0x637c2de4
test byte [0x637c5018], 8
jne 0x637c3250
mov eax, dword [ebp + 0x18]
mov eax, dword [eax + 4]
cmp dword [esi + 4], eax
jne 0x637c2de4
mov eax, dword [ebp + 0x18]
movzx eax, word [eax + 0xe]
lea edx, [eax - 0x18]
test dx, 0xfff7
je case.0x637c2924.2
cmp ax, 0x10
je 0x637c3130
test byte [0x637c5018], 8
jne 0x637c3283
mov edx, 0xfffffffe
jmp 0x637c2949
test byte [0x637c5018], 1
je 0x637c2944
mov eax, dword [ebp + 0x18]
mov dword [esp + 0x14], esi
mov dword [esp + 0x10], edi
mov dword [esp + 0x18], eax
mov dword [esp + 0xc], str.Unknown_message:__04x__ld__ld_n
mov dword [esp + 8], str.ICCVID_DriverProc
mov dword [esp + 4], 0x637c5018
mov dword [esp], 0
call fcn.637c15f0
mov edx, 0xffffffff
jmp 0x637c2949
test esi, esi
je 0x637c3279
cmp dword [ebp + 0x18], 0x237
jbe case.0x637c2924.2
mov dword [esi], 0x238
mov eax, 0x64697663
mov dword [esi + 4], 0x63646976
test ebx, ebx
je 0x637c2e6d
mov eax, dword [ebx]
mov dword [esi + 8], eax
lea eax, [esi + 0x18]
add esi, 0x38
mov dword [esi - 0x2c], 0
mov dword [esi - 0x28], 0x104
mov dword [esi - 0x24], 0x104
mov dword [esp + 8], eax
mov eax, dword [0x637c9424]
mov dword [esp + 0xc], 0x10
mov dword [esp + 4], 0x64
mov dword [esp], eax
call sub.user32.dll_LoadStringW
mov eax, dword [0x637c9424]
sub esp, 0x10
mov dword [esp + 0xc], pe_nt_image_headers32
mov dword [esp + 8], esi
mov dword [esp + 4], 0x65
mov dword [esp], eax
call sub.user32.dll_LoadStringW
mov edx, 0x238
sub esp, 0x10
jmp 0x637c2949
mov esi, dword [ebp + 0x18]
cmp dword [esi + 0x10], 3
je 0x637c32b5
mov dword [ebx + 4], 0xf
jmp 0x637c2be4
mov eax, dword [ebp + 0x18]
mov dword [esp + 0x14], esi
mov dword [esp + 0x10], ebx
mov dword [esp + 0x18], eax
mov dword [esp + 0xc], str.ICM_DECOMPRESSEX__p__p__d_n
mov dword [esp + 8], str.ICCVID_DecompressEx
mov dword [esp + 4], 0x637c5018
mov dword [esp], 3
call fcn.637c15f0
jmp 0x637c2987
mov eax, dword [ebp + 0x18]
mov dword [esp + 0x14], esi
mov dword [esp + 0x10], ebx
mov dword [esp + 0x18], eax
mov dword [esp + 0xc], str.ICM_DECOMPRESS_BEGIN__p__p__p_n
mov dword [esp + 8], str.ICCVID_DecompressBegin
mov dword [esp + 4], 0x637c5018
mov dword [esp], 3
call fcn.637c15f0
jmp 0x637c2bb3
mov dword [esp + 0xc], str.Opened_n
mov dword [esp + 8], str.ICCVID_DriverProc
mov dword [esp + 4], 0x637c5018
mov dword [esp], 3
call fcn.637c15f0
jmp 0x637c2af9
mov eax, dword [ebp + 0x18]
mov dword [esp + 0x14], esi
mov dword [esp + 0x10], ebx
mov dword [esp + 0x18], eax
mov dword [esp + 0xc], str.ICM_DECOMPRESS_QUERY__p__p__p_n
mov dword [esp + 8], str.ICCVID_DecompressQuery
mov dword [esp + 4], 0x637c5018
mov dword [esp], 3
call fcn.637c15f0
jmp 0x637c2d40
mov eax, dword [ebp + 0x18]
mov dword [esp + 0x14], esi
mov dword [esp + 0x10], ebx
mov dword [esp + 0x18], eax
mov dword [esp + 0xc], str.ICM_DECOMPRESS__p__p__d_n
mov dword [esp + 8], str.ICCVID_Decompress
mov dword [esp + 4], 0x637c5018
mov dword [esp], 3
call fcn.637c15f0
jmp 0x637c2c52
mov eax, dword [ebx + 4]
mov dword [esp + 0xc], str.bit_per_pixel___d_n
mov dword [esp + 8], str.ICCVID_DecompressBegin
mov dword [esp + 0x10], eax
mov dword [esp + 4], 0x637c5018
mov dword [esp], 3
call fcn.637c15f0
jmp 0x637c2bec
mov dword [esp + 0xc], str.in:
mov dword [esp + 8], str.ICCVID_DecompressQuery
mov dword [esp + 4], 0x637c5018
mov dword [esp], 3
call fcn.637c15f0
test byte [0x637c5018], 8
je 0x637c2d61
mov eax, esi
call fcn.637c18c0
jmp 0x637c2d61
mov edx, 0xfffffe00
xor ecx, ecx
mov esi, 0xff
mov dword [section..bss], 0x637c9220
lea esi, [esi]
lea esi, [esi]
mov byte [edx + 0x637c9220], cl
add edx, 1
cmp edx, 0x200
je 0x637c2c3b
xor ecx, ecx
test edx, edx
js 0x637c30c0
cmp edx, 0xff
mov ecx, esi
cmovle ecx, edx
jmp 0x637c30c0
mov dword [esp + 0xc], str.out:
mov dword [esp + 8], str.ICCVID_DecompressQuery
mov dword [esp + 4], 0x637c5018
mov dword [esp], 3
call fcn.637c15f0
test byte [0x637c5018], 8
je 0x637c2d82
mov eax, dword [ebp + 0x18]
call fcn.637c18c0
jmp 0x637c2d82
mov eax, dword [ebp + 0x18]
cmp dword [eax + 0x10], 3
jne case.0x637c2924.2
movzx esi, byte [eax + 0x2a]
movzx eax, byte [eax + 0x29]
mov ecx, dword [ebp + 0x18]
shl eax, 8
shl esi, 0x10
or esi, eax
mov eax, dword [ebp + 0x18]
movzx edx, byte [ecx + 0x31]
movzx eax, byte [eax + 0x28]
shl edx, 8
or esi, eax
mov eax, dword [ebp + 0x18]
movzx ebx, byte [eax + 0x2e]
movzx eax, byte [eax + 0x2d]
shl ebx, 0x10
shl eax, 8
or ebx, eax
mov eax, dword [ebp + 0x18]
movzx eax, byte [eax + 0x2c]
or ebx, eax
mov eax, dword [ebp + 0x18]
movzx eax, byte [eax + 0x32]
shl eax, 0x10
or eax, edx
movzx edx, byte [ecx + 0x30]
or eax, edx
mov edi, eax
test byte [0x637c5018], 8
jne 0x637c3408
cmp esi, 0x7c00
sete cl
cmp ebx, 0x3e0
sete al
test cl, al
je 0x637c31bc
cmp edi, 0x1f
je case.0x637c2924.2
mov eax, dword [ebp + 0x18]
movzx edx, byte [eax + 0x2a]
movzx eax, byte [eax + 0x29]
shl edx, 0x10
shl eax, 8
or edx, eax
mov eax, dword [ebp + 0x18]
movzx eax, byte [eax + 0x28]
or edx, eax
mov eax, dword [ebp + 0x18]
movzx esi, byte [eax + 0x2e]
movzx eax, byte [eax + 0x2d]
shl esi, 0x10
shl eax, 8
or esi, eax
mov eax, dword [ebp + 0x18]
movzx eax, byte [eax + 0x2c]
or esi, eax
mov eax, dword [ebp + 0x18]
movzx ebx, byte [eax + 0x32]
movzx eax, byte [eax + 0x31]
shl ebx, 0x10
shl eax, 8
or ebx, eax
mov eax, dword [ebp + 0x18]
movzx eax, byte [eax + 0x30]
or ebx, eax
test byte [0x637c5018], 8
jne 0x637c3503
cmp edx, 0xf800
sete dl
cmp esi, 0x7e0
sete al
test dl, al
je 0x637c2de4
cmp ebx, 0x1f
jne 0x637c2de4
xor edx, edx
jmp 0x637c2a59
mov dword [esp + 0xc], str.Detected_inverted_height_for_video_output_n
mov dword [esp + 8], str.ICCVID_DecompressQuery
mov dword [esp + 4], 0x637c5018
mov dword [esp], 3
call fcn.637c15f0
jmp 0x637c2dad
mov edx, 0x238
jmp 0x637c2949
mov dword [esp + 0x10], eax
mov dword [esp + 0xc], str.unsupported_output_bitcount___d_n
mov dword [esp + 8], str.ICCVID_DecompressQuery
mov dword [esp + 4], 0x637c5018
mov dword [esp], 3
call fcn.637c15f0
mov edx, 0xfffffffe
jmp 0x637c2949
mov ecx, dword [ebp + 0x18]
movzx esi, byte [esi + 0x2a]
movzx edx, byte [ecx + 0x29]
shl esi, 0x10
shl edx, 8
or esi, edx
movzx edx, byte [ecx + 0x28]
or esi, edx
movzx edx, byte [ecx + 0x2e]
movzx ecx, byte [ecx + 0x2d]
shl edx, 0x10
shl ecx, 8
or edx, ecx
mov ecx, dword [ebp + 0x18]
mov edi, edx
movzx ecx, byte [ecx + 0x2c]
or edi, ecx
mov ecx, dword [ebp + 0x18]
movzx edx, byte [ecx + 0x32]
mov ecx, edx
mov edx, dword [ebp + 0x18]
shl ecx, 0x10
movzx edx, byte [edx + 0x31]
shl edx, 8
or edx, ecx
mov ecx, dword [ebp + 0x18]
movzx ecx, byte [ecx + 0x30]
or edx, ecx
mov dword [ebp - 0x1c], edx
test al, al
jne 0x637c33c9
cmp esi, 0x7c00
sete cl
cmp edi, 0x3e0
sete dl
test cl, dl
je 0x637c3335
cmp dword [ebp - 0x1c], 0x1f
je 0x637c2eed
mov esi, dword [ebp + 0x18]
movzx edx, byte [esi + 0x2a]
movzx ecx, byte [esi + 0x29]
shl edx, 0x10
shl ecx, 8
or edx, ecx
movzx ecx, byte [esi + 0x28]
or edx, ecx
movzx ecx, byte [esi + 0x2d]
mov dword [ebp - 0x1c], edx
movzx edx, byte [esi + 0x2e]
shl ecx, 8
shl edx, 0x10
or edx, ecx
movzx ecx, byte [esi + 0x2c]
movzx esi, byte [esi + 0x32]
mov edi, edx
or edi, ecx
mov ecx, dword [ebp + 0x18]
shl esi, 0x10
mov dword [ebp - 0x20], edi
movzx ecx, byte [ecx + 0x31]
shl ecx, 8
or ecx, esi
mov esi, dword [ebp + 0x18]
movzx esi, byte [esi + 0x30]
or ecx, esi
cmp edi, 0x7e0
sete dl
cmp dword [ebp - 0x1c], 0xf800
mov edi, edx
sete dl
mov esi, edx
and edi, esi
cmp ecx, 0x1f
sete dl
mov esi, edx
and esi, edi
test al, al
jne 0x637c3478
mov eax, esi
test al, al
je 0x637c2944
mov dword [ebx + 4], 0x10
jmp 0x637c2bec
mov dword [esp + 0x18], edx
mov dword [esp + 0x14], edi
mov dword [esp + 0x10], esi
mov dword [esp + 0xc], str._nbmiColors_0___0x_08x_nbmiColors_1___0x_08x_nbmiColors_2___0x_08x_n
mov dword [esp + 8], str.ICCVID_CheckMask
mov dword [esp + 4], 0x637c5018
mov dword [esp], 3
call fcn.637c15f0
movzx eax, byte [0x637c5018]
and eax, 8
jmp 0x637c3315
mov dword [esp + 0x18], eax
mov dword [esp + 0x14], ebx
mov dword [esp + 0x10], esi
mov dword [esp + 0xc], str._nbmiColors_0___0x_08x_nbmiColors_1___0x_08x_nbmiColors_2___0x_08x_n
mov dword [esp + 8], str.ICCVID_CheckMask
mov dword [esp + 4], 0x637c5018
mov dword [esp], 3
call fcn.637c15f0
jmp 0x637c319d
test byte [0x637c5018], 2
je 0x637c29ab
mov dword [esp + 0xc], str.ICM_DECOMPRESS_sent_after_ICM_DECOMPRESS_END_n
mov dword [esp + 8], str.ICCVID_Decompress
mov dword [esp + 4], 0x637c5018
mov dword [esp], 1
call fcn.637c15f0
mov edx, 0xfffffffa
jmp 0x637c2949
mov eax, dword [ebp - 0x20]
mov dword [esp + 0x18], ecx
mov dword [esp + 0xc], str._nbmiColors_0___0x_08x_nbmiColors_1___0x_08x_nbmiColors_2___0x_08x_n
mov dword [esp + 0x14], eax
mov eax, dword [ebp - 0x1c]
mov dword [esp + 8], str.ICCVID_CheckMask
mov dword [esp + 0x10], eax
mov dword [esp + 4], 0x637c5018
mov dword [esp], 3
call fcn.637c15f0
mov eax, esi
test al, al
jne 0x637c34ed
test byte [0x637c5018], 8
je 0x637c2944
mov dword [esp + 0xc], str.unsupported_output_bit_field_s__for_16_bit_colors_n
mov dword [esp + 8], str.ICCVID_DecompressBegin
mov dword [esp + 4], 0x637c5018
mov dword [esp], 3
call fcn.637c15f0
or edx, 0xffffffff
jmp 0x637c2949
movzx eax, byte [0x637c5018]
mov dword [ebx + 4], 0x10
and eax, 8
jmp 0x637c2be4
mov dword [esp + 0x10], edx
mov dword [esp + 0x18], ebx
mov dword [esp + 0x14], esi
mov dword [esp + 0xc], str._nbmiColors_0___0x_08x_nbmiColors_1___0x_08x_nbmiColors_2___0x_08x_n
mov dword [esp + 8], str.ICCVID_CheckMask
mov dword [esp + 4], 0x637c5018
mov dword [esp], 3
mov dword [ebp - 0x1c], edx
call fcn.637c15f0
mov edx, dword [ebp - 0x1c]
cmp edx, 0xf800
sete dl
cmp esi, 0x7e0
sete al
test dl, al
jne 0x637c35b3
test byte [0x637c5018], 8
je 0x637c2de4
mov dword [esp + 0xc], str.unsupported_output_bit_field_s__for_16_bit_colors_n
mov dword [esp + 8], str.ICCVID_DecompressQuery
mov dword [esp + 4], 0x637c5018
mov dword [esp], 3
call fcn.637c15f0
jmp 0x637c2de4
mov dword [esp + 0xc], str.ICM_DECOMPRESSEX_sent_after_ICM_DECOMPRESS_END_n
mov dword [esp + 8], str.ICCVID_DecompressEx
mov dword [esp + 4], 0x637c5018
mov dword [esp], 1
call fcn.637c15f0
mov edx, 0xfffffffa
jmp 0x637c2949
cmp ebx, 0x1f
jne 0x637c354f
xor edx, edx
jmp 0x637c2a59