Function at 0x4ededa
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 0x4edf1b
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 0x4edf67
inc dword [ebp + 0x54]
mov ecx, dword [ebp + 0x54]
xor eax, eax
inc eax
shl eax, cl
cmp eax, dword [ebp + 0x60]
jb 0x4edf57
and dword [ebp + 0x38], 0
test ebx, ebx
jbe 0x4edf8c
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 0x4edf75
cmp dword [edi + 0x8590], 0
je 0x4edfa7
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 0x4ee5a5
dec eax
je 0x4ee4a8
dec eax
je 0x4ee3b9
dec eax
je 0x4ee2ec
dec eax
je 0x4ee209
dec eax
je 0x4ee13c
dec eax
jne 0x4ee68a
mov edx, esi
mov dword [ebp + 0x58], edx
cmp esi, dword [ebp + 0x4c]
jae 0x4ee68a
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 0x4ee122
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 0x4ee110
mov edi, dword [ebp + 0x50]
movzx ecx, byte [ebp + 0x5f]
mov edx, eax
and edx, 0xf
lea edx, [edx + edi + 0x67bab0]
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 0x4ee07e
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 0x4ee0bc
xor eax, esi
inc edx
push 0x7f
pop ecx
sub ecx, dword [ebp + 0x1c]
add edx, ecx
cmp eax, esi
jge 0x4ee0e0
cmp edx, 1
jle 0x4ee0d8
test eax, eax
jle 0x4ee0d8
add eax, eax
dec edx
cmp eax, esi
jl 0x4ee0c8
cmp eax, esi
jge 0x4ee0e0
xor edx, edx
jmp 0x4ee0e2
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 0x4ee07b
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 0x4ee017
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 0x4edff8
jmp 0x4ee68a
mov edx, esi
mov dword [ebp + 0x58], edx
cmp esi, dword [ebp + 0x4c]
jae 0x4ee68a
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 0x4ee1ef
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 0x4ee1e1
mov esi, dword [ebp + 0x70]
mov ecx, eax
and ecx, 0xf
lea esi, [ecx + esi + 0x67bab0]
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 0x4ee1b3
mov eax, dword [ebp + 0x64]
add eax, dword [ebp + 0x60]
mov dword [ebp + 0x64], eax
cmp eax, dword [ebp + 0x44]
jb 0x4ee174
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 0x4ee159
jmp 0x4ee68a
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 0x4ee68a
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 0x4ee2d2
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 0x4ee2c4
mov ebx, dword [ebp + 0x50]
mov ecx, eax
and ecx, 0xf
lea ecx, [ecx + ebx + 0x67bab0]
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 0x4ee293
mov eax, dword [ebp + 0x64]
add eax, dword [ebp + 0x60]
mov dword [ebp + 0x64], eax
cmp eax, dword [ebp + 0x44]
jb 0x4ee25b
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 0x4ee240
jmp 0x4ee68a
mov dword [ebp + 0x58], esi
cmp esi, dword [ebp + 0x4c]
jae 0x4ee68a
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 0x4ee394
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 0x4ee38e
mov esi, dword [ebp + 0x64]
mov ecx, dword [ebp + 0x70]
mov eax, esi
and eax, 0xf
lea eax, [eax + ecx + 0x67bab0]
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 0x4ee359
mov eax, dword [ebp + 0x64]
add eax, dword [ebp + 0x60]
mov dword [ebp + 0x64], eax
cmp eax, dword [ebp + 0x44]
jb 0x4ee31d
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 0x4ee307
jmp 0x4ee68a
mov eax, esi
mov dword [ebp + 0x58], eax
cmp esi, dword [ebp + 0x4c]
jae 0x4ee68a
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 0x4ee48e
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 0x4ee47c
mov ecx, dword [ebp + 0x70]
mov eax, edx
and eax, 0xf
lea esi, [eax + ecx + 0x67bab0]
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 0x4ee461
mov eax, 0xffff8000
jmp 0x4ee46c
mov ecx, 0x7fff
cmp eax, ecx
jle 0x4ee46c
mov eax, ecx
mov ecx, dword [ebp + 0x34]
mov word [ecx + ebx*2], ax
inc ebx
cmp ebx, dword [ebp + 0x48]
jb 0x4ee434
mov edx, dword [ebp + 0x64]
add edx, dword [ebp + 0x60]
mov dword [ebp + 0x64], edx
cmp edx, dword [ebp + 0x44]
jb 0x4ee3f5
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 0x4ee3d6
jmp 0x4ee68a
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 0x4ee68a
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 0x4ee58b
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 0x4ee579
mov edx, dword [ebp + 0x50]
mov ecx, eax
and ecx, 0xf
lea esi, [ecx + edx + 0x67bab0]
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 0x4ee55e
xor edx, edx
jmp 0x4ee569
mov ecx, 0xffff
cmp edx, ecx
jle 0x4ee569
mov edx, ecx
mov ecx, dword [ebp + 0x34]
mov word [ecx + ebx*2], dx
inc ebx
cmp ebx, dword [ebp + 0x48]
jb 0x4ee534
mov eax, dword [ebp + 0x64]
add eax, dword [ebp + 0x60]
mov dword [ebp + 0x64], eax
cmp eax, dword [ebp + 0x44]
jb 0x4ee4f5
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 0x4ee4d6
jmp 0x4ee68a
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 0x4ee68a
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 0x4ee666
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 0x4ee660
mov esi, dword [ebp + 0x64]
mov edx, dword [ebp + 0x50]
mov ecx, esi
and ecx, 0xf
and esi, 0xfffffff0
lea ebx, [ecx + edx + 0x67bab0]
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 0x4ee646
xor edx, edx
jmp 0x4ee651
mov ecx, 0xff
cmp edx, ecx
jle 0x4ee651
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 0x4ee620
mov eax, dword [ebp + 0x64]
add eax, dword [ebp + 0x60]
mov dword [ebp + 0x64], eax
cmp eax, dword [ebp + 0x44]
jb 0x4ee5e7
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 0x4ee5d1
pop edi
pop esi
pop ebx
add ebp, 0x68
leave
ret