Function at 0x1011f7d
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 dword [ebp - 0x74], edx
mov dword [ebp - 0x6c], ebx
mov dword [ebp - 0x68], esi
mov dword [ebp - 0x70], edi
mov ecx, 0xfffffff
mov esi, dword [0x102dddc]
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
xor edx, edx
lea ecx, [esi + eax - 1]
mov eax, ecx
div esi
mov eax, dword [0x102dddc]
mov dword [ebp - 0x34], edi
sub ecx, edx
mov dword [ebp - 0x10], ecx
mov eax, dword [0x101da18]
mov dword [ebp - 0x14], eax
mov eax, dword [0x102dddc]
mov eax, dword [0x101da18]
test eax, eax
je 0x101207b
and dword [ebp - 0x18], 0
mov eax, dword [0x101da18]
dec eax
lea ecx, [eax + 1]
mov edx, ecx
xor eax, eax
test ecx, ecx
je 0x101202c
mov esi, dword [0x10893f8]
imul esi, esi, 0x343fd
add esi, 0x269ec3
mov dword [0x10893f8], esi
shr esi, 0x10
shl eax, 0x10
shr edx, 0x10
or eax, esi
test edx, edx
jne 0x1012005
xor edx, edx
div ecx
cmp dword [ebp - 0x14], 0
jbe 0x101206e
mov ecx, 0xffff2e5b
mov eax, 0xd1a4
lea esi, [edx*4 + 0x1088fa0]
inc dword [ebp - 0x18]
lock cmpxchg dword [esi], ecx
cmp eax, 0xd1a4
je 0x101220e
mov ecx, dword [0x101da18]
lea eax, [edx + 1]
xor edx, edx
div ecx
mov eax, dword [ebp - 0x18]
cmp eax, dword [ebp - 0x14]
jb 0x1012036
xor eax, eax
test eax, eax
mov dword [ebp - 8], eax
jne 0x1012100
call dword [sym.imp.KERNEL32.dll_GetLastError]
xor esi, esi
mov dword [ebp - 0x1c], eax
inc esi
push 0x40
push 0x1000
push dword [ebp - 0x10]
push 0
call dword [sym.imp.KERNEL32.dll_VirtualAlloc]
test eax, eax
jne 0x1012221
push eax
call dword [sym.imp.KERNEL32.dll_Sleep]
cmp esi, 0x11
jb 0x1012086
and dword [ebp - 8], 0
cmp dword [ebp - 8], 0x10000
jb 0x10120c3
test dword [ebp - 8], 3
je 0x10120dc
xor esi, esi
cmp dword [ebp - 8], esi
je 0x10120d9
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 0x1011fd6
mov eax, dword [ebp - 8]
mov ecx, dword [ebp - 0x10]
test ecx, ecx
je 0x1012100
mov byte [eax], 0
inc eax
dec ecx
jne 0x10120f9
mov eax, 0x2fcb2b05
add dword [edi], 8
mov esi, dword [ebx + 4]
mov eax, dword [ebp - 0xc]
and esi, 0xfffffff
lea ebx, [esi + eax]
sub eax, 0x1000000
mov dword [ebp - 0x18], eax
mov eax, dword [0x102dddc]
sub eax, esi
mov dword [ebp - 0x1c], esi
lea ecx, [eax + 1]
mov dword [ebp - 0x30], ebx
mov dword [ebp - 0x14], ecx
xor eax, eax
test ecx, ecx
je 0x1012162
mov edx, dword [0x10893f8]
shr dword [ebp - 0x14], 0x10
imul edx, edx, 0x343fd
add edx, 0x269ec3
mov dword [0x10893f8], edx
shr edx, 0x10
shl eax, 0x10
or eax, edx
cmp dword [ebp - 0x14], 0
jne 0x1012138
xor edx, edx
div ecx
mov eax, dword [ebp - 8]
add eax, edx
push esi
push dword [ebp - 0x18]
mov dword [ebp - 0x10], eax
mov eax, 0xab7f0542
mov eax, dword [ebx]
test esi, esi
mov dword [ebp - 0x4c], eax
mov eax, dword [ebx + 4]
pop ecx
pop ecx
mov dword [ebp - 0x48], eax
mov byte [ebp - 1], 0
jbe 0x1012654
lea esi, [ebp - 0x4c]
mov eax, 0xdeec59fc
mov eax, 0xfffffff
mov edx, dword [ebp - 0x4c]
mov ecx, dword [0x100771c]
and edx, eax
mov esi, dword [ebp - 0x48]
and esi, eax
mov eax, 0x1000000
xor ebx, ebx
mov dword [ebp - 0x44], ebx
mov dword [ebp - 0x40], ebx
add edx, eax
sub eax, ecx
mov dword [ebp - 0x24], eax
jne 0x1012229
cmp esi, ebx
jbe 0x101241e
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 0x10121d0
jmp 0x101241e
mov eax, dword [0x102dddc]
imul eax, edx
lea eax, [eax + 0x107f008]
jmp 0x1012070
mov dword [ebp - 8], eax
jmp 0x10120b1
mov ebx, 0x1000000
mov ecx, edx
lea eax, [edx + esi]
mov edi, dword [0x100003c]
lea edi, [edi + 0x10000a0]
mov dword [ebp - 0x2c], eax
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
add ebx, eax
mov dword [ebp - 0x60], esi
mov esi, eax
mov dword [ebp - 0x5c], ecx
cmp eax, ebx
mov dword [ebp - 0x58], ebx
je 0x1012287
mov eax, dword [ebp - 0x14]
cmp dword [esi], eax
jae 0x1012287
add esi, dword [esi + 4]
cmp esi, dword [ebp - 0x58]
jne 0x1012278
and dword [ebp - 0x50], 0
mov ecx, 0xfff
cmp esi, dword [ebp - 0x58]
je 0x10122c4
mov eax, dword [ebp - 0x14]
cmp dword [esi], eax
jne 0x10122c4
mov eax, dword [esi + 4]
sub eax, 8
shr eax, 1
je 0x10122c4
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 0x10122c4
inc dword [ebp - 0x50]
add dword [ebp - 0x14], 2
cmp dword [ebp - 0x50], eax
jne 0x10122ac
mov edi, 0x6a74adea
cmp esi, dword [ebp - 0x58]
je 0x10123dc
mov eax, dword [esi]
cmp eax, dword [ebp - 0x60]
ja 0x10123dc
mov ebx, dword [ebp - 0x50]
mov eax, dword [esi + 4]
add eax, 0xfffffff8
shr eax, 1
cmp ebx, eax
jne 0x1012307
add esi, dword [esi + 4]
cmp esi, dword [ebp - 0x58]
je 0x10123dc
mov eax, dword [ebp - 0x60]
cmp dword [esi], eax
ja 0x10123dc
xor ebx, ebx
jmp 0x10122e0
mov eax, dword [ebp - 0x60]
cmp dword [esi], eax
jne 0x101231e
movzx eax, word [esi + ebx*2 + 8]
and eax, ecx
cmp eax, dword [ebp - 0x5c]
jae 0x10123dc
mov eax, ebx
inc ebx
mov dword [ebp - 0x50], ebx
mov ebx, 0xf000
test word [esi + eax*2 + 8], bx
je 0x10122c9
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 0x1012387
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
inc ecx
mov dword [ebp - 0x40], eax
cmp ecx, dword [ebp - 0x14]
jb 0x101234d
mov ebx, dword [ebp - 8]
mov eax, dword [ebx]
sub eax, dword [ebp - 0x24]
xor ecx, ecx
mov dword [ebp - 0x28], eax
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 0x1012394
lea edx, [ebx + 4]
mov ecx, 0xfff
jmp 0x10122c9
mov ebx, dword [ebp - 0x2c]
xor esi, esi
sub ebx, edx
je 0x101241e
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
inc esi
mov dword [ebp - 0x40], eax
cmp esi, ebx
jb 0x10123e5
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 0x1012420
mov eax, 0xd0a7aef1
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 0x10125c8
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 0x1012513
mov edx, dword [ebp - 8]
mov al, byte [edx]
movzx edi, byte [ebp - 0x39]
mov cl, al
movzx eax, al
xor cl, byte [ebp - 0x39]
and cl, 1
mov byte [ebp - 2], cl
je 0x10124a3
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 0x10124a9
mov ecx, eax
xor ecx, edi
shr ecx, 1
movzx edx, byte [edx - 1]
mov ebx, edx
xor ebx, ecx
test bl, 1
je 0x10124ea
cmp byte [ebp - 2], 0
je 0x10124ce
movzx ecx, byte [ebp - 0x3a]
shr ecx, 1
shr edi, 1
xor eax, esi
xor ecx, edi
sar eax, 1
xor ecx, eax
jmp 0x10124d4
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 0x10125ac
cmp byte [ebp - 2], 0
je 0x1012502
movzx ecx, byte [ebp - 0x3a]
shr ecx, 1
shr edi, 1
xor eax, esi
xor ecx, edi
sar eax, 1
xor ecx, eax
jmp 0x1012508
xor eax, edi
shr eax, 1
mov ecx, eax
xor edx, ecx
sar edx, 1
mov eax, edx
jmp 0x10125ac
mov eax, dword [ebp - 8]
mov cl, byte [eax]
mov al, cl
xor al, byte [ebp - 0x3b]
and al, 1
mov byte [ebp - 2], al
movzx eax, byte [ebp - 0x3b]
movzx ecx, cl
je 0x1012541
movzx edi, byte [ebp - 0x3c]
mov edx, eax
shr edx, 1
shr edi, 1
xor edi, edx
mov edx, ecx
xor edx, esi
sar edx, 1
xor edi, edx
jmp 0x1012547
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 0x1012588
cmp byte [ebp - 2], 0
je 0x101256f
movzx edx, byte [ebp - 0x3c]
shr edx, 1
shr eax, 1
xor ecx, esi
xor edx, eax
sar ecx, 1
xor edx, ecx
jmp 0x1012575
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 0x10125ac
cmp byte [ebp - 2], 0
je 0x10125a0
movzx edx, byte [ebp - 0x3c]
shr edx, 1
shr eax, 1
xor ecx, esi
xor edx, eax
sar ecx, 1
xor edx, ecx
jmp 0x10125a6
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 0x101246a
mov eax, dword [ebp - 0xc]
mov cl, byte [eax]
mov bl, cl
xor bl, byte [ebp - 0x3b]
and bl, 1
movzx eax, byte [ebp - 0x3b]
movzx ecx, cl
je 0x10125f4
mov edi, eax
shr edi, 1
movzx edx, byte [ebp - 0x3c]
shr edx, 1
xor edx, edi
mov edi, ecx
xor edi, esi
sar edi, 1
xor edx, edi
jmp 0x10125fa
mov edx, eax
xor edx, ecx
shr edx, 1
test dl, 1
je 0x1012625
test bl, bl
je 0x1012615
movzx edi, byte [ebp - 0x3c]
shr edi, 1
shr eax, 1
xor ecx, esi
xor edi, eax
sar ecx, 1
xor edi, ecx
jmp 0x101261b
xor eax, ecx
shr eax, 1
mov edi, eax
movzx edx, byte [ebp - 0x38]
xor edx, edi
xor edx, esi
jmp 0x1012641
test bl, bl
je 0x101263b
movzx edx, byte [ebp - 0x3c]
shr edx, 1
shr eax, 1
xor ecx, esi
xor edx, eax
sar ecx, 1
xor edx, ecx
jmp 0x1012641
xor eax, ecx
shr eax, 1
mov edx, eax
mov edi, dword [ebp - 0x34]
sar edx, 1
mov eax, dword [ebp - 0x10]
mov esi, dword [ebp - 0x1c]
mov ebx, dword [ebp - 0x30]
xor byte [ebp - 1], dl
mov byte [eax], dl
mov al, byte [ebx + 8]
xor al, byte [ebp - 1]
je 0x10126e2
call fcn.01035dac
and edi, 0xfffffffc
mov edx, 0xffff
mov esi, eax
mov eax, 0xfffff000
and esi, eax
lea ecx, [edi + 0xfff]
and ecx, eax
mov eax, dword [ebp - 0x20]
mov dword [eax + 8], 0x1021023
xor eax, eax
mov ebx, dword [0x10893f8]
imul ebx, ebx, 0x343fd
add ebx, 0x269ec3
mov dword [0x10893f8], ebx
shr ebx, 0x10
shl eax, 0x10
shr edx, 0x10
or eax, ebx
test edx, edx
jne 0x101268a
mov ebx, 0xffff
div ebx
mov dword [ebp - 0x74], esi
mov eax, edi
inc edx
mov dword [ebp - 0x64], edx
mov dword [ebp - 0x34], 0
cmp edi, ecx
jae 0x10126d8
mov edx, dword [ebp - 0x34]
mov dword [eax], edx
add eax, 4
cmp eax, ecx
jb 0x10126cc
mov eax, 0x1021023
jmp 0x10127b1
mov ecx, 0x1000000
mov edx, dword [0x100771c]
mov eax, dword [ebp - 0xc]
sub eax, dword [ebp - 0x10]
mov dword [ebp - 0x14], eax
sub ecx, edx
mov dword [ebp - 0x1c], ecx
jne 0x1012705
test eax, eax
je 0x10127a4
mov edi, dword [ebp - 0x10]
mov eax, dword [ebp - 0x18]
sub edi, dword [ebp - 0xc]
add eax, esi
mov ecx, dword [0x101c5b0]
mov dword [ebp - 0x34], eax
xor esi, esi
dec ecx
js 0x1012746
lea eax, [esi + ecx]
cdq
sub eax, edx
sar eax, 1
mov edx, dword [eax*4 + 0x101c5b4]
and edx, 0xfffffff
cmp dword [ebp - 0x18], edx
jae 0x101273d
lea ecx, [eax - 1]
jmp 0x1012742
jbe 0x101274a
lea esi, [eax + 1]
cmp ecx, esi
jge 0x101271e
mov ebx, esi
jmp 0x101279c
mov ebx, eax
jmp 0x101279c
mov eax, dword [ebx*4 + 0x101c5b4]
mov ecx, eax
and ecx, 0xfffffff
cmp ecx, dword [ebp - 0x34]
jae 0x10127a4
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 0x101278f
dec ecx
je 0x101278a
dec ecx
jne 0x1012795
mov edx, dword [ebp - 0x1c]
jmp 0x1012795
mov edx, dword [ebp - 0x14]
jmp 0x1012795
mov edx, dword [ebp - 0x1c]
sub edx, dword [ebp - 0x14]
dec eax
dec eax
jne 0x101279b
add dword [esi], edx
inc ebx
cmp ebx, dword [0x101c5b0]
jb 0x101274e
mov eax, dword [0x102dddc]
mov eax, 0x5deed66a
mov eax, dword [ebp - 0x10]
mov ecx, dword [ebp - 0x20]
mov dword [ecx + 8], eax
mov edi, dword [ebp - 0x70]
mov esi, dword [ebp - 0x68]
mov edx, dword [ebp - 0x74]
mov ebx, dword [ebp - 0x6c]
mov ecx, dword [ebp - 0x64]
mov eax, dword [ebp - 0x78]
mov esp, ebp
pop ebp
popfd
ret