Function at 0x4e15d8
Capabilities:
Encode data using xor

Disassembly:
push ebp
lea ebp, [esp - 0x68]
sub esp, 0x94
push ebx
push esi
mov esi, eax
push edi
mov edi, dword [ebp + 0x70]
mov eax, dword [edi + 0x8588]
mov eax, dword [eax + 0xc]
mov ecx, dword [edi + 8]
mov dword [ebp + 0x60], eax
mov eax, dword [edi + 4]
mov dword [ebp + 0x44], eax
mov eax, dword [edi + 0x85d8]
dec eax
shl eax, 4
push 0x10
pop edx
sub ecx, eax
mov dword [ebp + 0x4c], edx
cmp ecx, edx
ja 0x4e1619
mov dword [ebp + 0x4c], ecx
mov cl, byte [edi + 0x8084]
mov byte [ebp + 0x5f], cl
mov cl, byte [edi + 0x8085]
mov byte [ebp + 0x2b], cl
mov ecx, dword [edi + 0x8588]
mov edx, dword [ecx + 0x28]
mov dword [ebp + 0x24], edx
xor edx, edx
div dword [ebp + 0x60]
mov ecx, dword [ecx + 0x2c]
mov ebx, dword [edi + 0x64]
and dword [ebp + 0x54], 0
cmp dword [ebp + 0x60], 1
mov dword [ebp + 0x48], ebx
lea eax, [ecx + eax*4]
mov dword [ebp + 0x2c], eax
jbe 0x4e1665
inc dword [ebp + 0x54]
mov ecx, dword [ebp + 0x54]
xor eax, eax
inc eax
shl eax, cl
cmp eax, dword [ebp + 0x60]
jb 0x4e1655
and dword [ebp + 0x38], 0
test ebx, ebx
jbe 0x4e168a
lea eax, [edi + 0x8660]
mov ecx, dword [ebp + 0x38]
mov edx, dword [eax]
and ecx, 0xf
inc dword [ebp + 0x38]
add eax, 4
mov dword [ebp + ecx*4 - 0x2c], edx
cmp dword [ebp + 0x38], ebx
jb 0x4e1673
cmp dword [edi + 0x8590], 0
je 0x4e16a5
mov eax, dword [edi + 0x8760]
mov dword [ebp - 0x28], eax
mov eax, dword [edi + 0x8764]
mov dword [ebp - 0x24], eax
mov eax, dword [edi + 0x10]
dec eax
je 0x4e1ca3
dec eax
je 0x4e1ba6
dec eax
je 0x4e1ab7
dec eax
je 0x4e19ea
dec eax
je 0x4e1907
dec eax
je 0x4e183a
dec eax
jne 0x4e1d88
mov edx, esi
mov dword [ebp + 0x58], edx
cmp esi, dword [ebp + 0x4c]
jae 0x4e1d88
mov eax, dword [ebp + 0x60]
shl esi, 4
shl eax, 4
mov dword [ebp + 0x50], esi
mov dword [ebp + 0x40], eax
mov ecx, dword [ebp + 0x54]
mov eax, dword [ebp + 0x7c]
mov esi, edx
shr esi, cl
mov ecx, dword [ebp + 0x2c]
mov dword [ebp + 0x64], eax
mov ecx, dword [ecx + esi*4]
mov dword [ebp + 0x3c], ecx
cmp eax, dword [ebp + 0x44]
jae 0x4e1820
mov ecx, dword [ebp + 0x54]
and dword [ebp + 0x38], 0
mov edx, eax
shr edx, cl
mov ecx, dword [ebp + 0x24]
mov ecx, dword [ecx + edx*4]
add ecx, dword [ebp + 0x3c]
cmp dword [ebp + 0x48], 0
mov edx, dword [edi + 0x8090]
lea ecx, [edx + ecx*4]
mov dword [ebp + 0x34], ecx
jbe 0x4e180e
mov edi, dword [ebp + 0x50]
movzx ecx, byte [ebp + 0x5f]
mov edx, eax
and edx, 0xf
lea edx, [edx + edi + 0x67eb50]
xor esi, esi
mov dword [ebp + 0x14], edx
movsx edx, byte [ebp + 0x2b]
and eax, 0xfffffff0
inc esi
shl eax, 4
mov dword [ebp + 0x20], 0x17
shl esi, cl
sub dword [ebp + 0x20], ecx
mov dword [ebp + 0x30], ecx
mov dword [ebp + 0x18], eax
mov dword [ebp + 0x1c], edx
jmp 0x4e177c
mov eax, dword [ebp + 0x18]
mov ecx, dword [ebp + 0x14]
movzx ecx, byte [ecx]
add ecx, eax
mov eax, dword [ebp + 0x38]
and eax, 0xf
mov eax, dword [ebp + eax*4 - 0x2c]
mov eax, dword [eax + ecx*4]
imul eax, dword [ebp + 0x74]
mov ecx, dword [ebp + 0x78]
sar eax, cl
mov ecx, dword [ebp + 0x30]
mov edi, eax
sar edi, 0x1f
mov ebx, edi
xor ebx, eax
sub ebx, edi
mov edx, ebx
shr edx, cl
lea eax, [esi - 1]
and eax, ebx
or eax, esi
test edx, edx
jne 0x4e17ba
xor eax, esi
inc edx
push 0x7f
pop ecx
sub ecx, dword [ebp + 0x1c]
add edx, ecx
cmp eax, esi
jge 0x4e17de
cmp edx, 1
jle 0x4e17d6
test eax, eax
jle 0x4e17d6
add eax, eax
dec edx
cmp eax, esi
jl 0x4e17c6
cmp eax, esi
jge 0x4e17de
xor edx, edx
jmp 0x4e17e0
xor eax, esi
mov ecx, dword [ebp + 0x20]
shl eax, cl
mov ecx, dword [ebp + 0x38]
shl edx, 0x17
and edi, 0x80000000
or eax, edx
mov edx, dword [ebp + 0x34]
or eax, edi
mov dword [edx + ecx*4], eax
inc ecx
mov dword [ebp + 0x38], ecx
cmp ecx, dword [ebp + 0x48]
jb 0x4e1779
mov edi, dword [ebp + 0x70]
mov eax, dword [ebp + 0x64]
add eax, dword [ebp + 0x60]
mov dword [ebp + 0x64], eax
cmp eax, dword [ebp + 0x44]
jb 0x4e1715
mov edx, dword [ebp + 0x58]
add edx, dword [ebp + 0x60]
mov eax, dword [ebp + 0x40]
add dword [ebp + 0x50], eax
mov dword [ebp + 0x58], edx
cmp edx, dword [ebp + 0x4c]
jb 0x4e16f6
jmp 0x4e1d88
mov edx, esi
mov dword [ebp + 0x58], edx
cmp esi, dword [ebp + 0x4c]
jae 0x4e1d88
mov eax, dword [ebp + 0x60]
shl esi, 4
shl eax, 4
mov dword [ebp + 0x70], esi
mov dword [ebp + 0x40], eax
mov ecx, dword [ebp + 0x54]
mov eax, dword [ebp + 0x7c]
mov esi, edx
shr esi, cl
mov ecx, dword [ebp + 0x2c]
mov dword [ebp + 0x64], eax
mov ecx, dword [ecx + esi*4]
mov dword [ebp + 0x3c], ecx
cmp eax, dword [ebp + 0x44]
jae 0x4e18ed
mov ecx, dword [ebp + 0x54]
mov edx, eax
shr edx, cl
mov ecx, dword [ebp + 0x24]
mov ecx, dword [ecx + edx*4]
add ecx, dword [ebp + 0x3c]
mov edx, dword [edi + 0x8090]
lea ecx, [edx + ecx*4]
xor edx, edx
mov dword [ebp + 0x34], ecx
cmp dword [ebp + 0x48], edx
jbe 0x4e18df
mov esi, dword [ebp + 0x70]
mov ecx, eax
and ecx, 0xf
lea esi, [ecx + esi + 0x67eb50]
movzx ecx, byte [ebp + 0x5f]
and eax, 0xfffffff0
shl eax, 4
mov dword [ebp + 0x30], ecx
movzx ecx, byte [esi]
add ecx, eax
mov ebx, edx
and ebx, 0xf
mov ebx, dword [ebp + ebx*4 - 0x2c]
mov ebx, dword [ebx + ecx*4]
imul ebx, dword [ebp + 0x74]
mov ecx, dword [ebp + 0x78]
sar ebx, cl
mov ecx, dword [ebp + 0x30]
shl ebx, cl
mov ecx, dword [ebp + 0x34]
mov dword [ecx + edx*4], ebx
inc edx
cmp edx, dword [ebp + 0x48]
jb 0x4e18b1
mov eax, dword [ebp + 0x64]
add eax, dword [ebp + 0x60]
mov dword [ebp + 0x64], eax
cmp eax, dword [ebp + 0x44]
jb 0x4e1872
mov edx, dword [ebp + 0x58]
add edx, dword [ebp + 0x60]
mov eax, dword [ebp + 0x40]
add dword [ebp + 0x70], eax
mov dword [ebp + 0x58], edx
cmp edx, dword [ebp + 0x4c]
jb 0x4e1857
jmp 0x4e1d88
movzx ecx, byte [ebp + 0x5f]
mov eax, SysReAllocString
sar eax, cl
mov dword [ebp + 0x30], ecx
mov ecx, dword [ebp + 0x78]
shl eax, cl
cdq
idiv dword [ebp + 0x74]
mov edx, esi
mov dword [ebp + 0x58], edx
mov dword [ebp + 0x70], eax
cmp esi, dword [ebp + 0x4c]
jae 0x4e1d88
mov eax, dword [ebp + 0x60]
shl esi, 4
shl eax, 4
mov dword [ebp + 0x50], esi
mov dword [ebp + 0x40], eax
mov ecx, dword [ebp + 0x54]
mov eax, dword [ebp + 0x7c]
mov esi, edx
shr esi, cl
mov ecx, dword [ebp + 0x2c]
mov dword [ebp + 0x64], eax
mov ecx, dword [ecx + esi*4]
mov dword [ebp + 0x3c], ecx
cmp eax, dword [ebp + 0x44]
jae 0x4e19d0
mov ecx, dword [ebp + 0x54]
mov edx, eax
shr edx, cl
mov ecx, dword [ebp + 0x24]
mov ecx, dword [ecx + edx*4]
add ecx, dword [ebp + 0x3c]
mov edx, dword [edi + 0x8090]
lea esi, [edx + ecx*4]
xor edx, edx
cmp dword [ebp + 0x48], edx
jbe 0x4e19c2
mov ebx, dword [ebp + 0x50]
mov ecx, eax
and ecx, 0xf
lea ecx, [ecx + ebx + 0x67eb50]
and eax, 0xfffffff0
mov dword [ebp + 0x34], ecx
shl eax, 4
mov ecx, dword [ebp + 0x34]
movzx ecx, byte [ecx]
mov ebx, edx
and ebx, 0xf
mov ebx, dword [ebp + ebx*4 - 0x2c]
add ecx, eax
mov ebx, dword [ebx + ecx*4]
add ebx, dword [ebp + 0x70]
mov ecx, dword [ebp + 0x78]
imul ebx, dword [ebp + 0x74]
sar ebx, cl
mov ecx, dword [ebp + 0x30]
shl ebx, cl
mov dword [esi + edx*4], ebx
inc edx
cmp edx, dword [ebp + 0x48]
jb 0x4e1991
mov eax, dword [ebp + 0x64]
add eax, dword [ebp + 0x60]
mov dword [ebp + 0x64], eax
cmp eax, dword [ebp + 0x44]
jb 0x4e1959
mov edx, dword [ebp + 0x58]
add edx, dword [ebp + 0x60]
mov eax, dword [ebp + 0x40]
add dword [ebp + 0x50], eax
mov dword [ebp + 0x58], edx
cmp edx, dword [ebp + 0x4c]
jb 0x4e193e
jmp 0x4e1d88
mov dword [ebp + 0x58], esi
cmp esi, dword [ebp + 0x4c]
jae 0x4e1d88
mov eax, dword [ebp + 0x60]
shl esi, 4
shl eax, 4
mov dword [ebp + 0x70], esi
mov dword [ebp + 0x40], eax
mov ecx, dword [ebp + 0x54]
mov edx, dword [ebp + 0x58]
mov eax, dword [ebp + 0x7c]
shr edx, cl
mov ecx, dword [ebp + 0x2c]
mov ecx, dword [ecx + edx*4]
mov dword [ebp + 0x3c], ecx
jmp 0x4e1a92
mov ecx, dword [ebp + 0x54]
mov eax, dword [ebp + 0x64]
shr eax, cl
mov ecx, dword [ebp + 0x24]
xor edx, edx
mov eax, dword [ecx + eax*4]
add eax, dword [ebp + 0x3c]
mov ecx, dword [edi + 0x8090]
lea ebx, [ecx + eax*2]
cmp dword [ebp + 0x48], edx
jbe 0x4e1a8c
mov esi, dword [ebp + 0x64]
mov ecx, dword [ebp + 0x70]
mov eax, esi
and eax, 0xf
lea eax, [eax + ecx + 0x67eb50]
and esi, 0xfffffff0
mov dword [ebp + 0x34], eax
shl esi, 4
mov eax, dword [ebp + 0x34]
movzx eax, byte [eax]
add eax, esi
mov ecx, edx
and ecx, 0xf
mov ecx, dword [ebp + ecx*4 - 0x2c]
mov eax, dword [ecx + eax*4]
imul eax, dword [ebp + 0x74]
mov ecx, dword [ebp + 0x78]
sar eax, cl
mov ecx, eax
sar ecx, 0x1f
and eax, 0x7fff
xor eax, ecx
sub eax, ecx
mov word [ebx + edx*2], ax
inc edx
cmp edx, dword [ebp + 0x48]
jb 0x4e1a57
mov eax, dword [ebp + 0x64]
add eax, dword [ebp + 0x60]
mov dword [ebp + 0x64], eax
cmp eax, dword [ebp + 0x44]
jb 0x4e1a1b
mov eax, dword [ebp + 0x58]
add eax, dword [ebp + 0x60]
mov ecx, dword [ebp + 0x40]
add dword [ebp + 0x70], ecx
mov dword [ebp + 0x58], eax
cmp eax, dword [ebp + 0x4c]
jb 0x4e1a05
jmp 0x4e1d88
mov eax, esi
mov dword [ebp + 0x58], eax
cmp esi, dword [ebp + 0x4c]
jae 0x4e1d88
mov ecx, dword [ebp + 0x60]
shl esi, 4
shl ecx, 4
mov dword [ebp + 0x70], esi
mov dword [ebp + 0x40], ecx
mov ecx, dword [ebp + 0x54]
mov edx, dword [ebp + 0x7c]
mov esi, eax
shr esi, cl
mov ecx, dword [ebp + 0x2c]
mov dword [ebp + 0x64], edx
mov ecx, dword [ecx + esi*4]
mov dword [ebp + 0x3c], ecx
cmp edx, dword [ebp + 0x44]
jae 0x4e1b8c
mov ecx, dword [ebp + 0x54]
mov eax, edx
shr eax, cl
mov ecx, dword [ebp + 0x24]
xor ebx, ebx
mov eax, dword [ecx + eax*4]
add eax, dword [ebp + 0x3c]
mov ecx, dword [edi + 0x8090]
lea eax, [ecx + eax*2]
mov dword [ebp + 0x34], eax
cmp dword [ebp + 0x48], ebx
jbe 0x4e1b7a
mov ecx, dword [ebp + 0x70]
mov eax, edx
and eax, 0xf
lea esi, [eax + ecx + 0x67eb50]
movzx eax, byte [ebp + 0x5f]
and edx, 0xfffffff0
shl edx, 4
mov dword [ebp + 0x30], eax
movzx eax, byte [esi]
add eax, edx
mov ecx, ebx
and ecx, 0xf
mov ecx, dword [ebp + ecx*4 - 0x2c]
mov eax, dword [ecx + eax*4]
imul eax, dword [ebp + 0x74]
mov ecx, dword [ebp + 0x78]
sar eax, cl
mov ecx, dword [ebp + 0x30]
shl eax, cl
cmp eax, 0xffff8000
jge 0x4e1b5f
mov eax, 0xffff8000
jmp 0x4e1b6a
mov ecx, 0x7fff
cmp eax, ecx
jle 0x4e1b6a
mov eax, ecx
mov ecx, dword [ebp + 0x34]
mov word [ecx + ebx*2], ax
inc ebx
cmp ebx, dword [ebp + 0x48]
jb 0x4e1b32
mov edx, dword [ebp + 0x64]
add edx, dword [ebp + 0x60]
mov dword [ebp + 0x64], edx
cmp edx, dword [ebp + 0x44]
jb 0x4e1af3
mov eax, dword [ebp + 0x58]
add eax, dword [ebp + 0x60]
mov ecx, dword [ebp + 0x40]
add dword [ebp + 0x70], ecx
mov dword [ebp + 0x58], eax
cmp eax, dword [ebp + 0x4c]
jb 0x4e1ad4
jmp 0x4e1d88
mov ecx, dword [ebp + 0x78]
mov eax, 0x8000
shl eax, cl
cdq
idiv dword [ebp + 0x74]
mov edx, esi
mov dword [ebp + 0x58], edx
mov dword [ebp + 0x70], eax
cmp esi, dword [ebp + 0x4c]
jae 0x4e1d88
mov eax, dword [ebp + 0x60]
shl esi, 4
shl eax, 4
mov dword [ebp + 0x50], esi
mov dword [ebp + 0x40], eax
mov ecx, dword [ebp + 0x54]
mov eax, dword [ebp + 0x7c]
mov esi, edx
shr esi, cl
mov ecx, dword [ebp + 0x2c]
mov dword [ebp + 0x64], eax
mov ecx, dword [ecx + esi*4]
mov dword [ebp + 0x3c], ecx
cmp eax, dword [ebp + 0x44]
jae 0x4e1c89
mov ecx, dword [ebp + 0x54]
mov edx, eax
shr edx, cl
mov ecx, dword [ebp + 0x24]
xor ebx, ebx
mov ecx, dword [ecx + edx*4]
add ecx, dword [ebp + 0x3c]
mov edx, dword [edi + 0x8090]
lea ecx, [edx + ecx*2]
mov dword [ebp + 0x34], ecx
cmp dword [ebp + 0x48], ebx
jbe 0x4e1c77
mov edx, dword [ebp + 0x50]
mov ecx, eax
and ecx, 0xf
lea esi, [ecx + edx + 0x67eb50]
movzx ecx, byte [ebp + 0x5f]
and eax, 0xfffffff0
shl eax, 4
mov dword [ebp + 0x30], ecx
movzx ecx, byte [esi]
mov edx, ebx
and edx, 0xf
mov edx, dword [ebp + edx*4 - 0x2c]
add ecx, eax
mov edx, dword [edx + ecx*4]
add edx, dword [ebp + 0x70]
mov ecx, dword [ebp + 0x78]
imul edx, dword [ebp + 0x74]
sar edx, cl
mov ecx, dword [ebp + 0x30]
shl edx, cl
test edx, edx
jge 0x4e1c5c
xor edx, edx
jmp 0x4e1c67
mov ecx, 0xffff
cmp edx, ecx
jle 0x4e1c67
mov edx, ecx
mov ecx, dword [ebp + 0x34]
mov word [ecx + ebx*2], dx
inc ebx
cmp ebx, dword [ebp + 0x48]
jb 0x4e1c32
mov eax, dword [ebp + 0x64]
add eax, dword [ebp + 0x60]
mov dword [ebp + 0x64], eax
cmp eax, dword [ebp + 0x44]
jb 0x4e1bf3
mov edx, dword [ebp + 0x58]
add edx, dword [ebp + 0x60]
mov eax, dword [ebp + 0x40]
add dword [ebp + 0x50], eax
mov dword [ebp + 0x58], edx
cmp edx, dword [ebp + 0x4c]
jb 0x4e1bd4
jmp 0x4e1d88
mov ecx, dword [ebp + 0x78]
mov eax, 0x80
shl eax, cl
mov dword [ebp + 0x58], esi
cdq
idiv dword [ebp + 0x74]
mov dword [ebp + 0x70], eax
cmp esi, dword [ebp + 0x4c]
jae 0x4e1d88
mov eax, dword [ebp + 0x60]
shl esi, 4
shl eax, 4
mov dword [ebp + 0x50], esi
mov dword [ebp + 0x40], eax
mov ecx, dword [ebp + 0x54]
mov edx, dword [ebp + 0x58]
mov eax, dword [ebp + 0x7c]
shr edx, cl
mov ecx, dword [ebp + 0x2c]
mov ecx, dword [ecx + edx*4]
mov dword [ebp + 0x3c], ecx
jmp 0x4e1d64
mov ecx, dword [ebp + 0x54]
mov eax, dword [ebp + 0x64]
and dword [ebp + 0x38], 0
shr eax, cl
mov ecx, dword [ebp + 0x24]
mov eax, dword [ecx + eax*4]
add eax, dword [edi + 0x8090]
add eax, dword [ebp + 0x3c]
cmp dword [ebp + 0x48], 0
jbe 0x4e1d5e
mov esi, dword [ebp + 0x64]
mov edx, dword [ebp + 0x50]
mov ecx, esi
and ecx, 0xf
and esi, 0xfffffff0
lea ebx, [ecx + edx + 0x67eb50]
shl esi, 4
movzx ecx, byte [ebx]
mov edx, dword [ebp + 0x38]
and edx, 0xf
mov edx, dword [ebp + edx*4 - 0x2c]
add ecx, esi
mov edx, dword [edx + ecx*4]
add edx, dword [ebp + 0x70]
mov ecx, dword [ebp + 0x78]
imul edx, dword [ebp + 0x74]
sar edx, cl
test edx, edx
jge 0x4e1d44
xor edx, edx
jmp 0x4e1d4f
mov ecx, 0xff
cmp edx, ecx
jle 0x4e1d4f
mov edx, ecx
mov ecx, dword [ebp + 0x38]
mov byte [eax + ecx], dl
inc ecx
mov dword [ebp + 0x38], ecx
cmp ecx, dword [ebp + 0x48]
jb 0x4e1d1e
mov eax, dword [ebp + 0x64]
add eax, dword [ebp + 0x60]
mov dword [ebp + 0x64], eax
cmp eax, dword [ebp + 0x44]
jb 0x4e1ce5
mov eax, dword [ebp + 0x58]
add eax, dword [ebp + 0x60]
mov ecx, dword [ebp + 0x40]
add dword [ebp + 0x50], ecx
mov dword [ebp + 0x58], eax
cmp eax, dword [ebp + 0x4c]
jb 0x4e1ccf
pop edi
pop esi
pop ebx
add ebp, 0x68
leave
ret