Function at 0x4cea50
Capabilities:
Encode data using xor

Disassembly:
push ebp
mov ebp, esp
sub esp, 0xe0
push ebx
push esi
push edi
mov dword [ebp - 0x48], ecx
mov ecx, 7
mov esi, 0x4eee58
lea edi, [ebp - 0xc0]
rep movsd dword es:[edi], dword [esi]
mov eax, 0xc
xor ebx, ebx
jmp 0x4cea80
mov cx, word [ebp + eax*2 - 0xc2]
xor word [ebp + eax*2 - 0xc0], cx
dec eax
cmp eax, ebx
jg 0x4cea80
mov esi, dword [sym.imp.OLEAUT32.dll_SysReAllocString]
lea eax, [ebp - 0xc0]
mov edx, 0x4a52
xor word [ebp - 0xc0], dx
push eax
call esi
mov ecx, dword [str.3_vA_v__vE_v1_vT_v]
mov edx, dword [0x4eee4c]
mov dword [ebp - 0x40], eax
mov eax, dword [0x4eee50]
mov dword [ebp - 0x5c], ecx
mov cx, word [0x4eee54]
mov dword [ebp - 0x54], eax
mov dword [ebp - 0x58], edx
mov word [ebp - 0x50], cx
mov eax, 5
lea ecx, [ecx]
mov dx, word [ebp + eax*2 - 0x5e]
xor word [ebp + eax*2 - 0x5c], dx
dec eax
cmp eax, ebx
jg 0x4ceae0
lea ecx, [ebp - 0x5c]
mov eax, 0xb70
xor word [ebp - 0x5c], ax
push ecx
call esi
mov edx, dword [ebp - 0x48]
mov edi, eax
mov eax, dword [edx + 4]
push ebx
lea edx, [ebp - 0x3c]
push edx
mov edx, dword [ebp - 0x40]
push ebx
push ebx
mov dword [ebp - 0x3c], ebx
mov dword [ebp - 0x38], ebx
mov dword [ebp - 0x4c], ebx
mov dword [ebp - 4], ebx
mov ecx, dword [eax]
push edx
push eax
mov eax, dword [ecx + 0x18]
mov dword [ebp - 0x44], edi
call eax
mov esi, eax
cmp esi, ebx
jl 0x4cf2a6
mov eax, dword [ebp - 0x3c]
mov ecx, dword [eax]
push ebx
lea edx, [ebp - 0x38]
push edx
push ebx
push edi
push eax
mov eax, dword [ecx + 0x4c]
call eax
mov esi, eax
cmp esi, ebx
jl 0x4cf2a6
mov eax, dword [ebp - 0x38]
mov ecx, dword [eax]
lea edx, [ebp - 4]
push edx
push ebx
push eax
mov eax, dword [ecx + 0x3c]
call eax
mov esi, eax
cmp esi, ebx
jl 0x4cf2a6
mov ecx, 0xb
mov word [ebp - 0x14], cx
xor edx, edx
mov ecx, 8
mov esi, 0x4eee28
lea edi, [ebp - 0xe0]
mov word [ebp - 0xc], dx
rep movsd dword es:[edi], dword [esi]
mov eax, 0xe
mov edi, edi
mov cx, word [ebp + eax*2 - 0xe2]
xor word [ebp + eax*2 - 0xe0], cx
dec eax
cmp eax, ebx
jg 0x4ceb90
mov eax, dword [ebp - 4]
mov edx, 0x6758
xor word [ebp - 0xe0], dx
mov ecx, dword [eax]
push ebx
lea edx, [ebp - 0x14]
push edx
push ebx
lea edx, [ebp - 0xe0]
push edx
push eax
mov eax, dword [ecx + 0x14]
call eax
mov esi, eax
cmp esi, ebx
jl 0x4cf2a6
mov eax, dword [ebp + 0xc]
cmp eax, ebx
je 0x4cecb7
mov ecx, 8
mov word [ebp - 0x14], cx
push eax
lea ecx, [ebp + 0xc]
call fcn.004c7396
mov eax, dword [eax]
cmp eax, ebx
je 0x4cebfd
mov edx, dword [eax]
mov dword [ebp - 0xc], edx
jmp 0x4cec00
mov dword [ebp - 0xc], ebx
mov esi, dword [ebp + 0xc]
cmp esi, ebx
je 0x4cec3f
lea eax, [esi + 8]
push eax
call dword [sym.imp.KERNEL32.dll_InterlockedDecrement]
test eax, eax
jne 0x4cec3f
cmp esi, ebx
je 0x4cec3f
mov eax, dword [esi]
cmp eax, ebx
je 0x4cec26
push eax
call dword [sym.imp.OLEAUT32.dll_SysStringLen]
mov eax, dword [esi + 4]
cmp eax, ebx
je 0x4cec36
push eax
call fcn.004b3716
add esp, 4
push esi
call fcn.004b3716
add esp, 4
mov eax, dword [0x4eee18]
mov ecx, dword [0x4eee10]
mov edx, dword [0x4eee14]
mov dword [ebp - 0x28], eax
mov eax, dword [0x4eee24]
mov dword [ebp - 0x30], ecx
mov ecx, dword [0x4eee1c]
mov dword [ebp - 0x2c], edx
mov edx, dword [0x4eee20]
mov dword [ebp - 0x1c], eax
mov dword [ebp - 0x24], ecx
mov dword [ebp - 0x20], edx
mov eax, 0xa
jmp 0x4cec80
mov cx, word [ebp + eax*2 - 0x32]
xor word [ebp + eax*2 - 0x30], cx
dec eax
cmp eax, ebx
jg 0x4cec80
mov eax, dword [ebp - 4]
mov edx, 0x78c4
xor word [ebp - 0x30], dx
mov ecx, dword [eax]
push ebx
lea edx, [ebp - 0x14]
push edx
push ebx
lea edx, [ebp - 0x30]
push edx
push eax
mov eax, dword [ecx + 0x14]
call eax
mov esi, eax
cmp esi, ebx
jl 0x4cf2a6
mov edx, dword [ebp + 0x18]
mov ecx, 3
mov word [ebp - 0x14], cx
mov ecx, 6
mov esi, 0x4eedf4
lea edi, [ebp - 0xa4]
rep movsd dword es:[edi], dword [esi]
mov dword [ebp - 0xc], edx
movsw word es:[edi], word [esi]
mov eax, 0xb
nop
mov cx, word [ebp + eax*2 - 0xa6]
xor word [ebp + eax*2 - 0xa4], cx
dec eax
cmp eax, ebx
jg 0x4cece0
mov eax, dword [ebp - 4]
mov edx, 0xc44
xor word [ebp - 0xa4], dx
mov ecx, dword [eax]
push ebx
lea edx, [ebp - 0x14]
push edx
push ebx
lea edx, [ebp - 0xa4]
push edx
push eax
mov eax, dword [ecx + 0x14]
call eax
mov esi, eax
cmp esi, ebx
jl 0x4cf2a6
mov eax, dword [ebp + 0x20]
cmp eax, ebx
je 0x4ceddc
mov ecx, 8
mov word [ebp - 0x14], cx
push eax
lea ecx, [ebp + 0xc]
call fcn.004c7396
mov eax, dword [eax]
cmp eax, ebx
je 0x4ced4d
mov edx, dword [eax]
mov dword [ebp - 0xc], edx
jmp 0x4ced50
mov dword [ebp - 0xc], ebx
mov esi, dword [ebp + 0xc]
cmp esi, ebx
je 0x4ced8f
lea eax, [esi + 8]
push eax
call dword [sym.imp.KERNEL32.dll_InterlockedDecrement]
test eax, eax
jne 0x4ced8f
cmp esi, ebx
je 0x4ced8f
mov eax, dword [esi]
cmp eax, ebx
je 0x4ced76
push eax
call dword [sym.imp.OLEAUT32.dll_SysStringLen]
mov eax, dword [esi + 4]
cmp eax, ebx
je 0x4ced86
push eax
call fcn.004b3716
add esp, 4
push esi
call fcn.004b3716
add esp, 4
mov ecx, 7
mov esi, 0x4eedd4
lea edi, [ebp - 0x34]
rep movsd dword es:[edi], dword [esi]
movsw word es:[edi], word [esi]
mov eax, 0xd
mov cx, word [ebp + eax*2 - 0x36]
xor word [ebp + eax*2 - 0x34], cx
dec eax
cmp eax, ebx
jg 0x4ceda5
mov eax, dword [ebp - 4]
mov edx, 0x14e9
xor word [ebp - 0x34], dx
mov ecx, dword [eax]
push ebx
lea edx, [ebp - 0x14]
push edx
push ebx
lea edx, [ebp - 0x34]
push edx
push eax
mov eax, dword [ecx + 0x14]
call eax
mov esi, eax
cmp esi, ebx
jl 0x4cf2a6
mov eax, dword [ebp + 8]
cmp eax, ebx
je 0x4ceea7
mov ecx, 8
mov word [ebp - 0x14], cx
push eax
lea ecx, [ebp + 0xc]
call fcn.004c7396
mov eax, dword [eax]
cmp eax, ebx
je 0x4cee06
mov edx, dword [eax]
mov dword [ebp - 0xc], edx
jmp 0x4cee09
mov dword [ebp - 0xc], ebx
mov esi, dword [ebp + 0xc]
cmp esi, ebx
je 0x4cee48
lea eax, [esi + 8]
push eax
call dword [sym.imp.KERNEL32.dll_InterlockedDecrement]
test eax, eax
jne 0x4cee48
cmp esi, ebx
je 0x4cee48
mov eax, dword [esi]
cmp eax, ebx
je 0x4cee2f
push eax
call dword [sym.imp.OLEAUT32.dll_SysStringLen]
mov eax, dword [esi + 4]
cmp eax, ebx
je 0x4cee3f
push eax
call fcn.004b3716
add esp, 4
push esi
call fcn.004b3716
add esp, 4
mov ax, word [0x4eedd0]
mov ecx, dword [0x4eedc8]
mov edx, dword [0x4eedcc]
mov word [ebp - 0x18], ax
mov dword [ebp - 0x20], ecx
mov dword [ebp - 0x1c], edx
mov eax, 3
lea esp, [esp]
mov cx, word [ebp + eax*2 - 0x22]
xor word [ebp + eax*2 - 0x20], cx
dec eax
cmp eax, ebx
jg 0x4cee70
mov eax, dword [ebp - 4]
mov edx, 0x223d
xor word [ebp - 0x20], dx
mov ecx, dword [eax]
push ebx
lea edx, [ebp - 0x14]
push edx
push ebx
lea edx, [ebp - 0x20]
push edx
push eax
mov eax, dword [ecx + 0x14]
call eax
mov esi, eax
cmp esi, ebx
jl 0x4cf2a6
mov eax, dword [ebp + 0x1c]
cmp eax, ebx
je 0x4cef87
mov ecx, 8
mov word [ebp - 0x14], cx
push eax
lea ecx, [ebp + 0xc]
call fcn.004c7396
mov eax, dword [eax]
cmp eax, ebx
je 0x4ceed1
mov edx, dword [eax]
mov dword [ebp - 0xc], edx
jmp 0x4ceed4
mov dword [ebp - 0xc], ebx
mov esi, dword [ebp + 0xc]
cmp esi, ebx
je 0x4cef13
lea eax, [esi + 8]
push eax
call dword [sym.imp.KERNEL32.dll_InterlockedDecrement]
test eax, eax
jne 0x4cef13
cmp esi, ebx
je 0x4cef13
mov eax, dword [esi]
cmp eax, ebx
je 0x4ceefa
push eax
call dword [sym.imp.OLEAUT32.dll_SysStringLen]
mov eax, dword [esi + 4]
cmp eax, ebx
je 0x4cef0a
push eax
call fcn.004b3716
add esp, 4
push esi
call fcn.004b3716
add esp, 4
mov ecx, dword [str.:r_r_rGr_trhr]
mov edx, dword [0x4eedb8]
mov eax, dword [0x4eedbc]
mov dword [ebp - 0x28], ecx
mov ecx, dword [0x4eedc0]
mov dword [ebp - 0x24], edx
mov dx, word [0x4eedc4]
mov dword [ebp - 0x20], eax
mov dword [ebp - 0x1c], ecx
mov word [ebp - 0x18], dx
mov eax, 7
jmp 0x4cef50
mov cx, word [ebp + eax*2 - 0x2a]
xor word [ebp + eax*2 - 0x28], cx
dec eax
cmp eax, ebx
jg 0x4cef50
mov eax, dword [ebp - 4]
mov edx, 0x726a
xor word [ebp - 0x28], dx
mov ecx, dword [eax]
push ebx
lea edx, [ebp - 0x14]
push edx
push ebx
lea edx, [ebp - 0x28]
push edx
push eax
mov eax, dword [ecx + 0x14]
call eax
mov esi, eax
cmp esi, ebx
jl 0x4cf2a6
mov edx, dword [ebp + 0x10]
mov eax, dword [0x4eed9c]
mov ecx, 3
mov word [ebp - 0x14], cx
mov ecx, dword [0x4eeda0]
mov dword [ebp - 0xc], edx
mov edx, dword [0x4eeda4]
mov dword [ebp - 0x88], eax
mov eax, dword [0x4eeda8]
mov dword [ebp - 0x84], ecx
mov ecx, dword [0x4eedac]
mov dword [ebp - 0x80], edx
mov edx, dword [0x4eedb0]
mov dword [ebp - 0x7c], eax
mov dword [ebp - 0x78], ecx
mov dword [ebp - 0x74], edx
mov eax, 0xa
jmp 0x4cefe0
mov cx, word [ebp + eax*2 - 0x8a]
xor word [ebp + eax*2 - 0x88], cx
dec eax
cmp eax, ebx
jg 0x4cefe0
mov eax, dword [ebp - 4]
mov edx, 0xf9a
xor word [ebp - 0x88], dx
mov ecx, dword [eax]
push ebx
lea edx, [ebp - 0x14]
push edx
push ebx
lea edx, [ebp - 0x88]
push edx
push eax
mov eax, dword [ecx + 0x14]
call eax
mov esi, eax
cmp esi, ebx
jl 0x4cf2a6
mov edx, dword [ebp + 0x14]
mov ecx, 8
mov word [ebp - 0x14], cx
push edx
lea ecx, [ebp + 0xc]
call fcn.004c7396
mov eax, dword [eax]
cmp eax, ebx
je 0x4cf045
mov eax, dword [eax]
mov dword [ebp - 0xc], eax
jmp 0x4cf048
mov dword [ebp - 0xc], ebx
mov esi, dword [ebp + 0xc]
cmp esi, ebx
je 0x4cf087
lea ecx, [esi + 8]
push ecx
call dword [sym.imp.KERNEL32.dll_InterlockedDecrement]
test eax, eax
jne 0x4cf087
cmp esi, ebx
je 0x4cf087
mov eax, dword [esi]
cmp eax, ebx
je 0x4cf06e
push eax
call dword [sym.imp.OLEAUT32.dll_SysStringLen]
mov eax, dword [esi + 4]
cmp eax, ebx
je 0x4cf07e
push eax
call fcn.004b3716
add esp, 4
push esi
call fcn.004b3716
add esp, 4
mov eax, dword [0x4eed8c]
mov edx, dword [0x4eed88]
mov ecx, dword [0x4eed90]
mov dword [ebp - 0x6c], eax
mov eax, dword [0x4eed98]
mov dword [ebp - 0x70], edx
mov edx, dword [0x4eed94]
mov dword [ebp - 0x60], eax
mov dword [ebp - 0x68], ecx
mov dword [ebp - 0x64], edx
mov eax, 8
jmp 0x4cf0c0
mov cx, word [ebp + eax*2 - 0x72]
xor word [ebp + eax*2 - 0x70], cx
dec eax
cmp eax, ebx
jg 0x4cf0c0
mov eax, dword [ebp - 4]
mov edx, 0x6c50
xor word [ebp - 0x70], dx
mov ecx, dword [eax]
push ebx
lea edx, [ebp - 0x14]
push edx
push ebx
lea edx, [ebp - 0x70]
push edx
push eax
mov eax, dword [ecx + 0x14]
call eax
mov esi, eax
cmp esi, ebx
jl 0x4cf2a6
mov eax, dword [ebp + 0x28]
cmp eax, ebx
je 0x4cf1cb
mov ecx, 8
mov word [ebp - 0x14], cx
push eax
lea ecx, [ebp + 0xc]
call fcn.004c7396
mov eax, dword [eax]
cmp eax, ebx
je 0x4cf121
mov edx, dword [eax]
mov dword [ebp - 0xc], edx
jmp 0x4cf124
mov dword [ebp - 0xc], ebx
mov esi, dword [ebp + 0xc]
cmp esi, ebx
je 0x4cf163
lea eax, [esi + 8]
push eax
call dword [sym.imp.KERNEL32.dll_InterlockedDecrement]
test eax, eax
jne 0x4cf163
cmp esi, ebx
je 0x4cf163
mov eax, dword [esi]
cmp eax, ebx
je 0x4cf14a
push eax
call dword [sym.imp.OLEAUT32.dll_SysStringLen]
mov eax, dword [esi + 4]
cmp eax, ebx
je 0x4cf15a
push eax
call fcn.004b3716
add esp, 4
push esi
call fcn.004b3716
add esp, 4
mov ecx, dword [str._aaJa8aLa]
mov edx, dword [0x4eed78]
mov eax, dword [0x4eed7c]
mov dword [ebp - 0x2c], ecx
mov ecx, dword [0x4eed80]
mov dword [ebp - 0x28], edx
mov edx, dword [0x4eed84]
mov dword [ebp - 0x24], eax
mov dword [ebp - 0x20], ecx
mov dword [ebp - 0x1c], edx
mov eax, 8
mov cx, word [ebp + eax*2 - 0x2e]
xor word [ebp + eax*2 - 0x2c], cx
dec eax
cmp eax, ebx
jg 0x4cf194
mov eax, dword [ebp - 4]
mov edx, 0x610c
xor word [ebp - 0x2c], dx
mov ecx, dword [eax]
push ebx
lea edx, [ebp - 0x14]
push edx
push ebx
lea edx, [ebp - 0x2c]
push edx
push eax
mov eax, dword [ecx + 0x14]
call eax
mov esi, eax
cmp esi, ebx
jl 0x4cf2a6
mov eax, dword [ebp + 0x2c]
cmp eax, ebx
je 0x4cf283
mov ecx, 8
mov word [ebp - 0x14], cx
push eax
lea ecx, [ebp + 0xc]
call fcn.004c7396
mov eax, dword [eax]
cmp eax, ebx
je 0x4cf1f5
mov edx, dword [eax]
mov dword [ebp - 0xc], edx
jmp 0x4cf1f8
mov dword [ebp - 0xc], ebx
mov esi, dword [ebp + 0xc]
cmp esi, ebx
je 0x4cf237
lea eax, [esi + 8]
push eax
call dword [sym.imp.KERNEL32.dll_InterlockedDecrement]
test eax, eax
jne 0x4cf237
cmp esi, ebx
je 0x4cf237
mov eax, dword [esi]
cmp eax, ebx
je 0x4cf21e
push eax
call dword [sym.imp.OLEAUT32.dll_SysStringLen]
mov eax, dword [esi + 4]
cmp eax, ebx
je 0x4cf22e
push eax
call fcn.004b3716
add esp, 4
push esi
call fcn.004b3716
add esp, 4
mov ecx, 7
mov esi, str._bieo___F4P
lea edi, [ebp - 0x34]
rep movsd dword es:[edi], dword [esi]
mov eax, 0xc
jmp 0x4cf250
mov cx, word [ebp + eax*2 - 0x36]
xor word [ebp + eax*2 - 0x34], cx
dec eax
cmp eax, ebx
jg 0x4cf250
mov eax, dword [ebp - 4]
mov edx, 0x2b2f
xor word [ebp - 0x34], dx
mov ecx, dword [eax]
push ebx
lea edx, [ebp - 0x14]
push edx
push ebx
lea edx, [ebp - 0x34]
push edx
push eax
mov eax, dword [ecx + 0x14]
call eax
mov esi, eax
cmp esi, ebx
jl 0x4cf2a6
mov ecx, dword [ebp - 0x48]
mov eax, dword [ecx + 4]
mov edx, dword [eax]
mov edx, dword [edx + 0x60]
push ebx
lea ecx, [ebp - 0x4c]
push ecx
mov ecx, dword [ebp - 4]
push ecx
mov ecx, dword [ebp - 0x44]
push ebx
push ebx
push ecx
mov ecx, dword [ebp - 0x40]
push ecx
push eax
call edx
mov esi, eax
mov eax, dword [ebp - 0x40]
mov edi, dword [sym.imp.OLEAUT32.dll_SysStringLen]
push eax
call edi
mov ecx, dword [ebp - 0x44]
push ecx
call edi
mov eax, dword [ebp - 0x3c]
cmp eax, ebx
je 0x4cf2ca
mov edx, dword [eax]
push eax
mov eax, dword [edx + 8]
call eax
mov dword [ebp - 0x3c], ebx
mov eax, dword [ebp - 4]
cmp eax, ebx
je 0x4cf2dc
mov ecx, dword [eax]
mov edx, dword [ecx + 8]
push eax
call edx
mov dword [ebp - 4], ebx
mov eax, dword [ebp - 0x38]
cmp eax, ebx
je 0x4cf2ee
mov ecx, dword [eax]
mov edx, dword [ecx + 8]
push eax
call edx
mov dword [ebp - 0x38], ebx
mov eax, dword [ebp - 0x4c]
cmp eax, ebx
je 0x4cf2fd
mov ecx, dword [eax]
mov edx, dword [ecx + 8]
push eax
call edx
xor eax, eax
cmp esi, ebx
pop edi
pop esi
setge al
pop ebx
mov esp, ebp
pop ebp
ret 0x28