Function at 0x403a50
Capabilities:
Check os version

Disassembly:
push 0xffffffffffffffff
push 0x593d90
mov eax, dword fs:[0]
push eax
mov dword fs:[0], esp
sub esp, 0x27c
mov eax, dword [0x6131b0]
push ebx
push ebp
push esi
push edi
mov esi, ecx
mov dword [esp + 0x1c], eax
xor ebp, ebp
mov dword [esp + 0x28], eax
mov dword [esp + 0x294], ebp
mov dword [esp + 0x30], eax
mov dword [esp + 0x2c], eax
mov dword [esp + 0x34], eax
mov ecx, dword [esi + 0xcc]
lea eax, [esp + 0x10]
mov bl, 4
push eax
mov edx, dword [ecx + 4]
mov byte [esp + 0x298], bl
mov ecx, dword [edx + esi + 0xfc]
call fcn.00403db0
mov edi, eax
mov ecx, dword [esi + 0xcc]
lea eax, [esp + 0x18]
push eax
mov byte [esp + 0x298], 5
mov edx, dword [ecx + 4]
mov ecx, dword [edx + esi + 0xfc]
call fcn.00403d90
mov ecx, dword [edi]
mov edx, dword [eax]
push ecx
push edx
lea eax, [esp + 0x30]
push 0x4fb0
push eax
mov byte [esp + 0x2a4], 6
call fcn.0056adcf
add esp, 0x10
lea ecx, [esp + 0x18]
mov byte [esp + 0x294], 5
call fcn.00575bd5
lea ecx, [esp + 0x10]
mov byte [esp + 0x294], bl
call fcn.00575bd5
mov edx, dword [esi + 0xcc]
lea ecx, [esp + 0x10]
push ecx
mov eax, dword [edx + 4]
mov ecx, dword [eax + esi + 0xfc]
call fcn.00403db0
mov ecx, dword [eax]
lea edx, [esp + 0x2c]
push ecx
push 0x5fd0d0
push edx
mov byte [esp + 0x2a0], 7
call fcn.0056ad27
add esp, 0xc
lea ecx, [esp + 0x10]
mov byte [esp + 0x294], bl
call fcn.00575bd5
mov ecx, dword [esi + 0xcc]
lea eax, [esp + 0x18]
push eax
mov edx, dword [ecx + 4]
mov ecx, dword [edx + esi + 0xfc]
call fcn.00403dd0
mov edi, eax
lea eax, [esp + 0x10]
mov byte [esp + 0x294], 8
push eax
mov ecx, dword [esi + 0xcc]
mov edx, dword [ecx + 4]
mov ecx, dword [edx + esi + 0xfc]
call fcn.00403d90
mov ecx, dword [edi]
mov edx, dword [eax]
push ecx
push edx
lea eax, [esp + 0x38]
push 0x4fba
push eax
mov byte [esp + 0x2a4], 9
call fcn.0056adcf
add esp, 0x10
lea ecx, [esp + 0x10]
mov byte [esp + 0x294], 8
call fcn.00575bd5
lea ecx, [esp + 0x18]
mov byte [esp + 0x294], bl
call fcn.00575bd5
mov edx, dword [esi + 0xcc]
lea ecx, [esp + 0x10]
push ecx
mov eax, dword [edx + 4]
mov ecx, dword [eax + esi + 0xfc]
call fcn.00403dd0
mov ecx, dword [eax]
lea edx, [esp + 0x34]
push ecx
push 0x5fd0d0
push edx
mov byte [esp + 0x2a0], 0xa
call fcn.0056ad27
add esp, 0xc
lea ecx, [esp + 0x10]
mov byte [esp + 0x294], bl
call fcn.00575bd5
lea eax, [esp + 0x28]
push ebp
lea ecx, [esp + 0x24]
push eax
push ecx
call fcn.0056a336
lea edx, [esp + 0x2c]
mov byte [esp + 0x294], 0xb
push edx
push eax
lea eax, [esp + 0x20]
push eax
call fcn.00575e04
push ebp
lea ecx, [esp + 0x14]
push eax
push ecx
mov byte [esp + 0x2a0], 0xc
call fcn.0056a336
push eax
lea ecx, [esp + 0x20]
mov byte [esp + 0x298], 0xd
call fcn.00575d0e
lea ecx, [esp + 0x10]
mov byte [esp + 0x294], 0xc
call fcn.00575bd5
lea ecx, [esp + 0x18]
mov byte [esp + 0x294], 0xb
call fcn.00575bd5
lea ecx, [esp + 0x20]
mov byte [esp + 0x294], bl
call fcn.00575bd5
lea edx, [esp + 0x30]
push ebp
lea eax, [esp + 0x1c]
push edx
push eax
call fcn.0056a336
lea ecx, [esp + 0x34]
lea edx, [esp + 0x10]
push ecx
push eax
push edx
mov byte [esp + 0x2a0], 0xe
call fcn.00575e04
push ebp
push eax
lea eax, [esp + 0x28]
mov byte [esp + 0x29c], 0xf
push eax
call fcn.0056a336
push eax
lea ecx, [esp + 0x20]
mov byte [esp + 0x298], 0x10
call fcn.00575fed
lea ecx, [esp + 0x20]
mov byte [esp + 0x294], 0xf
call fcn.00575bd5
lea ecx, [esp + 0x10]
mov byte [esp + 0x294], 0xe
call fcn.00575bd5
lea ecx, [esp + 0x18]
mov byte [esp + 0x294], bl
call fcn.00575bd5
push ebp
lea ecx, [esp + 0x20]
call fcn.00575fd8
mov ecx, dword [esi + 0xcc]
lea eax, [esp + 0x38]
push eax
mov edx, dword [ecx + 4]
mov ecx, dword [edx + esi + 0xd8]
call fcn.00403d70
mov ecx, dword [esp + 0x1c]
push ebp
push ecx
push 0x1004
push ebp
push ebp
push 1
lea ecx, [esp + 0x58]
mov byte [esp + 0x2ac], 0x11
call fcn.0046b7c0
mov edx, dword [esp + 0x1c]
mov eax, dword [esp + 0x38]
lea ecx, [esp + 0x40]
mov byte [esp + 0x294], 0x12
mov dword [esp + 0xb4], 1
mov dword [esp + 0xa8], edx
mov dword [esp + 0xc8], eax
call fcn.0056b247
cmp eax, 1
je 0x4039d3
lea ecx, [esp + 0x23c]
mov dword [esp + 0x20], ecx
lea ecx, [esp + 0x278]
mov byte [esp + 0x294], 0x14
call fcn.00405e40
lea ecx, [esp + 0x23c]
mov byte [esp + 0x294], 0x13
call fcn.00589287
mov byte [esp + 0x294], 0x15
jmp 0x403cb9
lea edx, [esp + 0x20]
lea ecx, [esp + 0x40]
push edx
call fcn.0056b4ee
push eax
lea eax, [esp + 0x40]
push 0x2e
push eax
mov byte [esp + 0x2a0], 0x16
call fcn.0056a398
lea ecx, [esp + 0x20]
mov byte [esp + 0x294], 0x18
call fcn.00575bd5
mov edx, dword [esi + 0xcc]
lea ecx, [esp + 0x10]
push ecx
mov byte [esp + 0x1b], 0
mov eax, dword [edx + 4]
mov ecx, dword [eax + esi + 0xfc]
call fcn.00403dd0
mov eax, dword [eax]
mov ecx, dword [esp + 0x3c]
push eax
push ecx
call fcn.0053d3fc
add esp, 8
lea ecx, [esp + 0x10]
test eax, eax
sete byte [esp + 0x27]
call fcn.00575bd5
mov al, byte [esp + 0x27]
test al, al
je 0x403a64
push 0xffffffffffffffff
push 0x24
push 0x4e4a
call fcn.0057e494
cmp eax, 6
sete byte [esp + 0x17]
lea edx, [esp + 0x18]
lea ecx, [esp + 0x40]
push edx
call fcn.0056b322
mov edi, eax
lea eax, [esp + 0x3c]
lea ecx, [esp + 0x10]
push eax
push ecx
mov ecx, esi
mov byte [esp + 0x29c], 0x19
call fcn.00401760
mov edx, dword [esi + 0xcc]
push ebp
push 0x5fccb0
push 0x5fcc98
mov ecx, dword [edx + 4]
mov edx, dword [ecx + esi + 0xcc]
push ebp
push edi
lea ecx, [ecx + esi + 0xcc]
push eax
mov byte [esp + 0x2ac], 0x1a
call dword [edx + 4]
push eax
call fcn.0053ce5e
add esp, 0x14
lea ecx, [esp + 0x10]
mov edi, eax
mov byte [esp + 0x294], 0x19
call fcn.00575bd5
lea ecx, [esp + 0x18]
mov byte [esp + 0x294], 0x18
call fcn.00575bd5
cmp edi, ebp
jne 0x403b82
lea ecx, [esp + 0x3c]
mov byte [esp + 0x294], 0x12
call fcn.00575bd5
lea eax, [esp + 0x23c]
mov dword [esp + 0x20], eax
mov ecx, dword [esp + 0x27c]
lea edx, [esp + 0x10]
push ecx
push edx
lea ecx, [esp + 0x280]
mov byte [esp + 0x29c], 0x1c
call fcn.004061c0
mov eax, dword [eax]
lea ecx, [esp + 0x1c]
push eax
push ecx
lea ecx, [esp + 0x284]
call fcn.004061d0
mov edx, dword [esp + 0x27c]
push edx
call fcn.00570be5
add esp, 4
lea ecx, [esp + 0x23c]
mov dword [esp + 0x27c], ebp
mov dword [esp + 0x280], ebp
mov byte [esp + 0x294], 0x1b
call fcn.00589287
mov byte [esp + 0x294], 0x1d
jmp 0x403cb9
mov ecx, dword [esi + 0xe0]
lea eax, [esi + 0xe0]
cmp dword [ecx - 8], ebp
jle 0x403bb6
mov ebp, dword [edi + 0xa4]
cmp ebp, 1
jne 0x403baa
mov cl, byte [esp + 0x17]
test cl, cl
je 0x403baa
cmp ebp, ebp
je 0x403bb6
push 0
push 0
push eax
mov ecx, edi
call fcn.00448840
cmp dword [edi + 0xa4], 1
jne 0x403bd7
mov al, byte [esp + 0x17]
test al, al
jne 0x403bd7
push 0
mov ecx, edi
call fcn.00448c10
mov ecx, edi
call fcn.00448eb0
push 0
push 1
push 0
mov ecx, edi
call fcn.0057a804
mov edx, dword [esi]
push 0
push 0x5fcc70
push 0x5fca08
push 0
mov ecx, esi
call dword [edx + 0x74]
push eax
call fcn.0053ce5e
add esp, 0x14
mov ecx, eax
call fcn.00410620
lea ecx, [esp + 0x3c]
mov byte [esp + 0x294], 0x12
call fcn.00575bd5
lea eax, [esp + 0x23c]
mov dword [esp + 0x20], eax
mov eax, dword [esp + 0x27c]
mov byte [esp + 0x294], 0x1f
mov ebp, eax
mov edi, dword [eax]
cmp edi, eax
je 0x403c84
mov esi, edi
mov edi, dword [edi]
push 0
mov eax, dword [esi + 4]
mov ecx, dword [esi]
mov dword [eax], ecx
mov edx, dword [esi]
mov eax, dword [esi + 4]
mov dword [edx + 4], eax
mov ecx, dword [esi + 0xc]
mov edx, dword [ecx + 4]
mov eax, dword [edx + esi + 0xc]
lea ecx, [edx + esi + 0xc]
call dword [eax]
push esi
call fcn.00570be5
mov ecx, dword [esp + 0x284]
add esp, 4
dec ecx
cmp edi, ebp
mov dword [esp + 0x280], ecx
jne 0x403c3c
mov eax, dword [esp + 0x27c]
push eax
call fcn.00570be5
xor eax, eax
add esp, 4
lea ecx, [esp + 0x23c]
mov dword [esp + 0x27c], eax
mov dword [esp + 0x280], eax
mov byte [esp + 0x294], 0x1e
call fcn.00589287
mov byte [esp + 0x294], 0x20
lea ecx, [esp + 0xec]
call fcn.00575bd5
lea ecx, [esp + 0x40]
mov byte [esp + 0x294], 0x11
call fcn.00576422
lea ecx, [esp + 0x38]
mov byte [esp + 0x294], bl
call fcn.00575bd5
lea ecx, [esp + 0x34]
mov byte [esp + 0x294], 3
call fcn.00575bd5
lea ecx, [esp + 0x2c]
mov byte [esp + 0x294], 2
call fcn.00575bd5
lea ecx, [esp + 0x30]
mov byte [esp + 0x294], 1
call fcn.00575bd5
lea ecx, [esp + 0x28]
mov byte [esp + 0x294], 0
call fcn.00575bd5
lea ecx, [esp + 0x1c]
mov dword [esp + 0x294], 0xffffffff
call fcn.00575bd5
mov ecx, dword [esp + 0x28c]
pop edi
pop esi
pop ebp
pop ebx
mov dword fs:[0], ecx
add esp, 0x288
ret