Function at 0x25135794
Capabilities:
Check os version

Disassembly:
push ebp
mov ebp, esp
push ecx
mov ecx, 0x27
push 0
push 0
dec ecx
jne 0x2513579d
xchg dword [ebp - 4], ecx
push ebx
push esi
push edi
test dl, dl
je 0x251357b6
add esp, 0xfffffff0
call fcn.251248f4
mov esi, ecx
mov byte [ebp - 0x51], dl
mov dword [ebp - 0x50], eax
mov edi, dword [ebp + 0x14]
mov eax, dword [ebp + 0x18]
call fcn.251257f0
lea eax, [ebp - 0x4c]
mov edx, dword [0x2512b68c]
call fcn.251265ec
xor eax, eax
push ebp
push 0x251367d2
push dword fs:[eax]
mov dword fs:[eax], esp
xor eax, eax
mov dword [ebp - 0x78], eax
mov eax, dword [ebp - 0x50]
xor edx, edx
mov dword [eax + 0x20], edx
call fcn.25133158
push ebp
push 0x25136779
push dword fs:[0]
mov dword fs:[0], esp
call sub.kernel32.dll_GetVersion_1
test eax, 0x80000000
je 0x25135826
mov edx, 0x25146acc
mov eax, 0x25146ac8
call fcn.2512f330
mov eax, dword [ebp + 0xc]
mov dword [eax], edi
mov eax, dword [ebp - 0x50]
mov dword [eax + 0x30], esi
test byte [ebp + 8], 0x20
setne al
mov edx, dword [ebp - 0x50]
mov byte [edx + 0x34], al
test byte [ebp + 8], 0x40
setne al
mov edx, dword [ebp - 0x50]
mov byte [edx + 0x35], al
mov eax, dword [ebp - 0x50]
xor edx, edx
mov dword [eax + 0x28], edx
lea edx, [ebp - 0xf4]
mov eax, 0x25134dbc
call fcn.2512de50
mov eax, dword [ebp - 0xe8]
mov dword [ebp - 0x7c], eax
mov eax, dword [ebp - 0x7c]
add eax, 0xf5a
call fcn.251328ac
mov ebx, eax
mov eax, dword [ebp - 0x50]
mov dword [eax + 0x20], ebx
mov byte [ebx], 0xff
mov byte [ebx + 1], 0x25
lea eax, [ebx + 6]
mov dword [ebx + 2], eax
mov edx, dword [ebp - 0x50]
mov eax, edi
mov dword [edx + 8], eax
mov dword [ebp - 0x70], eax
mov eax, dword [ebp - 0x50]
mov edx, dword [ebp + 0x10]
mov dword [eax + 0x10], edx
mov eax, dword [ebp + 0xc]
mov edx, dword [ebp - 0x50]
mov dword [edx + 0x14], eax
mov byte [ebp - 0x7d], 0
lea eax, [ebp - 4]
push eax
mov eax, dword [ebp - 0x50]
mov edx, dword [eax + 8]
xor ecx, ecx
mov eax, dword [0x251469ec]
call fcn.2513247c
lea eax, [ebp - 8]
push eax
mov eax, dword [ebp - 0x50]
mov edx, dword [eax + 8]
mov cl, 1
mov eax, dword [0x251469ec]
call fcn.2513247c
call sub.kernel32.dll_GetVersion_1
test eax, 0x80000000
je 0x25135908
mov eax, dword [ebp - 0x50]
cmp dword [eax + 8], 0x80000000
jb 0x25135910
lea eax, [ebp - 4]
mov edx, dword [ebp - 8]
call fcn.25125ad0
lea eax, [ebp - 8]
call fcn.25125720
jmp 0x25135910
lea eax, [ebp - 8]
call fcn.25125720
lea edx, [ebp - 0xfc]
mov eax, dword [0x251469cc]
call fcn.25129f28
push dword [ebp - 0xfc]
push 0x2513680c
push dword [ebp - 4]
lea eax, [ebp - 0xf8]
mov edx, 3
call fcn.25125dcc
mov eax, dword [ebp - 0xf8]
call fcn.25125ecc
push eax
call fcn.2513221c
mov dword [ebp - 0x58], eax
cmp dword [ebp - 8], 0
je 0x2513599c
lea edx, [ebp - 0x104]
mov eax, dword [0x251469cc]
call fcn.25129f28
push dword [ebp - 0x104]
push 0x2513680c
push dword [ebp - 8]
lea eax, [ebp - 0x100]
mov edx, 3
call fcn.25125dcc
mov eax, dword [ebp - 0x100]
call fcn.25125ecc
push eax
call fcn.2513221c
mov dword [ebp - 0x5c], eax
jmp 0x251359a1
xor eax, eax
mov dword [ebp - 0x5c], eax
push ebp
push 0x25136756
push dword fs:[0]
mov dword fs:[0], esp
cmp dword [ebp - 0x58], 0
je 0x251359c6
push 0xffffffffffffffff
mov eax, dword [ebp - 0x58]
push eax
call sub.kernel32.dll_WaitForSingleObject
cmp dword [ebp - 0x5c], 0
je 0x251359d7
push 0xffffffffffffffff
mov eax, dword [ebp - 0x5c]
push eax
call sub.kernel32.dll_WaitForSingleObject
push ebp
push 0x25136723
push dword fs:[0]
mov dword fs:[0], esp
push 0xffffffffffffffff
lea edx, [ebp - 0x10c]
mov eax, dword [0x251469e4]
call fcn.25129f28
push dword [ebp - 0x10c]
push 0x2513680c
push dword [ebp - 4]
lea eax, [ebp - 0x108]
mov edx, 3
call fcn.25125dcc
mov eax, dword [ebp - 0x108]
call fcn.25125ecc
push eax
call fcn.25132468
mov dword [ebp - 0x60], eax
lea eax, [ebp - 0x60]
call fcn.25135744
xor al, 1
mov edx, dword [ebp - 0x50]
mov byte [edx + 5], al
mov eax, dword [ebp - 0x50]
cmp byte [eax + 5], 0
je 0x25135ab6
cmp dword [ebp - 8], 0
je 0x25135ab6
push 0xffffffffffffffff
lea edx, [ebp - 0x114]
mov eax, dword [0x251469e4]
call fcn.25129f28
push dword [ebp - 0x114]
push 0x2513680c
push dword [ebp - 8]
lea eax, [ebp - 0x110]
mov edx, 3
call fcn.25125dcc
mov eax, dword [ebp - 0x110]
call fcn.25125ecc
push eax
call fcn.25132468
mov dword [ebp - 0x60], eax
lea eax, [ebp - 0x60]
call fcn.25135744
xor al, 1
mov edx, dword [ebp - 0x50]
mov byte [edx + 5], al
mov eax, dword [ebp - 0x50]
cmp byte [eax + 5], 0
jne 0x25135ab6
lea eax, [ebp - 4]
mov edx, dword [ebp - 8]
call fcn.25125ad0
push ebp
push 0x251366f0
push dword fs:[0]
mov dword fs:[0], esp
mov eax, dword [ebp - 0x50]
cmp byte [eax + 5], 0
je 0x25135f63
mov eax, dword [ebp - 0x50]
mov ecx, dword [eax + 8]
mov edx, dword [ebp + 0x18]
mov eax, esi
call fcn.251352c4
test al, al
je 0x25135b0b
mov dword [ebp - 0x78], 0x770001
call fcn.25124fe0
call fcn.25124fe0
call fcn.25124fe0
call fcn.25124fe0
jmp 0x25136780
test byte [ebp + 8], 2
jne 0x25135b73
mov eax, dword [ebp - 0x50]
mov edx, dword [eax + 8]
mov eax, esi
call fcn.25135204
test al, al
je 0x25135b28
or dword [ebp + 8], 2
jmp 0x25135b73
lea edx, [ebp - 0x4c]
mov eax, dword [ebp - 0x50]
mov eax, dword [eax + 8]
call fcn.2512de50
cmp byte [ebp - 0x4c], 0
je 0x25135b42
cmp byte [ebp - 0x24], 0
jne 0x25135b48
or dword [ebp + 8], 2
jmp 0x25135b73
cmp byte [0x2514686a], 0
jne 0x25135b73
lea ecx, [ebp - 0x83]
mov eax, dword [ebp - 0x50]
mov edx, dword [eax + 8]
mov eax, esi
call fcn.251355d8
test al, al
je 0x25135b73
or dword [ebp + 8], 2
mov dword [ebp - 0x78], 0x770004
test byte [ebp + 8], 2
jne 0x25135bb3
mov eax, dword [ebp - 0x50]
mov edx, dword [eax + 8]
mov eax, esi
call fcn.2513545c
mov edx, dword [ebp - 0x50]
mov byte [edx + 0xc], al
mov eax, dword [ebp - 0x50]
cmp byte [eax + 0xc], 0
je 0x25135f73
cmp dword [ebp - 8], 0
je 0x25135f73
lea eax, [ebp - 4]
mov edx, dword [ebp - 8]
call fcn.25125ad0
jmp 0x25135f73
test byte [ebp + 8], 0x10
jne 0x25135f43
test esi, esi
je 0x25135c30
call sub.kernel32.dll_GetVersion_1
test eax, 0x80000000
jne 0x25135c09
lea edx, [ebp - 0x11c]
mov eax, dword [0x251469ac]
call fcn.25129f28
mov eax, dword [ebp - 0x11c]
lea ecx, [ebp - 0x118]
mov dl, 1
call fcn.25129f68
mov eax, dword [ebp - 0x118]
push eax
call sub.kernel32.dll_GetModuleHandleW_1
cmp esi, eax
sete al
mov edx, dword [ebp - 0x50]
mov byte [edx + 0x36], al
jmp 0x25135c30
lea edx, [ebp - 0x120]
mov eax, dword [0x251469ac]
call fcn.25129f28
mov eax, dword [ebp - 0x120]
push eax
call sub.kernel32.dll_GetModuleHandleA
cmp esi, eax
sete al
mov edx, dword [ebp - 0x50]
mov byte [edx + 0x36], al
mov eax, dword [ebp - 0x50]
cmp byte [eax + 0x36], 0
je 0x25135c4a
test byte [ebp + 8], 0x80
je 0x25135c4a
mov eax, esi
call fcn.25132928
mov ebx, eax
jmp 0x25135c4c
xor ebx, ebx
mov eax, dword [ebp - 0x50]
cmp byte [eax + 0x36], 0
je 0x25135c5d
test ebx, ebx
je 0x25135f23
call sub.kernel32.dll_GetVersion_1
test eax, 0x80000000
je 0x25135c8d
mov eax, dword [ebp - 0x50]
cmp dword [eax + 8], 0x80000000
jae 0x25135c91
test esi, esi
je 0x25135c8d
mov eax, esi
call fcn.2512aa38
mov edx, eax
mov eax, esi
call fcn.2513545c
test al, al
jne 0x25135c91
xor eax, eax
jmp 0x25135c93
mov al, 1
mov edx, dword [ebp - 0x50]
mov byte [edx + 0xc], al
mov eax, dword [ebp - 0x50]
cmp byte [eax + 0xc], 0
je 0x25135cc1
cmp dword [ebp - 8], 0
je 0x25135cb3
lea eax, [ebp - 4]
mov edx, dword [ebp - 8]
call fcn.25125ad0
push 0
push 0xa
call fcn.2512f3d8
mov dword [ebp - 0x6c], eax
jmp 0x25135cce
mov eax, 0xa
call fcn.251328ac
mov dword [ebp - 0x6c], eax
mov eax, dword [ebp - 0x6c]
mov byte [eax], 0xff
mov eax, dword [ebp - 0x6c]
mov byte [eax + 1], 0x25
mov eax, dword [ebp - 0x6c]
add eax, 6
mov edx, dword [ebp - 0x6c]
mov dword [edx + 2], eax
mov eax, dword [ebp - 0x50]
mov eax, dword [eax + 8]
mov edx, dword [ebp - 0x6c]
mov dword [edx + 6], eax
mov eax, dword [0x25146dd8]
mov dword [eax], fcn.25132674
lea eax, [ebp - 0xc]
push eax
mov eax, dword [ebp - 0x50]
movzx ecx, byte [eax + 0xc]
mov edx, dword [ebp - 0x6c]
mov eax, dword [0x251469e8]
call fcn.2513247c
push 4
lea edx, [ebp - 0x128]
mov eax, dword [0x251469e4]
call fcn.25129f28
push dword [ebp - 0x128]
push 0x2513680c
push dword [ebp - 0xc]
lea eax, [ebp - 0x124]
mov edx, 3
call fcn.25125dcc
mov eax, dword [ebp - 0x124]
call fcn.25125ecc
push eax
call fcn.25132358
mov dword [ebp - 0x60], eax
cmp dword [ebp - 0x60], 0
je 0x25135da1
push 0
push 0
push 0
push 0xf001f
mov eax, dword [ebp - 0x60]
push eax
call sub.kernel32.dll_MapViewOfFile
mov dword [ebp - 0x64], eax
cmp dword [ebp - 0x64], 0
je 0x25135d93
mov eax, dword [ebp - 0x50]
mov eax, dword [eax + 8]
mov edx, dword [ebp - 0x64]
mov dword [edx], eax
mov eax, dword [ebp - 0x64]
push eax
call sub.kernel32.dll_UnmapViewOfFile
jmp 0x25135da1
mov eax, dword [ebp - 0x60]
push eax
call sub.kernel32.dll_CloseHandle_1
xor eax, eax
mov dword [ebp - 0x60], eax
cmp dword [ebp - 0x60], 0
je 0x25135ec8
push ebx
mov eax, dword [ebp - 0x50]
mov edx, dword [eax + 8]
mov ecx, dword [ebp - 0x6c]
mov eax, esi
call fcn.25132aa8
test al, al
jne 0x25135de1
call fcn.25132cb8
mov edx, dword [ebp - 0x50]
cmp eax, dword [edx + 8]
jne 0x25135ec8
mov eax, dword [ebp - 0x6c]
call fcn.25132cdc
test al, al
je 0x25135ec8
mov eax, dword [ebp - 0x50]
cmp byte [eax + 0xc], 0
je 0x25135e22
mov eax, dword [ebp - 0x60]
call fcn.2512f2e0
mov eax, dword [ebp - 0x60]
push eax
call sub.kernel32.dll_CloseHandle_1
call fcn.25132cb8
mov edx, dword [ebp - 0x50]
cmp eax, dword [edx + 8]
je 0x25135e22
mov eax, dword [ebp - 0x50]
mov eax, dword [eax + 8]
mov edx, dword [ebp - 0x6c]
call fcn.25132d34
test byte [ebp + 8], 4
setne al
call fcn.251331a4
mov eax, dword [ebp - 0x50]
cmp byte [eax + 0x36], 0
je 0x25135e84
call sub.kernel32.dll_GetVersion_1
test eax, 0x80000000
jne 0x25135e68
lea edx, [ebp - 0x130]
mov eax, dword [0x251469ac]
call fcn.25129f28
mov eax, dword [ebp - 0x130]
lea ecx, [ebp - 0x12c]
mov dl, 1
call fcn.25129f68
mov eax, dword [ebp - 0x12c]
push eax
call sub.kernel32.dll_LoadLibraryW
jmp 0x25135e84
lea edx, [ebp - 0x134]
mov eax, dword [0x251469ac]
call fcn.25129f28
mov eax, dword [ebp - 0x134]
push eax
call sub.kernel32.dll_LoadLibraryA_1
xor eax, eax
push ebp
push 0x25135eaa
push dword fs:[eax]
mov dword fs:[eax], esp
mov eax, dword [ebp - 0x50]
mov eax, dword [eax + 8]
mov edx, dword [ebp - 0x6c]
call fcn.25132c90
xor eax, eax
pop edx
pop ecx
pop ecx
mov dword fs:[eax], edx
jmp 0x25135eb4
mov eax, dword [ebp - 0x6c]
mov dword [ebp - 0x70], eax
mov byte [ebp - 0x7d], 1
xor eax, eax
mov dword [ebp - 0x78], eax
jmp 0x25135f73
cmp dword [ebp - 0x60], 0
je 0x25135ed7
mov eax, dword [ebp - 0x60]
push eax
call sub.kernel32.dll_CloseHandle_1
mov eax, dword [ebp - 0x50]
cmp byte [eax + 0xc], 0
je 0x25135eed
push 0
mov eax, dword [ebp - 0x6c]
push eax
call fcn.2512f4c0
jmp 0x25135efd
push 0x8000
push 0
mov eax, dword [ebp - 0x6c]
push eax
call sub.kernel32.dll_VirtualFree_1
cmp dword [ebp - 0x78], 0
jne 0x25135f0a
mov dword [ebp - 0x78], 0x770002
call fcn.25124fe0
call fcn.25124fe0
call fcn.25124fe0
call fcn.25124fe0
jmp 0x25136780
mov dword [ebp - 0x78], 0x770002
call fcn.25124fe0
call fcn.25124fe0
call fcn.25124fe0
call fcn.25124fe0
jmp 0x25136780
mov dword [ebp - 0x78], 0x770002
call fcn.25124fe0
call fcn.25124fe0
call fcn.25124fe0
call fcn.25124fe0
jmp 0x25136780
mov eax, dword [ebp - 4]
cmp byte [eax + 5], 0x53
sete al
mov edx, dword [ebp - 0x50]
mov byte [edx + 0xc], al
mov eax, dword [ebp - 0x50]
cmp byte [eax + 0xc], 0
je 0x25135f82
test byte [ebp + 8], 4
jne 0x25135f86
xor eax, eax
jmp 0x25135f88
mov al, 1
mov edx, dword [ebp - 0x50]
mov byte [edx + 0x24], al
test al, al
je 0x25136144
mov eax, dword [ebp - 0x50]
cmp dword [eax + 0x10], 0x80000000
jae 0x251360a0
mov eax, dword [ebp - 0x50]
add eax, 0x18
push eax
lea eax, [ebp - 0x4c]
push eax
test byte [ebp + 8], 8
setne cl
mov eax, dword [ebp - 0x50]
mov eax, dword [eax + 0x10]
xor edx, edx
call fcn.2512f720
mov edx, dword [ebp - 0x50]
mov dword [edx + 0x10], eax
mov eax, dword [ebp - 0x50]
cmp dword [eax + 0x10], 0
jne 0x25135ff4
mov dword [ebp - 0x78], 0x770003
call fcn.25124fe0
call fcn.25124fe0
call fcn.25124fe0
call fcn.25124fe0
jmp 0x25136780
mov eax, dword [ebp - 0x2c]
call fcn.25126be0
mov esi, eax
test esi, esi
jl 0x25136089
inc esi
xor ebx, ebx
mov eax, ebx
add eax, eax
add eax, eax
add eax, eax
sub eax, ebx
mov edx, dword [ebp - 0x2c]
lea ecx, [edx + eax*4]
cmp byte [ecx + 0x10], 0
jne 0x25136085
cmp dword [ecx + 0x18], 0
je 0x25136085
mov eax, dword [ecx + 0x18]
mov eax, dword [eax]
mov edx, dword [ebp - 0x50]
cmp eax, dword [edx + 0x14]
jne 0x25136085
mov eax, dword [ecx + 0x18]
xor edx, edx
push edx
push eax
mov eax, dword [ebp - 0x44]
xor edx, edx
push edx
push eax
mov eax, dword [ebp - 0x50]
mov eax, dword [eax + 0x18]
xor edx, edx
sub dword [esp], eax
sbb dword [esp + 4], edx
pop eax
pop edx
sub dword [esp], eax
sbb dword [esp + 4], edx
pop eax
pop edx
mov dword [ebp - 0x74], eax
mov eax, dword [ebp - 0x50]
cmp byte [eax + 0x24], 0
jne 0x25136077
mov edx, 4
mov eax, dword [ebp - 0x74]
call fcn.2512f688
test al, al
je 0x25136085
mov eax, dword [ebp - 0x50]
mov eax, dword [eax + 0x18]
add eax, dword [ebp - 0x40]
mov edx, dword [ebp - 0x74]
mov dword [edx], eax
inc ebx
dec esi
jne 0x25136009
mov eax, dword [ebp - 0x50]
mov eax, dword [eax + 0x18]
add eax, dword [ebp - 0x40]
mov edx, dword [ebp - 0x50]
mov edx, dword [edx + 0x20]
mov dword [edx + 2], eax
jmp 0x25136144
lea edx, [ebp - 0x4c]
mov eax, dword [ebp - 0x50]
mov eax, dword [eax + 0x10]
call fcn.2512de50
cmp byte [ebp - 0x4c], 0
jne 0x251360d4
mov dword [ebp - 0x78], 0x770003
call fcn.25124fe0
call fcn.25124fe0
call fcn.25124fe0
call fcn.25124fe0
jmp 0x25136780
mov eax, dword [ebp - 0x2c]
call fcn.25126be0
mov esi, eax
test esi, esi
jl 0x25136144
inc esi
xor ebx, ebx
mov eax, ebx
add eax, eax
add eax, eax
add eax, eax
sub eax, ebx
mov edx, dword [ebp - 0x2c]
lea edi, [edx + eax*4]
cmp byte [edi + 0x10], 0
jne 0x25136140
cmp dword [edi + 0x18], 0
je 0x25136140
mov eax, dword [edi + 0x18]
mov eax, dword [eax]
mov edx, dword [ebp - 0x50]
cmp eax, dword [edx + 0x14]
jne 0x25136140
mov eax, dword [ebp - 0x50]
cmp dword [eax + 0x18], 0
jne 0x25136135
push 0
push 4
call fcn.2512f3d8
mov edx, dword [ebp - 0x50]
mov dword [edx + 0x18], eax
mov eax, dword [ebp - 0x50]
mov eax, dword [eax + 0x18]
mov edx, dword [ebp - 0x50]
mov edx, dword [edx + 0x20]
mov dword [edx + 2], eax
mov eax, dword [ebp - 0x50]
mov eax, dword [eax + 0x18]
mov edx, dword [edi + 0x18]
mov dword [edx], eax
inc ebx
dec esi
jne 0x251360e5
xor eax, eax
mov dword [ebp - 0x64], eax
xor ecx, ecx
push ebp
push 0x251366ba
push dword fs:[ecx]
mov dword fs:[ecx], esp
mov eax, dword [ebp - 0x50]
cmp byte [eax + 5], 0
je 0x251363ae
mov eax, dword [ebp - 0x50]
cmp byte [eax + 0xc], 0
je 0x2513617e
push 0
push 0x22
call fcn.2512f3d8
mov edx, dword [ebp - 0x50]
mov dword [edx + 0x38], eax
jmp 0x251361ab
call sub.kernel32.dll_GetVersion_1
test eax, 0x80000000
je 0x2513619b
push 0x22
push 0x40
call sub.kernel32.dll_LocalAlloc_1
mov edx, dword [ebp - 0x50]
mov dword [edx + 0x38], eax
jmp 0x251361ab
mov eax, 0x22
call fcn.251328ac
mov edx, dword [ebp - 0x50]
mov dword [edx + 0x38], eax
mov ebx, dword [ebp - 0x70]
mov eax, dword [ebp - 0x50]
mov esi, dword [eax + 0x38]
lea edx, [ebp - 0xb4]
mov eax, ebx
call fcn.2512cbec
cmp byte [ebp - 0xa2], 0
je 0x25136249
cmp dword [ebp - 0x94], 1
jne 0x251361fc
cmp word [ebp - 0xb2], 0xeb
je 0x251361f4
mov byte [esi], 0xf
movzx eax, byte [ebp - 0xb2]
and al, 0xf
add al, 0x80
mov byte [esi + 1], al
add esi, 6
jmp 0x25136238
mov byte [esi], 0xe9
add esi, 5
jmp 0x25136238
cmp dword [ebp - 0x94], 2
jne 0x25136223
mov edi, dword [ebp - 0x88]
sub edi, ebx
mov ecx, edi
sub ecx, 3
mov edx, esi
mov eax, ebx
inc eax
call fcn.25123b80
add edi, esi
inc edi
mov esi, edi
jmp 0x25136238
mov edi, dword [ebp - 0x88]
sub edi, ebx
mov edx, esi
mov eax, ebx
mov ecx, edi
call fcn.25123b80
add esi, edi
mov edx, dword [ebp - 0xa0]
mov eax, esi
sub edx, eax
sub eax, 4
mov dword [eax], edx
jmp 0x2513625e
mov edi, dword [ebp - 0x88]
sub edi, ebx
mov edx, esi
mov eax, ebx
mov ecx, edi
call fcn.25123b80
add esi, edi
mov ebx, dword [ebp - 0x88]
mov eax, ebx
sub eax, dword [ebp - 0x70]
cmp eax, 6
jb 0x251361b4
mov byte [esi], 0xe9
add esi, 5
sub ebx, esi
sub esi, 4
mov dword [esi], ebx
push 4
lea edx, [ebp - 0x13c]
mov eax, dword [0x251469e4]
call fcn.25129f28
push dword [ebp - 0x13c]
push 0x2513680c
push dword [ebp - 4]
lea eax, [ebp - 0x138]
mov edx, 3
call fcn.25125dcc
mov eax, dword [ebp - 0x138]
call fcn.25125ecc
push eax
call fcn.25132358
mov dword [ebp - 0x60], eax
cmp dword [ebp - 0x60], 0
je 0x2513646c
mov eax, dword [ebp - 0x50]
cmp byte [eax + 0xc], 0
je 0x251362de
mov eax, dword [ebp - 0x60]
call fcn.2512f2e0
push 0
push 0
push 0
push 0xf001f
mov eax, dword [ebp - 0x60]
push eax
call sub.kernel32.dll_MapViewOfFile
mov dword [ebp - 0x64], eax
cmp dword [ebp - 0x64], 0
je 0x2513646c
mov eax, dword [ebp - 0x50]
cmp byte [eax + 0xc], 0
je 0x25136318
push 0
push 0x5c
call fcn.2512f3d8
mov edx, dword [ebp - 0x64]
mov dword [edx], eax
jmp 0x25136327
mov eax, 0x5c
call fcn.251328ac
mov edx, dword [ebp - 0x64]
mov dword [edx], eax
mov eax, dword [ebp - 0x64]
mov eax, dword [eax]
mov dword [eax], 2
mov dword [eax + 4], 8
mov edx, dword [ebp - 0x70]
mov dword [eax + 0xc], edx
mov edx, dword [eax + 0xc]
mov ecx, dword [edx]
mov dword [eax + 0x10], ecx
mov cx, word [edx + 4]
mov word [eax + 0x14], cx
mov byte [eax + 0x16], 0xff
mov byte [eax + 0x17], 0x25
mov edx, dword [ebp - 0x50]
mov edx, dword [edx + 0x38]
add edx, 0x1e
mov dword [eax + 0x18], edx
mov edx, dword [ebp - 0x50]
mov edx, dword [edx + 0x38]
mov ecx, dword [eax + 0x18]
mov dword [ecx], edx
mov edx, dword [ebp - 0x50]
cmp byte [edx + 0xc], 0
jne 0x25136385
cmp byte [ebp - 0x7d], 0
jne 0x25136385
mov edx, dword [ebp - 0x60]
mov dword [eax + 8], edx
jmp 0x2513638a
xor edx, edx
mov dword [eax + 8], edx
xor edx, edx
mov dword [eax + 0x1c], edx
mov edx, dword [ebp - 0x50]
mov edx, dword [edx + 0x38]
add edx, 0x1e
mov dword [eax + 0x20], edx
mov edx, dword [ebp - 0x50]
mov edx, dword [edx + 0x38]
mov dword [eax + 0x24], edx
xor edx, edx
mov dword [eax + 0x28], edx
jmp 0x2513646c
push 0
push 0
push 0
push 0xf001f
mov eax, dword [ebp - 0x60]
push eax
call sub.kernel32.dll_MapViewOfFile
mov dword [ebp - 0x64], eax
mov eax, dword [ebp - 0x64]
mov esi, dword [eax]
mov eax, dword [esi]
mov eax, dword [esi + eax*8 + 0x14]
mov edx, dword [ebp - 0x50]
mov dword [edx + 0x38], eax
mov eax, dword [esi + 4]
cmp eax, dword [esi]
jne 0x2513646c
mov eax, dword [ebp - 0x50]
cmp byte [eax + 0xc], 0
je 0x25136404
push 0
mov eax, dword [esi + 4]
add eax, eax
add eax, eax
add eax, eax
add eax, eax
add eax, 0x1c
push eax
call fcn.2512f3d8
mov ebx, eax
jmp 0x25136419
mov eax, dword [esi + 4]
add eax, eax
add eax, eax
add eax, eax
add eax, eax
add eax, 0x1c
call fcn.251328ac
mov ebx, eax
mov ecx, dword [esi + 4]
add ecx, ecx
add ecx, ecx
add ecx, ecx
add ecx, 0x1c
mov edx, ebx
mov eax, dword [ebp - 0x64]
mov eax, dword [eax]
call fcn.25123b80
mov eax, dword [esi + 4]
add eax, eax
mov dword [ebx + 4], eax
mov eax, dword [ebp - 0x64]
mov eax, dword [eax]
mov dword [ebp - 0x68], eax
mov eax, dword [ebp - 0x64]
mov dword [eax], ebx
mov eax, dword [ebp - 0x50]
cmp byte [eax + 0xc], 0
je 0x2513645c
push 0
mov eax, dword [ebp - 0x68]
push eax
call fcn.2512f4c0
jmp 0x2513646c
push 0x8000
push 0
mov eax, dword [ebp - 0x68]
push eax
call sub.kernel32.dll_VirtualFree_1
mov eax, dword [ebp - 0x50]
cmp byte [eax + 0x24], 0
jne 0x251365e9
test byte [ebp + 8], 1
jne 0x25136547
mov eax, dword [ebp - 0x50]
mov eax, dword [eax + 0x20]
add eax, 0xa
mov edx, dword [ebp - 0x50]
mov dword [edx + 0x28], eax
xor ebx, ebx
mov eax, ebx
add eax, eax
add eax, eax
add eax, eax
sub eax, ebx
mov edx, dword [ebp - 0x50]
mov edx, dword [edx + 0x28]
lea eax, [edx + eax*2]
mov byte [eax], 0x68
xor edx, edx
mov dword [eax + 1], edx
mov byte [eax + 5], 0xf0
mov word [eax + 6], 0x2583
lea edx, [eax + 1]
mov dword [eax + 8], edx
mov byte [eax + 0xc], 0
mov byte [eax + 0xd], 0xc3
inc ebx
cmp ebx, 0x118
jne 0x25136494
mov eax, dword [ebp - 0x50]
mov eax, dword [eax + 0x28]
add eax, 0xf50
mov ebx, eax
mov edx, ebx
mov eax, 0x25134dbc
mov ecx, dword [ebp - 0x7c]
call fcn.25123b80
mov eax, dword [ebp - 0x7c]
push eax
push 0
push 0
push 0x7fffffff
mov eax, 0x25136810
mov ecx, 4
mov edx, ebx
call fcn.25128f90
add eax, ebx
mov edx, dword [ebp - 0x50]
mov edx, dword [edx + 0x28]
mov dword [eax], edx
mov eax, dword [ebp - 0x7c]
push eax
push 0
push 0
push 0x7fffffff
mov eax, 0x25136818
mov ecx, 4
mov edx, ebx
call fcn.25128f90
add eax, ebx
mov edx, dword [ebp - 0x50]
mov edx, dword [edx + 0x10]
sub edx, ebx
sub edx, dword [ebp - 0x7c]
mov dword [eax], edx
mov eax, dword [ebp - 0x50]
mov dword [eax + 0x10], ebx
mov eax, dword [ebp - 0x50]
cmp byte [eax + 0xc], 0
je 0x251365e9
push 0
push 0x22
call fcn.2512f3d8
mov edx, dword [ebp - 0x50]
mov dword [edx + 0x1c], eax
mov eax, dword [ebp - 0x50]
mov eax, dword [eax + 0x1c]
mov edi, eax
mov esi, 0x25146b64
mov ecx, 8
rep movsd dword es:[edi], dword [esi]
movsw word es:[edi], word [esi]
mov eax, dword [0x25146db0]
mov eax, dword [eax]
mov dl, 1
call fcn.2512df9c
mov edx, dword [ebp - 0x50]
mov edx, dword [edx + 0x1c]
inc edx
add edx, 5
sub eax, edx
mov edx, dword [ebp - 0x50]
mov edx, dword [edx + 0x1c]
mov dword [edx + 2], eax
call sub.kernel32.dll_GetCurrentProcessId
mov edx, dword [ebp - 0x50]
mov ebx, dword [edx + 0x1c]
mov dword [ebx + 7], eax
lea eax, [ebx + 0x14]
mov dword [ebx + 0x10], eax
mov eax, dword [ebp - 0x50]
mov eax, dword [eax + 0x10]
mov dword [ebx + 0x14], eax
lea eax, [ebx + 0x1e]
mov dword [ebx + 0x1a], eax
lea eax, [ebx + 0x1e]
mov edx, dword [ebp - 0x50]
mov edx, dword [edx + 0x20]
mov dword [edx + 2], eax
mov eax, dword [ebp - 0x50]
mov eax, dword [eax + 0x1c]
push eax
call sub.kernel32.dll_GetCurrentProcessId
push eax
call sub.kernel32.dll_GetCurrentProcess
mov edx, dword [ebp - 0x50]
mov ecx, dword [edx + 8]
pop edx
call fcn.25134654
mov eax, dword [ebp - 0x50]
mov eax, dword [eax + 0x20]
mov edx, dword [ebp - 0x50]
mov edx, dword [edx + 0x14]
mov dword [edx], eax
mov eax, dword [ebp - 0x64]
mov eax, dword [eax]
mov edx, dword [eax + 0xc]
mov ecx, dword [ebp - 0x50]
mov dword [ecx + 0x3c], edx
mov edx, dword [ebp - 0x50]
mov ecx, dword [eax + 0x16]
mov dword [edx + 0x40], ecx
mov cx, word [eax + 0x1a]
mov word [edx + 0x44], cx
mov edx, dword [ebp - 0x50]
mov ecx, dword [eax + 0x10]
mov dword [edx + 0x46], ecx
mov cx, word [eax + 0x14]
mov word [edx + 0x4a], cx
mov edx, dword [eax]
mov ecx, dword [eax + edx*8 + 0x14]
mov dword [eax + edx*8 + 0x1c], ecx
mov ecx, dword [eax + edx*8 + 0x18]
mov dword [eax + edx*8 + 0x20], ecx
mov edx, dword [ebp - 0x50]
cmp byte [edx + 0xc], 0
je 0x25136659
mov edx, dword [ebp - 0x50]
cmp byte [edx + 0x24], 0
jne 0x25136659
mov edx, dword [eax]
mov ecx, dword [ebp - 0x50]
mov ecx, dword [ecx + 0x1c]
mov dword [eax + edx*8 + 0x14], ecx
jmp 0x25136665
mov edx, dword [eax]
mov ecx, dword [ebp - 0x50]
mov ecx, dword [ecx + 0x10]
mov dword [eax + edx*8 + 0x14], ecx
mov edx, dword [eax]
mov ecx, dword [ebp - 0x50]
mov ecx, dword [ecx + 0x20]
mov ecx, dword [ecx + 2]
mov dword [eax + edx*8 + 0x18], ecx
mov edx, dword [eax]
mov ecx, dword [eax + edx*8 + 0x1c]
mov edx, dword [eax + edx*8 + 0x18]
mov dword [edx], ecx
mov edx, dword [eax]
mov ecx, dword [eax + edx*8 + 0x14]
mov edx, dword [eax + edx*8 + 0x10]
mov dword [edx], ecx
inc dword [eax]
mov eax, dword [ebp - 0x50]
mov byte [eax + 4], 1
mov eax, dword [ebp - 0x50]
call fcn.25136de8
xor eax, eax
pop edx
pop ecx
pop ecx
mov dword fs:[eax], edx
push 0x251366c1
cmp dword [ebp - 0x64], 0
je 0x251366b9
mov eax, dword [ebp - 0x64]
push eax
call sub.kernel32.dll_UnmapViewOfFile
ret
xor eax, eax
pop edx
pop ecx
pop ecx
mov dword fs:[eax], edx
push 0x251367d9
lea eax, [ebp - 0x13c]
mov edx, 0x12
call fcn.2512578c
lea eax, [ebp - 0xf4]
mov edx, dword [0x2512b68c]
call fcn.251266b8
lea eax, [ebp - 0x4c]
mov edx, dword [0x2512b68c]
call fcn.251266b8
lea eax, [ebp - 0xc]
mov edx, 3
call fcn.2512578c
lea eax, [ebp + 0x18]
call fcn.25125720
ret