Function at 0xa3b2e0
Capabilities:
Check os version

Disassembly:
mov eax, dword fs:[0]
push 0xffffffffffffffff
push 0xa8d871
push eax
mov eax, dword [esp + 0x28]
mov ecx, dword [esp + 0x24]
mov dword fs:[0], esp
sub esp, 0x8d8
mov dword [eax], 0
push ebx
push ebp
push esi
push edi
push 1
push ecx
call fcn.00a39f90
mov edi, eax
add esp, 8
test edi, edi
jne 0xa3b325
xor al, al
jmp 0xa3b80a
lea ecx, [esp + 0x2b8]
call fcn.00a155c0
mov ebx, dword [esp + 0x8f8]
mov dword [esp + 0x8f0], 0
test ebx, ebx
jne 0xa3b3b9
lea edx, [esp + 0x2b8]
mov ecx, edi
push edx
call fcn.00a3a330
lea edx, [edi + 0x44]
push edx
call dword [sym.imp.KERNEL32.dll_LeaveCriticalSection]
mov ecx, edi
call fcn.00a379b0
mov ebp, dword [esp + 0x914]
mov eax, dword [esp + 0x2bc]
mov edx, dword [esp + 0x908]
mov dword [ebp], eax
inc eax
cmp eax, edx
jae 0xa3b77c
mov esi, dword [esp + 0x2c0]
mov edi, dword [esp + 0x904]
lea ecx, [eax + eax]
mov edx, dword [esp + 0x910]
mov eax, ecx
shr ecx, 2
rep movsd dword es:[edi], dword [esi]
mov ecx, eax
and ecx, 3
rep movsb byte es:[edi], byte [esi]
mov ecx, dword [ebp]
inc ecx
mov dword [edx], ecx
jmp 0xa3b7f1
push 0
push ebx
mov ecx, edi
call fcn.00a3a1f0
mov esi, eax
mov eax, dword [esp + 0x8fc]
test eax, eax
jne 0xa3b45c
test esi, esi
je 0xa3b45c
lea eax, [esp + 0x2b8]
push 0
push eax
mov ecx, esi
call fcn.00a38470
mov ebp, dword [esi + 0x14]
mov ecx, esi
and ebp, 1
call fcn.00a379b0
test ebp, ebp
je 0xa3b45c
push 1
push ebx
mov ecx, edi
call fcn.00a3a1f0
mov esi, eax
test esi, esi
je 0xa3b45c
cmp dword [esp + 0x2bc], 1
jne 0xa3b444
mov ecx, 0xab504c
test ecx, ecx
jne 0xa3b425
xor eax, eax
jmp 0xa3b432
push 0xab504c
call fcn.00a7e07a
add esp, 4
push eax
push 0xab504c
lea ecx, [esp + 0x2c0]
call fcn.00a15a90
lea edx, [esp + 0x2b8]
push 0
push edx
mov ecx, esi
call fcn.00a38470
mov ecx, esi
call fcn.00a379b0
mov eax, dword [esp + 0x8fc]
test eax, eax
je 0xa3b356
test esi, esi
je 0xa3b4df
push eax
mov ecx, esi
call fcn.00a38380
mov ebp, eax
test ebp, ebp
mov dword [esp + 0x10], ebp
jne 0xa3b4be
test byte [esi + 0x14], 1
je 0xa3b4be
mov ecx, esi
call fcn.00a379b0
push 1
push ebx
mov ecx, edi
call fcn.00a3a1f0
mov esi, eax
test esi, esi
je 0xa3b4c5
mov eax, dword [esp + 0x8fc]
mov ecx, esi
push eax
call fcn.00a38380
mov ecx, esi
mov dword [esp + 0x10], eax
call fcn.00a379b0
mov ebp, dword [esp + 0x10]
jmp 0xa3b4c5
mov ecx, esi
call fcn.00a379b0
test ebp, ebp
je 0xa3b4df
mov ecx, ebp
call fcn.00a37c50
test eax, eax
jne 0xa3b609
mov ecx, ebp
call fcn.00a379b0
lea ecx, [edi + 0x44]
push ecx
call dword [sym.imp.KERNEL32.dll_LeaveCriticalSection]
mov ecx, edi
call fcn.00a379b0
mov esi, dword [esp + 0x900]
test esi, esi
jne 0xa3b500
mov esi, 0xab504c
push esi
call fcn.00a7e07a
add esp, 4
test eax, eax
jle 0xa3b51f
lea ecx, [esi + eax*2 - 2]
cmp word [ecx], 0x20
jne 0xa3b51f
dec eax
sub ecx, 2
test eax, eax
jg 0xa3b511
push eax
push esi
lea ecx, [esp + 0x4d0]
call fcn.00a15470
mov edx, dword [esp + 0x4d0]
push edx
call fcn.00a7e07a
mov edi, dword [esp + 0x918]
mov esi, dword [esp + 0x90c]
add esp, 4
mov dword [edi], eax
inc eax
cmp eax, esi
ja 0xa3b587
mov eax, dword [esp + 0x4d0]
mov ecx, dword [esp + 0x904]
push eax
push ecx
call fcn.00a7e270
mov edx, dword [edi]
mov eax, dword [esp + 0x918]
add esp, 8
inc edx
lea ecx, [esp + 0x4c8]
mov dword [eax], edx
call fcn.00a155e0
jmp 0xa3b7f1
mov ecx, 0x25
xor eax, eax
lea edi, [esp + 0x14]
rep stosd dword es:[edi], eax
lea ecx, [esp + 0x14]
mov dword [esp + 0x14], 0x94
push ecx
call dword [sym.imp.KERNEL32.dll_GetVersionExA]
mov eax, dword [esp + 0x24]
mov ebx, 1
cmp eax, ebx
je 0xa3b5bd
cmp dword [esp + 0x18], 6
jb 0xa3b5bd
xor ebx, ebx
mov edx, dword [esp + 0x4d0]
mov ebp, dword [esp + 0x904]
lea edi, [esi - 1]
push edi
push edx
push ebp
call fcn.00a7e178
add esp, 0xc
mov word [ebp + esi*2 - 2], 0
test ebx, ebx
je 0xa3b5e6
mov edi, esi
mov eax, dword [esp + 0x914]
mov ecx, dword [esp + 0x910]
mov dword [eax], edi
mov dword [ecx], esi
lea ecx, [esp + 0x4c8]
call fcn.00a155e0
jmp 0xa3b7f1
push eax
lea ecx, [esp + 0xac]
call fcn.00a152e0
push 0
lea ecx, [esp + 0xac]
mov byte [esp + 0x8f4], 1
call fcn.00a15bc0
cmp word [eax], 0x22
jne 0xa3b64d
mov edx, dword [esp + 0xac]
lea ecx, [esp + 0xa8]
dec edx
push edx
call fcn.00a15bc0
cmp word [eax], 0x22
je 0xa3b67c
push 0
lea ecx, [esp + 0xac]
call fcn.00a15bc0
cmp word [eax], 0x27
jne 0xa3b6cd
mov eax, dword [esp + 0xac]
lea ecx, [esp + 0xa8]
dec eax
push eax
call fcn.00a15bc0
cmp word [eax], 0x27
jne 0xa3b6cd
mov ecx, dword [esp + 0xac]
lea edx, [esp + 0x6d8]
add ecx, 0xfffffffe
push ecx
push 1
push edx
lea ecx, [esp + 0xb4]
call fcn.00a15eb0
mov ecx, dword [eax + 4]
mov edx, dword [eax + 8]
push ecx
push edx
lea ecx, [esp + 0xb0]
mov byte [esp + 0x8f8], 2
call fcn.00a15a90
lea ecx, [esp + 0x6d8]
mov byte [esp + 0x8f0], 1
call fcn.00a155e0
mov ebp, dword [esp + 0x914]
mov eax, dword [esp + 0xac]
mov ebx, dword [esp + 0x908]
mov dword [ebp], eax
inc eax
cmp eax, ebx
ja 0xa3b704
mov eax, dword [esp + 0xb0]
mov ecx, dword [esp + 0x904]
push eax
push ecx
call fcn.00a7e270
add esp, 8
jmp 0xa3b73f
cmp ebx, 1
jb 0xa3b738
mov edx, dword [esp + 0xb0]
mov eax, dword [esp + 0x904]
lea esi, [ebx - 1]
push esi
push edx
push eax
call fcn.00a7e178
mov ecx, dword [esp + 0x910]
add esp, 0xc
mov word [ecx + ebx*2 - 2], 0
mov dword [ebp], esi
jmp 0xa3b73f
mov dword [ebp], 0
mov edx, dword [ebp]
mov eax, dword [esp + 0x910]
mov ecx, dword [esp + 0x10]
inc edx
mov dword [eax], edx
call fcn.00a379b0
lea ecx, [edi + 0x44]
push ecx
call dword [sym.imp.KERNEL32.dll_LeaveCriticalSection]
mov ecx, edi
call fcn.00a379b0
lea ecx, [esp + 0xa8]
mov byte [esp + 0x8f0], 0
call fcn.00a155e0
jmp 0xa3b7f1
cmp edx, 2
jb 0xa3b7c9
mov ebp, dword [esp + 0x904]
mov esi, dword [esp + 0x2c0]
lea eax, [edx + edx - 4]
mov edi, ebp
mov ecx, eax
mov ebx, ecx
shr ecx, 2
rep movsd dword es:[edi], dword [esi]
mov ecx, ebx
and ecx, 3
rep movsb byte es:[edi], byte [esi]
mov ecx, dword [esp + 0x914]
mov word [eax + ebp], 0
lea eax, [edx - 2]
mov word [ebp + edx*2 - 2], 0
mov dword [ecx], eax
mov eax, dword [esp + 0x910]
mov dword [eax], edx
jmp 0xa3b7f1
test edx, edx
jbe 0xa3b7e1
mov edi, dword [esp + 0x904]
mov ecx, edx
xor eax, eax
shr ecx, 1
rep stosd dword es:[edi], eax
adc ecx, ecx
rep stosw word es:[edi], ax
mov ecx, dword [esp + 0x910]
mov dword [ebp], 0
mov dword [ecx], edx
lea ecx, [esp + 0x2b8]
mov dword [esp + 0x8f0], 0xffffffff
call fcn.00a155e0
mov al, 1
mov ecx, dword [esp + 0x8e8]
pop edi
pop esi
pop ebp
pop ebx
mov dword fs:[0], ecx
add esp, 0x8e4
ret