Function at 0x403090
Capabilities:
Check os version

Disassembly:
sub esp, 0x198
xor eax, eax
mov ecx, 0x25
push ebx
push esi
push edi
lea edi, [esp + 0x110]
rep stosd dword es:[edi], eax
mov dword [esp + 0x110], 0x94
lea eax, [esp + 0x110]
push eax
call dword [sym.imp.KERNEL32.dll_GetVersionExA]
test eax, eax
je 0x40338e
cmp dword [esp + 0x120], 2
jne 0x4030ec
cmp dword [esp + 0x114], 5
jne 0x4030ec
cmp dword [esp + 0x118], 1
mov ax, 1
jae 0x4030f0
mov ax, 2
mov word [0x423248], ax
cmp ax, 1
jne 0x40338e
lea edi, [esp + 0xc]
xor eax, eax
mov ecx, 0x41
push str.myComnMutex
rep stosd dword es:[edi], eax
lea eax, [esp + 0x10]
push str.Global_
push 0x42324c
mov ebx, dword [sym.imp.USER32.dll_wsprintfA]
push eax
mov edi, str.myComnMutex
call ebx
lea esi, [esp + 0x1c]
add esp, 0x10
mov ecx, 0x41
rep movsd dword es:[edi], dword [esi]
lea edi, [esp + 0xc]
xor eax, eax
mov ecx, 0x41
push str.myRequestMutex
rep stosd dword es:[edi], eax
lea ecx, [esp + 0x10]
push str.Global_
push 0x42324c
mov edi, str.myRequestMutex
push ecx
call ebx
lea esi, [esp + 0x1c]
add esp, 0x10
mov ecx, 0x41
rep movsd dword es:[edi], dword [esi]
lea edi, [esp + 0xc]
xor eax, eax
mov ecx, 0x41
push str.myRequestEvent
rep stosd dword es:[edi], eax
lea eax, [esp + 0x10]
push str.Global_
push 0x42324c
mov edi, str.myRequestEvent
push eax
call ebx
lea esi, [esp + 0x1c]
add esp, 0x10
mov ecx, 0x41
rep movsd dword es:[edi], dword [esi]
lea edi, [esp + 0xc]
xor eax, eax
mov ecx, 0x41
push str.myResponseEvent
rep stosd dword es:[edi], eax
push str.Global_
push 0x42324c
lea eax, [esp + 0x18]
push eax
mov edi, str.myResponseEvent
call ebx
lea esi, [esp + 0x1c]
add esp, 0x10
mov ecx, 0x41
rep movsd dword es:[edi], dword [esi]
lea edi, [esp + 0xc]
xor eax, eax
mov ecx, 0x41
push str.spnserv.dat
rep stosd dword es:[edi], eax
lea eax, [esp + 0x10]
push str.Global_
push 0x42324c
mov edi, str.spnserv.dat
push eax
call ebx
lea esi, [esp + 0x1c]
add esp, 0x10
mov ecx, 0x41
rep movsd dword es:[edi], dword [esi]
lea edi, [esp + 0xc]
xor eax, eax
mov ecx, 0x41
push str.spserv.dat
rep stosd dword es:[edi], eax
lea eax, [esp + 0x10]
push str.Global_
push 0x42324c
mov edi, str.spserv.dat
push eax
call ebx
lea esi, [esp + 0x1c]
add esp, 0x10
mov ecx, 0x41
rep movsd dword es:[edi], dword [esi]
lea edi, [esp + 0xc]
xor eax, eax
mov ecx, 0x41
push str.myServerProcLck
rep stosd dword es:[edi], eax
lea eax, [esp + 0x10]
push str.Global_
push 0x42324c
mov edi, str.myServerProcLck
push eax
call ebx
lea esi, [esp + 0x1c]
add esp, 0x10
mov ecx, 0x41
rep movsd dword es:[edi], dword [esi]
lea edi, [esp + 0xc]
xor eax, eax
mov ecx, 0x41
push str.spnServerInstCntlr
rep stosd dword es:[edi], eax
lea eax, [esp + 0x10]
push str.Global_
push 0x42324c
mov edi, str.spnServerInstCntlr
push eax
call ebx
lea esi, [esp + 0x1c]
add esp, 0x10
mov ecx, 0x41
rep movsd dword es:[edi], dword [esi]
lea edi, [esp + 0xc]
xor eax, eax
mov ecx, 0x41
push str.SupGlobalSepration
rep stosd dword es:[edi], eax
lea eax, [esp + 0x10]
push str.Global_
push 0x42324c
mov edi, str.SupGlobalSepration
push eax
call ebx
lea esi, [esp + 0x1c]
add esp, 0x10
mov ecx, 0x41
rep movsd dword es:[edi], dword [esi]
lea edi, [esp + 0xc]
xor eax, eax
mov ecx, 0x41
push str.SupMessage_Send
rep stosd dword es:[edi], eax
lea eax, [esp + 0x10]
push str.Global_
push 0x42324c
mov edi, str.SupMessage_Send
push eax
call ebx
lea esi, [esp + 0x1c]
add esp, 0x10
mov ecx, 0x41
rep movsd dword es:[edi], dword [esi]
lea edi, [esp + 0xc]
xor eax, eax
mov ecx, 0x41
push str.SupMessage_Recd
rep stosd dword es:[edi], eax
lea eax, [esp + 0x10]
push str.Global_
push 0x42324c
push eax
call ebx
add esp, 0x10
lea esi, [esp + 0xc]
mov edi, str.SupMessage_Recd
mov ecx, 0x41
rep movsd dword es:[edi], dword [esi]
lea edi, [esp + 0xc]
xor eax, eax
mov ecx, 0x41
push str.Aloha_Event
rep stosd dword es:[edi], eax
lea eax, [esp + 0x10]
push str.Global_
push 0x42324c
mov edi, str.Aloha_Event
push eax
call ebx
lea esi, [esp + 0x1c]
add esp, 0x10
mov ecx, 0x41
rep movsd dword es:[edi], dword [esi]
pop edi
pop esi
pop ebx
add esp, 0x198
ret