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

Disassembly:
pushfd
push ebp
mov ebp, esp
sub esp, 0x74
mov dword [ebp - 0x74], eax
mov dword [ebp - 0x60], ecx
lea eax, [ebp + 4]
mov dword [ebp - 0x70], edx
mov dword [ebp - 0x68], ebx
mov dword [ebp - 0x64], esi
mov dword [ebp - 0x6c], edi
mov edi, dword [0x102dddc]
mov esi, dword [eax + 4]
sub eax, 4
mov dword [ebp - 0x20], eax
mov eax, dword [esi + 4]
and eax, 0xfffffff
lea ecx, [edi + eax - 1]
mov eax, ecx
xor edx, edx
div edi
mov eax, dword [0x102dddc]
sub ecx, edx
mov dword [ebp - 0x14], ecx
mov eax, dword [0x101da18]
mov dword [ebp - 0x18], eax
mov eax, dword [0x102dddc]
mov eax, dword [0x101da18]
test eax, eax
je 0x101181e
mov eax, dword [0x101da18]
xor edi, edi
dec eax
lea ecx, [eax + 1]
mov edx, ecx
xor eax, eax
test ecx, ecx
je 0x10117d3
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 0x10117ac
xor edx, edx
div ecx
cmp dword [ebp - 0x18], 0
jbe 0x1011810
mov eax, 0xd1a4
inc edi
mov ecx, 0xffff2e5b
lea ebx, [edx*4 + 0x1088fa0]
lock cmpxchg dword [ebx], ecx
cmp eax, 0xd1a4
je 0x10119b7
lea eax, [edx + 1]
xor edx, edx
mov ecx, dword [0x101da18]
div ecx
cmp edi, dword [ebp - 0x18]
jb 0x10117dd
and dword [ebp - 8], 0
cmp dword [ebp - 8], 0
jne 0x10118a1
call dword [sym.imp.KERNEL32.dll_GetLastError]
mov ebx, eax
xor edi, edi
inc edi
push 0x40
push 0x1000
push dword [ebp - 0x14]
push 0
call dword [sym.imp.KERNEL32.dll_VirtualAlloc]
test eax, eax
jne 0x10119cd
push eax
call dword [sym.imp.KERNEL32.dll_Sleep]
cmp edi, 0x11
jb 0x1011828
and dword [ebp - 8], 0
cmp dword [ebp - 8], 0x10000
jb 0x1011865
test dword [ebp - 8], 3
je 0x101187f
cmp dword [ebp - 8], 0
je 0x101187b
push 0x8000
push 0
push dword [ebp - 8]
call dword [sym.imp.KERNEL32.dll_VirtualFree]
and dword [ebp - 8], 0
push ebx
call dword [sym.imp.KERNEL32.dll_SetLastError]
cmp dword [ebp - 8], 0
je 0x101177f
mov ecx, dword [ebp - 0x14]
mov eax, dword [ebp - 8]
test ecx, ecx
je 0x10118a1
mov byte [eax], 0
inc eax
dec ecx
jne 0x101189a
mov eax, 0x5ebc60c0
mov eax, dword [esi]
and eax, 7
lea ebx, [eax + esi + 8]
mov esi, dword [esi + 4]
and esi, 0xfffffff
mov eax, dword [0x102dddc]
lea edi, [esi + ebx]
mov dword [ebp - 0xc], ebx
sub eax, esi
lea ecx, [eax + 1]
sub dword [ebp - 0xc], 0x1000000
mov dword [ebp - 0x18], ebx
xor eax, eax
test ecx, ecx
mov dword [ebp - 0x1c], esi
mov dword [ebp - 0x30], edi
mov dword [ebp - 0x14], ecx
je 0x101190b
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 0x10118e1
xor edx, edx
div ecx
mov eax, dword [ebp - 8]
add eax, edx
push esi
push dword [ebp - 0xc]
mov dword [ebp - 0x10], eax
mov eax, 0xd2ac91ef
test esi, esi
mov eax, dword [edi]
mov dword [ebp - 0x48], eax
mov eax, dword [edi + 4]
pop ecx
pop ecx
mov dword [ebp - 0x44], eax
mov byte [ebp - 1], 0
jbe 0x1011e00
lea esi, [ebp - 0x48]
mov eax, 0x39e9fb28
mov edx, dword [ebp - 0x48]
mov eax, 0xfffffff
mov ecx, dword [0x100771c]
and edx, eax
mov esi, dword [ebp - 0x44]
and esi, eax
xor ebx, ebx
mov dword [ebp - 0x40], ebx
mov dword [ebp - 0x3c], ebx
mov eax, 0x1000000
add edx, eax
sub eax, ecx
mov dword [ebp - 0x24], eax
jne 0x10119d5
cmp esi, ebx
jbe 0x1011bca
mov edi, 0x6a74adea
movzx eax, byte [ebx + edx]
add eax, edi
add dword [ebp - 0x40], eax
add eax, dword [ebp - 0x3c]
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 - 0x40], eax
inc ebx
cmp ebx, esi
mov dword [ebp - 0x3c], eax
jb 0x1011979
jmp 0x1011bca
mov eax, dword [0x102dddc]
imul eax, edx
lea eax, [eax + 0x107f008]
mov dword [ebp - 8], eax
jmp 0x1011814
mov dword [ebp - 8], eax
jmp 0x1011853
mov edi, dword [0x100003c]
lea eax, [edx + esi]
lea edi, [edi + 0x10000a0]
mov ebx, 0x1000000
mov dword [ebp - 0x2c], eax
mov ecx, edx
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 - 0x5c], esi
mov dword [ebp - 0x58], ecx
mov esi, eax
add ebx, eax
mov dword [ebp - 0x54], ebx
cmp eax, ebx
je 0x1011a33
mov eax, dword [ebp - 0x14]
cmp dword [esi], eax
jae 0x1011a33
add esi, dword [esi + 4]
cmp esi, dword [ebp - 0x54]
jne 0x1011a24
and dword [ebp - 0x4c], 0
mov ecx, 0xfff
cmp esi, dword [ebp - 0x54]
je 0x1011a70
mov eax, dword [ebp - 0x14]
cmp dword [esi], eax
jne 0x1011a70
mov eax, dword [esi + 4]
sub eax, 8
shr eax, 1
je 0x1011a70
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 0x1011a70
inc dword [ebp - 0x4c]
add dword [ebp - 0x14], 2
cmp dword [ebp - 0x4c], eax
jne 0x1011a58
mov edi, 0x6a74adea
cmp esi, dword [ebp - 0x54]
je 0x1011b88
mov eax, dword [esi]
cmp eax, dword [ebp - 0x5c]
ja 0x1011b88
mov ebx, dword [ebp - 0x4c]
mov eax, dword [esi + 4]
add eax, 0xfffffff8
shr eax, 1
cmp ebx, eax
jne 0x1011ab3
add esi, dword [esi + 4]
cmp esi, dword [ebp - 0x54]
je 0x1011b88
mov eax, dword [ebp - 0x5c]
cmp dword [esi], eax
ja 0x1011b88
xor ebx, ebx
jmp 0x1011a8c
mov eax, dword [ebp - 0x5c]
cmp dword [esi], eax
jne 0x1011aca
movzx eax, word [esi + ebx*2 + 8]
and eax, ecx
cmp eax, dword [ebp - 0x58]
jae 0x1011b88
mov eax, ebx
inc ebx
mov dword [ebp - 0x4c], ebx
mov ebx, 0xf000
test word [esi + eax*2 + 8], bx
je 0x1011a75
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 0x1011b33
movzx eax, byte [ecx + edx]
add eax, edi
add dword [ebp - 0x40], eax
add eax, dword [ebp - 0x3c]
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 - 0x40], eax
inc ecx
mov dword [ebp - 0x3c], eax
cmp ecx, dword [ebp - 0x14]
jb 0x1011af9
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 - 0x40], eax
add eax, dword [ebp - 0x3c]
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 - 0x40], eax
mov dword [ebp - 0x3c], eax
inc ecx
cmp ecx, 4
jb 0x1011b40
mov ecx, 0xfff
lea edx, [ebx + 4]
jmp 0x1011a75
xor esi, esi
mov ebx, dword [ebp - 0x2c]
sub ebx, edx
je 0x1011bca
movzx eax, byte [esi + edx]
add eax, edi
add dword [ebp - 0x40], eax
add eax, dword [ebp - 0x3c]
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 - 0x40], eax
mov dword [ebp - 0x3c], eax
inc esi
cmp esi, ebx
jb 0x1011b91
xor eax, eax
mov ecx, eax
and ecx, 7
mov cl, byte [ebp + ecx - 0x40]
mov byte [ebp + eax - 0x38], cl
inc eax
cmp eax, 6
jb 0x1011bcc
mov eax, 0x7b0fdb1f
mov eax, dword [ebp - 0x1c]
mov esi, 0x100
or byte [ebp - 0x38], 1
or byte [ebp - 0x36], 1
or byte [ebp - 0x34], 1
or byte [ebp - 0x33], 1
dec eax
mov dword [ebp - 0x14], eax
je 0x1011d74
mov ecx, dword [ebp - 0x18]
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 0x1011cbf
movzx edi, byte [ebp - 0x35]
mov edx, dword [ebp - 8]
mov al, byte [edx]
mov cl, al
xor cl, byte [ebp - 0x35]
and cl, 1
mov byte [ebp - 2], cl
movzx eax, al
je 0x1011c4f
mov ebx, edi
shr ebx, 1
movzx ecx, byte [ebp - 0x36]
shr ecx, 1
xor ecx, ebx
mov ebx, eax
xor ebx, esi
sar ebx, 1
xor ecx, ebx
jmp 0x1011c55
mov ecx, eax
xor ecx, edi
shr ecx, 1
movzx edx, byte [edx - 1]
mov ebx, edx
xor ebx, ecx
test bl, 1
je 0x1011c96
cmp byte [ebp - 2], 0
je 0x1011c7a
movzx ecx, byte [ebp - 0x36]
shr ecx, 1
shr edi, 1
xor eax, esi
xor ecx, edi
sar eax, 1
xor ecx, eax
jmp 0x1011c80
xor eax, edi
shr eax, 1
mov ecx, eax
movzx eax, byte [ebp - 0x33]
shr eax, 1
xor edx, ecx
xor eax, 0x80
sar edx, 1
xor eax, edx
jmp 0x1011d58
cmp byte [ebp - 2], 0
je 0x1011cae
movzx ecx, byte [ebp - 0x36]
shr ecx, 1
shr edi, 1
xor eax, esi
xor ecx, edi
sar eax, 1
xor ecx, eax
jmp 0x1011cb4
xor eax, edi
shr eax, 1
mov ecx, eax
xor edx, ecx
sar edx, 1
mov eax, edx
jmp 0x1011d58
mov eax, dword [ebp - 8]
mov cl, byte [eax]
mov al, cl
xor al, byte [ebp - 0x37]
and al, 1
mov byte [ebp - 2], al
movzx eax, byte [ebp - 0x37]
movzx ecx, cl
je 0x1011ced
movzx edi, byte [ebp - 0x38]
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 0x1011cf3
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 0x1011d34
cmp byte [ebp - 2], 0
je 0x1011d1b
movzx edx, byte [ebp - 0x38]
shr edx, 1
shr eax, 1
xor ecx, esi
xor edx, eax
sar ecx, 1
xor edx, ecx
jmp 0x1011d21
xor eax, ecx
shr eax, 1
mov edx, eax
movzx eax, byte [ebp - 0x34]
shr eax, 1
xor ebx, edx
xor eax, 0x80
sar ebx, 1
xor eax, ebx
jmp 0x1011d58
cmp byte [ebp - 2], 0
je 0x1011d4c
movzx edx, byte [ebp - 0x38]
shr edx, 1
shr eax, 1
xor ecx, esi
xor edx, eax
sar ecx, 1
xor edx, ecx
jmp 0x1011d52
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 0x1011c16
mov eax, dword [ebp - 0x18]
mov cl, byte [eax]
mov bl, cl
xor bl, byte [ebp - 0x37]
movzx ecx, cl
movzx eax, byte [ebp - 0x37]
and bl, 1
je 0x1011da0
movzx edx, byte [ebp - 0x38]
mov edi, eax
shr edi, 1
shr edx, 1
xor edx, edi
mov edi, ecx
xor edi, esi
sar edi, 1
xor edx, edi
jmp 0x1011da6
mov edx, eax
xor edx, ecx
shr edx, 1
test dl, 1
je 0x1011dd1
test bl, bl
je 0x1011dc1
movzx edi, byte [ebp - 0x38]
shr edi, 1
shr eax, 1
xor ecx, esi
xor edi, eax
sar ecx, 1
xor edi, ecx
jmp 0x1011dc7
xor eax, ecx
shr eax, 1
mov edi, eax
movzx edx, byte [ebp - 0x34]
xor edx, edi
xor edx, esi
jmp 0x1011ded
test bl, bl
je 0x1011de7
movzx edx, byte [ebp - 0x38]
shr edx, 1
shr eax, 1
xor ecx, esi
xor edx, eax
sar ecx, 1
xor edx, ecx
jmp 0x1011ded
xor eax, ecx
shr eax, 1
mov edx, eax
sar edx, 1
mov ebx, dword [ebp - 0x18]
mov esi, dword [ebp - 0x1c]
mov edi, dword [ebp - 0x30]
mov eax, dword [ebp - 0x10]
xor byte [ebp - 1], dl
mov byte [eax], dl
mov al, byte [edi + 8]
xor al, byte [ebp - 1]
je 0x1011e91
call fcn.01035dac
mov edx, 0xfffff000
mov edi, eax
mov eax, dword [ebp - 0x20]
lea ecx, [eax + 0xc]
and ecx, 0xfffffffc
and edi, edx
mov dword [eax + 8], 0x1021023
lea esi, [ecx + 0xfff]
and esi, edx
xor eax, eax
mov edx, 0xffff
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 0x1011e39
mov ebx, 0xffff
div ebx
mov eax, ecx
mov dword [ebp - 0x70], edi
inc edx
mov dword [ebp - 0x60], edx
cmp ecx, esi
mov dword [ebp - 0x30], 0
jae 0x1011e87
mov ecx, dword [ebp - 0x30]
mov dword [eax], ecx
add eax, 4
cmp eax, esi
jb 0x1011e7b
mov eax, 0x1021023
jmp 0x1011f5e
mov ecx, 0x1000000
mov edx, dword [0x100771c]
mov eax, ebx
sub eax, dword [ebp - 0x10]
sub ecx, edx
mov dword [ebp - 0x18], eax
mov dword [ebp - 0x1c], ecx
jne 0x1011eb3
test eax, eax
je 0x1011f51
mov edi, dword [ebp - 0x10]
mov eax, dword [ebp - 0xc]
mov ecx, dword [0x101c5b0]
sub edi, ebx
add eax, esi
xor ebx, ebx
dec ecx
mov dword [ebp - 0x30], eax
js 0x1011ef3
lea eax, [ecx + ebx]
cdq
sub eax, edx
sar eax, 1
mov edx, dword [eax*4 + 0x101c5b4]
and edx, 0xfffffff
cmp dword [ebp - 0xc], edx
jae 0x1011eea
lea ecx, [eax - 1]
jmp 0x1011eef
jbe 0x1011ef7
lea ebx, [eax + 1]
cmp ecx, ebx
jge 0x1011ecb
mov esi, ebx
jmp 0x1011f49
mov esi, eax
jmp 0x1011f49
mov eax, dword [esi*4 + 0x101c5b4]
mov ecx, eax
and ecx, 0xfffffff
cmp ecx, dword [ebp - 0x30]
jae 0x1011f51
lea edx, [ecx + edi + 0x1000000]
mov ecx, eax
shl ecx, 2
sar ecx, 0x1e
sar eax, 0x1e
and ecx, 3
and eax, 3
xor ebx, ebx
dec ecx
je 0x1011f3c
dec ecx
je 0x1011f37
dec ecx
jne 0x1011f42
mov ebx, dword [ebp - 0x1c]
jmp 0x1011f42
mov ebx, dword [ebp - 0x18]
jmp 0x1011f42
mov ebx, dword [ebp - 0x1c]
sub ebx, dword [ebp - 0x18]
dec eax
dec eax
jne 0x1011f48
add dword [edx], ebx
inc esi
cmp esi, dword [0x101c5b0]
jb 0x1011efb
mov eax, dword [0x102dddc]
mov eax, 0x667ed2de
mov eax, dword [ebp - 0x10]
mov ecx, dword [ebp - 0x20]
mov dword [ecx + 8], eax
mov ebx, dword [ebp - 0x68]
mov ecx, dword [ebp - 0x60]
mov esi, dword [ebp - 0x64]
mov edx, dword [ebp - 0x70]
mov eax, dword [ebp - 0x74]
mov edi, dword [ebp - 0x6c]
mov esp, ebp
pop ebp
popfd
ret