Function at 0x40a840
Capabilities:
Check os version
Resolve function by parsing pe exports

Disassembly:
push 0xffffffffffffffff
push 0x543c10
mov eax, dword fs:[0]
push eax
sub esp, 0x6c
mov eax, dword [0x579aa4]
xor eax, esp
mov dword [esp + 0x68], eax
push ebx
push ebp
push esi
push edi
mov eax, dword [0x579aa4]
xor eax, esp
push eax
lea eax, [esp + 0x80]
mov dword fs:[0], eax
mov eax, dword [esp + 0x94]
mov ecx, dword [esp + 0x9c]
mov ebp, dword [esp + 0x90]
mov edi, dword [esp + 0x98]
mov dword [esp + 0x30], eax
mov eax, dword [esp + 0xa4]
push eax
mov dword [esp + 0x3c], ecx
call fcn.0040c9f0
add esp, 4
mov esi, eax
lea edx, [esp + 0x60]
push edx
mov ecx, esi
call fcn.0040c630
xor ebx, ebx
mov dword [esp + 0x88], ebx
cmp dword [esp + 0x74], ebx
jne 0x40a8cc
mov dword [esp + 0x3c], ebx
jmp 0x40a8dc
mov eax, dword [esi]
mov edx, dword [eax + 8]
mov ecx, esi
call edx
movzx eax, ax
mov dword [esp + 0x3c], eax
add ebp, 8
push ebp
lea ecx, [esp + 0x24]
push ecx
push 1
lea edx, [esp + 0x24]
push edx
lea eax, [esp + 0x38]
push eax
mov byte [esp + 0x2c], 0x30
mov dword [esp + 0x3c], ebx
mov dword [esp + 0x34], ebx
mov dword [esp + 0x48], ebp
call fcn.0050bedf
mov ecx, dword [esp + 0x44]
add esp, 0x14
mov dword [esp + 0x24], ecx
cmp byte [edi + 4], bl
jne 0x40a91e
mov ecx, edi
call fcn.0040c840
mov esi, dword [esp + 0x38]
cmp byte [esi + 4], bl
jne 0x40a92e
mov ecx, esi
call fcn.0040c840
cmp dword [edi], ebx
jne 0x40a93c
cmp dword [esi], ebx
je 0x40a9dc
jmp 0x40a944
cmp dword [esi], ebx
jne 0x40a9dc
cmp byte [edi + 4], bl
jne 0x40a950
mov ecx, edi
call fcn.0040c840
movzx esi, word [edi + 6]
push ebp
lea edx, [esp + 0x30]
push edx
push 1
lea eax, [esp + 0x24]
push eax
lea ecx, [esp + 0x30]
push ecx
mov byte [esp + 0x2c], 0x2b
mov dword [esp + 0x34], ebx
mov dword [esp + 0x40], ebx
call fcn.0050bedf
add esp, 0x14
cmp si, word [esp + 0x20]
jne 0x40a98b
mov eax, dword [esp + 0x30]
mov byte [eax], 0x2b
jmp 0x40a9d0
cmp byte [edi + 4], bl
jne 0x40a997
mov ecx, edi
call fcn.0040c840
movzx esi, word [edi + 6]
push ebp
lea edx, [esp + 0x30]
push edx
push 1
lea eax, [esp + 0x24]
push eax
lea ecx, [esp + 0x30]
push ecx
mov byte [esp + 0x2c], 0x2d
mov dword [esp + 0x34], ebx
mov dword [esp + 0x40], ebx
call fcn.0050bedf
add esp, 0x14
cmp si, word [esp + 0x20]
jne 0x40a9dc
mov eax, dword [esp + 0x30]
mov byte [eax], 0x2d
inc eax
mov ecx, edi
mov dword [esp + 0x24], eax
call fcn.0040c7e0
mov eax, dword [esp + 0xa0]
and eax, 0xe00
cmp eax, 0x400
jne 0x40a9fa
mov ebp, 8
mov dword [esp + 0x20], ebp
jmp 0x40aa19
cmp eax, 0x800
jne 0x40aa0c
mov ebp, 0x10
mov dword [esp + 0x20], ebp
jmp 0x40aa19
neg eax
sbb eax, eax
and eax, 0xa
mov ebp, eax
mov dword [esp + 0x20], eax
mov byte [esp + 0x1e], bl
mov byte [esp + 0x1f], bl
cmp byte [edi + 4], bl
jne 0x40aa2d
mov ecx, edi
call fcn.0040c840
mov esi, dword [esp + 0x38]
cmp byte [esi + 4], bl
jne 0x40aa3d
mov ecx, esi
call fcn.0040c840
cmp dword [edi], ebx
jne 0x40aa6c
cmp dword [esi], ebx
jne 0x40aa70
cmp ebp, ebx
je 0x40ab44
cmp ebp, 0xa
je 0x40ab44
sub ebp, 8
neg ebp
sbb ebp, ebp
and ebp, 0xe
add ebp, 8
mov dword [esp + 0x28], ebp
jmp 0x40ab4c
cmp dword [esi], ebx
jne 0x40aa45
cmp byte [edi + 4], bl
jne 0x40aa7c
mov ecx, edi
call fcn.0040c840
movzx eax, word [edi + 6]
cmp ax, word [esp + 0x28]
jne 0x40aa45
mov ecx, edi
mov byte [esp + 0x1e], 1
call fcn.0040c7e0
push esi
push edi
call fcn.0040cf90
add esp, 8
test al, al
je 0x40ab2e
cmp byte [edi + 4], bl
jne 0x40aab1
mov ecx, edi
call fcn.0040c840
mov edx, dword [esp + 0x34]
movzx esi, word [edi + 6]
push edx
lea eax, [esp + 0x30]
push eax
push 1
lea ecx, [esp + 0x24]
push ecx
lea edx, [esp + 0x38]
push edx
mov byte [esp + 0x2c], 0x78
mov dword [esp + 0x3c], ebx
mov dword [esp + 0x40], ebx
call fcn.0050bedf
add esp, 0x14
cmp si, word [esp + 0x28]
je 0x40ab0c
cmp byte [edi + 4], bl
jne 0x40aaf3
mov ecx, edi
call fcn.0040c840
mov eax, dword [esp + 0x34]
movzx esi, word [edi + 6]
push eax
push ebx
push 0x58
call fcn.00406770
add esp, 0xc
cmp si, ax
jne 0x40ab2e
cmp ebp, ebx
je 0x40ab15
cmp ebp, 0x10
jne 0x40ab2e
mov ebp, 0x10
mov ecx, edi
mov dword [esp + 0x20], ebp
mov byte [esp + 0x1e], bl
call fcn.0040c7e0
jmp 0x40aa56
cmp ebp, ebx
jne 0x40aa4d
mov ebp, 8
mov dword [esp + 0x20], ebp
jmp 0x40aa56
mov dword [esp + 0x28], 0xa
mov cl, byte [esp + 0x1e]
mov dword [esp + 0x5c], 0xf
mov byte [esp + 0x48], cl
mov dword [esp + 0x58], 1
mov byte [esp + 0x49], bl
mov edx, dword [esp + 0x30]
mov esi, dword [esp + 0x38]
xor ebp, ebp
add edx, 0x1f
mov byte [esp + 0x88], 1
mov dword [esp + 0x40], edx
cmp byte [edi + 4], bl
jne 0x40abc4
mov ecx, dword [edi]
cmp ecx, ebx
je 0x40abbe
mov eax, dword [ecx + 0x20]
cmp dword [eax], ebx
je 0x40aba1
mov edx, dword [ecx + 0x30]
cmp dword [edx], ebx
jle 0x40aba1
mov eax, dword [eax]
movzx eax, word [eax]
jmp 0x40abab
mov edx, dword [ecx]
mov eax, dword [edx + 0x10]
call eax
movzx eax, ax
movzx eax, ax
mov ecx, 0xffff
cmp cx, ax
je 0x40abbe
mov word [edi + 6], ax
jmp 0x40abc0
mov dword [edi], ebx
mov byte [edi + 4], 1
cmp byte [esi + 4], bl
jne 0x40ac07
mov ecx, dword [esi]
cmp ecx, ebx
je 0x40ac01
mov eax, dword [ecx + 0x20]
cmp dword [eax], ebx
je 0x40abe4
mov edx, dword [ecx + 0x30]
cmp dword [edx], ebx
jle 0x40abe4
mov eax, dword [eax]
movzx eax, word [eax]
jmp 0x40abee
mov edx, dword [ecx]
mov eax, dword [edx + 0x10]
call eax
movzx eax, ax
movzx eax, ax
mov ecx, 0xffff
cmp cx, ax
je 0x40ac01
mov word [esi + 6], ax
jmp 0x40ac03
mov dword [esi], ebx
mov byte [esi + 4], 1
mov ecx, dword [edi]
cmp ecx, ebx
jne 0x40ac42
cmp dword [esi], ebx
jne 0x40ac46
cmp ebp, ebx
je 0x40add8
cmp ebp, dword [esp + 0x58]
jbe 0x40ac24
call fcn.0050dcae
cmp dword [esp + 0x5c], 0x10
mov eax, dword [esp + 0x48]
jae 0x40ac33
lea eax, [esp + 0x48]
cmp byte [eax + ebp], bl
jle 0x40add4
inc ebp
jmp 0x40add8
cmp dword [esi], ebx
jne 0x40ac11
cmp byte [edi + 4], bl
jne 0x40ac87
cmp ecx, ebx
je 0x40ac81
mov eax, dword [ecx + 0x20]
cmp dword [eax], ebx
je 0x40ac64
mov edx, dword [ecx + 0x30]
cmp dword [edx], ebx
jle 0x40ac64
mov eax, dword [eax]
movzx eax, word [eax]
jmp 0x40ac6e
mov edx, dword [ecx]
mov eax, dword [edx + 0x10]
call eax
movzx eax, ax
movzx eax, ax
mov ecx, 0xffff
cmp cx, ax
je 0x40ac81
mov word [edi + 6], ax
jmp 0x40ac83
mov dword [edi], ebx
mov byte [edi + 4], 1
mov edx, dword [esp + 0x34]
movzx ecx, word [edi + 6]
push edx
lea eax, [esp + 0x30]
push eax
push ecx
lea edx, [esp + 0x24]
push edx
mov byte [esp + 0x28], bl
mov dword [esp + 0x3c], ebx
call fcn.0050bd07
mov al, byte [esp + 0x28]
mov ecx, dword [esp + 0x34]
mov edx, dword [esp + 0x38]
mov byte [ecx], al
movsx eax, al
push edx
push eax
push str.0123456789abcdefABCDEF
call fcn.00514590
add esp, 0x1c
test eax, eax
je 0x40ad32
cmp byte [esp + 0x1f], bl
jne 0x40acdb
mov ecx, dword [esp + 0x24]
cmp byte [ecx], 0x30
je 0x40acee
mov edx, dword [esp + 0x24]
cmp edx, dword [esp + 0x40]
jae 0x40acee
inc dword [esp + 0x24]
mov byte [esp + 0x1f], 1
mov byte [esp + 0x1e], 1
cmp ebp, dword [esp + 0x58]
jbe 0x40acfe
call fcn.0050dcae
cmp dword [esp + 0x5c], 0x10
mov eax, dword [esp + 0x48]
jae 0x40ad0d
lea eax, [esp + 0x48]
cmp byte [eax + ebp], 0x7f
je 0x40ad88
cmp ebp, dword [esp + 0x58]
jbe 0x40ad1e
call fcn.0050dcae
cmp dword [esp + 0x5c], 0x10
mov eax, dword [esp + 0x48]
jae 0x40ad2d
lea eax, [esp + 0x48]
inc byte [eax + ebp]
jmp 0x40ad88
cmp ebp, dword [esp + 0x58]
jbe 0x40ad3d
call fcn.0050dcae
cmp dword [esp + 0x5c], 0x10
mov eax, dword [esp + 0x48]
jae 0x40ad4c
lea eax, [esp + 0x48]
cmp byte [eax + ebp], bl
je 0x40ac11
cmp word [esp + 0x3c], bx
je 0x40ac11
cmp byte [edi + 4], bl
jne 0x40ad6c
mov ecx, edi
call fcn.0040c840
mov ax, word [esp + 0x3c]
cmp word [edi + 6], ax
jne 0x40ac11
push ebx
push 1
lea ecx, [esp + 0x4c]
call fcn.0040c260
inc ebp
mov ecx, dword [edi]
cmp ecx, ebx
je 0x40adc9
mov edx, dword [ecx + 0x20]
cmp dword [edx], ebx
je 0x40adad
mov eax, dword [ecx + 0x30]
cmp dword [eax], ebx
jle 0x40adad
dec dword [eax]
mov ecx, dword [ecx + 0x20]
mov eax, dword [ecx]
lea edx, [eax + 2]
mov dword [ecx], edx
movzx eax, word [eax]
jmp 0x40adb7
mov eax, dword [ecx]
mov edx, dword [eax + 0x14]
call edx
movzx eax, ax
mov ecx, 0xffff
cmp cx, ax
je 0x40adc9
mov byte [edi + 4], bl
jmp 0x40ab81
mov dword [edi], ebx
mov byte [edi + 4], 1
jmp 0x40ab81
mov byte [esp + 0x1e], bl
cmp dword [esp + 0x78], 0x10
mov esi, dword [esp + 0x64]
jae 0x40ade7
lea esi, [esp + 0x64]
mov edi, 0x10
cmp byte [esp + 0x1e], bl
je 0x40ae5c
cmp ebp, ebx
jbe 0x40ae4c
cmp byte [esi], 0x7f
je 0x40ae4c
sub ebp, 1
je 0x40ae20
cmp ebp, dword [esp + 0x58]
jbe 0x40ae0b
call fcn.0050dcae
mov eax, dword [esp + 0x48]
cmp dword [esp + 0x5c], edi
jae 0x40ae19
lea eax, [esp + 0x48]
mov dl, byte [esi]
cmp dl, byte [eax + ebp]
jne 0x40ae5c
cmp ebp, ebx
jne 0x40ae44
cmp ebp, dword [esp + 0x58]
jbe 0x40ae2f
call fcn.0050dcae
mov eax, dword [esp + 0x48]
cmp dword [esp + 0x5c], edi
jae 0x40ae3d
lea eax, [esp + 0x48]
mov cl, byte [esi]
cmp cl, byte [eax + ebp]
jl 0x40ae5c
cmp byte [esi + 1], bl
jle 0x40adf2
inc esi
jmp 0x40adf2
mov eax, dword [esp + 0x24]
cmp byte [esp + 0x1f], bl
jne 0x40ae60
mov byte [eax], 0x30
inc eax
jmp 0x40ae60
mov eax, dword [esp + 0x30]
mov byte [eax], bl
cmp dword [esp + 0x5c], edi
jb 0x40ae75
mov edx, dword [esp + 0x48]
push edx
call fcn.0050c4ec
add esp, 4
mov dword [esp + 0x5c], 0xf
mov dword [esp + 0x58], ebx
mov byte [esp + 0x48], bl
cmp dword [esp + 0x78], edi
jb 0x40ae98
mov eax, dword [esp + 0x64]
push eax
call fcn.0050c4ec
add esp, 4
mov eax, dword [esp + 0x20]
mov ecx, dword [esp + 0x80]
mov dword fs:[0], ecx
pop ecx
pop edi
pop esi
pop ebp
pop ebx
mov ecx, dword [esp + 0x68]
xor ecx, esp
call fcn.0050c75f
add esp, 0x78
ret