Function at 0x4ddd86
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 0x4ddda5
mov dword [ebp - 0x10], 1
jmp 0x4dddab
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 0x4dddfe
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 0x4ddde7
mov esi, dword [ebp + 0x14]
cmp dword [edi + 0x8590], 0
je 0x4dde19
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 0x4de322
dec ecx
je 0x4de260
dec ecx
je 0x4de195
dec ecx
je 0x4de0e2
dec ecx
je 0x4de035
dec ecx
je 0x4ddf88
dec ecx
jne 0x4de3d2
mov dword [ebp - 8], eax
cmp eax, esi
jae 0x4de3d2
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 0x4ddf64
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 0x4ddf63
mov esi, dword [ebp - 0x2c]
movzx ecx, byte [ebp - 1]
mov edx, eax
and edx, 0xf
lea edx, [edx + esi + 0x67eb50]
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 0x4dded2
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 0x4ddf0f
xor eax, edi
inc edx
push 0x7f
pop ecx
sub ecx, dword [ebp - 0x38]
add edx, ecx
cmp eax, edi
jge 0x4ddf33
cmp edx, 1
jle 0x4ddf2b
test eax, eax
jle 0x4ddf2b
add eax, eax
dec edx
cmp eax, edi
jl 0x4ddf1b
cmp eax, edi
jge 0x4ddf33
xor edx, edx
jmp 0x4ddf35
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 0x4ddecf
mov edi, dword [ebp + 8]
mov eax, dword [ebp - 0xc]
inc eax
mov dword [ebp - 0xc], eax
cmp eax, dword [ebp + 0x10]
jb 0x4dde72
inc dword [ebp - 8]
mov eax, dword [ebp - 8]
add dword [ebp - 0x2c], 0x10
cmp eax, dword [ebp + 0x14]
jb 0x4dde5e
jmp 0x4de3d2
mov dword [ebp - 8], eax
cmp eax, esi
jae 0x4de3d2
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 0x4de018
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 0x4de014
mov ecx, dword [ebp + 8]
mov eax, edx
and eax, 0xf
lea eax, [eax + ecx + 0x67eb50]
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 0x4ddfe7
mov edx, dword [ebp - 0xc]
inc edx
cmp edx, dword [ebp + 0x10]
mov dword [ebp - 0xc], edx
jb 0x4ddfaf
inc dword [ebp - 8]
mov eax, dword [ebp - 8]
add dword [ebp + 8], 0x10
cmp eax, dword [ebp + 0x14]
jb 0x4ddf99
jmp 0x4de3d2
mov dword [ebp - 8], eax
cmp eax, esi
jae 0x4de3d2
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 0x4de0c5
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 0x4de0c1
mov ecx, dword [ebp + 8]
mov eax, edx
and eax, 0xf
lea eax, [eax + ecx + 0x67eb50]
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 0x4de094
mov edx, dword [ebp - 0xc]
inc edx
cmp edx, dword [ebp + 0x10]
mov dword [ebp - 0xc], edx
jb 0x4de05c
inc dword [ebp - 8]
mov eax, dword [ebp - 8]
add dword [ebp + 8], 0x10
cmp eax, dword [ebp + 0x14]
jb 0x4de046
jmp 0x4de3d2
mov dword [ebp - 8], eax
cmp eax, esi
jae 0x4de3d2
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 0x4de178
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 0x4de172
mov esi, dword [ebp - 0xc]
mov ecx, dword [ebp + 8]
mov eax, esi
and eax, 0xf
and esi, 0xfffffff0
lea ebx, [eax + ecx + 0x67eb50]
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 0x4de13e
inc dword [ebp - 0xc]
mov eax, dword [ebp - 0xc]
cmp eax, dword [ebp + 0x10]
jb 0x4de107
inc dword [ebp - 8]
mov eax, dword [ebp - 8]
add dword [ebp + 8], 0x10
cmp eax, dword [ebp + 0x14]
jb 0x4de0f3
jmp 0x4de3d2
mov dword [ebp - 8], eax
cmp eax, esi
jae 0x4de3d2
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 0x4de23c
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 0x4de23b
mov edx, dword [ebp + 8]
mov ecx, eax
and ecx, 0xf
lea esi, [ecx + edx + 0x67eb50]
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 0x4de220
mov eax, 0xffff8000
jmp 0x4de22b
mov ecx, 0x7fff
cmp eax, ecx
jle 0x4de22b
mov eax, ecx
mov ecx, dword [ebp - 0x3c]
mov word [ecx + ebx*2], ax
inc ebx
cmp ebx, dword [ebp - 0x10]
jb 0x4de1f4
mov eax, dword [ebp - 0xc]
inc eax
mov dword [ebp - 0xc], eax
cmp eax, dword [ebp + 0x10]
jb 0x4de1ba
inc dword [ebp - 8]
mov eax, dword [ebp - 8]
add dword [ebp + 8], 0x10
cmp eax, dword [ebp + 0x14]
jb 0x4de1a6
jmp 0x4de3d2
mov dword [ebp - 8], eax
cmp eax, esi
jae 0x4de3d2
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 0x4de2fe
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 0x4de2fd
mov edx, dword [ebp + 8]
mov ecx, eax
and ecx, 0xf
lea esi, [ecx + edx + 0x67eb50]
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 0x4de2e2
xor eax, eax
jmp 0x4de2ed
mov ecx, 0xffff
cmp eax, ecx
jle 0x4de2ed
mov eax, ecx
mov ecx, dword [ebp - 0x3c]
mov word [ecx + ebx*2], ax
inc ebx
cmp ebx, dword [ebp - 0x10]
jb 0x4de2bc
mov eax, dword [ebp - 0xc]
inc eax
mov dword [ebp - 0xc], eax
cmp eax, dword [ebp + 0x10]
jb 0x4de282
inc dword [ebp - 8]
mov eax, dword [ebp - 8]
add dword [ebp + 8], 0x10
cmp eax, dword [ebp + 0x14]
jb 0x4de271
jmp 0x4de3d2
mov dword [ebp - 8], eax
cmp eax, esi
jae 0x4de3d2
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 0x4de3ba
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 0x4de3b4
mov edx, dword [ebp + 8]
mov esi, ecx
and ecx, 0xf
and esi, 0xfffffff0
lea ebx, [ecx + edx + 0x67eb50]
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 0x4de39a
xor edx, edx
jmp 0x4de3a5
mov ecx, 0xff
cmp edx, ecx
jle 0x4de3a5
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 0x4de378
inc dword [ebp - 0xc]
mov eax, dword [ebp - 0xc]
cmp eax, dword [ebp + 0x10]
jb 0x4de347
inc dword [ebp - 8]
mov eax, dword [ebp - 8]
add dword [ebp + 8], 0x10
cmp eax, dword [ebp + 0x14]
jb 0x4de333
pop edi
pop esi
pop ebx
leave
ret