Function at 0x40ae00
Capabilities:
Access peb ldr_data
Check os version

Disassembly:
push 0xffffffffffffffff
push 0x53cd69
mov eax, dword fs:[0]
push eax
mov dword fs:[0], esp
sub esp, 0x24
mov eax, dword [0x657880]
push esi
mov esi, ecx
mov dword [esp + 0x24], eax
movzx eax, byte [esi + 0x9c]
push eax
push 0x441
push esi
call fcn.0040f020
mov ecx, dword [esi + 0xa8]
and ecx, 1
push ecx
push 0x427
push esi
call fcn.0040f020
mov edx, dword [esi + 0xa8]
and edx, 2
push edx
push 0x428
push esi
call fcn.0040f020
mov eax, dword [esi + 0xa8]
and eax, 4
push eax
push 0x435
push esi
call fcn.0040f020
mov ecx, dword [esi + 0xa8]
and ecx, 8
push ecx
push 0x436
push esi
call fcn.0040f020
mov edx, dword [esi + 0xa8]
and edx, 0x40
push edx
push 0x434
push esi
call fcn.0040f020
mov eax, dword [esi + 0xa8]
add esp, 0x48
and eax, 0x80
push eax
push 0x433
push esi
call fcn.0040f020
mov ecx, dword [esi + 0xa8]
and ecx, 0x100
push ecx
push 0x429
push esi
call fcn.0040f020
mov edx, dword [esi + 0xa8]
and edx, 0x200
push edx
push 0x42a
push esi
call fcn.0040f020
mov eax, dword [esi + 0xa8]
and eax, 0x10
push eax
push 0x42b
push esi
call fcn.0040f020
mov ecx, dword [esi + 0xa8]
and ecx, 0x20
push ecx
push 0x437
push esi
call fcn.0040f020
mov edx, dword [esi + 0xa8]
and edx, 0x400
push edx
push 0x43e
push esi
call fcn.0040f020
mov eax, dword [esi + 0xa8]
add esp, 0x48
and eax, 0x800
push eax
push 0x440
push esi
call fcn.0040f020
mov ecx, dword [esi + 0xa8]
and ecx, 0x1000
push ecx
push 0x443
push esi
call fcn.0040f020
mov edx, dword [esi + 0xa8]
and edx, 0x2000
push edx
push 0x444
push esi
call fcn.0040f020
mov eax, dword [esi + 0xa8]
and eax, 0x4000
push eax
push 0x445
push esi
call fcn.0040f020
mov ecx, dword [esi + 0xa8]
and ecx, 0x8000
push ecx
push 0x446
push esi
call fcn.0040f020
mov ecx, dword [esi + 0xa0]
xor edx, edx
test ecx, ecx
setne dl
push edx
push 0x405
push esi
call fcn.0040ecb0
mov edx, dword [esi + 0xb0]
add esp, 0x48
xor eax, eax
test edx, edx
setne al
push eax
push 0x40d
push esi
call fcn.0040ecb0
mov eax, dword [esi + 0xb8]
xor ecx, ecx
test eax, eax
setne cl
push ecx
push 0x40f
push esi
call fcn.0040ecb0
movzx edx, word [esi + 0xa4]
push edx
push 0x405
push esi
call fcn.0040eab0
mov ecx, dword [esi + 0xa0]
imul ecx, ecx, 0x1c
add esp, 0x24
add ecx, 0x6986d0
call dword [sym.imp.MSVCP71.dll_public:_char_const____thiscall_std::basic_string_char__struct_std::char_traits_char___class_std::allocator_char__::c_str_void_const]
sub esp, 0x1c
mov ecx, esp
mov dword [esp + 0x20], esp
push eax
call dword [sym.imp.MSVCP71.dll_public:_void___thiscall_std::basic_string_char__struct_std::char_traits_char___class_std::allocator_char__::constructor_char_const__]
push 0x404
push esi
call fcn.0040edb0
mov eax, dword [esi + 0xb4]
push eax
push 0x40d
push esi
call fcn.0040eab0
mov ecx, dword [esi + 0xb0]
imul ecx, ecx, 0x1c
add esp, 0x30
add ecx, 0x6986d0
call dword [sym.imp.MSVCP71.dll_public:_char_const____thiscall_std::basic_string_char__struct_std::char_traits_char___class_std::allocator_char__::c_str_void_const]
sub esp, 0x1c
mov ecx, esp
mov dword [esp + 0x20], esp
push eax
call dword [sym.imp.MSVCP71.dll_public:_void___thiscall_std::basic_string_char__struct_std::char_traits_char___class_std::allocator_char__::constructor_char_const__]
push 0x40c
push esi
call fcn.0040edb0
mov ecx, dword [esi + 0xbc]
push ecx
push 0x40f
push esi
call fcn.0040eab0
mov ecx, dword [esi + 0xb8]
imul ecx, ecx, 0x1c
add esp, 0x30
add ecx, 0x6986d0
call dword [sym.imp.MSVCP71.dll_public:_char_const____thiscall_std::basic_string_char__struct_std::char_traits_char___class_std::allocator_char__::c_str_void_const]
sub esp, 0x1c
mov ecx, esp
mov dword [esp + 0x20], esp
push eax
call dword [sym.imp.MSVCP71.dll_public:_void___thiscall_std::basic_string_char__struct_std::char_traits_char___class_std::allocator_char__::constructor_char_const__]
push 0x40e
push esi
call fcn.0040edb0
add esp, 0x24
push str.All_School
lea ecx, [esp + 0xc]
call dword [sym.imp.MSVCP71.dll_public:_void___thiscall_std::basic_string_char__struct_std::char_traits_char___class_std::allocator_char__::constructor_char_const__]
mov ax, word [esi + 0xac]
cmp ax, 0xa
mov dword [esp + 0x30], 0
je 0x40b101
movzx edx, ax
imul edx, edx, 0x1c
add edx, 0x768268
push edx
lea ecx, [esp + 0xc]
call dword [sym.imp.MSVCP71.dll_public:_class_std::basic_string_char__struct_std::char_traits_char___class_std::allocator_char______thiscall_std::basic_string_char__struct_std::char_traits_char___class_std::allocator_char__::operator_class_std::basic_string_char__struct_std::char_traits_char___class_std::allocator_char___const__]
lea ecx, [esp + 8]
call dword [sym.imp.MSVCP71.dll_public:_char_const____thiscall_std::basic_string_char__struct_std::char_traits_char___class_std::allocator_char__::c_str_void_const]
sub esp, 0x1c
mov ecx, esp
mov dword [esp + 0x20], esp
push eax
call dword [sym.imp.MSVCP71.dll_public:_void___thiscall_std::basic_string_char__struct_std::char_traits_char___class_std::allocator_char__::constructor_char_const__]
push 0x403
push esi
call fcn.0040edb0
mov eax, dword [esi + 0xcc]
push eax
push 0x412
push esi
call fcn.0040eab0
mov ecx, dword [esi + 0xd0]
push ecx
push 0x413
push esi
call fcn.0040eab0
add esp, 0x3c
mov ecx, esi
call fcn.0040a130
mov ecx, esi
call fcn.0040a1d0
mov ecx, esi
call fcn.0040a490
mov ecx, esi
call fcn.0040a680
mov ecx, esi
call fcn.0040a7d0
mov ecx, esi
call fcn.0040a900
mov ecx, esi
call fcn.0040aa30
mov ecx, esi
call fcn.0040ac10
lea ecx, [esp + 8]
mov dword [esp + 0x30], 0xffffffff
call dword [sym.imp.MSVCP71.dll_public:_void___thiscall_std::basic_string_char__struct_std::char_traits_char___class_std::allocator_char__::destructor_void_]
mov ecx, dword [esp + 0x28]
mov dword fs:[0], ecx
mov ecx, dword [esp + 0x24]
mov eax, 1
call fcn.00534b01
pop esi
add esp, 0x30
ret