Function at 0x4010a0
Capabilities:
Encode data using xor
Get memory capacity

Disassembly:
mov eax, 0x2974
call fcn.00406af0
push 0
call dword [sym.imp.ole32.dll_CoInitialize]
lea eax, [esp + 4]
push 0x3e8
push eax
call fcn.005f6a38
add esp, 8
mov dword [0x774874], 0
xorps xmm0, xmm0
lea eax, [esp + 0x14]
movups xmmword [esp + 0x14], xmm0
mov dword [esp + 0x14], 0x20
push eax
movups xmmword [esp + 0x28], xmm0
call dword [sym.imp.KERNEL32.dll_GlobalMemoryStatus]
mov eax, dword [esp + 0x28]
add eax, dword [esp + 0x20]
cmp eax, 0x12c00000
jb 0x40110d
cmp eax, 0x15e00000
jae 0x401114
mov byte [0x774894], 1
jmp 0x401114
mov byte [0x774894], 2
push ebx
mov ebx, dword [esp + 0x2980]
lea eax, [esp + 0x38]
push 0xffffffffffffffff
push eax
lea eax, [esp + 0x18]
push dword [ebx]
push eax
call fcn.005f76e0
add esp, 0x10
cmp dword [esp + 0x10], 0
jl 0x40123e
mov eax, dword [esp + 0x50]
add eax, dword [esp + 0x4c]
push esi
push edi
mov dword [0x77487c], eax
mov esi, 0x5041554c
push reloc.DSOUND.dll_DirectSoundCreate
push dword [ebx]
lea eax, [esp + 0x14]
mov edi, esi
push eax
lea eax, [esp + 0x28]
push eax
call fcn.005f73f7
add esp, 0x10
cmp dword [eax], 0
jl 0x401224
push ebp
push dword [esp + 0x10]
call fcn.005f75aa
mov ebx, eax
add esp, 4
mov ebp, ebx
test ebx, ebx
jle 0x40120b
nop
cmp ebx, 0x2000
ja 0x4011b1
push 0x2000
lea eax, [esp + 0x988]
push 0
push eax
call fcn.00408460
add esp, 0xc
jmp 0x4011b6
mov ebx, 0x2000
push 0
push ebx
lea eax, [esp + 0x98c]
push eax
push dword [esp + 0x1c]
lea eax, [esp + 0x24]
push eax
call fcn.005f789d
add esp, 0x14
cmp dword [eax], 0
jl 0x401209
lea eax, [ebx + 3]
sub ebp, ebx
cdq
lea ecx, [esp + 0x984]
and edx, 3
add eax, edx
sar eax, 2
test eax, eax
jle 0x401201
mov esi, edi
lea ecx, [ecx + 4]
rol esi, 1
xor esi, dword [ecx - 4]
mov edi, esi
sub eax, 1
jne 0x4011f0
test ebp, ebp
jle 0x40120b
mov ebx, ebp
jmp 0x401190
xor esi, esi
push dword [esp + 0x10]
lea eax, [esp + 0x1c]
push eax
call fcn.005f7499
mov ebx, dword [esp + 0x2994]
add esp, 8
pop ebp
lea eax, [esp + 0x40]
mov dword [0x774880], esi
push eax
lea eax, [esp + 0x14]
push eax
call fcn.005f785b
add esp, 8
pop edi
pop esi
mov ecx, 0x736920
call fcn.005a1e0f
push ebx
push dword [esp + 0x2980]
call fcn.00401a00
add esp, 8
test eax, eax
je 0x401362
call fcn.0059a6f5
test eax, eax
je 0x401362
push 0x2a
call fcn.0059b214
push 0x200
push 0x71ed60
push eax
call fcn.0059b2fc
add esp, 0x10
test eax, eax
je 0x4012ad
push 0x200
push 0x71f200
push 0x71ed60
call fcn.0059cde7
add esp, 0xc
test eax, eax
je 0x4012ad
push 0x71f200
jmp 0x4012b2
push str.Bullfrog_Productions_Ltd
lea eax, [esp + 0x10]
push eax
call fcn.005f6a4e
add esp, 8
call fcn.0059ec33
test dword [0x7359d5], 0x800000
jne 0x40136e
cmp eax, 0xffffffff
jne 0x40136e
push 2
call fcn.0059b214
push 0x200
lea ecx, [esp + 0x580]
push ecx
push eax
call fcn.0059b2fc
add esp, 0x10
test eax, eax
je 0x40136e
push 0xb60
call fcn.0059b214
push 0x200
lea ecx, [esp + 0x180]
push ecx
push eax
call fcn.0059b2fc
add esp, 0x10
test eax, eax
je 0x40136e
lea eax, [esp + 0x178]
push eax
lea eax, [esp + 0x57c]
push eax
lea eax, [esp + 0x980]
push str._s_n_n_s
push eax
call fcn.006749e4
add esp, 0x10
call fcn.005f69a7
push 0x10
push 0x71ed60
lea ecx, [esp + 0x980]
push ecx
push eax
call dword [sym.imp.USER32.dll_MessageBoxW]
xor al, al
pop ebx
add esp, 0x2974
ret 8
mov ecx, 0x7354c8
call fcn.0059efeb
test eax, eax
je 0x401389
call fcn.004013b0
test al, al
je 0x401389
mov bl, 1
jmp 0x40138b
xor bl, bl
mov ecx, 0x7354c8
call fcn.0059f3e7
call fcn.0059b09c
call dword [sym.imp.ole32.dll_CoUninitialize]
mov al, bl
pop ebx
add esp, 0x2974
ret 8