Function at 0x402110
Capabilities:
Get system information on windows

Disassembly:
push ebp
mov ebp, esp
push 0xffffffffffffffff
push 0x422ed8
mov eax, dword fs:[0]
push eax
sub esp, 0x74
mov eax, dword [0x42f008]
xor eax, ebp
mov dword [ebp - 0x10], eax
push esi
push edi
push eax
lea eax, [ebp - 0xc]
mov dword fs:[0], eax
mov edi, dword [ebp + 0xc]
xor eax, eax
mov dword [ebp - 0x18], 0
mov dword [ebp - 0x14], 0
mov dword [ebp - 0x18], 0
mov dword [ebp - 0x14], 7
mov word [ebp - 0x28], ax
mov dword [ebp - 4], eax
call fcn.00401cd0
cmp dword [eax], 0
jne 0x402176
push dword [ebp + 8]
mov ecx, eax
call fcn.00401d80
push str.Kernel32.dll
call dword [sym.imp.KERNEL32.dll_GetModuleHandleW]
test eax, eax
je 0x4023aa
push 0x42ac04
push eax
call dword [sym.imp.KERNEL32.dll_GetProcAddress]
test eax, eax
je 0x4023aa
lea eax, [ebp - 0x7c]
push eax
call dword [sym.imp.KERNEL32.dll_GetNativeSystemInfo]
mov ax, word [ebp - 0x7c]
cmp ax, 9
je 0x4021bb
cmp ax, 6
jne 0x4023aa
push 0x14
xor eax, eax
mov dword [ebp - 0x48], 0
mov dword [ebp - 0x44], 0
lea ecx, [ebp - 0x58]
push str.2345ImageThumb64.dll
mov dword [ebp - 0x48], 0
mov dword [ebp - 0x44], 7
mov word [ebp - 0x58], ax
call fcn.004032b0
mov byte [ebp - 4], 1
mov ecx, edi
xor eax, eax
mov dword [ebp - 0x30], 0
mov dword [ebp - 0x2c], 0
mov dword [ebp - 0x30], 0
mov dword [ebp - 0x2c], 7
lea edx, [ecx + 2]
mov word [ebp - 0x40], ax
mov ax, word [ecx]
add ecx, 2
test ax, ax
jne 0x402217
sub ecx, edx
sar ecx, 1
push ecx
push edi
lea ecx, [ebp - 0x40]
call fcn.004032b0
mov byte [ebp - 4], 2
lea eax, [ebp - 0x58]
push eax
lea edx, [ebp - 0x40]
lea ecx, [ebp - 0x70]
call fcn.00406ef0
add esp, 4
mov esi, eax
mov byte [ebp - 4], 3
lea eax, [ebp - 0x28]
cmp eax, esi
je 0x40227e
mov ecx, eax
call fcn.00403250
movups xmm0, xmmword [esi]
xor eax, eax
movups xmmword [ebp - 0x28], xmm0
movq xmm0, qword [esi + 0x10]
mov dword [esi + 0x10], 0
mov dword [esi + 0x14], 7
movq qword [ebp - 0x18], xmm0
mov word [esi], ax
mov byte [ebp - 4], 2
mov edx, dword [ebp - 0x5c]
cmp edx, 8
jb 0x4022bc
mov ecx, dword [ebp - 0x70]
lea edx, [edx*2 + 2]
mov eax, ecx
cmp edx, 0x1000
jb 0x4022b2
mov ecx, dword [ecx - 4]
add edx, 0x23
sub eax, ecx
add eax, 0xfffffffc
cmp eax, 0x1f
ja 0x4029ec
push edx
push ecx
call fcn.00411da5
add esp, 8
xor eax, eax
mov dword [ebp - 0x60], 0
mov dword [ebp - 0x5c], 7
mov word [ebp - 0x70], ax
mov byte [ebp - 4], 1
mov edx, dword [ebp - 0x2c]
cmp edx, 8
jb 0x40230e
mov ecx, dword [ebp - 0x40]
lea edx, [edx*2 + 2]
mov eax, ecx
cmp edx, 0x1000
jb 0x402304
mov ecx, dword [ecx - 4]
add edx, 0x23
sub eax, ecx
add eax, 0xfffffffc
cmp eax, 0x1f
ja 0x4029f1
push edx
push ecx
call fcn.00411da5
add esp, 8
xor eax, eax
mov dword [ebp - 0x30], 0
mov dword [ebp - 0x2c], 7
mov word [ebp - 0x40], ax
mov byte [ebp - 4], al
mov edx, dword [ebp - 0x44]
cmp edx, 8
jb 0x40235f
mov ecx, dword [ebp - 0x58]
lea edx, [edx*2 + 2]
mov eax, ecx
cmp edx, 0x1000
jb 0x402355
mov ecx, dword [ecx - 4]
add edx, 0x23
sub eax, ecx
add eax, 0xfffffffc
cmp eax, 0x1f
ja 0x4029f6
push edx
push ecx
call fcn.00411da5
add esp, 8
xor eax, eax
mov dword [ebp - 0x48], 0
lea ecx, [ebp - 0x28]
mov dword [ebp - 0x44], 7
mov word [ebp - 0x58], ax
call fcn.00405dc0
test al, al
je 0x402590
cmp dword [ebp - 0x14], 8
lea esi, [ebp - 0x28]
cmovae esi, dword [ebp - 0x28]
call fcn.00403f10
push 0
push esi
mov ecx, eax
call fcn.00404010
test al, al
jne 0x402590
jmp 0x40295c
push 0x12
xor eax, eax
mov dword [ebp - 0x30], 0
mov dword [ebp - 0x2c], 0
lea ecx, [ebp - 0x40]
push str.2345ImageThumb.dll
mov dword [ebp - 0x30], 0
mov dword [ebp - 0x2c], 7
mov word [ebp - 0x40], ax
call fcn.004032b0
mov byte [ebp - 4], 4
mov ecx, edi
xor eax, eax
mov dword [ebp - 0x48], 0
mov dword [ebp - 0x44], 0
mov dword [ebp - 0x48], 0
mov dword [ebp - 0x44], 7
lea edx, [ecx + 2]
mov word [ebp - 0x58], ax
mov ax, word [ecx]
add ecx, 2
test ax, ax
jne 0x402406
sub ecx, edx
sar ecx, 1
push ecx
push edi
lea ecx, [ebp - 0x58]
call fcn.004032b0
mov byte [ebp - 4], 5
lea eax, [ebp - 0x40]
push eax
lea edx, [ebp - 0x58]
lea ecx, [ebp - 0x70]
call fcn.00406ef0
add esp, 4
mov esi, eax
mov byte [ebp - 4], 6
lea eax, [ebp - 0x28]
cmp eax, esi
je 0x40246d
mov ecx, eax
call fcn.00403250
movups xmm0, xmmword [esi]
xor eax, eax
movups xmmword [ebp - 0x28], xmm0
movq xmm0, qword [esi + 0x10]
mov dword [esi + 0x10], 0
mov dword [esi + 0x14], 7
movq qword [ebp - 0x18], xmm0
mov word [esi], ax
mov byte [ebp - 4], 5
mov edx, dword [ebp - 0x5c]
cmp edx, 8
jb 0x4024ab
mov ecx, dword [ebp - 0x70]
lea edx, [edx*2 + 2]
mov eax, ecx
cmp edx, 0x1000
jb 0x4024a1
mov ecx, dword [ecx - 4]
add edx, 0x23
sub eax, ecx
add eax, 0xfffffffc
cmp eax, 0x1f
ja 0x4029fb
push edx
push ecx
call fcn.00411da5
add esp, 8
xor eax, eax
mov dword [ebp - 0x60], 0
mov dword [ebp - 0x5c], 7
mov word [ebp - 0x70], ax
mov byte [ebp - 4], 4
mov edx, dword [ebp - 0x44]
cmp edx, 8
jb 0x4024fd
mov ecx, dword [ebp - 0x58]
lea edx, [edx*2 + 2]
mov eax, ecx
cmp edx, 0x1000
jb 0x4024f3
mov ecx, dword [ecx - 4]
add edx, 0x23
sub eax, ecx
add eax, 0xfffffffc
cmp eax, 0x1f
ja 0x402a00
push edx
push ecx
call fcn.00411da5
add esp, 8
xor eax, eax
mov dword [ebp - 0x48], 0
mov dword [ebp - 0x44], 7
mov word [ebp - 0x58], ax
mov byte [ebp - 4], al
mov edx, dword [ebp - 0x2c]
cmp edx, 8
jb 0x40254e
mov ecx, dword [ebp - 0x40]
lea edx, [edx*2 + 2]
mov eax, ecx
cmp edx, 0x1000
jb 0x402544
mov ecx, dword [ecx - 4]
add edx, 0x23
sub eax, ecx
add eax, 0xfffffffc
cmp eax, 0x1f
ja 0x402a05
push edx
push ecx
call fcn.00411da5
add esp, 8
xor eax, eax
mov dword [ebp - 0x30], 0
lea ecx, [ebp - 0x28]
mov dword [ebp - 0x2c], 7
mov word [ebp - 0x40], ax
call fcn.00405dc0
test al, al
je 0x402590
cmp dword [ebp - 0x14], 8
lea esi, [ebp - 0x28]
cmovae esi, dword [ebp - 0x28]
call fcn.00403f10
push 0
push esi
mov ecx, eax
call fcn.00404010
test al, al
je 0x40295c
push 0xd
xor eax, eax
mov dword [ebp - 0x30], 0
mov dword [ebp - 0x2c], 0
lea ecx, [ebp - 0x40]
push str.FreeImage.dll
mov dword [ebp - 0x30], 0
mov dword [ebp - 0x2c], 7
mov word [ebp - 0x40], ax
call fcn.004032b0
mov byte [ebp - 4], 7
mov ecx, edi
xor eax, eax
mov dword [ebp - 0x48], 0
mov dword [ebp - 0x44], 0
mov dword [ebp - 0x48], 0
mov dword [ebp - 0x44], 7
lea edx, [ecx + 2]
mov word [ebp - 0x58], ax
nop dword [eax]
mov ax, word [ecx]
add ecx, 2
test ax, ax
jne 0x4025f0
sub ecx, edx
sar ecx, 1
push ecx
push edi
lea ecx, [ebp - 0x58]
call fcn.004032b0
mov byte [ebp - 4], 8
lea eax, [ebp - 0x40]
push eax
lea edx, [ebp - 0x58]
lea ecx, [ebp - 0x70]
call fcn.00406ef0
add esp, 4
mov esi, eax
mov byte [ebp - 4], 9
lea eax, [ebp - 0x28]
cmp eax, esi
je 0x402657
mov ecx, eax
call fcn.00403250
movups xmm0, xmmword [esi]
xor eax, eax
movups xmmword [ebp - 0x28], xmm0
movq xmm0, qword [esi + 0x10]
mov dword [esi + 0x10], 0
mov dword [esi + 0x14], 7
movq qword [ebp - 0x18], xmm0
mov word [esi], ax
mov byte [ebp - 4], 8
mov edx, dword [ebp - 0x5c]
cmp edx, 8
jb 0x402695
mov ecx, dword [ebp - 0x70]
lea edx, [edx*2 + 2]
mov eax, ecx
cmp edx, 0x1000
jb 0x40268b
mov ecx, dword [ecx - 4]
add edx, 0x23
sub eax, ecx
add eax, 0xfffffffc
cmp eax, 0x1f
ja 0x402a0a
push edx
push ecx
call fcn.00411da5
add esp, 8
xor eax, eax
mov dword [ebp - 0x60], 0
mov dword [ebp - 0x5c], 7
mov word [ebp - 0x70], ax
mov byte [ebp - 4], 7
mov edx, dword [ebp - 0x44]
cmp edx, 8
jb 0x4026e7
mov ecx, dword [ebp - 0x58]
lea edx, [edx*2 + 2]
mov eax, ecx
cmp edx, 0x1000
jb 0x4026dd
mov ecx, dword [ecx - 4]
add edx, 0x23
sub eax, ecx
add eax, 0xfffffffc
cmp eax, 0x1f
ja 0x402a0f
push edx
push ecx
call fcn.00411da5
add esp, 8
xor eax, eax
mov dword [ebp - 0x48], 0
mov dword [ebp - 0x44], 7
mov word [ebp - 0x58], ax
mov byte [ebp - 4], al
mov edx, dword [ebp - 0x2c]
cmp edx, 8
jb 0x402738
mov ecx, dword [ebp - 0x40]
lea edx, [edx*2 + 2]
mov eax, ecx
cmp edx, 0x1000
jb 0x40272e
mov ecx, dword [ecx - 4]
add edx, 0x23
sub eax, ecx
add eax, 0xfffffffc
cmp eax, 0x1f
ja 0x402a14
push edx
push ecx
call fcn.00411da5
add esp, 8
xor eax, eax
mov dword [ebp - 0x30], 0
lea ecx, [ebp - 0x28]
mov dword [ebp - 0x2c], 7
mov word [ebp - 0x40], ax
call fcn.00405dc0
test al, al
je 0x40277a
cmp dword [ebp - 0x14], 8
lea esi, [ebp - 0x28]
cmovae esi, dword [ebp - 0x28]
call fcn.00403f10
push 0
push esi
mov ecx, eax
call fcn.00404010
test al, al
je 0x40295c
push 0x11
xor eax, eax
mov dword [ebp - 0x30], 0
mov dword [ebp - 0x2c], 0
lea ecx, [ebp - 0x40]
push str.FreeImagePlus.dll
mov dword [ebp - 0x30], 0
mov dword [ebp - 0x2c], 7
mov word [ebp - 0x40], ax
call fcn.004032b0
mov byte [ebp - 4], 0xa
mov ecx, edi
xor eax, eax
mov dword [ebp - 0x48], 0
mov dword [ebp - 0x44], 0
mov dword [ebp - 0x48], 0
mov dword [ebp - 0x44], 7
lea edx, [ecx + 2]
mov word [ebp - 0x58], ax
mov ax, word [ecx]
add ecx, 2
test ax, ax
jne 0x4027d6
sub ecx, edx
sar ecx, 1
push ecx
push edi
lea ecx, [ebp - 0x58]
call fcn.004032b0
mov byte [ebp - 4], 0xb
lea eax, [ebp - 0x40]
push eax
lea edx, [ebp - 0x58]
lea ecx, [ebp - 0x70]
call fcn.00406ef0
add esp, 4
mov esi, eax
mov byte [ebp - 4], 0xc
lea eax, [ebp - 0x28]
cmp eax, esi
je 0x40283d
mov ecx, eax
call fcn.00403250
movups xmm0, xmmword [esi]
xor eax, eax
movups xmmword [ebp - 0x28], xmm0
movq xmm0, qword [esi + 0x10]
mov dword [esi + 0x10], 0
mov dword [esi + 0x14], 7
movq qword [ebp - 0x18], xmm0
mov word [esi], ax
mov byte [ebp - 4], 0xb
mov edx, dword [ebp - 0x5c]
cmp edx, 8
jb 0x40287b
mov ecx, dword [ebp - 0x70]
lea edx, [edx*2 + 2]
mov eax, ecx
cmp edx, 0x1000
jb 0x402871
mov ecx, dword [ecx - 4]
add edx, 0x23
sub eax, ecx
add eax, 0xfffffffc
cmp eax, 0x1f
ja 0x402a19
push edx
push ecx
call fcn.00411da5
add esp, 8
xor eax, eax
mov dword [ebp - 0x60], 0
mov dword [ebp - 0x5c], 7
mov word [ebp - 0x70], ax
mov byte [ebp - 4], 0xa
mov edx, dword [ebp - 0x44]
cmp edx, 8
jb 0x4028cd
mov ecx, dword [ebp - 0x58]
lea edx, [edx*2 + 2]
mov eax, ecx
cmp edx, 0x1000
jb 0x4028c3
mov ecx, dword [ecx - 4]
add edx, 0x23
sub eax, ecx
add eax, 0xfffffffc
cmp eax, 0x1f
ja 0x402a1e
push edx
push ecx
call fcn.00411da5
add esp, 8
xor eax, eax
mov dword [ebp - 0x48], 0
mov dword [ebp - 0x44], 7
mov word [ebp - 0x58], ax
mov byte [ebp - 4], al
mov edx, dword [ebp - 0x2c]
cmp edx, 8
jb 0x40291e
mov ecx, dword [ebp - 0x40]
lea edx, [edx*2 + 2]
mov eax, ecx
cmp edx, 0x1000
jb 0x402914
mov ecx, dword [ecx - 4]
add edx, 0x23
sub eax, ecx
add eax, 0xfffffffc
cmp eax, 0x1f
ja 0x402a23
push edx
push ecx
call fcn.00411da5
add esp, 8
xor eax, eax
mov dword [ebp - 0x30], 0
lea ecx, [ebp - 0x28]
mov dword [ebp - 0x2c], 7
mov word [ebp - 0x40], ax
call fcn.00405dc0
test al, al
je 0x402973
cmp dword [ebp - 0x14], 8
lea esi, [ebp - 0x28]
cmovae esi, dword [ebp - 0x28]
call fcn.00403f10
push 0
push esi
mov ecx, eax
call fcn.00404010
test al, al
jne 0x402973
cmp dword [ebp - 0x14], 8
lea eax, [ebp - 0x28]
cmovae eax, dword [ebp - 0x28]
push eax
call fcn.00401e30
mov byte [ebp - 0x7d], 0
jmp 0x402977
mov byte [ebp - 0x7d], 1
mov dword [ebp - 4], 0xffffffff
mov edx, dword [ebp - 0x14]
cmp edx, 8
jb 0x4029b8
mov ecx, dword [ebp - 0x28]
lea edx, [edx*2 + 2]
mov eax, ecx
cmp edx, 0x1000
jb 0x4029ae
mov ecx, dword [ecx - 4]
add edx, 0x23
sub eax, ecx
add eax, 0xfffffffc
cmp eax, 0x1f
ja 0x402a28
push edx
push ecx
call fcn.00411da5
add esp, 8
xor eax, eax
mov dword [ebp - 0x18], 0
mov word [ebp - 0x28], ax
mov al, byte [ebp - 0x7d]
mov dword [ebp - 0x14], 7
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.00411684
mov esp, ebp
pop ebp
ret 0xc
call fcn.00414fe2
call fcn.00414fe2
call fcn.00414fe2
call fcn.00414fe2
call fcn.00414fe2
call fcn.00414fe2
call fcn.00414fe2
call fcn.00414fe2
call fcn.00414fe2
call fcn.00414fe2
call fcn.00414fe2
call fcn.00414fe2
call fcn.00414fe2
int3