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

Disassembly:
pushfd
push ebp
mov ebp, esp
sub esp, 0x8c
mov dword [ebp - 0x88], eax
mov dword [ebp - 0x78], ecx
lea eax, [ebp + 4]
mov dword [ebp - 0x80], edx
mov dword [ebp - 0x7c], ebx
mov dword [ebp - 0x84], esi
mov dword [ebp - 0x8c], edi
mov ebx, dword [eax + 4]
mov esi, dword [0x109dc84]
sub eax, 4
mov dword [ebp - 0x64], eax
mov eax, dword [ebx]
shr eax, 4
lea ecx, [esi + eax - 1]
mov eax, ecx
xor edx, edx
div esi
sub ecx, edx
mov eax, dword [0x109dc84]
mov dword [ebp - 0x2c], ecx
mov eax, dword [0x129bea8]
mov dword [ebp - 0x44], eax
mov eax, dword [0x109dc84]
mov eax, dword [0x129bea8]
test eax, eax
je 0x120805c
xor edi, edi
mov eax, dword [0x129bea8]
dec eax
lea ecx, [eax + 1]
mov edx, ecx
xor eax, eax
test ecx, ecx
je 0x1208019
mov esi, dword [0x1427a7c]
imul esi, esi, 0x343fd
add esi, 0x269ec3
mov dword [0x1427a7c], esi
shr esi, 0x10
shl eax, 0x10
or eax, esi
shr edx, 0x10
jne 0x1207ff4
xor edx, edx
div ecx
cmp dword [ebp - 0x44], 0
jbe 0x1208056
mov eax, 0x3bd7
inc edi
lea esi, [edx*4 + 0x1427d38]
mov ecx, 0xffffc428
lock cmpxchg dword [esi], ecx
cmp eax, 0x3bd7
je 0x12081ca
lea eax, [edx + 1]
xor edx, edx
mov ecx, dword [0x129bea8]
div ecx
cmp edi, dword [ebp - 0x44]
jb 0x1208023
xor edi, edi
test edi, edi
jne 0x12080d2
call dword [sym.imp.KERNEL32.dll_GetLastError]
mov esi, eax
xor edi, edi
inc edi
push 0x40
push 0x1000
push dword [ebp - 0x2c]
push 0
call dword [sym.imp.KERNEL32.dll_VirtualAlloc]
test eax, eax
jne 0x12081de
push eax
call dword [sym.imp.KERNEL32.dll_Sleep]
cmp edi, 0x11
jb 0x1208066
xor edi, edi
cmp dword [0x144656c], edi
ja 0x120809f
test edi, 3
je 0x12080b3
test edi, edi
je 0x12080b1
push 0x8000
push 0
push edi
call dword [sym.imp.KERNEL32.dll_VirtualFree]
xor edi, edi
push esi
call dword [sym.imp.KERNEL32.dll_SetLastError]
test edi, edi
je 0x1207fcb
mov eax, edi
mov ecx, dword [ebp - 0x2c]
test ecx, ecx
je 0x12080d2
mov byte [eax], 0
inc eax
dec ecx
jne 0x12080cb
mov eax, 0xfa3e044
mov eax, dword [ebx]
mov ecx, eax
shr ecx, 1
and ecx, 7
lea ecx, [ecx + ebx + 8]
shr eax, 4
lea ebx, [ecx + eax]
mov dword [ebp - 0x40], ecx
mov dword [ebp - 0x44], ecx
mov esi, 0x1000000
mov ecx, dword [0x109dc84]
sub ecx, eax
sub dword [ebp - 0x40], esi
inc ecx
mov dword [ebp - 0x4c], eax
mov dword [ebp - 0x48], ebx
mov dword [ebp - 0x2c], ecx
xor eax, eax
test ecx, ecx
je 0x1208136
mov edx, dword [0x1427a7c]
imul edx, edx, 0x343fd
add edx, 0x269ec3
mov dword [0x1427a7c], edx
shr edx, 0x10
shl eax, 0x10
or eax, edx
shr dword [ebp - 0x2c], 0x10
jne 0x1208110
xor edx, edx
div ecx
lea eax, [edx + edi]
push eax
push dword [ebp - 0x4c]
mov dword [ebp - 0x2c], eax
push dword [ebp - 0x40]
mov eax, 0xbdf986f7
lea eax, [ebp - 0x74]
mov edi, dword [ebx]
mov ebx, dword [ebx + 4]
push eax
mov dword [ebp - 0x74], edi
mov dword [ebp - 0x70], ebx
mov byte [ebp - 0xd], 0
mov eax, 0x44cf61a3
mov ecx, dword [0x13ca1e8]
mov eax, 0xfffffff
and dword [ebp - 0x20], 0
and dword [ebp - 0x1c], 0
and edi, eax
and ebx, eax
mov eax, esi
add esp, 0x10
add edi, esi
sub eax, ecx
mov dword [ebp - 0x18], eax
jne 0x12081e5
xor esi, esi
test ebx, ebx
jbe 0x12083a9
mov ecx, 0x65c64b23
movzx edx, byte [esi + edi]
add edx, ecx
add dword [ebp - 0x20], edx
add edx, dword [ebp - 0x1c]
mov eax, edx
imul eax, eax, 0x39e9
rol eax, 3
ror edx, 3
xor eax, edx
mov edx, ecx
mul edx
add eax, edx
add dword [ebp - 0x20], eax
inc esi
mov dword [ebp - 0x1c], eax
cmp esi, ebx
jb 0x1208198
jmp 0x12083a9
mov edi, dword [0x109dc84]
imul edi, edx
lea edi, [edi + section..data]
jmp 0x1208058
mov edi, eax
jmp 0x120808f
lea eax, [edi + ebx]
mov ecx, edi
mov edx, dword [0x100003c]
mov dword [ebp - 0x30], eax
lea edx, [edx + 0x10000a0]
mov eax, dword [edx]
mov edx, dword [edx + 4]
add eax, esi
sub ecx, esi
mov dword [ebp - 0x3c], edx
mov esi, ecx
mov edx, ecx
add ecx, ebx
mov ebx, ecx
and ebx, 0xfffff000
sub ecx, ebx
mov dword [ebp - 0x5c], ecx
and edx, 0xfffff000
mov ecx, dword [ebp - 0x3c]
sub esi, edx
add ecx, eax
cmp eax, ecx
mov dword [ebp - 0x34], esi
mov dword [ebp - 0x58], ecx
mov esi, eax
je 0x120823d
cmp dword [esi], edx
jae 0x120823d
add esi, dword [esi + 4]
cmp esi, dword [ebp - 0x58]
jne 0x1208231
and dword [ebp - 0x50], 0
cmp esi, dword [ebp - 0x58]
je 0x120826f
cmp dword [esi], edx
jne 0x120826f
mov eax, dword [esi + 4]
sub eax, 8
shr eax, 1
je 0x120826f
mov ecx, dword [ebp - 0x50]
movzx ecx, word [esi + ecx*2 + 8]
and ecx, 0xfff
cmp ecx, dword [ebp - 0x34]
jae 0x120826f
inc dword [ebp - 0x50]
cmp dword [ebp - 0x50], eax
jne 0x1208254
mov ecx, 0x65c64b23
cmp esi, dword [ebp - 0x58]
je 0x1208373
cmp dword [esi], ebx
ja 0x1208373
mov eax, dword [esi + 4]
lea edx, [eax - 8]
mov eax, dword [ebp - 0x50]
shr edx, 1
cmp eax, edx
jne 0x12082ae
add esi, dword [esi + 4]
cmp esi, dword [ebp - 0x58]
je 0x1208373
cmp dword [esi], ebx
ja 0x1208373
and dword [ebp - 0x50], 0
jmp 0x1208285
cmp dword [esi], ebx
jne 0x12082c5
movzx eax, word [esi + eax*2 + 8]
and eax, 0xfff
cmp eax, dword [ebp - 0x5c]
jae 0x1208373
mov eax, dword [ebp - 0x50]
inc dword [ebp - 0x50]
test word [esi + eax*2 + 8], 0xf000
je 0x1208274
movzx eax, word [esi + eax*2 + 8]
mov edx, dword [esi]
and dword [ebp - 0x24], 0
and eax, 0xfff
lea eax, [eax + edx + 0x1000000]
mov dword [ebp - 0x28], eax
sub dword [ebp - 0x28], edi
mov dword [ebp - 0x38], eax
je 0x120832c
mov eax, dword [ebp - 0x24]
movzx edx, byte [edi + eax]
add edx, ecx
add dword [ebp - 0x20], edx
add edx, dword [ebp - 0x1c]
mov eax, edx
imul eax, eax, 0x39e9
rol eax, 3
ror edx, 3
xor eax, edx
mov edx, ecx
mul edx
add eax, edx
add dword [ebp - 0x20], eax
inc dword [ebp - 0x24]
mov dword [ebp - 0x1c], eax
mov eax, dword [ebp - 0x24]
cmp eax, dword [ebp - 0x28]
jb 0x12082f6
mov eax, dword [ebp - 0x38]
mov eax, dword [eax]
sub eax, dword [ebp - 0x18]
xor edi, edi
mov dword [ebp - 0x68], eax
movzx edx, byte [ebp + edi - 0x68]
add edx, ecx
add dword [ebp - 0x20], edx
add edx, dword [ebp - 0x1c]
mov eax, edx
imul eax, eax, 0x39e9
rol eax, 3
ror edx, 3
xor eax, edx
mov edx, ecx
mul edx
add eax, edx
add dword [ebp - 0x20], eax
inc edi
cmp edi, 4
mov dword [ebp - 0x1c], eax
jb 0x1208339
mov edi, dword [ebp - 0x38]
add edi, 4
jmp 0x1208274
mov ebx, dword [ebp - 0x30]
xor esi, esi
sub ebx, edi
je 0x12083a9
movzx edx, byte [esi + edi]
add edx, ecx
add dword [ebp - 0x20], edx
add edx, dword [ebp - 0x1c]
mov eax, edx
imul eax, eax, 0x39e9
rol eax, 3
ror edx, 3
xor eax, edx
mov edx, ecx
mul edx
add eax, edx
add dword [ebp - 0x20], eax
mov dword [ebp - 0x1c], eax
inc esi
cmp esi, ebx
jb 0x120837c
xor ebx, ebx
xor eax, eax
mov ecx, eax
and ecx, 7
mov cl, byte [ebp + ecx - 0x20]
mov byte [ebp + eax - 0xc], cl
inc eax
cmp eax, 8
jb 0x12083ad
mov eax, 0x6354de3e
mov eax, dword [ebp - 0x2c]
mov edi, dword [ebp - 0x44]
mov dword [ebp - 0x30], eax
mov eax, dword [ebp - 0x4c]
and eax, 7
mov dword [ebp - 0x34], eax
je 0x1208580
cmp eax, ebx
mov esi, dword [ebp - 0x40]
mov dword [ebp - 0x24], ebx
not esi
mov dword [ebp - 0x28], ebx
mov dword [ebp - 0x14], ebx
jle 0x1208418
push 0x38
pop edx
cmp dword [ebp - 0x14], 4
movzx ebx, byte [edi]
jge 0x1208405
lea ecx, [edx - 0x20]
shl ebx, cl
or dword [ebp - 0x28], ebx
jmp 0x120840c
mov ecx, edx
shl ebx, cl
or dword [ebp - 0x24], ebx
inc edi
inc dword [ebp - 0x14]
sub edx, 8
cmp dword [ebp - 0x14], eax
jl 0x12083f2
movzx edx, word [ebp - 8]
mov ecx, dword [ebp - 0xc]
xor ecx, esi
mov eax, dword [ebp - 8]
sub eax, ecx
xor eax, dword [ebp - 0x40]
mov ebx, eax
ror ebx, 0xc
movzx ecx, word [ebp - 6]
sub ebx, ecx
imul ebx, edx
xor esi, ebx
mov dword [ebp - 0x18], esi
mov dword [ebp - 0x14], ecx
not esi
ror esi, 0xc
add esi, edx
imul esi, ecx
xor eax, esi
movzx esi, word [ebp - 0xa]
xor ecx, eax
imul ecx, esi
mov ebx, eax
ror ebx, 2
xor ebx, ecx
xor dword [ebp - 0x18], ebx
movzx ebx, word [ebp - 0xc]
mov ecx, dword [ebp - 0x18]
ror ecx, 8
xor ecx, ebx
imul ecx, edx
xor eax, ecx
mov ecx, dword [ebp - 0xc]
mov dword [ebp - 0x38], esi
mov esi, dword [ebp - 8]
xor esi, dword [ebp - 0xc]
mov dword [ebp - 0x3c], ebx
xor esi, dword [ebp - 0x18]
xor esi, eax
xor ecx, esi
rol ecx, 6
imul edx, ecx
mov ecx, esi
shr ecx, 9
sub edx, ecx
mov ecx, ebx
xor eax, edx
xor ecx, eax
mov edx, eax
imul ecx, dword [ebp - 0x38]
shr edx, 3
xor ecx, edx
xor esi, ecx
mov ecx, dword [ebp - 8]
mov edx, esi
add ecx, esi
rol ecx, 0xa
imul ebx, ecx
rol edx, 7
movzx ecx, word [ebp - 8]
add edx, ebx
xor eax, edx
mov ebx, eax
xor ecx, eax
mov edx, dword [ebp - 0x14]
rol ecx, 6
imul edx, ecx
rol ebx, 9
movzx ecx, word [ebp - 0xa]
add ebx, edx
xor esi, ebx
mov edx, esi
mov ebx, ecx
xor ebx, esi
movzx ecx, word [ebp - 8]
imul ebx, ecx
ror edx, 3
movzx ecx, word [ebp - 0xa]
sub ebx, edx
xor eax, ebx
mov edx, eax
sub edx, ecx
mov ecx, dword [ebp - 0x3c]
xor edx, dword [ebp - 8]
and dword [ebp - 0x14], 0
xor esi, edx
mov edx, esi
sub edx, dword [ebp - 8]
mov ebx, esi
xor esi, dword [ebp - 0x24]
ror edx, 0xb
imul ecx, edx
ror ebx, 0x10
sub ecx, ebx
xor ecx, dword [ebp - 0x28]
mov ebx, dword [ebp - 0x34]
xor eax, ecx
mov dword [ebp - 0x18], eax
mov ecx, esi
test ebx, ebx
jle 0x1208556
cmp dword [ebp - 0x14], 4
jge 0x120853d
rol dword [ebp - 0x18], 8
mov ebx, dword [ebp - 0x30]
mov dl, byte [ebp - 0x18]
inc dword [ebp - 0x30]
xor byte [ebp - 0xd], dl
mov byte [ebx], dl
jmp 0x120854b
mov edx, dword [ebp - 0x30]
inc dword [ebp - 0x30]
rol ecx, 8
xor byte [ebp - 0xd], cl
mov byte [edx], cl
inc dword [ebp - 0x14]
mov ebx, dword [ebp - 0x34]
cmp dword [ebp - 0x14], ebx
jl 0x1208523
add ebx, 0xfffffffc
test ebx, ebx
jle 0x120856d
push 4
pop ecx
sub ecx, ebx
shl ecx, 3
shr esi, cl
shl esi, cl
mov edx, esi
jmp 0x120858f
xor edx, edx
test ebx, ebx
jge 0x120858f
neg ebx
shl ebx, 3
mov ecx, ebx
shr eax, cl
shl eax, cl
jmp 0x120858f
xor edx, edx
mov eax, dword [ebp - 0x40]
mov dword [ebp - 0x28], eax
not eax
mov dword [ebp - 0x24], eax
xor eax, eax
mov ecx, dword [ebp - 0x4c]
shr ecx, 3
je 0x1208746
mov esi, dword [ebp - 8]
xor esi, dword [ebp - 0xc]
mov dword [ebp - 0x3c], ecx
mov dword [ebp - 0x6c], esi
movzx esi, word [ebp - 6]
mov dword [ebp - 0x14], esi
movzx esi, word [ebp - 0xa]
mov dword [ebp - 0x38], esi
movzx ebx, word [ebp - 8]
movzx esi, byte [edi + 2]
xor ecx, ecx
mov ch, byte [edi]
add edi, 8
mov cl, byte [edi - 7]
shl ecx, 8
or ecx, esi
shl ecx, 8
movzx esi, byte [edi - 5]
or ecx, esi
mov dword [ebp - 0x18], ecx
movzx esi, byte [edi - 2]
xor ecx, ecx
mov ch, byte [edi - 4]
mov cl, byte [edi - 3]
shl ecx, 8
or ecx, esi
shl ecx, 8
movzx esi, byte [edi - 1]
or ecx, esi
xor edx, ecx
mov esi, dword [ebp - 8]
mov dword [ebp - 0x34], ecx
mov ecx, dword [ebp - 0xc]
xor ecx, edx
sub esi, ecx
xor esi, dword [ebp - 0x18]
xor eax, esi
movzx ecx, word [ebp - 8]
mov esi, eax
ror esi, 0xc
sub esi, dword [ebp - 0x14]
imul esi, ecx
xor edx, esi
mov esi, edx
not esi
ror esi, 0xc
add esi, ecx
imul esi, dword [ebp - 0x14]
xor eax, esi
mov ecx, eax
mov esi, dword [ebp - 0x14]
xor esi, eax
imul esi, dword [ebp - 0x38]
ror ecx, 2
xor ecx, esi
xor edx, ecx
movzx esi, word [ebp - 0xc]
mov ecx, edx
ror ecx, 8
xor ecx, esi
imul ecx, ebx
xor eax, ecx
mov ecx, dword [ebp - 0x6c]
xor ecx, edx
xor ecx, eax
mov edx, ecx
mov ecx, dword [ebp - 0xc]
xor ecx, edx
rol ecx, 6
imul ebx, ecx
mov ecx, edx
shr ecx, 9
sub ebx, ecx
mov ecx, esi
xor eax, ebx
xor ecx, eax
imul ecx, dword [ebp - 0x38]
mov ebx, eax
shr ebx, 3
xor ecx, ebx
xor edx, ecx
mov ecx, dword [ebp - 8]
add ecx, edx
rol ecx, 0xa
imul esi, ecx
mov ebx, edx
rol ebx, 7
movzx ecx, word [ebp - 8]
add ebx, esi
xor eax, ebx
xor ecx, eax
mov ebx, dword [ebp - 0x14]
rol ecx, 6
mov esi, eax
imul ebx, ecx
rol esi, 9
add esi, ebx
mov ebx, dword [ebp - 0x38]
xor edx, esi
movzx ecx, word [ebp - 8]
mov esi, edx
xor ebx, edx
imul ebx, ecx
ror esi, 3
sub ebx, esi
movzx esi, word [ebp - 0xc]
xor eax, ebx
mov ecx, eax
sub ecx, dword [ebp - 0x38]
xor ecx, dword [ebp - 8]
xor edx, ecx
mov ecx, edx
sub ecx, dword [ebp - 8]
mov ebx, edx
xor edx, dword [ebp - 0x24]
ror ecx, 0xb
imul esi, ecx
mov cl, byte [ebp - 0xd]
ror ebx, 0x10
sub esi, ebx
xor esi, dword [ebp - 0x28]
xor eax, esi
xor cl, al
xor cl, dl
mov esi, dword [ebp - 0x30]
mov byte [esi + 3], al
ror eax, 8
xor cl, al
mov byte [esi + 7], dl
ror edx, 8
mov byte [esi + 2], al
mov byte [esi + 6], dl
xor cl, dl
ror eax, 8
xor cl, al
mov byte [esi + 1], al
ror edx, 8
xor cl, dl
ror eax, 8
mov byte [esi + 5], dl
ror edx, 8
mov bl, dl
xor bl, al
xor cl, bl
mov ebx, dword [ebp - 0x18]
mov byte [esi], al
mov byte [esi + 4], dl
mov dword [ebp - 0x28], ebx
mov ebx, dword [ebp - 0x34]
add esi, 8
dec dword [ebp - 0x3c]
mov byte [ebp - 0xd], cl
mov dword [ebp - 0x24], ebx
mov dword [ebp - 0x30], esi
ror eax, 8
ror edx, 8
jne 0x12085b5
jmp 0x1208749
mov cl, byte [ebp - 0xd]
mov eax, dword [ebp - 0x48]
cmp cl, byte [eax + 8]
je 0x12087da
call fcn.012a18fc
mov edx, dword [ebp - 0x64]
mov edi, eax
mov eax, 0xfffff000
lea ecx, [edx + 0xc]
mov dword [edx + 8], 0x103a6aa
and ecx, 0xfffffffc
mov edx, 0xffff
lea esi, [ecx + 0xfff]
and edi, eax
and esi, eax
xor eax, eax
mov ebx, dword [0x1427a7c]
imul ebx, ebx, 0x343fd
add ebx, 0x269ec3
mov dword [0x1427a7c], ebx
shr ebx, 0x10
shl eax, 0x10
or eax, ebx
shr edx, 0x10
jne 0x1208782
xor edx, edx
mov ebx, 0xffff
div ebx
inc edx
cmp ecx, esi
mov eax, ecx
mov dword [ebp - 0x80], edi
mov dword [ebp - 0x78], edx
mov dword [ebp - 0x48], 0
jae 0x12087d0
mov ecx, dword [ebp - 0x48]
mov dword [eax], ecx
add eax, 4
cmp eax, esi
jb 0x12087c4
mov eax, 0x103a6aa
jmp 0x12088ab
mov ecx, 0x1000000
mov edx, dword [0x13ca1e8]
mov eax, dword [ebp - 0x44]
sub eax, dword [ebp - 0x2c]
mov dword [ebp - 0x34], eax
sub ecx, edx
mov dword [ebp - 0x3c], ecx
jne 0x12087fd
test eax, eax
je 0x120889e
mov esi, dword [ebp - 0x2c]
mov ecx, dword [0x1236cc0]
mov eax, dword [ebp - 0x4c]
mov ebx, dword [ebp - 0x40]
sub esi, dword [ebp - 0x44]
add eax, ebx
xor edi, edi
dec ecx
mov dword [ebp - 0x48], eax
js 0x1208840
lea eax, [edi + ecx]
cdq
sub eax, edx
sar eax, 1
mov edx, dword [eax*4 + 0x1236cc4]
and edx, 0xfffffff
cmp ebx, edx
jae 0x1208837
lea ecx, [eax - 1]
jmp 0x120883c
jbe 0x1208844
lea edi, [eax + 1]
cmp ecx, edi
jge 0x1208819
mov ebx, edi
jmp 0x1208896
mov ebx, eax
jmp 0x1208896
mov eax, dword [ebx*4 + 0x1236cc4]
mov ecx, eax
and ecx, 0xfffffff
cmp ecx, dword [ebp - 0x48]
jae 0x120889e
lea edi, [ecx + esi + 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 0x1208889
dec ecx
je 0x1208884
dec ecx
jne 0x120888f
mov edx, dword [ebp - 0x3c]
jmp 0x120888f
mov edx, dword [ebp - 0x34]
jmp 0x120888f
mov edx, dword [ebp - 0x3c]
sub edx, dword [ebp - 0x34]
dec eax
dec eax
jne 0x1208895
add dword [edi], edx
inc ebx
cmp ebx, dword [0x1236cc0]
jb 0x1208848
mov eax, dword [0x109dc84]
mov eax, 0x5d3fe471
mov eax, dword [ebp - 0x2c]
mov ecx, dword [ebp - 0x64]
mov dword [ecx + 8], eax
mov edi, dword [ebp - 0x8c]
mov esi, dword [ebp - 0x84]
mov ebx, dword [ebp - 0x7c]
mov eax, dword [ebp - 0x88]
mov ecx, dword [ebp - 0x78]
mov edx, dword [ebp - 0x80]
mov esp, ebp
pop ebp
popfd
ret