Function at 0x4edd90
Capabilities:
Encode data using xor

Disassembly:
push ebp
mov ebp, esp
sub esp, 8
push ebx
mov ebx, dword [ebp + 0x10]
push esi
mov esi, dword [ebp + 0xc]
push edi
mov edi, ecx
lea ecx, [ebx*4]
lea edx, [ecx + esi]
mov dword [ebp + 0xc], edx
movzx eax, byte [edi]
cmp eax, 0x89
ja case.0x4eddc3.4
movzx eax, byte [eax + 0x4eed50]
jmp dword [eax*4 + 0x4eed18]
mov edx, dword [ebp + 8]
mov ecx, ebx
mov edi, dword [ebp + 0x14]
sar ecx, 3
add ecx, edx
mov dword [ebp + 0xc], edx
mov eax, ecx
sub eax, edx
test edi, edi
je 0x4edff4
cmp edx, ecx
mov dword [ebp + 8], 0
mov dword [ebp - 4], 0
cmova eax, dword [ebp + 8]
mov dword [ebp - 8], eax
test eax, eax
je 0x4edf8d
lea eax, [esi + 0x19]
mov ebx, edi
mov dword [ebp + 8], eax
nop dword [eax]
movzx ecx, byte [eax + 5]
movzx eax, byte [eax + 3]
and ecx, 0xfffffff8
and eax, 0xfffffff0
mov edi, dword [ebx]
shl ecx, 5
add ecx, eax
mov eax, dword [ebp + 8]
movzx eax, byte [eax + 4]
shr eax, 2
add eax, edi
mov dl, byte [eax + ecx*4]
mov eax, dword [ebp + 8]
add dl, dl
movzx ecx, byte [eax + 1]
movzx eax, byte [eax - 1]
and ecx, 0xfffffff8
and eax, 0xfffffff0
shl ecx, 5
add ecx, eax
mov eax, dword [ebp + 8]
movzx eax, byte [eax]
shr eax, 2
add eax, edi
mov al, byte [eax + ecx*4]
and al, 1
or dl, al
mov eax, dword [ebp + 8]
add dl, dl
movzx ecx, byte [eax - 3]
movzx eax, byte [eax - 5]
and ecx, 0xfffffff8
and eax, 0xfffffff0
shl ecx, 5
add ecx, eax
mov eax, dword [ebp + 8]
movzx eax, byte [eax - 4]
shr eax, 2
add eax, edi
mov al, byte [eax + ecx*4]
and al, 1
or dl, al
mov eax, dword [ebp + 8]
add dl, dl
movzx ecx, byte [eax - 7]
movzx eax, byte [eax - 9]
and ecx, 0xfffffff8
and eax, 0xfffffff0
shl ecx, 5
add ecx, eax
mov eax, dword [ebp + 8]
movzx eax, byte [eax - 8]
shr eax, 2
add eax, edi
mov al, byte [eax + ecx*4]
and al, 1
or dl, al
mov eax, dword [ebp + 8]
add dl, dl
movzx ecx, byte [eax - 0xb]
movzx eax, byte [eax - 0xd]
and ecx, 0xfffffff8
and eax, 0xfffffff0
shl ecx, 5
add ecx, eax
mov eax, dword [ebp + 8]
movzx eax, byte [eax - 0xc]
shr eax, 2
add eax, edi
mov al, byte [eax + ecx*4]
and al, 1
or dl, al
mov eax, dword [ebp + 8]
add dl, dl
movzx ecx, byte [eax - 0xf]
movzx eax, byte [eax - 0x11]
and ecx, 0xfffffff8
and eax, 0xfffffff0
shl ecx, 5
add ecx, eax
mov eax, dword [ebp + 8]
movzx eax, byte [eax - 0x10]
shr eax, 2
add eax, edi
mov al, byte [eax + ecx*4]
and al, 1
or dl, al
mov eax, dword [ebp + 8]
add dl, dl
movzx ecx, byte [eax - 0x13]
movzx eax, byte [eax - 0x15]
and ecx, 0xfffffff8
and eax, 0xfffffff0
shl ecx, 5
add ecx, eax
mov eax, dword [ebp + 8]
movzx eax, byte [eax - 0x14]
shr eax, 2
add eax, edi
mov al, byte [eax + ecx*4]
and al, 1
or dl, al
mov eax, dword [ebp + 8]
add dl, dl
movzx ecx, byte [eax - 0x17]
movzx eax, byte [esi]
and ecx, 0xfffffff8
and eax, 0xfffffff0
shl ecx, 5
add ecx, eax
add esi, 0x20
mov eax, dword [ebp + 8]
movzx eax, byte [eax - 0x18]
shr eax, 2
add eax, edi
mov al, byte [eax + ecx*4]
mov ecx, dword [ebp - 4]
and al, 1
or dl, al
inc ecx
mov eax, dword [ebp + 0xc]
mov dword [ebp - 4], ecx
mov byte [eax], dl
mov eax, dword [ebp + 8]
mov edx, dword [ebp + 0xc]
add eax, 0x20
inc edx
mov dword [ebp + 8], eax
mov dword [ebp + 0xc], edx
cmp ecx, dword [ebp - 8]
jb 0x4ede10
mov ebx, dword [ebp + 0x10]
mov edi, dword [ebp + 0x14]
and ebx, 7
je case.0x4eddc3.4
xor cl, cl
mov byte [ebp + 0x17], cl
mov byte [ebp + 0xb], cl
test ebx, ebx
je 0x4edfe9
mov edi, dword [edi]
inc esi
mov dl, cl
nop word [eax + eax]
movzx ecx, byte [esi + 1]
lea esi, [esi + 4]
movzx eax, byte [esi - 5]
and ecx, 0xfffffff8
and eax, 0xfffffff0
shl ecx, 5
add ecx, eax
dec ebx
movzx eax, byte [esi - 4]
shr eax, 2
add eax, edi
mov al, byte [eax + ecx*4]
mov cl, dl
shl al, cl
add dl, 1
mov cl, byte [ebp + 0x17]
or cl, al
mov byte [ebp + 0x17], cl
test ebx, ebx
jg 0x4edfb0
mov edx, dword [ebp + 0xc]
pop edi
pop esi
mov byte [edx], cl
pop ebx
mov esp, ebp
pop ebp
ret 0x10
xor edi, edi
cmp edx, ecx
cmova eax, edi
test eax, eax
je 0x4ee052
mov ebx, eax
mov cl, byte [esi + 5]
inc edi
mov al, byte [esi + 1]
and cl, 0xbf
shr al, 1
or cl, al
mov al, byte [esi + 9]
shr cl, 1
and al, 0x9f
or cl, al
mov al, byte [esi + 0xd]
shr cl, 1
and al, 0x8f
or cl, al
mov al, byte [esi + 0x11]
shr cl, 1
and al, 0x87
or cl, al
mov al, byte [esi + 0x15]
shr cl, 1
and al, 0x83
or cl, al
mov al, byte [esi + 0x19]
shr cl, 1
and al, 0x81
or cl, al
mov al, byte [esi + 0x1d]
shr cl, 1
and al, 0x80
or cl, al
add esi, 0x20
mov byte [edx], cl
inc edx
cmp edi, ebx
jb 0x4ee001
mov ebx, dword [ebp + 0x10]
and ebx, 7
je case.0x4eddc3.4
xor ah, ah
mov cl, 7
test ebx, ebx
je 0x4ee076
inc esi
mov al, byte [esi]
lea esi, [esi + 4]
and al, 0x80
dec ebx
shr al, cl
dec cl
or ah, al
test ebx, ebx
jg 0x4ee064
pop edi
pop esi
mov byte [edx], ah
pop ebx
mov esp, ebp
pop ebp
ret 0x10
mov edx, dword [ebp + 8]
mov ecx, ebx
mov edi, dword [ebp + 0x14]
sar ecx, 3
add ecx, edx
mov dword [ebp + 0xc], edx
mov eax, ecx
sub eax, edx
test edi, edi
je 0x4ee2a5
cmp edx, ecx
mov dword [ebp + 8], 0
mov dword [ebp - 4], 0
cmova eax, dword [ebp + 8]
mov dword [ebp - 8], eax
test eax, eax
je 0x4ee241
lea eax, [esi + 5]
mov ebx, edi
mov dword [ebp + 8], eax
movzx ecx, byte [eax - 3]
movzx eax, byte [esi]
and ecx, 0xfffffff8
and eax, 0xfffffff0
mov edi, dword [ebx]
shl ecx, 5
add ecx, eax
mov eax, dword [ebp + 8]
movzx eax, byte [eax - 4]
shr eax, 2
add eax, edi
mov dl, byte [eax + ecx*4]
mov eax, dword [ebp + 8]
add dl, dl
movzx ecx, byte [eax + 1]
movzx eax, byte [eax - 1]
and ecx, 0xfffffff8
and eax, 0xfffffff0
shl ecx, 5
add ecx, eax
mov eax, dword [ebp + 8]
movzx eax, byte [eax]
shr eax, 2
add eax, edi
mov al, byte [eax + ecx*4]
and al, 1
or dl, al
mov eax, dword [ebp + 8]
add dl, dl
movzx ecx, byte [eax + 5]
movzx eax, byte [eax + 3]
and ecx, 0xfffffff8
and eax, 0xfffffff0
shl ecx, 5
add ecx, eax
mov eax, dword [ebp + 8]
movzx eax, byte [eax + 4]
shr eax, 2
add eax, edi
mov al, byte [eax + ecx*4]
and al, 1
or dl, al
mov eax, dword [ebp + 8]
add dl, dl
movzx ecx, byte [eax + 9]
movzx eax, byte [eax + 7]
and ecx, 0xfffffff8
and eax, 0xfffffff0
shl ecx, 5
add ecx, eax
mov eax, dword [ebp + 8]
movzx eax, byte [eax + 8]
shr eax, 2
add eax, edi
mov al, byte [eax + ecx*4]
and al, 1
or dl, al
mov eax, dword [ebp + 8]
add dl, dl
movzx ecx, byte [eax + 0xd]
movzx eax, byte [eax + 0xb]
and ecx, 0xfffffff8
and eax, 0xfffffff0
shl ecx, 5
add ecx, eax
mov eax, dword [ebp + 8]
movzx eax, byte [eax + 0xc]
shr eax, 2
add eax, edi
mov al, byte [eax + ecx*4]
and al, 1
or dl, al
mov eax, dword [ebp + 8]
add dl, dl
movzx ecx, byte [eax + 0x11]
movzx eax, byte [eax + 0xf]
and ecx, 0xfffffff8
and eax, 0xfffffff0
shl ecx, 5
add ecx, eax
mov eax, dword [ebp + 8]
movzx eax, byte [eax + 0x10]
add esi, 0x20
shr eax, 2
add eax, edi
mov al, byte [eax + ecx*4]
and al, 1
or dl, al
mov eax, dword [ebp + 8]
add dl, dl
movzx ecx, byte [eax + 0x15]
movzx eax, byte [eax + 0x13]
and ecx, 0xfffffff8
and eax, 0xfffffff0
shl ecx, 5
add ecx, eax
mov eax, dword [ebp + 8]
movzx eax, byte [eax + 0x14]
shr eax, 2
add eax, edi
mov al, byte [eax + ecx*4]
and al, 1
or dl, al
mov eax, dword [ebp + 8]
add dl, dl
movzx ecx, byte [eax + 0x19]
movzx eax, byte [eax + 0x17]
and ecx, 0xfffffff8
and eax, 0xfffffff0
shl ecx, 5
add ecx, eax
mov eax, dword [ebp + 8]
movzx eax, byte [eax + 0x18]
shr eax, 2
add eax, edi
mov al, byte [eax + ecx*4]
mov ecx, dword [ebp - 4]
and al, 1
or dl, al
inc ecx
mov eax, dword [ebp + 0xc]
mov dword [ebp - 4], ecx
mov byte [eax], dl
mov eax, dword [ebp + 8]
mov edx, dword [ebp + 0xc]
add eax, 0x20
inc edx
mov dword [ebp + 8], eax
mov dword [ebp + 0xc], edx
cmp ecx, dword [ebp - 8]
jb 0x4ee0c4
mov ebx, dword [ebp + 0x10]
mov edi, dword [ebp + 0x14]
and ebx, 7
je case.0x4eddc3.4
xor cl, cl
mov byte [ebp + 0xb], 7
mov byte [ebp + 0x17], cl
test ebx, ebx
je 0x4edfe9
mov edi, dword [edi]
inc esi
mov dl, byte [ebp + 0xb]
movzx ecx, byte [esi + 1]
lea esi, [esi + 4]
movzx eax, byte [esi - 5]
and ecx, 0xfffffff8
and eax, 0xfffffff0
shl ecx, 5
add ecx, eax
dec ebx
movzx eax, byte [esi - 4]
shr eax, 2
add eax, edi
mov al, byte [eax + ecx*4]
mov cl, dl
shl al, cl
add dl, 0xff
mov cl, byte [ebp + 0x17]
or cl, al
mov byte [ebp + 0x17], cl
test ebx, ebx
jg 0x4ee261
mov edx, dword [ebp + 0xc]
pop edi
pop esi
pop ebx
mov byte [edx], cl
mov esp, ebp
pop ebp
ret 0x10
xor edi, edi
cmp edx, ecx
cmova eax, edi
test eax, eax
je 0x4ee303
mov ebx, eax
mov cl, byte [esi + 0x19]
inc edi
mov al, byte [esi + 0x1d]
and cl, 0xbf
shr al, 1
or cl, al
mov al, byte [esi + 0x15]
shr cl, 1
and al, 0x9f
or cl, al
mov al, byte [esi + 0x11]
shr cl, 1
and al, 0x8f
or cl, al
mov al, byte [esi + 0xd]
shr cl, 1
and al, 0x87
or cl, al
mov al, byte [esi + 9]
shr cl, 1
and al, 0x83
or cl, al
mov al, byte [esi + 5]
shr cl, 1
and al, 0x81
or cl, al
mov al, byte [esi + 1]
shr cl, 1
and al, 0x80
or cl, al
add esi, 0x20
mov byte [edx], cl
inc edx
cmp edi, ebx
jb 0x4ee2b2
mov ebx, dword [ebp + 0x10]
and ebx, 7
je case.0x4eddc3.4
xor ah, ah
xor cl, cl
test ebx, ebx
je 0x4ee076
inc esi
nop dword [eax]
mov al, byte [esi]
lea esi, [esi + 4]
and al, 0x80
dec ebx
shr al, cl
inc cl
or ah, al
test ebx, ebx
jg 0x4ee320
pop edi
pop esi
mov byte [edx], ah
pop ebx
mov esp, ebp
pop ebp
ret 0x10
mov edi, dword [ebp + 8]
mov ecx, ebx
mov eax, dword [ebp + 0x14]
xor edx, edx
sar ecx, 2
add ecx, edi
mov dword [ebp + 8], edi
mov dword [ebp - 8], ecx
test eax, eax
je 0x4ee47e
sub ecx, edi
mov dword [ebp + 0xc], edx
cmp edi, dword [ebp - 8]
cmova ecx, edx
mov dword [ebp - 8], ecx
test ecx, ecx
je 0x4ee42b
lea ebx, [esi + 0xd]
mov edi, dword [eax]
lea ebx, [ebx + 0x10]
movzx ecx, byte [ebx - 0x13]
movzx eax, byte [ebx - 0x15]
and ecx, 0xfffffff8
and eax, 0xfffffff0
shl ecx, 5
add ecx, eax
movzx eax, byte [ebx - 0x14]
shr eax, 2
add eax, edi
mov dl, byte [eax + ecx*4]
movzx ecx, byte [ebx - 0xf]
and dl, 3
movzx eax, byte [ebx - 0x11]
and ecx, 0xfffffff8
and eax, 0xfffffff0
shl ecx, 5
add ecx, eax
movzx eax, byte [ebx - 0x10]
shr eax, 2
add eax, edi
mov al, byte [eax + ecx*4]
movzx ecx, byte [ebx - 0x17]
shl al, 2
and ecx, 0xfffffff8
or dl, al
shl ecx, 5
movzx eax, byte [ebx - 0x19]
and eax, 0xfffffff0
shl dl, 2
add ecx, eax
movzx eax, byte [ebx - 0x18]
shr eax, 2
add eax, edi
mov al, byte [eax + ecx*4]
movzx ecx, byte [ebx - 0x1b]
and al, 3
or dl, al
and ecx, 0xfffffff8
movzx eax, byte [esi]
add esi, 0x10
and eax, 0xfffffff0
shl ecx, 5
add ecx, eax
shl dl, 2
movzx eax, byte [ebx - 0x1c]
shr eax, 2
add eax, edi
mov edi, dword [ebp + 8]
mov al, byte [eax + ecx*4]
and al, 3
or dl, al
mov eax, dword [ebp + 0xc]
inc eax
mov byte [edi], dl
inc edi
mov dword [ebp + 0xc], eax
cmp eax, dword [ebp - 8]
mov eax, dword [ebp + 0x14]
mov dword [ebp + 8], edi
jb 0x4ee373
mov ebx, dword [ebp + 0x10]
and ebx, 3
je case.0x4eddc3.4
xor dh, dh
xor dl, dl
test ebx, ebx
je 0x4ee473
mov eax, dword [eax]
inc esi
mov dword [ebp + 0x14], eax
movzx ecx, byte [esi + 1]
lea esi, [esi + 4]
movzx eax, byte [esi - 5]
and ecx, 0xfffffff8
and eax, 0xfffffff0
shl ecx, 5
add ecx, eax
dec ebx
movzx eax, byte [esi - 4]
shr eax, 2
add eax, dword [ebp + 0x14]
mov al, byte [eax + ecx*4]
mov cl, dl
shl al, cl
add dl, 2
or dh, al
test ebx, ebx
jg 0x4ee442
mov byte [edi], dh
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
ret 0x10
mov eax, ecx
sub eax, edi
cmp edi, ecx
cmova eax, edx
test eax, eax
je 0x4ee4c0
mov ebx, eax
nop dword [eax]
mov cl, byte [esi + 5]
inc edx
mov al, byte [esi + 1]
and cl, 0xcf
shr al, 2
or cl, al
mov al, byte [esi + 9]
shr cl, 2
and al, 0xc3
or cl, al
mov al, byte [esi + 0xd]
shr cl, 2
and al, 0xc0
or cl, al
add esi, 0x10
mov byte [edi], cl
inc edi
cmp edx, ebx
jb 0x4ee490
mov ebx, dword [ebp + 0x10]
and ebx, 3
je case.0x4eddc3.4
xor dl, dl
mov cl, 6
test ebx, ebx
je 0x4ee4e5
inc esi
mov al, byte [esi]
lea esi, [esi + 4]
and al, 0xc0
dec ebx
shr al, cl
add cl, 0xfe
or dl, al
test ebx, ebx
jg 0x4ee4d2
mov byte [edi], dl
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
ret 0x10
mov edi, dword [ebp + 8]
mov ecx, ebx
mov eax, dword [ebp + 0x14]
xor edx, edx
sar ecx, 2
add ecx, edi
mov dword [ebp + 8], edi
mov dword [ebp - 8], ecx
test eax, eax
je 0x4ee63c
sub ecx, edi
mov dword [ebp + 0xc], edx
cmp edi, dword [ebp - 8]
cmova ecx, edx
mov dword [ebp - 8], ecx
test ecx, ecx
je 0x4ee5dd
lea ebx, [esi + 5]
mov edi, dword [eax]
lea ebx, [ebx + 0x10]
movzx ecx, byte [ebx - 0x13]
movzx eax, byte [esi]
and ecx, 0xfffffff8
and eax, 0xfffffff0
shl ecx, 5
add ecx, eax
add esi, 0x10
movzx eax, byte [ebx - 0x14]
shr eax, 2
add eax, edi
mov dl, byte [eax + ecx*4]
movzx ecx, byte [ebx - 0xf]
movzx eax, byte [ebx - 0x11]
and ecx, 0xfffffff8
and eax, 0xfffffff0
shl ecx, 5
add ecx, eax
shl dl, 2
movzx eax, byte [ebx - 0x10]
shr eax, 2
add eax, edi
mov al, byte [eax + ecx*4]
movzx ecx, byte [ebx - 0xb]
and al, 3
or dl, al
and ecx, 0xfffffff8
movzx eax, byte [ebx - 0xd]
and eax, 0xfffffff0
shl ecx, 5
add ecx, eax
shl dl, 2
movzx eax, byte [ebx - 0xc]
shr eax, 2
add eax, edi
mov al, byte [eax + ecx*4]
movzx ecx, byte [ebx - 7]
and al, 3
or dl, al
and ecx, 0xfffffff8
movzx eax, byte [ebx - 9]
and eax, 0xfffffff0
shl ecx, 5
add ecx, eax
shl dl, 2
movzx eax, byte [ebx - 8]
shr eax, 2
add eax, edi
mov edi, dword [ebp + 8]
mov al, byte [eax + ecx*4]
and al, 3
or dl, al
mov eax, dword [ebp + 0xc]
inc eax
mov byte [edi], dl
inc edi
mov dword [ebp + 0xc], eax
cmp eax, dword [ebp - 8]
mov eax, dword [ebp + 0x14]
mov dword [ebp + 8], edi
jb 0x4ee526
mov ebx, dword [ebp + 0x10]
and ebx, 3
je case.0x4eddc3.4
xor dh, dh
mov dl, 6
test ebx, ebx
je 0x4ee473
mov eax, dword [eax]
inc esi
mov dword [ebp + 0x14], eax
nop dword [eax + eax]
movzx ecx, byte [esi + 1]
lea esi, [esi + 4]
movzx eax, byte [esi - 5]
and ecx, 0xfffffff8
and eax, 0xfffffff0
shl ecx, 5
add ecx, eax
dec ebx
movzx eax, byte [esi - 4]
shr eax, 2
add eax, dword [ebp + 0x14]
mov al, byte [eax + ecx*4]
mov cl, dl
shl al, cl
add dl, 0xfe
or dh, al
test ebx, ebx
jg 0x4ee600
mov byte [edi], dh
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
ret 0x10
mov eax, ecx
sub eax, edi
cmp edi, ecx
cmova eax, edx
test eax, eax
je 0x4ee680
mov ebx, eax
nop dword [eax + eax]
mov cl, byte [esi + 9]
inc edx
mov al, byte [esi + 0xd]
and cl, 0xcf
shr al, 2
or cl, al
mov al, byte [esi + 5]
shr cl, 2
and al, 0xc3
or cl, al
mov al, byte [esi + 1]
shr cl, 2
and al, 0xc0
or cl, al
add esi, 0x10
mov byte [edi], cl
inc edi
cmp edx, ebx
jb 0x4ee650
mov ebx, dword [ebp + 0x10]
and ebx, 3
je case.0x4eddc3.4
xor dl, dl
xor cl, cl
test ebx, ebx
je 0x4ee4e5
inc esi
mov al, byte [esi]
lea esi, [esi + 4]
and al, 0xc0
dec ebx
shr al, cl
or dl, al
add cl, dl
test ebx, ebx
jg 0x4ee696
mov byte [edi], dl
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
ret 0x10
mov ecx, dword [ebp + 8]
mov edx, ebx
mov edi, dword [ebp + 0x14]
sar edx, 1
add edx, ecx
mov dword [ebp + 0xc], ecx
mov eax, edx
sub eax, ecx
test edi, edi
je 0x4ee784
cmp ecx, edx
mov dword [ebp + 8], 0
mov dword [ebp - 4], 0
cmova eax, dword [ebp + 8]
mov dword [ebp - 8], eax
test eax, eax
je 0x4ee763
lea edx, [esi + 5]
mov ebx, edi
mov dword [ebp + 8], edx
movzx ecx, byte [edx - 3]
movzx eax, byte [esi]
and ecx, 0xfffffff8
and eax, 0xfffffff0
shl ecx, 5
add ecx, eax
add esi, 8
movzx eax, byte [edx - 4]
shr eax, 2
add eax, dword [ebx]
mov dl, byte [eax + ecx*4]
mov eax, dword [ebp + 8]
and dl, 0xf
movzx ecx, byte [eax + 1]
movzx eax, byte [eax - 1]
and ecx, 0xfffffff8
and eax, 0xfffffff0
shl ecx, 5
add ecx, eax
mov eax, dword [ebp + 8]
movzx eax, byte [eax]
shr eax, 2
add eax, dword [ebx]
mov al, byte [eax + ecx*4]
mov ecx, dword [ebp + 0xc]
shl al, 4
or dl, al
mov eax, dword [ebp - 4]
inc eax
mov byte [ecx], dl
inc ecx
mov edx, dword [ebp + 8]
add edx, 8
mov dword [ebp + 0xc], ecx
mov dword [ebp + 8], edx
mov dword [ebp - 4], eax
cmp eax, dword [ebp - 8]
jb 0x4ee6f5
mov ebx, dword [ebp + 0x10]
test bl, 1
je case.0x4eddc3.4
push esi
mov ecx, edi
call fcn.004edd20
mov edi, dword [ebp + 0xc]
and al, 0xf
mov byte [edi], al
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
ret 0x10
xor edi, edi
mov dword [ebp + 0xc], 0
cmp ecx, edx
cmova eax, edi
mov dword [ebp - 8], eax
test eax, eax
je 0x4ee853
mov edi, dword [ebp + 8]
lea ecx, [esi + 6]
mov dword [ebp + 0x14], ecx
nop word [eax + eax]
movzx eax, byte [ecx - 1]
movzx ecx, byte [ecx - 2]
imul edx, eax, 0x97
lea eax, [ecx*8]
sub eax, ecx
mov ecx, dword [ebp + 0x14]
lea ebx, [edx + eax*4]
movzx eax, byte [ecx]
imul eax, eax, 0x4d
add ebx, eax
movzx eax, byte [ecx - 5]
imul edx, eax, 0x97
movzx eax, byte [ecx - 4]
movzx ecx, byte [esi]
add esi, 8
imul eax, eax, 0x4d
shr ebx, 8
add edx, eax
lea eax, [ecx*8]
sub eax, ecx
mov ecx, dword [ebp + 0x14]
lea eax, [edx + eax*4]
shr eax, 0xc
xor bl, al
movzx eax, byte [ecx - 1]
movzx ecx, byte [ecx - 2]
and bl, 0xf
imul edx, eax, 0x97
lea eax, [ecx*8]
sub eax, ecx
lea ecx, [edx + eax*4]
mov eax, dword [ebp + 0x14]
movzx eax, byte [eax]
imul eax, eax, 0x4d
add ecx, eax
mov eax, dword [ebp + 0xc]
shr ecx, 8
inc eax
xor bl, cl
mov dword [ebp + 0xc], eax
mov ecx, dword [ebp + 0x14]
mov byte [edi], bl
add ecx, 8
inc edi
mov dword [ebp + 0x14], ecx
cmp eax, dword [ebp - 8]
jb 0x4ee7b0
mov ebx, dword [ebp + 0x10]
jmp 0x4ee855
mov edi, ecx
test bl, 1
je case.0x4eddc3.4
push esi
call fcn.004edd60
add esp, 4
sar eax, 4
and al, 0xf
mov byte [edi], al
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
ret 0x10
mov ecx, dword [ebp + 8]
mov edx, ebx
mov edi, dword [ebp + 0x14]
sar edx, 1
add edx, ecx
mov dword [ebp + 0xc], ecx
mov eax, edx
sub eax, ecx
test edi, edi
je 0x4ee94f
cmp ecx, edx
mov dword [ebp + 8], 0
mov dword [ebp - 4], 0
cmova eax, dword [ebp + 8]
mov dword [ebp - 8], eax
test eax, eax
je 0x4ee92d
lea edx, [esi + 5]
mov ebx, edi
mov dword [ebp + 8], edx
nop dword [eax]
movzx ecx, byte [edx - 3]
movzx eax, byte [esi]
and ecx, 0xfffffff8
and eax, 0xfffffff0
shl ecx, 5
add ecx, eax
add esi, 8
movzx eax, byte [edx - 4]
shr eax, 2
add eax, dword [ebx]
mov dl, byte [eax + ecx*4]
mov eax, dword [ebp + 8]
shl dl, 4
movzx ecx, byte [eax + 1]
movzx eax, byte [eax - 1]
and ecx, 0xfffffff8
and eax, 0xfffffff0
shl ecx, 5
add ecx, eax
mov eax, dword [ebp + 8]
movzx eax, byte [eax]
shr eax, 2
add eax, dword [ebx]
mov al, byte [eax + ecx*4]
mov ecx, dword [ebp + 0xc]
and al, 0xf
or dl, al
mov eax, dword [ebp - 4]
inc eax
mov dword [ebp - 4], eax
mov byte [ecx], dl
inc ecx
mov edx, dword [ebp + 8]
add edx, 8
mov dword [ebp + 0xc], ecx
mov dword [ebp + 8], edx
cmp eax, dword [ebp - 8]
jb 0x4ee8c0
mov ebx, dword [ebp + 0x10]
test bl, 1
je case.0x4eddc3.4
push esi
mov ecx, edi
call fcn.004edd20
mov edi, dword [ebp + 0xc]
shl al, 4
mov byte [edi], al
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
ret 0x10
xor edi, edi
mov dword [ebp + 0xc], 0
cmp ecx, edx
cmova eax, edi
mov dword [ebp - 8], eax
test eax, eax
je 0x4eea11
mov edi, dword [ebp + 8]
lea ecx, [esi + 6]
mov dword [ebp + 0x14], ecx
movzx eax, byte [ecx - 1]
movzx ecx, byte [ecx - 2]
imul edx, eax, 0x97
lea eax, [ecx*8]
sub eax, ecx
mov ecx, dword [ebp + 0x14]
lea ebx, [edx + eax*4]
movzx eax, byte [ecx]
imul eax, eax, 0x4d
add ebx, eax
movzx eax, byte [ecx - 5]
imul edx, eax, 0x97
movzx eax, byte [ecx - 4]
movzx ecx, byte [esi]
imul eax, eax, 0x4d
shr ebx, 0xc
add edx, eax
lea eax, [ecx*8]
sub eax, ecx
mov ecx, dword [ebp + 0x14]
lea eax, [edx + eax*4]
shr eax, 8
xor bl, al
movzx eax, byte [ecx - 5]
imul edx, eax, 0x97
and bl, 0xf
movzx eax, byte [ecx - 4]
movzx ecx, byte [esi]
add esi, 8
imul eax, eax, 0x4d
add edx, eax
lea eax, [ecx*8]
sub eax, ecx
mov ecx, dword [ebp + 0x14]
add ecx, 8
mov dword [ebp + 0x14], ecx
lea eax, [edx + eax*4]
shr eax, 8
xor bl, al
mov eax, dword [ebp + 0xc]
inc eax
mov byte [edi], bl
inc edi
mov dword [ebp + 0xc], eax
cmp eax, dword [ebp - 8]
jb 0x4ee971
mov ebx, dword [ebp + 0x10]
jmp 0x4eea13
mov edi, ecx
test bl, 1
je case.0x4eddc3.4
push esi
call fcn.004edd60
add esp, 4
and al, 0xf0
mov byte [edi], al
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
ret 0x10
cmp esi, edx
jae case.0x4eddc3.4
mov edi, dword [ebp + 0x14]
test edi, edi
je 0x4eea7b
mov ebx, dword [ebp + 8]
movzx ecx, byte [esi + 2]
lea ebx, [ebx + 1]
movzx eax, byte [esi]
and ecx, 0xfffffff8
and eax, 0xfffffff0
shl ecx, 5
add ecx, eax
movzx eax, byte [esi + 1]
shr eax, 2
add esi, 4
lea ecx, [eax + ecx*4]
mov eax, dword [edi]
mov al, byte [ecx + eax]
mov byte [ebx - 1], al
cmp esi, edx
jb 0x4eea44
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
ret 0x10
mov edi, dword [ebp + 8]
mov ebx, edx
movzx eax, byte [esi + 1]
lea edi, [edi + 1]
movzx ecx, byte [esi]
imul edx, eax, 0x97
movzx eax, byte [esi + 2]
add esi, 4
imul eax, eax, 0x4d
add edx, eax
lea eax, [ecx*8]
sub eax, ecx
lea eax, [edx + eax*4]
shr eax, 8
mov byte [edi - 1], al
cmp esi, ebx
jb 0x4eea80
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
ret 0x10
cmp esi, edx
jae case.0x4eddc3.4
mov eax, dword [ebp + 8]
mov ebx, edx
mov dword [ebp + 0x14], eax
nop dword [eax + eax]
movzx edx, byte [esi + 1]
movzx ecx, byte [edi + 0x15]
movzx eax, byte [esi + 2]
shl eax, 8
shl edx, 8
sar edx, cl
movzx ecx, byte [edi + 0x14]
and dx, word [edi + 8]
sar eax, cl
and ax, word [edi + 4]
movzx ecx, byte [edi + 0x16]
or dx, ax
movzx eax, byte [esi]
add esi, 4
shl eax, 8
sar eax, cl
and ax, word [edi + 0xc]
or dx, ax
mov eax, dword [ebp + 0x14]
mov word [eax], dx
add eax, 2
mov dword [ebp + 0x14], eax
cmp esi, ebx
jb 0x4eead0
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
ret 0x10
cmp esi, edx
jae case.0x4eddc3.4
mov eax, dword [ebp + 8]
mov ebx, edx
mov dword [ebp + 0x14], eax
movzx edx, byte [esi + 1]
movzx ecx, byte [edi + 0x15]
movzx eax, byte [esi + 2]
shl edx, 8
shl eax, 8
sar edx, cl
movzx ecx, byte [edi + 0x14]
and edx, dword [edi + 8]
sar eax, cl
and eax, dword [edi + 4]
movzx ecx, byte [edi + 0x16]
or edx, eax
movzx eax, byte [esi]
add esi, 4
shl eax, 8
sar eax, cl
and eax, dword [edi + 0xc]
or edx, eax
mov eax, dword [ebp + 0x14]
mov byte [eax + 1], dl
shr edx, 8
mov byte [eax], dl
add eax, 2
mov dword [ebp + 0x14], eax
cmp esi, ebx
jb 0x4eeb34
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
ret 0x10
cmp esi, edx
jae case.0x4eddc3.4
mov ebx, dword [ebp + 8]
movzx ecx, byte [edi + 0x14]
lea ebx, [ebx + 3]
mov al, byte [esi + 2]
mov byte [ecx + ebx - 3], al
movzx ecx, byte [edi + 0x15]
mov al, byte [esi + 1]
mov byte [ecx + ebx - 3], al
movzx ecx, byte [edi + 0x16]
mov al, byte [esi]
add esi, 4
mov byte [ecx + ebx - 3], al
cmp esi, edx
jb 0x4eeb93
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
ret 0x10
cmp esi, edx
jae case.0x4eddc3.4
mov ebx, dword [ebp + 8]
movzx ecx, byte [edi + 0x14]
lea ebx, [ebx + 4]
mov al, byte [esi + 2]
mov byte [ecx + ebx - 4], al
movzx ecx, byte [edi + 0x15]
mov al, byte [esi + 1]
mov byte [ecx + ebx - 4], al
movzx ecx, byte [edi + 0x16]
mov al, byte [esi]
add esi, 4
mov byte [ecx + ebx - 4], al
cmp esi, edx
jb 0x4eebd1
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
ret 0x10
call fcn.004e4e00
mov ebx, dword [ebp + 0xc]
cmp esi, ebx
jae case.0x4eddc3.4
sub ebx, esi
lea eax, [esi + 2]
mov esi, dword [ebp + 8]
dec ebx
shr ebx, 2
mov dword [ebp + 0x14], eax
inc ebx
mov al, byte [eax + 1]
lea esi, [esi + 4]
movzx ecx, byte [edi + 0x17]
mov byte [ecx + esi - 4], al
movzx eax, byte [edi + 0x17]
movzx eax, byte [eax + esi - 4]
mov edx, dword [eax*4 + 0x5ca028]
mov eax, dword [ebp + 0x14]
movzx ecx, byte [eax]
movzx eax, byte [edi + 0x14]
imul ecx, edx
sar ecx, 8
mov byte [eax + esi - 4], cl
mov eax, dword [ebp + 0x14]
movzx ecx, byte [eax - 1]
movzx eax, byte [edi + 0x15]
imul ecx, edx
sar ecx, 8
mov byte [eax + esi - 4], cl
mov eax, dword [ebp + 0x14]
movzx ecx, byte [eax - 2]
movzx eax, byte [edi + 0x16]
imul ecx, edx
sar ecx, 8
mov byte [eax + esi - 4], cl
mov eax, dword [ebp + 0x14]
add eax, 4
mov dword [ebp + 0x14], eax
sub ebx, 1
jne 0x4eec24
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
ret 0x10
cmp byte [edi + 0x16], 0
jne 0x4eecc5
cmp byte [edi + 0x15], 1
jne 0x4eecc5
cmp byte [edi + 0x14], 2
jne 0x4eecc5
cmp byte [edi + 0x17], 3
jne 0x4eecc5
push ecx
push esi
push dword [ebp + 8]
call fcn.004ef620
add esp, 0xc
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
ret 0x10
cmp esi, edx
jae case.0x4eddc3.4
sub edx, esi
lea ebx, [esi + 1]
mov esi, dword [ebp + 8]
dec edx
shr edx, 2
inc edx
movzx ecx, byte [edi + 0x14]
lea esi, [esi + 4]
mov al, byte [ebx + 1]
lea ebx, [ebx + 4]
mov byte [ecx + esi - 4], al
movzx ecx, byte [edi + 0x15]
mov al, byte [ebx - 4]
mov byte [ecx + esi - 4], al
movzx ecx, byte [edi + 0x16]
mov al, byte [ebx - 5]
mov byte [ecx + esi - 4], al
movzx ecx, byte [edi + 0x17]
mov al, byte [ebx - 2]
mov byte [ecx + esi - 4], al
sub edx, 1
jne 0x4eecd6
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
ret 0x10