Function at 0x631c4010
Capabilities:
Get system information on windows

Disassembly:
push ebp
mov ebp, esp
push edi
mov edi, eax
push esi
lea eax, [ebp - 0x450]
lea esi, [ebp - 0x220]
push ebx
sub esp, 0x46c
mov dword [ebp - 0x45c], edx
mov dword [esp + 8], eax
mov dword [esp + 4], esi
mov dword [esp], pe_nt_image_headers32
mov dword [ebp - 0x450], 0x104
call sym.fusion.dll_GetCachePath
sub esp, 0xc
test eax, eax
js 0x631c426f
xor eax, eax
lea ebx, [ebp - 0x428]
lea esi, [esi]
movzx edx, word [esi + eax]
mov word [ebx + eax], dx
add eax, 2
test dx, dx
jne 0x631c4068
lea eax, [ebp - 0x44c]
add edi, 4
mov dword [esp], eax
call dword [sym.imp.kernel32.dll_GetNativeSystemInfo]
sub esp, 4
cmp word [ebp - 0x44c], 9
je 0x631c4280
mov eax, dword [ebp - 0x450]
mov edx, 0x5c
lea ecx, [ebx + eax*2 - 2]
xor eax, eax
jmp 0x631c40b7
movzx edx, word [eax + str.GAC_32]
mov word [ecx + eax], dx
add eax, 2
test dx, dx
jne 0x631c40b0
mov dword [esp + 4], ebx
mov edx, dword [ebp - 0x45c]
xor ecx, ecx
mov eax, edi
mov dword [esp], str.v4.0_
call sym._enum_gac_assemblies
test eax, eax
js 0x631c426f
mov eax, dword [ebp - 0x450]
mov edx, 0x5c
lea ecx, [ebx + eax*2 - 2]
xor eax, eax
jmp 0x631c4107
movzx edx, word [eax + str.GAC_MSIL]
mov word [ecx + eax], dx
add eax, 2
test dx, dx
jne 0x631c4100
mov dword [esp + 4], ebx
mov edx, dword [ebp - 0x45c]
xor ecx, ecx
mov eax, edi
mov dword [esp], str.v4.0_
call sym._enum_gac_assemblies
test eax, eax
js 0x631c426f
lea eax, [ebp - 0x450]
mov dword [esp + 4], esi
mov dword [esp + 8], eax
mov dword [esp], 8
mov dword [ebp - 0x450], 0x104
call sym.fusion.dll_GetCachePath
sub esp, 0xc
test eax, eax
js 0x631c426f
xor eax, eax
lea esi, [esi]
lea esi, [esi]
movzx edx, word [esi + eax]
mov word [ebx + eax], dx
add eax, 2
test dx, dx
jne 0x631c4170
cmp word [ebp - 0x44c], 9
je 0x631c42d0
mov eax, dword [ebp - 0x450]
mov edx, 0x5c
lea ecx, [ebx + eax*2 - 2]
xor eax, eax
jmp 0x631c41af
movzx edx, word [eax + str.GAC_32]
mov word [ecx + eax], dx
add eax, 2
test dx, dx
jne 0x631c41a8
mov dword [esp + 4], ebx
mov edx, dword [ebp - 0x45c]
xor ecx, ecx
mov eax, edi
mov dword [esp], 0
call sym._enum_gac_assemblies
test eax, eax
js 0x631c426f
mov eax, dword [ebp - 0x450]
mov edx, 0x5c
lea ecx, [ebx + eax*2 - 2]
xor eax, eax
jmp 0x631c41f7
movzx edx, word [eax + str.GAC_MSIL]
mov word [ecx + eax], dx
add eax, 2
test dx, dx
jne 0x631c41f0
mov dword [esp + 4], ebx
mov edx, dword [ebp - 0x45c]
xor ecx, ecx
mov eax, edi
mov dword [esp], 0
call sym._enum_gac_assemblies
test eax, eax
js 0x631c426f
mov eax, dword [ebp - 0x450]
mov edx, 0x5c
lea ecx, [ebx + eax*2 - 2]
xor eax, eax
jmp 0x631c423f
movzx edx, word [eax + 0x631cb7d8]
mov word [ecx + eax], dx
add eax, 2
test dx, dx
jne 0x631c4238
mov dword [esp + 4], ebx
mov edx, dword [ebp - 0x45c]
xor ecx, ecx
mov eax, edi
mov dword [esp], 0
call sym._enum_gac_assemblies
mov edx, 0
test eax, eax
cmovg eax, edx
lea esp, [ebp - 0xc]
pop ebx
pop esi
pop edi
pop ebp
ret
mov eax, dword [ebp - 0x450]
mov edx, 0x5c
lea ecx, [ebx + eax*2 - 2]
xor eax, eax
jmp 0x631c429f
movzx edx, word [eax + str.GAC_64]
mov word [ecx + eax], dx
add eax, 2
test dx, dx
jne 0x631c4298
mov dword [esp + 4], ebx
mov edx, dword [ebp - 0x45c]
xor ecx, ecx
mov eax, edi
mov dword [esp], str.v4.0_
call sym._enum_gac_assemblies
test eax, eax
jns 0x631c409b
jmp 0x631c426f
mov eax, dword [ebp - 0x450]
mov edx, 0x5c
lea ecx, [ebx + eax*2 - 2]
xor eax, eax
jmp 0x631c42ef
movzx edx, word [eax + str.GAC_64]
mov word [ecx + eax], dx
add eax, 2
test dx, dx
jne 0x631c42e8
mov dword [esp + 4], ebx
mov edx, dword [ebp - 0x45c]
xor ecx, ecx
mov eax, edi
mov dword [esp], 0
call sym._enum_gac_assemblies
test eax, eax
jns 0x631c418e
jmp 0x631c426f