Function at 0x100012d0
Capabilities:
Access peb ldr_data
Check os version
Inspect section memory permissions
Parse pe header
Resolve function by parsing pe exports

Disassembly:
push ebp
mov ebp, esp
sub esp, 0x24
push ebx
xor ebx, ebx
mov dword [ebp - 0x14], 0
push esi
push edi
mov dword [ebp - 0x18], 0
mov dword [ebp - 0xc], ebx
mov dword [ebp - 0x1c], ebx
mov dword [ebp - 0x20], ebx
call fcn.100012c0
mov edi, eax
mov edx, 0x5a4d
nop
cmp word [edi], dx
jne 0x1000131b
mov ecx, dword [edi + 0x3c]
lea eax, [ecx - 0x40]
cmp eax, 0x3bf
ja 0x1000131b
cmp dword [ecx + edi], 0x4550
je 0x1000131e
dec edi
jmp 0x10001300
mov eax, dword fs:[0x30]
mov dword [ebp - 0x10], edi
mov eax, dword [eax + 0xc]
mov eax, dword [eax + 0x14]
mov dword [ebp - 8], eax
test eax, eax
je 0x100014fa
nop dword [eax + eax]
mov esi, dword [eax + 0x28]
xor ecx, ecx
movzx edx, word [eax + 0x24]
nop dword [eax]
movzx edi, byte [esi]
ror ecx, 0x1f
cmp byte [esi], 0x61
jb 0x1000135e
add ecx, 0xffffffe0
add edx, 0xffff
add ecx, edi
inc esi
test dx, dx
jne 0x10001350
cmp ecx, 0x317a1e78
jne 0x10001447
mov ebx, dword [ebp - 8]
mov edi, 4
mov esi, dword [ebx + 0x10]
mov eax, dword [esi + 0x3c]
mov eax, dword [eax + esi + 0x78]
add eax, esi
mov dword [ebp - 0x24], eax
mov ebx, dword [eax + 0x20]
mov eax, dword [eax + 0x24]
add ebx, esi
add eax, esi
mov dword [ebp - 4], eax
nop dword [eax]
mov edx, dword [ebx]
add edx, esi
xor eax, eax
mov cl, byte [edx]
nop dword [eax + eax]
ror eax, 0x1f
lea edx, [edx + 1]
movsx ecx, cl
add eax, ecx
mov cl, byte [edx]
test cl, cl
jne 0x100013b0
cmp eax, 0x59ba3
je 0x100013dd
cmp eax, 0x15bdfd
je 0x100013dd
cmp eax, 0x616a1
je 0x100013dd
cmp eax, 0x18609e
jne 0x10001432
mov ecx, dword [ebp - 4]
movzx edx, word [ecx]
mov ecx, dword [ebp - 0x24]
mov ecx, dword [ecx + 0x1c]
lea ecx, [ecx + edx*4]
add ecx, esi
cmp eax, 0x59ba3
jne 0x100013fe
mov eax, dword [ecx]
add eax, esi
mov dword [ebp - 0x14], eax
jmp 0x1000142c
cmp eax, 0x15bdfd
jne 0x1000140e
mov eax, dword [ecx]
add eax, esi
mov dword [ebp - 0x18], eax
jmp 0x1000142c
cmp eax, 0x616a1
jne 0x1000141e
mov eax, dword [ecx]
add eax, esi
mov dword [ebp - 0xc], eax
jmp 0x1000142c
cmp eax, 0x18609e
jne 0x1000142c
mov eax, dword [ecx]
add eax, esi
mov dword [ebp - 0x1c], eax
add edi, 0xffff
add dword [ebp - 4], 2
add ebx, 4
test di, di
jne 0x100013a0
jmp 0x100014c8
cmp ecx, 0xd19a78
jne 0x100014cb
mov ebx, dword [ebp - 8]
mov dword [ebp - 4], 1
mov ebx, dword [ebx + 0x10]
mov eax, dword [ebx + 0x3c]
mov eax, dword [eax + ebx + 0x78]
add eax, ebx
mov dword [ebp - 0x24], eax
mov edi, dword [eax + 0x20]
mov esi, dword [eax + 0x24]
add edi, ebx
add esi, ebx
mov edx, dword [edi]
add edx, ebx
xor ecx, ecx
mov al, byte [edx]
nop word [eax + eax]
ror ecx, 0x1f
lea edx, [edx + 1]
movsx eax, al
add ecx, eax
mov al, byte [edx]
test al, al
jne 0x10001480
cmp ecx, 0x2d3ea5f9
jne 0x100014ba
mov eax, dword [ebp - 0x24]
movzx ecx, word [esi]
mov eax, dword [eax + 0x1c]
lea eax, [eax + ecx*4]
mov eax, dword [eax + ebx]
add eax, ebx
mov dword [ebp - 0x20], eax
mov eax, dword [ebp - 4]
add eax, 0xffff
mov dword [ebp - 4], eax
jmp 0x100014bd
mov eax, dword [ebp - 4]
add edi, 4
add esi, 2
test ax, ax
jne 0x10001472
mov ebx, dword [ebp - 0xc]
cmp dword [ebp - 0x14], 0
je 0x100014e7
cmp dword [ebp - 0x18], 0
je 0x100014e7
test ebx, ebx
je 0x100014e7
cmp dword [ebp - 0x1c], 0
je 0x100014e7
cmp dword [ebp - 0x20], 0
jne 0x100014f7
mov eax, dword [ebp - 8]
mov eax, dword [eax]
mov dword [ebp - 8], eax
test eax, eax
jne 0x10001340
mov edi, dword [ebp - 0x10]
mov esi, dword [edi + 0x3c]
push 4
add esi, edi
push 0x3000
mov dword [ebp - 8], esi
push dword [esi + 0x50]
push 0
call ebx
mov edx, dword [esi + 0x54]
mov ecx, edi
mov dword [ebp - 4], eax
test edx, edx
je 0x10001534
mov esi, eax
sub esi, edi
mov al, byte [ecx]
lea ecx, [ecx + 1]
mov byte [esi + ecx - 1], al
sub edx, 1
jne 0x10001520
mov eax, dword [ebp - 4]
mov esi, dword [ebp - 8]
movzx edi, word [esi + 0x14]
movzx ebx, word [esi + 6]
add edi, 0x2c
test ebx, ebx
je 0x10001574
add edi, esi
mov ecx, dword [edi - 8]
dec ebx
mov edx, dword [edi]
add ecx, eax
add edx, dword [ebp - 0x10]
mov esi, dword [edi - 4]
test esi, esi
je 0x1000156a
mov al, byte [edx]
lea ecx, [ecx + 1]
mov byte [ecx - 1], al
lea edx, [edx + 1]
sub esi, 1
jne 0x10001557
mov eax, dword [ebp - 4]
add edi, 0x28
test ebx, ebx
jne 0x10001545
mov esi, dword [ebp - 8]
mov edi, dword [esi + 0x80]
mov edx, dword [ebp - 4]
add edi, edx
mov dword [ebp - 0x10], edi
mov eax, dword [edi + 0xc]
test eax, eax
je 0x1000160c
nop dword [eax]
add eax, edx
push eax
call dword [ebp - 0x14]
mov esi, dword [edi]
mov ebx, eax
mov edx, dword [ebp - 4]
add esi, edx
mov edi, dword [edi + 0x10]
add edi, edx
cmp dword [edi], 0
je 0x100015f9
nop dword [eax]
test esi, esi
je 0x100015d6
mov ecx, dword [esi]
test ecx, ecx
jns 0x100015d6
mov eax, dword [ebx + 0x3c]
movzx ecx, cx
mov eax, dword [eax + ebx + 0x78]
sub ecx, dword [eax + ebx + 0x10]
mov eax, dword [eax + ebx + 0x1c]
lea eax, [eax + ecx*4]
mov eax, dword [eax + ebx]
add eax, ebx
jmp 0x100015e5
mov eax, dword [edi]
add edx, 2
add eax, edx
push eax
push ebx
call dword [ebp - 0x18]
mov edx, dword [ebp - 4]
mov dword [edi], eax
add edi, 4
test esi, esi
lea eax, [esi + 4]
cmove eax, esi
cmp dword [edi], 0
mov esi, eax
jne 0x100015b0
mov edi, dword [ebp - 0x10]
add edi, 0x14
mov dword [ebp - 0x10], edi
mov eax, dword [edi + 0xc]
test eax, eax
jne 0x10001590
mov esi, dword [ebp - 8]
mov edi, edx
sub edi, dword [esi + 0x34]
cmp dword [esi + 0xa4], 0
je 0x100016c9
mov eax, dword [esi + 0xa0]
add eax, edx
mov dword [ebp - 0x18], eax
mov ecx, dword [eax + 4]
test ecx, ecx
je 0x100016c9
mov esi, dword [eax]
lea ebx, [ecx - 8]
add eax, 8
add esi, edx
shr ebx, 1
mov dword [ebp - 0x14], eax
je 0x100016b3
movzx edx, word [eax]
dec ebx
mov ax, dx
mov ecx, edx
shr ax, 0xc
cmp ax, 0xa
jne 0x10001663
and edx, 0xfff
add dword [edx + esi], edi
jmp 0x1000169b
cmp ax, 3
jne 0x10001674
and ecx, 0xfff
add dword [ecx + esi], edi
jmp 0x1000169b
cmp ax, 1
jne 0x1000168b
and ecx, 0xfff
mov eax, edi
shr eax, 0x10
add word [ecx + esi], ax
jmp 0x1000169b
cmp ax, 2
jne 0x1000169b
and ecx, 0xfff
add word [ecx + esi], di
mov eax, dword [ebp - 0x14]
add eax, 2
mov dword [ebp - 0x14], eax
test ebx, ebx
jne 0x10001645
mov eax, dword [ebp - 0x18]
mov edx, dword [ebp - 4]
mov ecx, dword [eax + 4]
jmp 0x100016b6
mov eax, dword [ebp - 0x18]
add eax, ecx
mov dword [ebp - 0x18], eax
mov ecx, dword [eax + 4]
test ecx, ecx
jne 0x10001634
mov esi, dword [ebp - 8]
mov eax, dword [ebp - 8]
movzx esi, word [esi + 0x14]
mov ebx, dword [ebp - 4]
add esi, 0x20
movzx edi, word [eax + 6]
test edi, edi
je 0x1000174b
add esi, eax
mov ecx, dword [esi + 0x1c]
dec edi
mov edx, dword [esi + 4]
mov eax, ecx
add edx, ebx
and eax, 0x40000000
test ecx, 0x20000000
je 0x10001713
test eax, eax
je 0x10001707
sar ecx, 0x1f
and ecx, 0x20
add ecx, 0x20
jmp 0x10001733
mov eax, 0x10
test ecx, ecx
lea ecx, [eax + 0x70]
jmp 0x1000172e
test eax, eax
je 0x10001722
sar ecx, 0x1f
and ecx, 2
add ecx, 2
jmp 0x10001733
test ecx, ecx
mov eax, 1
mov ecx, 8
cmovs eax, ecx
mov ecx, eax
lea eax, [ebp - 0x18]
mov dword [ebp - 0x18], ecx
push eax
push ecx
push dword [esi]
push edx
call dword [ebp - 0x1c]
add esi, 0x28
test edi, edi
jne 0x100016e0
mov eax, dword [ebp - 8]
mov esi, dword [eax + 0x28]
push 0
push 0
push 0xffffffffffffffff
add esi, ebx
call dword [ebp - 0x20]
push dword [ebp + 8]
push 1
push ebx
call esi
pop edi
mov eax, esi
pop esi
pop ebx
mov esp, ebp
pop ebp
ret 4