Function at 0x4ea688
Capabilities:
Encode data using xor

Disassembly:
push ebp
mov ebp, esp
sub esp, 0x7c
push ebx
push esi
mov esi, dword [ebp + 0x14]
push edi
mov edi, dword [ebp + 8]
xor edx, edx
cmp dword [edi + 0xc], edx
jne 0x4ea6a7
mov dword [ebp - 0x10], 1
jmp 0x4ea6ad
mov ecx, dword [edi + 0x64]
mov dword [ebp - 0x10], ecx
mov cl, byte [edi + 0x8084]
mov byte [ebp - 1], cl
mov cl, byte [edi + 0x8085]
mov byte [ebp - 2], cl
mov ecx, dword [edi + 0x8588]
mov ebx, dword [ecx + 0x28]
mov ecx, dword [ecx + 0x2c]
mov dword [ebp - 0x20], ebx
mov ebx, dword [edi + 0x85d8]
shl ebx, 6
lea ecx, [ebx + ecx - 0x40]
mov dword [ebp - 0x1c], ecx
cmp dword [ebp - 0x10], edx
jbe 0x4ea700
lea ecx, [edi + 0x8660]
mov ebx, dword [ecx]
mov esi, edx
and esi, 0xf
inc edx
add ecx, 4
mov dword [ebp + esi*4 - 0x7c], ebx
cmp edx, dword [ebp - 0x10]
jb 0x4ea6e9
mov esi, dword [ebp + 0x14]
cmp dword [edi + 0x8590], 0
je 0x4ea71b
mov ecx, dword [edi + 0x8760]
mov dword [ebp - 0x78], ecx
mov ecx, dword [edi + 0x8764]
mov dword [ebp - 0x74], ecx
mov ecx, dword [edi + 0x10]
dec ecx
je 0x4eac24
dec ecx
je 0x4eab62
dec ecx
je 0x4eaa97
dec ecx
je 0x4ea9e4
dec ecx
je 0x4ea937
dec ecx
je 0x4ea88a
dec ecx
jne 0x4eacd4
mov dword [ebp - 8], eax
cmp eax, esi
jae 0x4eacd4
shl eax, 4
mov dword [ebp - 0x2c], eax
mov ecx, dword [ebp - 0x1c]
mov edx, dword [ebp - 8]
mov ecx, dword [ecx + edx*4]
mov eax, dword [ebp + 0xc]
mov dword [ebp - 0x14], ecx
jmp 0x4ea866
mov ecx, dword [ebp - 0x20]
mov ecx, dword [ecx + eax*4]
add ecx, dword [ebp - 0x14]
mov edx, dword [edi + 0x8090]
and dword [ebp - 0x24], 0
cmp dword [ebp - 0x10], 0
lea ecx, [edx + ecx*4]
mov dword [ebp - 0x3c], ecx
jbe 0x4ea865
mov esi, dword [ebp - 0x2c]
movzx ecx, byte [ebp - 1]
mov edx, eax
and edx, 0xf
lea edx, [edx + esi + 0x67bab0]
xor edi, edi
mov dword [ebp - 0x34], edx
movsx edx, byte [ebp - 2]
and eax, 0xfffffff0
inc edi
shl eax, 4
mov dword [ebp - 0x28], 0x17
shl edi, cl
sub dword [ebp - 0x28], ecx
mov dword [ebp - 0x18], ecx
mov dword [ebp - 0x30], eax
mov dword [ebp - 0x38], edx
jmp 0x4ea7d4
mov eax, dword [ebp - 0x30]
mov ecx, dword [ebp - 0x34]
movzx ecx, byte [ecx]
add ecx, eax
mov eax, dword [ebp - 0x24]
and eax, 0xf
mov eax, dword [ebp + eax*4 - 0x7c]
mov eax, dword [eax + ecx*4]
add eax, dword [ebp + 0x1c]
mov ecx, dword [ebp + 0x18]
sar eax, cl
mov ecx, dword [ebp - 0x18]
mov esi, eax
sar esi, 0x1f
mov ebx, esi
xor ebx, eax
sub ebx, esi
mov edx, ebx
shr edx, cl
lea eax, [edi - 1]
and eax, ebx
or eax, edi
test edx, edx
jne 0x4ea811
xor eax, edi
inc edx
push 0x7f
pop ecx
sub ecx, dword [ebp - 0x38]
add edx, ecx
cmp eax, edi
jge 0x4ea835
cmp edx, 1
jle 0x4ea82d
test eax, eax
jle 0x4ea82d
add eax, eax
dec edx
cmp eax, edi
jl 0x4ea81d
cmp eax, edi
jge 0x4ea835
xor edx, edx
jmp 0x4ea837
xor eax, edi
mov ecx, dword [ebp - 0x28]
shl eax, cl
mov ecx, dword [ebp - 0x24]
shl edx, 0x17
and esi, 0x80000000
or eax, edx
mov edx, dword [ebp - 0x3c]
or eax, esi
mov dword [edx + ecx*4], eax
inc ecx
mov dword [ebp - 0x24], ecx
cmp ecx, dword [ebp - 0x10]
jb 0x4ea7d1
mov edi, dword [ebp + 8]
mov eax, dword [ebp - 0xc]
inc eax
mov dword [ebp - 0xc], eax
cmp eax, dword [ebp + 0x10]
jb 0x4ea774
inc dword [ebp - 8]
mov eax, dword [ebp - 8]
add dword [ebp - 0x2c], 0x10
cmp eax, dword [ebp + 0x14]
jb 0x4ea760
jmp 0x4eacd4
mov dword [ebp - 8], eax
cmp eax, esi
jae 0x4eacd4
shl eax, 4
mov dword [ebp + 8], eax
mov ecx, dword [ebp - 0x1c]
mov esi, dword [ebp - 8]
mov eax, dword [ebp + 0xc]
mov ecx, dword [ecx + esi*4]
cmp eax, dword [ebp + 0x10]
mov edx, eax
mov dword [ebp - 0x14], ecx
jmp 0x4ea91a
mov eax, dword [ebp - 0x20]
mov eax, dword [eax + edx*4]
add eax, dword [ebp - 0x14]
mov ecx, dword [edi + 0x8090]
xor esi, esi
lea eax, [ecx + eax*4]
mov dword [ebp - 0x3c], eax
cmp dword [ebp - 0x10], esi
jbe 0x4ea916
mov ecx, dword [ebp + 8]
mov eax, edx
and eax, 0xf
lea eax, [eax + ecx + 0x67bab0]
movzx ecx, byte [ebp - 1]
and edx, 0xfffffff0
shl edx, 4
mov dword [ebp - 0x18], ecx
movzx ecx, byte [eax]
add ecx, edx
mov ebx, esi
and ebx, 0xf
mov ebx, dword [ebp + ebx*4 - 0x7c]
mov ebx, dword [ebx + ecx*4]
add ebx, dword [ebp + 0x1c]
mov ecx, dword [ebp + 0x18]
sar ebx, cl
mov ecx, dword [ebp - 0x18]
shl ebx, cl
mov ecx, dword [ebp - 0x3c]
mov dword [ecx + esi*4], ebx
inc esi
cmp esi, dword [ebp - 0x10]
jb 0x4ea8e9
mov edx, dword [ebp - 0xc]
inc edx
cmp edx, dword [ebp + 0x10]
mov dword [ebp - 0xc], edx
jb 0x4ea8b1
inc dword [ebp - 8]
mov eax, dword [ebp - 8]
add dword [ebp + 8], 0x10
cmp eax, dword [ebp + 0x14]
jb 0x4ea89b
jmp 0x4eacd4
mov dword [ebp - 8], eax
cmp eax, esi
jae 0x4eacd4
shl eax, 4
mov dword [ebp + 8], eax
mov ecx, dword [ebp - 0x1c]
mov esi, dword [ebp - 8]
mov eax, dword [ebp + 0xc]
mov ecx, dword [ecx + esi*4]
cmp eax, dword [ebp + 0x10]
mov edx, eax
mov dword [ebp - 0x14], ecx
jmp 0x4ea9c7
mov eax, dword [ebp - 0x20]
mov eax, dword [eax + edx*4]
add eax, dword [ebp - 0x14]
mov ecx, dword [edi + 0x8090]
xor esi, esi
lea eax, [ecx + eax*4]
mov dword [ebp - 0x3c], eax
cmp dword [ebp - 0x10], esi
jbe 0x4ea9c3
mov ecx, dword [ebp + 8]
mov eax, edx
and eax, 0xf
lea eax, [eax + ecx + 0x67bab0]
movzx ecx, byte [ebp - 1]
and edx, 0xfffffff0
shl edx, 4
mov dword [ebp - 0x18], ecx
movzx ecx, byte [eax]
add ecx, edx
mov ebx, esi
and ebx, 0xf
mov ebx, dword [ebp + ebx*4 - 0x7c]
mov ebx, dword [ebx + ecx*4]
add ebx, dword [ebp + 0x1c]
mov ecx, dword [ebp + 0x18]
sar ebx, cl
mov ecx, dword [ebp - 0x18]
shl ebx, cl
mov ecx, dword [ebp - 0x3c]
mov dword [ecx + esi*4], ebx
inc esi
cmp esi, dword [ebp - 0x10]
jb 0x4ea996
mov edx, dword [ebp - 0xc]
inc edx
cmp edx, dword [ebp + 0x10]
mov dword [ebp - 0xc], edx
jb 0x4ea95e
inc dword [ebp - 8]
mov eax, dword [ebp - 8]
add dword [ebp + 8], 0x10
cmp eax, dword [ebp + 0x14]
jb 0x4ea948
jmp 0x4eacd4
mov dword [ebp - 8], eax
cmp eax, esi
jae 0x4eacd4
shl eax, 4
mov dword [ebp + 8], eax
mov ecx, dword [ebp - 0x1c]
mov edx, dword [ebp - 8]
mov eax, dword [ebp + 0xc]
mov ecx, dword [ecx + edx*4]
mov dword [ebp - 0xc], eax
mov dword [ebp - 0x14], ecx
jmp 0x4eaa7a
mov ecx, dword [ebp - 0xc]
mov eax, dword [ebp - 0x20]
mov eax, dword [eax + ecx*4]
add eax, dword [ebp - 0x14]
mov ecx, dword [edi + 0x8090]
xor edx, edx
lea eax, [ecx + eax*2]
mov dword [ebp - 0x3c], eax
cmp dword [ebp - 0x10], edx
jbe 0x4eaa74
mov esi, dword [ebp - 0xc]
mov ecx, dword [ebp + 8]
mov eax, esi
and eax, 0xf
and esi, 0xfffffff0
lea ebx, [eax + ecx + 0x67bab0]
shl esi, 4
movzx eax, byte [ebx]
add eax, esi
mov ecx, edx
and ecx, 0xf
mov ecx, dword [ebp + ecx*4 - 0x7c]
mov eax, dword [ecx + eax*4]
add eax, dword [ebp + 0x1c]
mov ecx, dword [ebp + 0x18]
sar eax, cl
mov ecx, eax
sar ecx, 0x1f
and eax, 0x7fff
xor eax, ecx
sub eax, ecx
mov ecx, dword [ebp - 0x3c]
mov word [ecx + edx*2], ax
inc edx
cmp edx, dword [ebp - 0x10]
jb 0x4eaa40
inc dword [ebp - 0xc]
mov eax, dword [ebp - 0xc]
cmp eax, dword [ebp + 0x10]
jb 0x4eaa09
inc dword [ebp - 8]
mov eax, dword [ebp - 8]
add dword [ebp + 8], 0x10
cmp eax, dword [ebp + 0x14]
jb 0x4ea9f5
jmp 0x4eacd4
mov dword [ebp - 8], eax
cmp eax, esi
jae 0x4eacd4
shl eax, 4
mov dword [ebp + 8], eax
mov ecx, dword [ebp - 0x1c]
mov edx, dword [ebp - 8]
mov ecx, dword [ecx + edx*4]
mov eax, dword [ebp + 0xc]
mov dword [ebp - 0x14], ecx
jmp 0x4eab3e
mov ecx, dword [ebp - 0x20]
mov ecx, dword [ecx + eax*4]
add ecx, dword [ebp - 0x14]
mov edx, dword [edi + 0x8090]
xor ebx, ebx
lea ecx, [edx + ecx*2]
mov dword [ebp - 0x3c], ecx
cmp dword [ebp - 0x10], ebx
jbe 0x4eab3d
mov edx, dword [ebp + 8]
mov ecx, eax
and ecx, 0xf
lea esi, [ecx + edx + 0x67bab0]
mov edx, eax
movzx eax, byte [ebp - 1]
and edx, 0xfffffff0
shl edx, 4
mov dword [ebp - 0x18], eax
movzx eax, byte [esi]
add eax, edx
mov ecx, ebx
and ecx, 0xf
mov ecx, dword [ebp + ecx*4 - 0x7c]
mov eax, dword [ecx + eax*4]
add eax, dword [ebp + 0x1c]
mov ecx, dword [ebp + 0x18]
sar eax, cl
mov ecx, dword [ebp - 0x18]
shl eax, cl
cmp eax, 0xffff8000
jge 0x4eab22
mov eax, 0xffff8000
jmp 0x4eab2d
mov ecx, 0x7fff
cmp eax, ecx
jle 0x4eab2d
mov eax, ecx
mov ecx, dword [ebp - 0x3c]
mov word [ecx + ebx*2], ax
inc ebx
cmp ebx, dword [ebp - 0x10]
jb 0x4eaaf6
mov eax, dword [ebp - 0xc]
inc eax
mov dword [ebp - 0xc], eax
cmp eax, dword [ebp + 0x10]
jb 0x4eaabc
inc dword [ebp - 8]
mov eax, dword [ebp - 8]
add dword [ebp + 8], 0x10
cmp eax, dword [ebp + 0x14]
jb 0x4eaaa8
jmp 0x4eacd4
mov dword [ebp - 8], eax
cmp eax, esi
jae 0x4eacd4
shl eax, 4
mov dword [ebp + 8], eax
mov ecx, dword [ebp - 0x1c]
mov edx, dword [ebp - 8]
mov ecx, dword [ecx + edx*4]
mov eax, dword [ebp + 0xc]
mov dword [ebp - 0x14], ecx
jmp 0x4eac00
mov ecx, dword [ebp - 0x20]
mov ecx, dword [ecx + eax*4]
add ecx, dword [ebp - 0x14]
mov edx, dword [edi + 0x8090]
xor ebx, ebx
lea ecx, [edx + ecx*2]
mov dword [ebp - 0x3c], ecx
cmp dword [ebp - 0x10], ebx
jbe 0x4eabff
mov edx, dword [ebp + 8]
mov ecx, eax
and ecx, 0xf
lea esi, [ecx + edx + 0x67bab0]
mov edx, eax
movzx eax, byte [ebp - 1]
and edx, 0xfffffff0
shl edx, 4
mov dword [ebp - 0x18], eax
movzx eax, byte [esi]
add eax, edx
mov ecx, ebx
and ecx, 0xf
mov ecx, dword [ebp + ecx*4 - 0x7c]
mov eax, dword [ecx + eax*4]
add eax, dword [ebp + 0x1c]
mov ecx, dword [ebp + 0x18]
sar eax, cl
mov ecx, dword [ebp - 0x18]
shl eax, cl
test eax, eax
jge 0x4eabe4
xor eax, eax
jmp 0x4eabef
mov ecx, 0xffff
cmp eax, ecx
jle 0x4eabef
mov eax, ecx
mov ecx, dword [ebp - 0x3c]
mov word [ecx + ebx*2], ax
inc ebx
cmp ebx, dword [ebp - 0x10]
jb 0x4eabbe
mov eax, dword [ebp - 0xc]
inc eax
mov dword [ebp - 0xc], eax
cmp eax, dword [ebp + 0x10]
jb 0x4eab84
inc dword [ebp - 8]
mov eax, dword [ebp - 8]
add dword [ebp + 8], 0x10
cmp eax, dword [ebp + 0x14]
jb 0x4eab73
jmp 0x4eacd4
mov dword [ebp - 8], eax
cmp eax, esi
jae 0x4eacd4
shl eax, 4
mov dword [ebp + 8], eax
mov ecx, dword [ebp - 0x1c]
mov edx, dword [ebp - 8]
mov eax, dword [ebp + 0xc]
mov ecx, dword [ecx + edx*4]
mov dword [ebp - 0xc], eax
mov dword [ebp - 0x14], ecx
jmp 0x4eacbc
mov eax, dword [ebp - 0x20]
mov ecx, dword [ebp - 0xc]
mov eax, dword [eax + ecx*4]
add eax, dword [edi + 0x8090]
and dword [ebp - 0x24], 0
add eax, dword [ebp - 0x14]
cmp dword [ebp - 0x10], 0
jbe 0x4eacb6
mov edx, dword [ebp + 8]
mov esi, ecx
and ecx, 0xf
and esi, 0xfffffff0
lea ebx, [ecx + edx + 0x67bab0]
shl esi, 4
movzx ecx, byte [ebx]
mov edx, dword [ebp - 0x24]
and edx, 0xf
mov edx, dword [ebp + edx*4 - 0x7c]
add ecx, esi
mov edx, dword [edx + ecx*4]
add edx, dword [ebp + 0x1c]
mov ecx, dword [ebp + 0x18]
sar edx, cl
test edx, edx
jge 0x4eac9c
xor edx, edx
jmp 0x4eaca7
mov ecx, 0xff
cmp edx, ecx
jle 0x4eaca7
mov edx, ecx
mov ecx, dword [ebp - 0x24]
mov byte [eax + ecx], dl
inc ecx
mov dword [ebp - 0x24], ecx
cmp ecx, dword [ebp - 0x10]
jb 0x4eac7a
inc dword [ebp - 0xc]
mov eax, dword [ebp - 0xc]
cmp eax, dword [ebp + 0x10]
jb 0x4eac49
inc dword [ebp - 8]
mov eax, dword [ebp - 8]
add dword [ebp + 8], 0x10
cmp eax, dword [ebp + 0x14]
jb 0x4eac35
pop edi
pop esi
pop ebx
leave
ret