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

Disassembly:
push edi
pushfd
push ebp
mov ebp, esp
sub esp, 0x78
mov dword [ebp - 0x78], eax
mov dword [ebp - 0x64], ecx
mov ecx, 0xfffffff
mov dword [ebp - 0x74], edx
mov dword [ebp - 0x6c], ebx
mov dword [ebp - 0x68], esi
mov dword [ebp - 0x70], edi
mov esi, dword [0x1005bf8]
lea edi, [ebp + 4]
sub edi, 4
mov dword [ebp - 0x20], edi
add edi, 0xc
mov ebx, dword [edi]
mov eax, dword [ebx]
and eax, ecx
add eax, 0x1000000
mov dword [ebp - 0xc], eax
mov eax, dword [ebx + 4]
and eax, ecx
lea ecx, [esi + eax - 1]
xor edx, edx
mov eax, ecx
div esi
sub ecx, edx
mov eax, dword [0x1005bf8]
mov dword [ebp - 0x34], edi
mov dword [ebp - 0x10], ecx
mov eax, dword [0x1040344]
mov dword [ebp - 0x14], eax
mov eax, dword [0x1005bf8]
mov eax, dword [0x1040344]
test eax, eax
je 0x1027b7f
and dword [ebp - 0x18], 0
mov eax, dword [0x1040344]
dec eax
lea ecx, [eax + 1]
xor eax, eax
mov edx, ecx
test ecx, ecx
je 0x1027b30
mov esi, dword [0x104c148]
imul esi, esi, 0x343fd
add esi, 0x269ec3
mov dword [0x104c148], esi
shr esi, 0x10
shl eax, 0x10
shr edx, 0x10
or eax, esi
test edx, edx
jne 0x1027b09
xor edx, edx
div ecx
cmp dword [ebp - 0x14], 0
jbe 0x1027b72
inc dword [ebp - 0x18]
lea esi, [edx*4 + 0x104d53c]
mov eax, 0xd1a4
mov ecx, 0xffff2e5b
lock cmpxchg dword [esi], ecx
cmp eax, 0xd1a4
je 0x1027d12
lea eax, [edx + 1]
mov ecx, dword [0x1040344]
xor edx, edx
div ecx
mov eax, dword [ebp - 0x18]
cmp eax, dword [ebp - 0x14]
jb 0x1027b3a
xor eax, eax
test eax, eax
mov dword [ebp - 8], eax
jne 0x1027c04
call dword [sym.imp.KERNEL32.dll_GetLastError]
mov dword [ebp - 0x1c], eax
xor esi, esi
inc esi
push 0x40
push 0x1000
push dword [ebp - 0x10]
push 0
call dword [sym.imp.KERNEL32.dll_VirtualAlloc]
test eax, eax
jne 0x1027d25
push eax
call dword [sym.imp.KERNEL32.dll_Sleep]
cmp esi, 0x11
jb 0x1027b8a
and dword [ebp - 8], 0
cmp dword [ebp - 8], 0x10000
jb 0x1027bc7
test dword [ebp - 8], 3
je 0x1027be0
xor esi, esi
cmp dword [ebp - 8], esi
je 0x1027bdd
push 0x8000
push esi
push dword [ebp - 8]
call dword [sym.imp.KERNEL32.dll_VirtualFree]
mov dword [ebp - 8], esi
push dword [ebp - 0x1c]
call dword [sym.imp.KERNEL32.dll_SetLastError]
cmp dword [ebp - 8], 0
je 0x1027ada
mov eax, dword [ebp - 8]
mov ecx, dword [ebp - 0x10]
test ecx, ecx
je 0x1027c04
mov byte [eax], 0
inc eax
dec ecx
jne 0x1027bfd
mov eax, 0x423812d3
add dword [edi], 8
mov eax, dword [ebp - 0xc]
mov esi, dword [ebx + 4]
and esi, 0xfffffff
lea ebx, [esi + eax]
sub eax, 0x1000000
mov dword [ebp - 0x18], eax
mov eax, dword [0x1005bf8]
sub eax, esi
mov dword [ebp - 0x1c], esi
lea ecx, [eax + 1]
mov dword [ebp - 0x30], ebx
xor eax, eax
test ecx, ecx
mov dword [ebp - 0x14], ecx
je 0x1027c66
mov edx, dword [0x104c148]
shr dword [ebp - 0x14], 0x10
imul edx, edx, 0x343fd
add edx, 0x269ec3
mov dword [0x104c148], edx
shr edx, 0x10
shl eax, 0x10
or eax, edx
cmp dword [ebp - 0x14], 0
jne 0x1027c3c
xor edx, edx
div ecx
mov eax, dword [ebp - 8]
push esi
push dword [ebp - 0x18]
add eax, edx
mov dword [ebp - 0x10], eax
mov eax, 0x2c7fa374
mov eax, dword [ebx]
mov dword [ebp - 0x4c], eax
test esi, esi
mov eax, dword [ebx + 4]
pop ecx
pop ecx
mov dword [ebp - 0x48], eax
mov byte [ebp - 1], 0
jbe 0x1028158
lea esi, [ebp - 0x4c]
mov eax, 0x59a3257e
mov edx, dword [ebp - 0x4c]
mov esi, dword [ebp - 0x48]
mov ecx, dword [0x1033b04]
mov eax, 0xfffffff
and edx, eax
and esi, eax
mov eax, 0x1000000
xor ebx, ebx
add edx, eax
mov dword [ebp - 0x44], ebx
sub eax, ecx
mov dword [ebp - 0x40], ebx
mov dword [ebp - 0x24], eax
jne 0x1027d2d
cmp esi, ebx
jbe 0x1027f22
mov edi, 0x6a74adea
movzx eax, byte [ebx + edx]
add eax, edi
add dword [ebp - 0x44], eax
add eax, dword [ebp - 0x40]
imul eax, eax, 0x6a74adea
ror eax, 0x19
mov ecx, eax
imul eax, eax, 0x139
rol eax, 0xa
ror ecx, 0xa
xor eax, ecx
imul eax, eax, 0x6a74adea
ror eax, 0x19
add dword [ebp - 0x44], eax
mov dword [ebp - 0x40], eax
inc ebx
cmp ebx, esi
jb 0x1027cd4
jmp 0x1027f22
mov eax, dword [0x1005bf8]
imul eax, edx
lea eax, [eax + 0x1043008]
jmp 0x1027b74
mov dword [ebp - 8], eax
jmp 0x1027bb5
lea eax, [edx + esi]
mov ebx, 0x1000000
mov edi, dword [0x100003c]
mov ecx, edx
mov dword [ebp - 0x2c], eax
lea edi, [edi + 0x10000a0]
mov eax, dword [edi]
add eax, ebx
sub ecx, ebx
mov ebx, dword [edi + 4]
mov edi, ecx
and edi, 0xfffff000
mov dword [ebp - 0x14], edi
mov edi, ecx
sub edi, dword [ebp - 0x14]
add ecx, esi
mov esi, ecx
and esi, 0xfffff000
sub ecx, esi
mov dword [ebp - 0x60], esi
add ebx, eax
mov dword [ebp - 0x5c], ecx
mov dword [ebp - 0x58], ebx
cmp eax, ebx
mov esi, eax
je 0x1027d8b
mov eax, dword [ebp - 0x14]
cmp dword [esi], eax
jae 0x1027d8b
add esi, dword [esi + 4]
cmp esi, dword [ebp - 0x58]
jne 0x1027d7c
mov ecx, 0xfff
and dword [ebp - 0x50], 0
cmp esi, dword [ebp - 0x58]
je 0x1027dc8
mov eax, dword [ebp - 0x14]
cmp dword [esi], eax
jne 0x1027dc8
mov eax, dword [esi + 4]
sub eax, 8
shr eax, 1
je 0x1027dc8
lea ebx, [esi + 8]
mov dword [ebp - 0x14], ebx
mov ebx, dword [ebp - 0x14]
movzx ebx, word [ebx]
and ebx, ecx
cmp ebx, edi
jae 0x1027dc8
inc dword [ebp - 0x50]
add dword [ebp - 0x14], 2
cmp dword [ebp - 0x50], eax
jne 0x1027db0
mov edi, 0x6a74adea
cmp esi, dword [ebp - 0x58]
je 0x1027ee0
mov eax, dword [esi]
cmp eax, dword [ebp - 0x60]
ja 0x1027ee0
mov ebx, dword [ebp - 0x50]
mov eax, dword [esi + 4]
add eax, 0xfffffff8
shr eax, 1
cmp ebx, eax
jne 0x1027e0b
add esi, dword [esi + 4]
cmp esi, dword [ebp - 0x58]
je 0x1027ee0
mov eax, dword [ebp - 0x60]
cmp dword [esi], eax
ja 0x1027ee0
xor ebx, ebx
jmp 0x1027de4
mov eax, dword [ebp - 0x60]
cmp dword [esi], eax
jne 0x1027e22
movzx eax, word [esi + ebx*2 + 8]
and eax, ecx
cmp eax, dword [ebp - 0x5c]
jae 0x1027ee0
mov eax, ebx
inc ebx
mov dword [ebp - 0x50], ebx
mov ebx, 0xf000
test word [esi + eax*2 + 8], bx
je 0x1027dcd
movzx eax, word [esi + eax*2 + 8]
and eax, ecx
mov ecx, dword [esi]
lea eax, [eax + ecx + 0x1000000]
mov dword [ebp - 0x14], eax
xor ecx, ecx
sub dword [ebp - 0x14], edx
mov dword [ebp - 8], eax
je 0x1027e8b
movzx eax, byte [ecx + edx]
add eax, edi
add dword [ebp - 0x44], eax
add eax, dword [ebp - 0x40]
imul eax, eax, 0x6a74adea
ror eax, 0x19
mov ebx, eax
imul eax, eax, 0x139
rol eax, 0xa
ror ebx, 0xa
xor eax, ebx
imul eax, eax, 0x6a74adea
ror eax, 0x19
add dword [ebp - 0x44], eax
mov dword [ebp - 0x40], eax
inc ecx
cmp ecx, dword [ebp - 0x14]
jb 0x1027e51
mov ebx, dword [ebp - 8]
mov eax, dword [ebx]
sub eax, dword [ebp - 0x24]
mov dword [ebp - 0x28], eax
xor ecx, ecx
movzx eax, byte [ebp + ecx - 0x28]
add eax, edi
add dword [ebp - 0x44], eax
add eax, dword [ebp - 0x40]
imul eax, eax, 0x6a74adea
ror eax, 0x19
mov edx, eax
imul eax, eax, 0x139
rol eax, 0xa
ror edx, 0xa
xor eax, edx
imul eax, eax, 0x6a74adea
ror eax, 0x19
add dword [ebp - 0x44], eax
mov dword [ebp - 0x40], eax
inc ecx
cmp ecx, 4
jb 0x1027e98
mov ecx, 0xfff
lea edx, [ebx + 4]
jmp 0x1027dcd
xor esi, esi
mov ebx, dword [ebp - 0x2c]
sub ebx, edx
je 0x1027f22
movzx eax, byte [esi + edx]
add eax, edi
add dword [ebp - 0x44], eax
add eax, dword [ebp - 0x40]
imul eax, eax, 0x6a74adea
ror eax, 0x19
mov ecx, eax
imul eax, eax, 0x139
rol eax, 0xa
ror ecx, 0xa
xor eax, ecx
imul eax, eax, 0x6a74adea
ror eax, 0x19
add dword [ebp - 0x44], eax
mov dword [ebp - 0x40], eax
inc esi
cmp esi, ebx
jb 0x1027ee9
xor eax, eax
mov ecx, eax
and ecx, 7
mov cl, byte [ebp + ecx - 0x44]
mov byte [ebp + eax - 0x3c], cl
inc eax
cmp eax, 6
jb 0x1027f24
mov eax, 0x9b88a99f
mov esi, 0x100
mov eax, dword [ebp - 0x1c]
or byte [ebp - 0x3c], 1
or byte [ebp - 0x3a], 1
or byte [ebp - 0x38], 1
or byte [ebp - 0x37], 1
dec eax
mov dword [ebp - 0x14], eax
je 0x10280cc
mov ecx, dword [ebp - 0xc]
add eax, ecx
mov dword [ebp - 8], eax
mov eax, dword [ebp - 0x10]
sub eax, ecx
mov dword [ebp - 0x2c], eax
test byte [ebp - 0x14], 1
je 0x1028017
movzx edi, byte [ebp - 0x39]
mov edx, dword [ebp - 8]
mov al, byte [edx]
mov cl, al
movzx eax, al
xor cl, byte [ebp - 0x39]
and cl, 1
mov byte [ebp - 2], cl
je 0x1027fa7
movzx ecx, byte [ebp - 0x3a]
mov ebx, edi
shr ebx, 1
shr ecx, 1
xor ecx, ebx
mov ebx, eax
xor ebx, esi
sar ebx, 1
xor ecx, ebx
jmp 0x1027fad
mov ecx, eax
xor ecx, edi
shr ecx, 1
movzx edx, byte [edx - 1]
mov ebx, edx
xor ebx, ecx
test bl, 1
je 0x1027fee
cmp byte [ebp - 2], 0
je 0x1027fd2
movzx ecx, byte [ebp - 0x3a]
shr ecx, 1
shr edi, 1
xor eax, esi
xor ecx, edi
sar eax, 1
xor ecx, eax
jmp 0x1027fd8
xor eax, edi
shr eax, 1
mov ecx, eax
movzx eax, byte [ebp - 0x37]
shr eax, 1
xor edx, ecx
xor eax, 0x80
sar edx, 1
xor eax, edx
jmp 0x10280b0
cmp byte [ebp - 2], 0
je 0x1028006
movzx ecx, byte [ebp - 0x3a]
shr ecx, 1
shr edi, 1
xor eax, esi
xor ecx, edi
sar eax, 1
xor ecx, eax
jmp 0x102800c
xor eax, edi
shr eax, 1
mov ecx, eax
xor edx, ecx
sar edx, 1
mov eax, edx
jmp 0x10280b0
mov eax, dword [ebp - 8]
mov cl, byte [eax]
mov al, cl
movzx ecx, cl
xor al, byte [ebp - 0x3b]
and al, 1
mov byte [ebp - 2], al
movzx eax, byte [ebp - 0x3b]
je 0x1028045
mov edx, eax
shr edx, 1
movzx edi, byte [ebp - 0x3c]
shr edi, 1
xor edi, edx
mov edx, ecx
xor edx, esi
sar edx, 1
xor edi, edx
jmp 0x102804b
mov edi, eax
xor edi, ecx
shr edi, 1
mov edx, dword [ebp - 8]
movzx ebx, byte [edx - 1]
mov edx, ebx
xor edx, edi
test dl, 1
je 0x102808c
cmp byte [ebp - 2], 0
je 0x1028073
movzx edx, byte [ebp - 0x3c]
shr edx, 1
shr eax, 1
xor ecx, esi
xor edx, eax
sar ecx, 1
xor edx, ecx
jmp 0x1028079
xor eax, ecx
shr eax, 1
mov edx, eax
movzx eax, byte [ebp - 0x38]
shr eax, 1
xor ebx, edx
xor eax, 0x80
sar ebx, 1
xor eax, ebx
jmp 0x10280b0
cmp byte [ebp - 2], 0
je 0x10280a4
movzx edx, byte [ebp - 0x3c]
shr edx, 1
shr eax, 1
xor ecx, esi
xor edx, eax
sar ecx, 1
xor edx, ecx
jmp 0x10280aa
xor eax, ecx
shr eax, 1
mov edx, eax
xor ebx, edx
sar ebx, 1
mov eax, ebx
xor byte [ebp - 1], al
mov edx, dword [ebp - 8]
dec dword [ebp - 0x14]
mov ecx, dword [ebp - 0x2c]
dec dword [ebp - 8]
cmp dword [ebp - 0x14], 0
mov byte [ecx + edx], al
ja 0x1027f6e
mov eax, dword [ebp - 0xc]
mov cl, byte [eax]
movzx eax, byte [ebp - 0x3b]
mov bl, cl
movzx ecx, cl
xor bl, byte [ebp - 0x3b]
and bl, 1
je 0x10280f8
mov edi, eax
movzx edx, byte [ebp - 0x3c]
shr edi, 1
shr edx, 1
xor edx, edi
mov edi, ecx
xor edi, esi
sar edi, 1
xor edx, edi
jmp 0x10280fe
mov edx, eax
xor edx, ecx
shr edx, 1
test dl, 1
je 0x1028129
test bl, bl
je 0x1028119
movzx edi, byte [ebp - 0x3c]
shr edi, 1
shr eax, 1
xor ecx, esi
xor edi, eax
sar ecx, 1
xor edi, ecx
jmp 0x102811f
xor eax, ecx
shr eax, 1
mov edi, eax
movzx edx, byte [ebp - 0x38]
xor edx, edi
xor edx, esi
jmp 0x1028145
test bl, bl
je 0x102813f
movzx edx, byte [ebp - 0x3c]
shr edx, 1
shr eax, 1
xor ecx, esi
xor edx, eax
sar ecx, 1
xor edx, ecx
jmp 0x1028145
xor eax, ecx
shr eax, 1
mov edx, eax
sar edx, 1
mov eax, dword [ebp - 0x10]
mov ebx, dword [ebp - 0x30]
mov edi, dword [ebp - 0x34]
mov esi, dword [ebp - 0x1c]
xor byte [ebp - 1], dl
mov byte [eax], dl
mov al, byte [ebx + 8]
xor al, byte [ebp - 1]
je 0x10281e6
call fcn.0100ddeb
mov edx, 0xffff
mov esi, eax
mov eax, 0xfffff000
and edi, 0xfffffffc
and esi, eax
lea ecx, [edi + 0xfff]
and ecx, eax
mov eax, dword [ebp - 0x20]
mov dword [eax + 8], 0x1040348
xor eax, eax
mov ebx, dword [0x104c148]
imul ebx, ebx, 0x343fd
add ebx, 0x269ec3
mov dword [0x104c148], ebx
shr ebx, 0x10
shl eax, 0x10
shr edx, 0x10
or eax, ebx
test edx, edx
jne 0x102818e
mov ebx, 0xffff
div ebx
mov eax, edi
inc edx
cmp edi, ecx
mov dword [ebp - 0x74], esi
mov dword [ebp - 0x64], edx
mov dword [ebp - 0x34], 0
jae 0x10281dc
mov edx, dword [ebp - 0x34]
mov dword [eax], edx
add eax, 4
cmp eax, ecx
jb 0x10281d0
mov eax, 0x1040348
jmp 0x10282b5
mov eax, dword [ebp - 0xc]
sub eax, dword [ebp - 0x10]
mov ecx, 0x1000000
mov edx, dword [0x1033b04]
mov dword [ebp - 0x14], eax
sub ecx, edx
mov dword [ebp - 0x1c], ecx
jne 0x1028209
test eax, eax
je 0x10282a8
mov eax, dword [ebp - 0x18]
mov edi, dword [ebp - 0x10]
sub edi, dword [ebp - 0xc]
mov ecx, dword [0x101a560]
add eax, esi
mov dword [ebp - 0x34], eax
xor esi, esi
dec ecx
js 0x102824a
lea eax, [esi + ecx]
cdq
sub eax, edx
sar eax, 1
mov edx, dword [eax*4 + 0x101a564]
and edx, 0xfffffff
cmp dword [ebp - 0x18], edx
jae 0x1028241
lea ecx, [eax - 1]
jmp 0x1028246
jbe 0x102824e
lea esi, [eax + 1]
cmp ecx, esi
jge 0x1028222
mov ebx, esi
jmp 0x10282a0
mov ebx, eax
jmp 0x10282a0
mov eax, dword [ebx*4 + 0x101a564]
mov ecx, eax
and ecx, 0xfffffff
cmp ecx, dword [ebp - 0x34]
jae 0x10282a8
lea esi, [ecx + edi + 0x1000000]
mov ecx, eax
shl ecx, 2
sar ecx, 0x1e
sar eax, 0x1e
and ecx, 3
and eax, 3
xor edx, edx
dec ecx
je 0x1028293
dec ecx
je 0x102828e
dec ecx
jne 0x1028299
mov edx, dword [ebp - 0x1c]
jmp 0x1028299
mov edx, dword [ebp - 0x14]
jmp 0x1028299
mov edx, dword [ebp - 0x1c]
sub edx, dword [ebp - 0x14]
dec eax
dec eax
jne 0x102829f
add dword [esi], edx
inc ebx
cmp ebx, dword [0x101a560]
jb 0x1028252
mov eax, dword [0x1005bf8]
mov eax, 0x8744f5b7
mov eax, dword [ebp - 0x10]
mov ecx, dword [ebp - 0x20]
mov dword [ecx + 8], eax
mov edx, dword [ebp - 0x74]
mov eax, dword [ebp - 0x78]
mov edi, dword [ebp - 0x70]
mov ebx, dword [ebp - 0x6c]
mov ecx, dword [ebp - 0x64]
mov esi, dword [ebp - 0x68]
mov esp, ebp
pop ebp
popfd
ret