Function at 0x1285873
Capabilities:
Allocate or change rwx memory
Encode data using xor

Disassembly:
mov edi, edi
push ebp
mov ebp, esp
sub esp, 0x80
mov eax, dword [0x13912f4]
xor eax, ebp
mov dword [ebp - 4], eax
and dword [ebp - 0x68], 0
push ebx
mov ebx, dword [ebp + 8]
dec dword [ebx + 0xc]
mov dword [ebp - 0x80], ebx
jne 0x1285ff0
xor eax, eax
cmp dword [ebx + 0x14], eax
mov dword [ebp - 0x5c], eax
mov dword [ebp - 0x58], eax
mov dword [ebp - 0x54], eax
mov dword [ebp - 0x50], eax
mov dword [ebp - 0x4c], eax
mov dword [ebp - 0x64], eax
jle 0x1285ff0
lea eax, [ebx + 0x1c]
push esi
mov dword [ebp - 0x44], eax
push edi
mov ecx, dword [ebp - 0x44]
mov esi, dword [ecx]
mov edi, dword [ecx + 8]
mov eax, 0xfffffff
and esi, eax
and edi, eax
add esi, 0x1000000
push ecx
mov dword [ebp - 0x3c], esi
mov dword [ebp - 0x48], edi
mov eax, 0x34f5414c
mov eax, dword [ebp - 0x5c]
pop ecx
cmp esi, eax
jb 0x12858fc
mov ecx, dword [ebp - 0x58]
add ecx, eax
lea edx, [edi + esi]
cmp edx, ecx
jbe 0x128597d
cmp dword [ebp - 0x4c], 0
je 0x1285917
lea ecx, [ebp - 0x54]
push ecx
push dword [ebp - 0x54]
push dword [ebp - 0x58]
push eax
call dword [sym.imp.KERNEL32.dll_VirtualProtect]
and dword [ebp - 0x4c], 0
cmp dword [ebp - 0x50], 0
je 0x128592c
and dword [ebp - 0x50], 0
push 0x136f81c
call dword [sym.imp.KERNEL32.dll_LeaveCriticalSection]
and dword [ebp - 0x54], 0
mov ecx, 0xfffff000
mov eax, esi
and eax, ecx
lea edx, [edi + esi + 0xfff]
and edx, ecx
sub edx, eax
push 0x136f81c
mov dword [ebp - 0x5c], eax
mov dword [ebp - 0x58], edx
call dword [sym.imp.KERNEL32.dll_EnterCriticalSection]
lea eax, [ebp - 0x54]
push eax
push 0x40
push dword [ebp - 0x58]
mov dword [ebp - 0x50], 1
push dword [ebp - 0x5c]
call dword [sym.imp.KERNEL32.dll_VirtualProtect]
test eax, eax
je 0x1285fb7
mov dword [ebp - 0x4c], 1
test esi, esi
je 0x1285fb7
mov eax, dword [ebp - 0x44]
mov eax, dword [eax]
test eax, 0x10000000
jne 0x1285f9d
mov esi, 0xfffffff
and eax, esi
push ebx
mov byte [ebp - 0xd], 0
mov dword [ebp - 0x30], eax
mov eax, 0x3e056566
mov eax, dword [ebx + 4]
and dword [ebp - 0x24], 0
and dword [ebp - 0x20], 0
pop ecx
mov ecx, dword [ebx]
and ecx, esi
and eax, esi
mov esi, dword [0x102c94c]
mov edx, 0x1000000
add ecx, edx
sub edx, esi
mov dword [ebp - 0x60], edx
jne 0x1285a09
xor esi, esi
test eax, eax
jbe 0x1285bda
movzx edx, byte [esi + ecx]
sub edx, 0x14aa3266
add dword [ebp - 0x24], edx
add edx, dword [ebp - 0x20]
mov edi, edx
imul edi, edi, 0x885
rol edi, 0xa
ror edx, 0xa
xor edi, edx
add dword [ebp - 0x24], edi
inc esi
mov dword [ebp - 0x20], edi
cmp esi, eax
jb 0x12859d9
jmp 0x1285bda
lea edx, [eax + ecx]
mov edi, ecx
sub edi, 0x1000000
add eax, edi
mov ebx, eax
and ebx, 0xfffff000
sub eax, ebx
mov dword [ebp - 0x38], edx
mov edx, dword [0x100003c]
mov esi, edi
and esi, 0xfffff000
mov dword [ebp - 0x78], eax
mov eax, dword [edx + 0x10000a0]
mov edx, dword [edx + 0x10000a4]
mov dword [ebp - 0x14], esi
mov esi, edi
sub esi, dword [ebp - 0x14]
add eax, 0x1000000
add edx, eax
jmp 0x1285a5b
mov edi, dword [eax]
cmp edi, dword [ebp - 0x14]
jae 0x1285a5f
add eax, dword [eax + 4]
cmp eax, edx
jne 0x1285a51
and dword [ebp - 0x6c], 0
cmp eax, edx
je 0x1285ba7
mov edi, dword [ebp - 0x14]
cmp dword [eax], edi
jne 0x1285aa4
mov edi, dword [eax + 4]
sub edi, 8
shr edi, 1
mov dword [ebp - 0x2c], edi
je 0x1285aa4
lea edi, [eax + 8]
mov dword [ebp - 0x14], edi
mov edi, dword [ebp - 0x14]
movzx edi, word [edi]
and edi, 0xfff
cmp edi, esi
jae 0x1285aa4
inc dword [ebp - 0x6c]
mov edi, dword [ebp - 0x2c]
add dword [ebp - 0x14], 2
cmp dword [ebp - 0x6c], edi
jne 0x1285a85
cmp eax, edx
je 0x1285ba7
cmp dword [eax], ebx
ja 0x1285ba7
mov esi, dword [eax + 4]
lea edi, [esi - 8]
shr edi, 1
cmp dword [ebp - 0x6c], edi
jne 0x1285ad9
add eax, esi
cmp eax, edx
je 0x1285ba7
cmp dword [eax], ebx
ja 0x1285ba7
and dword [ebp - 0x6c], 0
jmp 0x1285ab4
cmp dword [eax], ebx
jne 0x1285af4
mov esi, dword [ebp - 0x6c]
movzx esi, word [eax + esi*2 + 8]
and esi, 0xfff
cmp esi, dword [ebp - 0x78]
jae 0x1285ba7
mov esi, dword [ebp - 0x6c]
inc dword [ebp - 0x6c]
mov edi, 0xf000
test word [eax + esi*2 + 8], di
je 0x1285aa4
movzx edi, word [eax + esi*2 + 8]
mov esi, dword [eax]
and dword [ebp - 0x14], 0
and edi, 0xfff
lea esi, [edi + esi + 0x1000000]
mov dword [ebp - 0x28], esi
sub dword [ebp - 0x28], ecx
mov dword [ebp - 0x2c], esi
je 0x1285b60
mov esi, dword [ebp - 0x14]
movzx edi, byte [esi + ecx]
sub edi, 0x14aa3266
add dword [ebp - 0x24], edi
add edi, dword [ebp - 0x20]
mov esi, edi
imul esi, esi, 0x885
rol esi, 0xa
ror edi, 0xa
xor esi, edi
add dword [ebp - 0x24], esi
inc dword [ebp - 0x14]
mov dword [ebp - 0x20], esi
mov esi, dword [ebp - 0x14]
cmp esi, dword [ebp - 0x28]
jb 0x1285b29
mov esi, dword [ebp - 0x2c]
mov ecx, dword [esi]
sub ecx, dword [ebp - 0x60]
and dword [ebp - 0x14], 0
mov dword [ebp - 0x2c], ecx
mov ecx, dword [ebp - 0x14]
movzx ecx, byte [ebp + ecx - 0x2c]
sub ecx, 0x14aa3266
add dword [ebp - 0x24], ecx
add ecx, dword [ebp - 0x20]
mov edi, ecx
imul edi, edi, 0x885
rol edi, 0xa
ror ecx, 0xa
xor edi, ecx
add dword [ebp - 0x24], edi
inc dword [ebp - 0x14]
cmp dword [ebp - 0x14], 4
mov dword [ebp - 0x20], edi
jb 0x1285b6c
lea ecx, [esi + 4]
jmp 0x1285aa4
mov edi, dword [ebp - 0x38]
xor esi, esi
sub edi, ecx
je 0x1285bda
movzx eax, byte [ecx + esi]
sub eax, 0x14aa3266
add dword [ebp - 0x24], eax
add eax, dword [ebp - 0x20]
mov edx, eax
imul edx, edx, 0x885
rol edx, 0xa
ror eax, 0xa
xor edx, eax
add dword [ebp - 0x24], edx
inc esi
mov dword [ebp - 0x20], edx
cmp esi, edi
jb 0x1285bb0
xor eax, eax
mov ecx, eax
and ecx, 7
mov cl, byte [ebp + ecx - 0x24]
mov byte [ebp + eax - 0xc], cl
inc eax
cmp eax, 8
jb 0x1285bdc
mov eax, 0x4bb0aa27
mov ebx, dword [ebp - 0x30]
mov edi, dword [ebp - 0x48]
and dword [ebp - 0x28], 0
and dword [ebp - 0x38], 0
mov esi, dword [ebp - 0x3c]
mov edx, ebx
and edi, 7
mov dword [ebp - 0x34], esi
mov eax, ebx
not edx
mov dword [ebp - 0x2c], edi
je 0x1285db3
xor eax, eax
cmp edi, eax
mov dword [ebp - 0x28], eax
mov dword [ebp - 0x38], eax
mov dword [ebp - 0x18], eax
jle 0x1285c5d
mov dword [ebp - 0x14], 0x38
mov al, byte [esi]
xor byte [ebp - 0xd], al
cmp dword [ebp - 0x18], 4
mov ecx, dword [ebp - 0x14]
movzx eax, al
jge 0x1285c4b
add ecx, 0xffffffe0
shl eax, cl
or dword [ebp - 0x38], eax
jmp 0x1285c50
shl eax, cl
or dword [ebp - 0x28], eax
sub dword [ebp - 0x14], 8
inc esi
inc dword [ebp - 0x18]
cmp dword [ebp - 0x18], edi
jl 0x1285c30
mov edi, dword [ebp - 8]
mov ecx, dword [ebp - 0xc]
mov eax, edi
xor eax, ebx
sub ecx, eax
mov eax, dword [ebp - 0xc]
xor edx, ecx
movzx ecx, di
sub eax, edx
ror eax, 0xb
imul eax, ecx
mov dword [ebp - 0x30], ecx
mov ecx, edx
rol ecx, 0xa
sub eax, ecx
xor eax, ebx
movzx ecx, word [ebp - 0xa]
mov ebx, eax
sub ebx, ecx
sub ebx, edi
xor edx, ebx
mov ebx, edx
xor ebx, edi
ror ebx, 0xe
mov dword [ebp - 0x18], ecx
movzx ecx, word [ebp - 0xc]
imul ebx, ecx
mov edi, edx
rol edi, 0xc
sub ebx, edi
movzx edi, word [ebp - 6]
xor eax, ebx
mov ebx, dword [ebp - 0xc]
sub ebx, eax
ror ebx, 1
imul ebx, edi
mov edi, eax
rol edi, 2
add ebx, edi
xor edx, ebx
mov edi, edx
xor edi, dword [ebp - 0xc]
mov ebx, edx
ror edi, 5
imul edi, dword [ebp - 0x30]
ror ebx, 4
add edi, ebx
xor eax, edi
mov edi, dword [ebp - 8]
add edi, eax
ror edi, 4
imul edi, dword [ebp - 0x18]
mov ebx, eax
rol ebx, 0xd
sub edi, ebx
mov ebx, dword [ebp - 0x30]
xor edx, edi
xor ebx, edx
imul ebx, ecx
mov edi, edx
ror edi, 0xb
xor edi, ebx
xor eax, edi
movzx edi, word [ebp - 6]
mov ebx, ecx
xor ebx, eax
rol ebx, 1
imul ebx, edi
mov edi, eax
rol edi, 3
add ebx, edi
movzx edi, word [ebp - 0xa]
xor edx, ebx
mov ebx, edi
mov dword [ebp - 0x18], edi
movzx edi, word [ebp - 8]
xor ebx, edx
imul ebx, edi
mov edi, edx
shr edi, 0xb
add ebx, edi
xor eax, ebx
mov edi, eax
not edi
ror edi, 1
add edi, dword [ebp - 0x18]
and dword [ebp - 0x18], 0
imul edi, ecx
xor edx, edi
mov edi, edx
sub edi, dword [ebp - 8]
ror edi, 7
imul edi, ecx
mov ecx, edx
xor edx, dword [ebp - 0x28]
rol ecx, 0xd
add edi, ecx
xor edi, dword [ebp - 0x38]
mov dword [ebp - 0x14], edx
xor eax, edi
mov edi, dword [ebp - 0x2c]
mov dword [ebp - 0x3c], eax
test edi, edi
jle 0x1285d8d
mov ebx, dword [ebp - 0x34]
inc dword [ebp - 0x34]
cmp dword [ebp - 0x18], 4
jge 0x1285d7c
rol dword [ebp - 0x3c], 8
mov cl, byte [ebp - 0x3c]
jmp 0x1285d83
rol dword [ebp - 0x14], 8
mov cl, byte [ebp - 0x14]
inc dword [ebp - 0x18]
cmp dword [ebp - 0x18], edi
mov byte [ebx], cl
jl 0x1285d67
add edi, 0xfffffffc
test edi, edi
jle 0x1285da2
push 4
pop ecx
sub ecx, edi
shl ecx, 3
shr edx, cl
shl edx, cl
jmp 0x1285db3
xor edx, edx
test edi, edi
jge 0x1285db3
neg edi
shl edi, 3
mov ecx, edi
shr eax, cl
shl eax, cl
mov ecx, dword [ebp - 0x48]
shr ecx, 3
test ecx, ecx
jbe 0x1285f8b
movzx edi, word [ebp - 6]
mov dword [ebp - 0x48], edi
movzx edi, word [ebp - 0xc]
mov dword [ebp - 0x60], edi
movzx edi, word [ebp - 0xa]
mov dword [ebp - 0x18], edi
movzx edi, word [ebp - 8]
mov dword [ebp - 0x30], edi
mov dword [ebp - 0x2c], ecx
mov bl, byte [esi]
mov cl, byte [esi + 1]
mov byte [ebp - 0x3d], bl
mov bl, byte [esi + 2]
movzx edi, byte [ebp - 0x3d]
shl edi, 8
movzx ecx, cl
or edi, ecx
shl edi, 8
mov byte [ebp - 0x3e], bl
mov bl, byte [esi + 3]
movzx ecx, byte [ebp - 0x3e]
or edi, ecx
shl edi, 8
movzx ecx, bl
or edi, ecx
mov dword [ebp - 0x3c], edi
mov cl, byte [esi + 7]
mov byte [ebp - 0x19], bl
mov bl, byte [esi + 4]
movzx edi, bl
movzx ebx, byte [esi + 5]
shl edi, 8
or edi, ebx
movzx ebx, byte [esi + 6]
shl edi, 8
or edi, ebx
shl edi, 8
movzx ebx, cl
xor cl, byte [esi + 6]
or edi, ebx
xor cl, byte [esi + 5]
xor edx, edi
xor cl, byte [esi + 4]
mov dword [ebp - 0x14], edi
xor cl, byte [esi + 3]
mov edi, edx
sub edi, dword [ebp - 8]
xor cl, byte [esi + 2]
mov ebx, edx
xor cl, byte [esi + 1]
xor cl, byte [esi]
add esi, 8
xor byte [ebp - 0xd], cl
ror edi, 7
mov byte [ebp - 0x19], cl
mov ecx, dword [ebp - 0x60]
imul edi, ecx
rol ebx, 0xd
add edi, ebx
xor edi, dword [ebp - 0x3c]
xor eax, edi
mov edi, eax
not edi
ror edi, 1
add edi, dword [ebp - 0x18]
imul edi, ecx
xor edx, edi
mov edi, dword [ebp - 0x18]
xor edi, edx
imul edi, dword [ebp - 0x30]
mov ebx, edx
shr ebx, 0xb
add edi, ebx
xor eax, edi
mov edi, ecx
xor edi, eax
rol edi, 1
imul edi, dword [ebp - 0x48]
mov ebx, eax
rol ebx, 3
add edi, ebx
mov ebx, dword [ebp - 0x30]
xor edx, edi
xor ebx, edx
imul ebx, ecx
mov ecx, dword [ebp - 8]
mov edi, edx
ror edi, 0xb
xor edi, ebx
xor eax, edi
lea edi, [eax + ecx]
ror edi, 4
imul edi, dword [ebp - 0x18]
mov ebx, eax
rol ebx, 0xd
sub edi, ebx
xor edx, edi
mov ebx, edx
xor ebx, dword [ebp - 0xc]
movzx edi, cx
ror ebx, 5
imul ebx, edi
mov dword [ebp - 0x30], edi
mov edi, edx
ror edi, 4
add ebx, edi
mov edi, dword [ebp - 0xc]
xor eax, ebx
sub edi, eax
ror edi, 1
imul edi, dword [ebp - 0x48]
mov ebx, eax
rol ebx, 2
add edi, ebx
xor edx, edi
mov edi, edx
xor edi, ecx
ror edi, 0xe
imul edi, dword [ebp - 0x60]
mov ebx, edx
rol ebx, 0xc
sub edi, ebx
xor eax, edi
mov edi, eax
sub edi, dword [ebp - 0x18]
sub edi, ecx
xor edx, edi
mov edi, dword [ebp - 0xc]
sub edi, edx
ror edi, 0xb
imul edi, dword [ebp - 0x30]
mov ebx, edx
rol ebx, 0xa
sub edi, ebx
xor eax, edi
mov edi, eax
xor eax, dword [ebp - 0x38]
xor edi, ecx
mov ecx, dword [ebp - 0xc]
sub ecx, edi
mov edi, dword [ebp - 0x3c]
xor edx, ecx
xor edx, dword [ebp - 0x28]
mov ecx, dword [ebp - 0x34]
mov byte [ecx + 3], al
ror eax, 8
mov byte [ecx + 7], dl
ror edx, 8
mov byte [ecx + 2], al
ror eax, 8
mov byte [ecx + 6], dl
ror edx, 8
mov byte [ecx + 1], al
ror eax, 8
mov byte [ecx + 5], dl
ror edx, 8
mov byte [ecx], al
mov byte [ecx + 4], dl
mov dword [ebp - 0x38], edi
mov edi, dword [ebp - 0x14]
add ecx, 8
dec dword [ebp - 0x2c]
ror eax, 8
ror edx, 8
mov dword [ebp - 0x28], edi
mov dword [ebp - 0x34], ecx
jne 0x1285de0
mov eax, dword [ebp - 0x44]
mov cl, byte [ebp - 0xd]
or dword [eax], 0x10000000
mov ebx, dword [ebp - 0x80]
mov byte [eax + 4], cl
mov eax, 0x94c62d87
inc dword [ebp - 0x64]
mov eax, dword [ebp - 0x64]
add dword [ebp - 0x44], 0xc
cmp eax, dword [ebx + 0x14]
jl 0x12858c1
jmp 0x1285fbe
mov dword [ebp - 0x68], 0x8007000e
xor esi, esi
cmp dword [ebp - 0x4c], esi
je 0x1285fdb
lea eax, [ebp - 0x54]
push eax
push dword [ebp - 0x54]
push dword [ebp - 0x58]
push dword [ebp - 0x5c]
call dword [sym.imp.KERNEL32.dll_VirtualProtect]
mov dword [ebp - 0x4c], esi
cmp dword [ebp - 0x50], esi
je 0x1285fee
push 0x136f81c
mov dword [ebp - 0x50], esi
call dword [sym.imp.KERNEL32.dll_LeaveCriticalSection]
pop edi
pop esi
mov ecx, dword [ebp - 4]
mov eax, dword [ebp - 0x68]
xor ecx, ebp
pop ebx
call fcn.0103e3fb
leave
ret 4