Function at 0x4ee108
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 0x4ee149
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 0x4ee195
inc dword [ebp + 0x54]
mov ecx, dword [ebp + 0x54]
xor eax, eax
inc eax
shl eax, cl
cmp eax, dword [ebp + 0x60]
jb 0x4ee185
and dword [ebp + 0x38], 0
test ebx, ebx
jbe 0x4ee1ba
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 0x4ee1a3
cmp dword [edi + 0x8590], 0
je 0x4ee1d5
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 0x4ee7d3
dec eax
je 0x4ee6d6
dec eax
je 0x4ee5e7
dec eax
je 0x4ee51a
dec eax
je 0x4ee437
dec eax
je 0x4ee36a
dec eax
jne 0x4ee8b8
mov edx, esi
mov dword [ebp + 0x58], edx
cmp esi, dword [ebp + 0x4c]
jae 0x4ee8b8
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 0x4ee350
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 0x4ee33e
mov edi, dword [ebp + 0x50]
movzx ecx, byte [ebp + 0x5f]
mov edx, eax
and edx, 0xf
lea edx, [edx + edi + 0x679970]
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 0x4ee2ac
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 0x4ee2ea
xor eax, esi
inc edx
push 0x7f
pop ecx
sub ecx, dword [ebp + 0x1c]
add edx, ecx
cmp eax, esi
jge 0x4ee30e
cmp edx, 1
jle 0x4ee306
test eax, eax
jle 0x4ee306
add eax, eax
dec edx
cmp eax, esi
jl 0x4ee2f6
cmp eax, esi
jge 0x4ee30e
xor edx, edx
jmp 0x4ee310
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 0x4ee2a9
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 0x4ee245
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 0x4ee226
jmp 0x4ee8b8
mov edx, esi
mov dword [ebp + 0x58], edx
cmp esi, dword [ebp + 0x4c]
jae 0x4ee8b8
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 0x4ee41d
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 0x4ee40f
mov esi, dword [ebp + 0x70]
mov ecx, eax
and ecx, 0xf
lea esi, [ecx + esi + 0x679970]
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 0x4ee3e1
mov eax, dword [ebp + 0x64]
add eax, dword [ebp + 0x60]
mov dword [ebp + 0x64], eax
cmp eax, dword [ebp + 0x44]
jb 0x4ee3a2
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 0x4ee387
jmp 0x4ee8b8
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 0x4ee8b8
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 0x4ee500
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 0x4ee4f2
mov ebx, dword [ebp + 0x50]
mov ecx, eax
and ecx, 0xf
lea ecx, [ecx + ebx + 0x679970]
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 0x4ee4c1
mov eax, dword [ebp + 0x64]
add eax, dword [ebp + 0x60]
mov dword [ebp + 0x64], eax
cmp eax, dword [ebp + 0x44]
jb 0x4ee489
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 0x4ee46e
jmp 0x4ee8b8
mov dword [ebp + 0x58], esi
cmp esi, dword [ebp + 0x4c]
jae 0x4ee8b8
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 0x4ee5c2
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 0x4ee5bc
mov esi, dword [ebp + 0x64]
mov ecx, dword [ebp + 0x70]
mov eax, esi
and eax, 0xf
lea eax, [eax + ecx + 0x679970]
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 0x4ee587
mov eax, dword [ebp + 0x64]
add eax, dword [ebp + 0x60]
mov dword [ebp + 0x64], eax
cmp eax, dword [ebp + 0x44]
jb 0x4ee54b
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 0x4ee535
jmp 0x4ee8b8
mov eax, esi
mov dword [ebp + 0x58], eax
cmp esi, dword [ebp + 0x4c]
jae 0x4ee8b8
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 0x4ee6bc
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 0x4ee6aa
mov ecx, dword [ebp + 0x70]
mov eax, edx
and eax, 0xf
lea esi, [eax + ecx + 0x679970]
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 0x4ee68f
mov eax, 0xffff8000
jmp 0x4ee69a
mov ecx, 0x7fff
cmp eax, ecx
jle 0x4ee69a
mov eax, ecx
mov ecx, dword [ebp + 0x34]
mov word [ecx + ebx*2], ax
inc ebx
cmp ebx, dword [ebp + 0x48]
jb 0x4ee662
mov edx, dword [ebp + 0x64]
add edx, dword [ebp + 0x60]
mov dword [ebp + 0x64], edx
cmp edx, dword [ebp + 0x44]
jb 0x4ee623
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 0x4ee604
jmp 0x4ee8b8
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 0x4ee8b8
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 0x4ee7b9
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 0x4ee7a7
mov edx, dword [ebp + 0x50]
mov ecx, eax
and ecx, 0xf
lea esi, [ecx + edx + 0x679970]
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 0x4ee78c
xor edx, edx
jmp 0x4ee797
mov ecx, 0xffff
cmp edx, ecx
jle 0x4ee797
mov edx, ecx
mov ecx, dword [ebp + 0x34]
mov word [ecx + ebx*2], dx
inc ebx
cmp ebx, dword [ebp + 0x48]
jb 0x4ee762
mov eax, dword [ebp + 0x64]
add eax, dword [ebp + 0x60]
mov dword [ebp + 0x64], eax
cmp eax, dword [ebp + 0x44]
jb 0x4ee723
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 0x4ee704
jmp 0x4ee8b8
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 0x4ee8b8
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 0x4ee894
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 0x4ee88e
mov esi, dword [ebp + 0x64]
mov edx, dword [ebp + 0x50]
mov ecx, esi
and ecx, 0xf
and esi, 0xfffffff0
lea ebx, [ecx + edx + 0x679970]
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 0x4ee874
xor edx, edx
jmp 0x4ee87f
mov ecx, 0xff
cmp edx, ecx
jle 0x4ee87f
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 0x4ee84e
mov eax, dword [ebp + 0x64]
add eax, dword [ebp + 0x60]
mov dword [ebp + 0x64], eax
cmp eax, dword [ebp + 0x44]
jb 0x4ee815
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 0x4ee7ff
pop edi
pop esi
pop ebx
add ebp, 0x68
leave
ret