Function at 0x718a00
Capabilities:
Encode data using xor
Parse pe header

Disassembly:
push ebp
mov ebp, esp
push ebx
push edi
push esi
sub esp, 0x34
nop
mov dword [ebp - 0x1c], esp
mov dword [ebp - 0x10], 0xffffffff
lea eax, [ebp - 0x18]
mov dword [ebp - 0x14], 0x719a80
mov edx, dword fs:[0]
mov dword [ebp - 0x18], edx
mov dword fs:[0], eax
mov eax, dword [ecx + 4]
cmp dword [eax + 0x24], 0
je 0x718a57
nop
mov ebx, dword [ebp + 0xc]
cmp dword [ebx + 0x14], 0
je 0x718a5e
cmp dword [ebp + 8], 0
jns 0x718a6e
nop
push 0x57
call dword [sym.imp.KERNEL32.dll_SetLastError]
xor eax, eax
jmp 0x718afd
nop
cmp dword [eax + 0x2c], 0
je 0x718ad4
nop
push 0x57
call dword [sym.imp.KERNEL32.dll_SetLastError]
xor eax, eax
jmp 0x718afd
je 0x718ae5
nop
push 0x40
mov edi, dword [ebp + 8]
push edi
call dword [sym.imp.KERNEL32.dll_IsBadReadPtr]
test eax, eax
jne 0x718ad8
nop
movzx eax, word [edi]
cmp eax, 0x5a4d
jne 0x718ad8
nop
mov esi, dword [edi + 0x3c]
add esi, edi
push 0xf8
push esi
call dword [sym.imp.KERNEL32.dll_IsBadReadPtr]
test eax, eax
jne 0x718af2
nop
cmp dword [esi], 0x4550
jne 0x718af2
nop
mov ecx, dword [esi + 0x80]
test ecx, ecx
je 0x718ad4
nop
mov eax, dword [ebp + 8]
mov dword [ebp - 0x20], ecx
mov esi, dword [ecx + eax + 0xc]
test esi, esi
je 0x718c5a
mov eax, dword [ebp - 0x20]
add eax, dword [ebp + 8]
mov dword [ebp - 0x20], eax
jmp 0x718b4b
xor eax, eax
jmp 0x718afd
nop
push 0x57
call dword [sym.imp.KERNEL32.dll_SetLastError]
xor eax, eax
jmp 0x718afd
nop
push 0x57
call dword [sym.imp.KERNEL32.dll_SetLastError]
xor eax, eax
jmp 0x718afd
nop
push 0x57
call dword [sym.imp.KERNEL32.dll_SetLastError]
xor eax, eax
nop
mov ecx, dword [ebp - 0x18]
mov dword fs:[0], ecx
add esp, 0x34
pop esi
pop edi
pop ebx
pop ebp
ret 0xc
add eax, 0x24
mov edx, eax
mov ecx, edi
nop
push edx
push ecx
call fcn.008ea1ad
add esp, 8
test esi, esi
je 0x718c11
nop
mov dword [0xa1dc88], 0x49355e71
mov eax, dword [ebp - 0x20]
mov esi, dword [eax + 0x20]
add eax, 0x14
mov dword [ebp - 0x20], eax
test esi, esi
je 0x718c5a
nop
add esi, dword [ebp + 8]
mov eax, 0x921774
cmove esi, eax
mov dword [ebp - 0x2c], 0
mov dword [ebp - 0x28], 0xf
mov byte [ebp - 0x3c], 0
push esi
call fcn.008d08c0
add esp, 4
cmp eax, 0xf
jbe 0x718b9b
nop
mov dword [ebp - 0x10], 0xffffffff
sub esp, 0xc
movzx ecx, byte [ebp - 0x24]
mov byte [esp + 4], cl
mov dword [esp + 8], esi
mov dword [esp], eax
lea ecx, [ebp - 0x3c]
call fcn.0066cb40
jmp 0x718bbb
nop
mov dword [ebp - 0x2c], eax
push eax
push esi
lea ecx, [ebp - 0x3c]
push ecx
mov esi, eax
call fcn.00901d90
add esp, 0xc
mov byte [ebp + esi - 0x3c], 0
mov dword [ebp - 0x10], 1
nop
mov dword [ebp - 0x40], 0x920fc0
mov dword [ebp - 0x10], 1
mov ecx, ebx
lea eax, [ebp - 0x40]
push eax
call fcn.00718d60
mov esi, eax
mov eax, dword [ebp - 0x28]
cmp eax, 0x10
nop
mov ebx, dword [ebp + 0xc]
jb 0x718b24
nop
mov ecx, dword [ebp - 0x3c]
lea edx, [eax + 1]
cmp edx, 0x1000
jb 0x718b19
nop
mov edi, dword [ecx - 4]
add ecx, 0xfffffffc
sub ecx, edi
cmp ecx, 0x20
jb 0x718b12
jmp 0x718c91
nop
cmp byte [0xa56fa8], 0
nop
mov eax, dword [ebp + 0x10]
jne 0x718c6a
nop
cmp dword [eax + 4], 0x15555555
je 0x718c6a
nop
mov esi, dword [eax]
mov dword [ebp - 0x10], 0xffffffff
push 0xc
mov edi, eax
call fcn.008ea17d
add esp, 4
mov ecx, dword [ebp - 0x20]
mov dword [eax + 8], ecx
inc dword [edi + 4]
mov ecx, dword [esi + 4]
mov dword [eax], esi
mov dword [eax + 4], ecx
mov dword [esi + 4], eax
mov dword [ecx], eax
jmp 0x718b2c
nop
mov eax, dword [ebp + 0x10]
cmp dword [eax + 4], 0
setne al
jmp 0x718afd
nop
movzx eax, byte [0xa1dc6e]
cmp al, 0x5d
je 0x718d15
mov cl, 0x20
mov al, 0xb
lock cmpxchg byte [0xa1dc6e], cl
je 0x718c9e
cmp al, 0x5d
jne 0x718c7c
jmp 0x718d15
nop
mov dword [ebp - 0x10], 0
call fcn.008cd651
xor ebx, ebx
mov ecx, 0x6ac356ab
mov esi, 0x6ac356aa
mov eax, ecx
mov edx, 0x4ec4ec4f
mul edx
mov edi, edx
mov eax, esi
mov edx, 0x4ec4ec4f
mul edx
shr edx, 2
imul eax, edx, 0xfffffff3
movzx edx, byte [ebx + 0xa1dc60]
xor dl, byte [eax + ebx + 0x6b5da22a]
shr edi, 2
imul eax, edi, 0xfffffff3
xor dl, 0x76
mov byte [ebx + 0xa1dc60], dl
movzx edx, byte [ebx + 0xa1dc61]
xor dl, byte [eax + ebx + 0x6b5da22b]
xor dl, 0x76
mov byte [ebx + 0xa1dc61], dl
add ebx, 2
add ecx, 2
add esi, 2
cmp ebx, 0xe
jne 0x718caa
mov al, 0x5d
xchg byte [0xa1dc6e], al
mov dword [ebp - 0x10], 0xffffffff
nop
mov dword [ebp - 0x10], 0xffffffff
push 0xa1dc60
call fcn.008ebdaa
nop word [eax + eax]
push ebp
sub esp, 0xc
add ebp, 0xc
call fcn.00901a00
nop dword [eax]
push ebp
sub esp, 0xc
add ebp, 0xc
lea ecx, [ebp - 0x40]
call fcn.00657390
add esp, 0xc
pop ebp
ret