Function at 0x102141a
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
lea eax, [ebp + 4]
mov dword [ebp - 0x60], ecx
mov dword [ebp - 0x70], edx
mov dword [ebp - 0x68], ebx
mov dword [ebp - 0x64], esi
mov dword [ebp - 0x6c], edi
mov edi, dword [eax + 4]
sub eax, 4
mov esi, dword [0x102dddc]
mov dword [ebp - 0x20], eax
mov eax, dword [edi]
shr eax, 4
xor edx, edx
lea ecx, [esi + eax - 1]
mov eax, ecx
div esi
sub ecx, edx
mov eax, dword [0x102dddc]
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 0x10214fc
xor esi, esi
mov eax, dword [0x101da18]
dec eax
lea ecx, [eax + 1]
mov edx, ecx
xor eax, eax
test ecx, ecx
je 0x10214b1
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 0x102148a
xor edx, edx
div ecx
cmp dword [ebp - 0x18], 0
jbe 0x10214ee
lea ebx, [edx*4 + 0x1088fa0]
mov eax, 0xd1a4
mov ecx, 0xffff2e5b
inc esi
lock cmpxchg dword [ebx], ecx
cmp eax, 0xd1a4
je 0x1021689
lea eax, [edx + 1]
mov ecx, dword [0x101da18]
xor edx, edx
div ecx
cmp esi, dword [ebp - 0x18]
jb 0x10214bb
and dword [ebp - 8], 0
cmp dword [ebp - 8], 0
jne 0x102157f
call dword [sym.imp.KERNEL32.dll_GetLastError]
mov ebx, eax
xor esi, esi
push 0x40
push 0x1000
push dword [ebp - 0x14]
inc esi
push 0
call dword [sym.imp.KERNEL32.dll_VirtualAlloc]
test eax, eax
jne 0x102169f
push eax
call dword [sym.imp.KERNEL32.dll_Sleep]
cmp esi, 0x11
jb 0x1021506
and dword [ebp - 8], 0
cmp dword [ebp - 8], 0x10000
jb 0x1021543
test dword [ebp - 8], 3
je 0x102155d
cmp dword [ebp - 8], 0
je 0x1021559
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 0x102145d
mov ecx, dword [ebp - 0x14]
mov eax, dword [ebp - 8]
test ecx, ecx
je 0x102157f
mov byte [eax], 0
inc eax
dec ecx
jne 0x1021578
mov eax, 0xdcb894e1
mov eax, dword [edi]
mov ecx, eax
shr ecx, 1
shr eax, 4
and ecx, 7
lea ebx, [ecx + edi + 8]
mov edi, eax
mov eax, dword [0x102dddc]
mov dword [ebp - 0xc], ebx
sub eax, edi
lea ecx, [eax + 1]
lea esi, [ebx + edi]
sub dword [ebp - 0xc], 0x1000000
mov dword [ebp - 0x18], ebx
mov dword [ebp - 0x1c], edi
xor eax, eax
mov dword [ebp - 0x30], esi
test ecx, ecx
mov dword [ebp - 0x14], ecx
je 0x10215e9
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 0x10215bf
xor edx, edx
div ecx
mov eax, dword [ebp - 8]
push edi
push dword [ebp - 0xc]
add eax, edx
mov dword [ebp - 0x10], eax
mov eax, 0xbf672cc9
test edi, edi
mov eax, dword [esi]
mov dword [ebp - 0x48], eax
mov eax, dword [esi + 4]
pop ecx
pop ecx
mov dword [ebp - 0x44], eax
mov byte [ebp - 1], 0
jbe 0x1021aa4
lea esi, [ebp - 0x48]
mov eax, 0x747c4d56
mov eax, 0xfffffff
mov esi, dword [ebp - 0x48]
mov edi, dword [ebp - 0x44]
and esi, eax
and edi, eax
mov eax, 0x1000000
mov ecx, dword [0x100771c]
xor ebx, ebx
mov dword [ebp - 0x40], ebx
add esi, eax
sub eax, ecx
mov dword [ebp - 0x3c], ebx
mov dword [ebp - 0x24], eax
jne 0x10216a7
cmp edi, ebx
jbe 0x102186e
mov ecx, 0x54594da6
movzx eax, byte [ebx + esi]
mov edx, ecx
add eax, ecx
add dword [ebp - 0x40], eax
add eax, dword [ebp - 0x3c]
mul edx
add eax, edx
mov edx, eax
imul edx, edx, 0xa77f
rol edx, 6
ror eax, 6
xor edx, eax
add dword [ebp - 0x40], edx
inc ebx
mov dword [ebp - 0x3c], edx
cmp ebx, edi
jb 0x1021657
jmp 0x102186e
mov eax, dword [0x102dddc]
imul eax, edx
lea eax, [eax + 0x107f008]
mov dword [ebp - 8], eax
jmp 0x10214f2
mov dword [ebp - 8], eax
jmp 0x1021531
mov ebx, 0x1000000
mov ecx, esi
lea eax, [edi + esi]
mov edx, dword [0x100003c]
lea edx, [edx + 0x10000a0]
mov dword [ebp - 0x2c], eax
mov eax, dword [edx]
add eax, ebx
sub ecx, ebx
mov ebx, dword [edx + 4]
mov edx, ecx
and edx, 0xfffff000
mov dword [ebp - 0x14], edx
mov edx, ecx
sub edx, dword [ebp - 0x14]
add ecx, edi
mov edi, ecx
and edi, 0xfffff000
mov dword [ebp - 0x5c], edi
sub ecx, edi
mov dword [ebp - 0x58], ecx
mov edi, eax
add ebx, eax
mov dword [ebp - 0x54], ebx
cmp eax, ebx
je 0x1021705
mov eax, dword [ebp - 0x14]
cmp dword [edi], eax
jae 0x1021705
add edi, dword [edi + 4]
cmp edi, dword [ebp - 0x54]
jne 0x10216f6
and dword [ebp - 0x4c], 0
cmp edi, dword [ebp - 0x54]
je 0x1021739
mov eax, dword [ebp - 0x14]
cmp dword [edi], eax
jne 0x1021739
mov ecx, dword [edi + 4]
sub ecx, 8
shr ecx, 1
je 0x1021739
lea eax, [edi + 8]
movzx ebx, word [eax]
and ebx, 0xfff
cmp ebx, edx
jae 0x1021739
inc dword [ebp - 0x4c]
inc eax
inc eax
cmp dword [ebp - 0x4c], ecx
jne 0x1021722
mov ecx, 0x54594da6
mov edx, dword [ebp - 0x5c]
cmp edi, dword [ebp - 0x54]
je 0x1021838
cmp dword [edi], edx
ja 0x1021838
mov eax, dword [edi + 4]
lea ebx, [eax - 8]
shr ebx, 1
cmp dword [ebp - 0x4c], ebx
jne 0x1021778
add edi, eax
cmp edi, dword [ebp - 0x54]
je 0x1021838
cmp dword [edi], edx
ja 0x1021838
and dword [ebp - 0x4c], 0
jmp 0x1021752
cmp dword [edi], edx
jne 0x1021792
mov eax, dword [ebp - 0x4c]
movzx eax, word [edi + eax*2 + 8]
and eax, 0xfff
cmp eax, dword [ebp - 0x58]
jae 0x1021838
mov eax, dword [ebp - 0x4c]
inc dword [ebp - 0x4c]
mov ebx, 0xf000
test word [edi + eax*2 + 8], bx
je 0x1021741
movzx eax, word [edi + eax*2 + 8]
mov edx, dword [edi]
and eax, 0xfff
lea eax, [eax + edx + 0x1000000]
xor ebx, ebx
mov dword [ebp - 0x14], eax
sub dword [ebp - 0x14], esi
mov dword [ebp - 8], eax
je 0x10217f4
movzx eax, byte [ebx + esi]
mov edx, ecx
add eax, ecx
add dword [ebp - 0x40], eax
add eax, dword [ebp - 0x3c]
mul edx
add eax, edx
mov edx, eax
imul edx, edx, 0xa77f
rol edx, 6
ror eax, 6
xor edx, eax
mov eax, edx
add dword [ebp - 0x40], eax
mov dword [ebp - 0x3c], edx
inc ebx
cmp ebx, dword [ebp - 0x14]
jb 0x10217c4
mov esi, dword [ebp - 8]
mov eax, dword [esi]
sub eax, dword [ebp - 0x24]
xor ebx, ebx
mov dword [ebp - 0x28], eax
movzx eax, byte [ebp + ebx - 0x28]
add eax, ecx
add dword [ebp - 0x40], eax
mov edx, ecx
add eax, dword [ebp - 0x3c]
mul edx
add eax, edx
mov edx, eax
imul edx, edx, 0xa77f
rol edx, 6
ror eax, 6
xor edx, eax
add dword [ebp - 0x40], edx
inc ebx
mov dword [ebp - 0x3c], edx
cmp ebx, 4
jb 0x1021801
add esi, 4
jmp 0x102173e
xor edi, edi
mov ebx, dword [ebp - 0x2c]
sub ebx, esi
je 0x102186e
mov edx, ecx
movzx eax, byte [edi + esi]
add eax, ecx
add dword [ebp - 0x40], eax
add eax, dword [ebp - 0x3c]
mul edx
add eax, edx
mov edx, eax
imul edx, edx, 0xa77f
rol edx, 6
ror eax, 6
xor edx, eax
add dword [ebp - 0x40], edx
inc edi
cmp edi, ebx
mov dword [ebp - 0x3c], edx
jb 0x1021841
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 0x1021870
mov eax, 0xcff54912
mov eax, dword [ebp - 0x1c]
or byte [ebp - 0x38], 1
mov esi, 0x100
or byte [ebp - 0x36], 1
or byte [ebp - 0x34], 1
or byte [ebp - 0x33], 1
dec eax
mov dword [ebp - 0x14], eax
je 0x1021a18
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 0x1021963
mov edx, dword [ebp - 8]
mov al, byte [edx]
movzx edi, byte [ebp - 0x35]
mov cl, al
xor cl, byte [ebp - 0x35]
and cl, 1
movzx eax, al
mov byte [ebp - 2], cl
je 0x10218f3
mov ebx, edi
movzx ecx, byte [ebp - 0x36]
shr ebx, 1
shr ecx, 1
xor ecx, ebx
mov ebx, eax
xor ebx, esi
sar ebx, 1
xor ecx, ebx
jmp 0x10218f9
mov ecx, eax
xor ecx, edi
shr ecx, 1
movzx edx, byte [edx - 1]
mov ebx, edx
xor ebx, ecx
test bl, 1
je 0x102193a
cmp byte [ebp - 2], 0
je 0x102191e
movzx ecx, byte [ebp - 0x36]
shr ecx, 1
shr edi, 1
xor eax, esi
xor ecx, edi
sar eax, 1
xor ecx, eax
jmp 0x1021924
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 0x10219fc
cmp byte [ebp - 2], 0
je 0x1021952
movzx ecx, byte [ebp - 0x36]
shr ecx, 1
shr edi, 1
xor eax, esi
xor ecx, edi
sar eax, 1
xor ecx, eax
jmp 0x1021958
xor eax, edi
shr eax, 1
mov ecx, eax
xor edx, ecx
sar edx, 1
mov eax, edx
jmp 0x10219fc
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 0x1021991
mov edx, eax
shr edx, 1
movzx edi, byte [ebp - 0x38]
shr edi, 1
xor edi, edx
mov edx, ecx
xor edx, esi
sar edx, 1
xor edi, edx
jmp 0x1021997
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 0x10219d8
cmp byte [ebp - 2], 0
je 0x10219bf
movzx edx, byte [ebp - 0x38]
shr edx, 1
shr eax, 1
xor ecx, esi
xor edx, eax
sar ecx, 1
xor edx, ecx
jmp 0x10219c5
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 0x10219fc
cmp byte [ebp - 2], 0
je 0x10219f0
movzx edx, byte [ebp - 0x38]
shr edx, 1
shr eax, 1
xor ecx, esi
xor edx, eax
sar ecx, 1
xor edx, ecx
jmp 0x10219f6
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 0x10218ba
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 0x1021a44
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 0x1021a4a
mov edx, eax
xor edx, ecx
shr edx, 1
test dl, 1
je 0x1021a75
test bl, bl
je 0x1021a65
movzx edi, byte [ebp - 0x38]
shr edi, 1
shr eax, 1
xor ecx, esi
xor edi, eax
sar ecx, 1
xor edi, ecx
jmp 0x1021a6b
xor eax, ecx
shr eax, 1
mov edi, eax
movzx edx, byte [ebp - 0x34]
xor edx, edi
xor edx, esi
jmp 0x1021a91
test bl, bl
je 0x1021a8b
movzx edx, byte [ebp - 0x38]
shr edx, 1
shr eax, 1
xor ecx, esi
xor edx, eax
sar ecx, 1
xor edx, ecx
jmp 0x1021a91
xor eax, ecx
shr eax, 1
mov edx, eax
mov esi, dword [ebp - 0x30]
mov edi, dword [ebp - 0x1c]
mov ebx, dword [ebp - 0x18]
mov eax, dword [ebp - 0x10]
sar edx, 1
xor byte [ebp - 1], dl
mov byte [eax], dl
mov al, byte [esi + 8]
xor al, byte [ebp - 1]
je 0x1021b35
call fcn.01035dac
mov edx, 0xfffff000
mov edi, eax
mov eax, dword [ebp - 0x20]
mov dword [eax + 8], 0x1021023
lea ecx, [eax + 0xc]
and ecx, 0xfffffffc
lea esi, [ecx + 0xfff]
and edi, edx
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 0x1021add
mov ebx, 0xffff
div ebx
mov eax, ecx
inc edx
cmp ecx, esi
mov dword [ebp - 0x70], edi
mov dword [ebp - 0x60], edx
mov dword [ebp - 0x30], 0
jae 0x1021b2b
mov ecx, dword [ebp - 0x30]
mov dword [eax], ecx
add eax, 4
cmp eax, esi
jb 0x1021b1f
mov eax, 0x1021023
jmp 0x1021c02
mov edx, dword [0x100771c]
mov eax, ebx
sub eax, dword [ebp - 0x10]
mov ecx, 0x1000000
mov dword [ebp - 0x18], eax
sub ecx, edx
mov dword [ebp - 0x1c], ecx
jne 0x1021b57
test eax, eax
je 0x1021bf5
mov ecx, dword [0x101c5b0]
mov esi, dword [ebp - 0x10]
sub esi, ebx
mov eax, dword [ebp - 0xc]
add eax, edi
xor ebx, ebx
dec ecx
mov dword [ebp - 0x30], eax
js 0x1021b97
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 0x1021b8e
lea ecx, [eax - 1]
jmp 0x1021b93
jbe 0x1021b9b
lea ebx, [eax + 1]
cmp ecx, ebx
jge 0x1021b6f
mov edi, ebx
jmp 0x1021bed
mov edi, eax
jmp 0x1021bed
mov eax, dword [edi*4 + 0x101c5b4]
mov ecx, eax
and ecx, 0xfffffff
cmp ecx, dword [ebp - 0x30]
jae 0x1021bf5
lea edx, [ecx + esi + 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 0x1021be0
dec ecx
je 0x1021bdb
dec ecx
jne 0x1021be6
mov ebx, dword [ebp - 0x1c]
jmp 0x1021be6
mov ebx, dword [ebp - 0x18]
jmp 0x1021be6
mov ebx, dword [ebp - 0x1c]
sub ebx, dword [ebp - 0x18]
dec eax
dec eax
jne 0x1021bec
add dword [edx], ebx
inc edi
cmp edi, dword [0x101c5b0]
jb 0x1021b9f
mov eax, dword [0x102dddc]
mov eax, 0x8eb41ead
mov eax, dword [ebp - 0x10]
mov ecx, dword [ebp - 0x20]
mov dword [ecx + 8], eax
mov edx, dword [ebp - 0x70]
mov esi, dword [ebp - 0x64]
mov ecx, dword [ebp - 0x60]
mov edi, dword [ebp - 0x6c]
mov ebx, dword [ebp - 0x68]
mov eax, dword [ebp - 0x74]
mov esp, ebp
pop ebp
popfd
ret