Function at 0x4ded20
Capabilities:
Encode data using xor

Disassembly:
push ebp
mov ebp, esp
sub esp, 0xb8
push esi
mov esi, dword [ebp + 0x10]
push edi
xor edi, edi
shr esi, 3
mov dword [ebp - 0x34], edi
mov dword [ebp - 0x1c], 2
cmp esi, 0x14
je 0x4ded54
cmp esi, 0x1c
je 0x4ded54
cmp esi, 0x20
je 0x4ded54
pop edi
xor eax, eax
pop esi
mov esp, ebp
pop ebp
ret
cmp dword [ebp + 0x14], edi
jne 0x4ded61
call fcn.00483c40
mov dword [ebp + 0x14], eax
mov eax, dword [ebp + 0xc]
mov ecx, 0x200
cmp eax, ecx
cmovb eax, ecx
mov ecx, dword [ebp + 0x18]
add eax, 0x3f
and eax, 0xffffffc0
mov dword [ebp - 0x28], eax
mov eax, dword [ebp + 0x1c]
test eax, eax
je 0x4ded88
xor edx, edx
cmp eax, esi
cmovb ecx, edx
cmp eax, esi
mov dword [ebp - 0x2c], ecx
cmova eax, esi
mov dword [ebp + 0x1c], eax
test ecx, ecx
je 0x4deda8
push eax
push ecx
lea eax, [ebp - 0x98]
push eax
call fcn.004f8270
add esp, 0xc
call fcn.004cce30
mov dword [ebp - 0x14], eax
test eax, eax
je 0x4df37d
push ebx
call fcn.0048c970
mov ebx, eax
mov dword [ebp + 0x10], ebx
test ebx, ebx
je 0x4df371
push ebx
call fcn.0048c9f0
push ebx
call fcn.0048c900
mov edi, dword [ebp + 0x10]
mov ebx, eax
push edi
call fcn.0048c900
push edi
mov dword [ebp - 0x18], eax
call fcn.0048c900
push edi
mov dword [ebp - 0x20], eax
call fcn.0048c900
push edi
mov dword [ebp - 0xc], eax
call fcn.0048c900
push edi
mov dword [ebp - 0x38], eax
call fcn.0048c900
push edi
mov dword [ebp - 0x10], eax
call fcn.0048c900
push edi
mov dword [ebp - 8], eax
call fcn.0048c900
mov edi, eax
add esp, 0x24
mov eax, dword [ebp - 0x28]
dec eax
mov dword [ebp - 4], edi
push eax
call fcn.00488510
push eax
push edi
call fcn.00489190
add esp, 0xc
test eax, eax
je 0x4df29c
lea esp, [esp]
mov edi, dword [ebp - 0x34]
push edi
push 0
push dword [ebp + 0x2c]
call fcn.004e1690
inc edi
add esp, 0xc
mov dword [ebp - 0x34], edi
test eax, eax
je 0x4df29c
cmp dword [ebp + 0x1c], 0
je 0x4dee70
cmp dword [ebp - 0x2c], 0
je 0x4dee70
xor edi, edi
mov dword [ebp + 0x1c], edi
jmp 0x4dee8d
lea eax, [ebp - 0x98]
push esi
push eax
call fcn.0045ebf0
add esp, 8
test eax, eax
js 0x4df29c
mov edi, 1
push esi
lea eax, [ebp - 0x98]
push eax
lea eax, [ebp - 0x78]
push eax
call fcn.004f8270
push esi
lea eax, [ebp - 0x98]
push eax
lea eax, [ebp - 0xb8]
push eax
call fcn.004f8270
lea eax, [esi - 1]
add esp, 0x18
test eax, eax
js 0x4deec9
lea esp, [esp]
inc byte [ebp + eax - 0x78]
jne 0x4deec9
dec eax
jns 0x4deec0
push 0
push dword [ebp + 0x14]
lea eax, [ebp - 0x58]
push 0
push eax
lea eax, [ebp - 0x98]
push esi
push eax
call fcn.0045dc20
add esp, 0x18
test eax, eax
je 0x4df29c
push 0
push dword [ebp + 0x14]
lea eax, [ebp - 0xb8]
push 0
push eax
lea eax, [ebp - 0x78]
push esi
push eax
call fcn.0045dc20
add esp, 0x18
test eax, eax
je 0x4df29c
xor ecx, ecx
test esi, esi
jle 0x4def80
cmp esi, 0x20
jb 0x4def69
mov eax, esi
and eax, 0x8000001f
jns 0x4def28
dec eax
or eax, 0xffffffe0
inc eax
mov edx, esi
sub edx, eax
lea esp, [esp]
movdqu xmm0, xmmword [ebp + ecx - 0x58]
movdqu xmm1, xmmword [ebp + ecx - 0xb8]
pxor xmm1, xmm0
movdqu xmmword [ebp + ecx - 0x58], xmm1
movdqu xmm0, xmmword [ebp + ecx - 0x48]
movdqu xmm1, xmmword [ebp + ecx - 0xa8]
pxor xmm1, xmm0
movdqu xmmword [ebp + ecx - 0x48], xmm1
add ecx, 0x20
cmp ecx, edx
jl 0x4def30
cmp ecx, esi
jge 0x4def80
lea ecx, [ecx]
mov al, byte [ebp + ecx - 0xb8]
xor byte [ebp + ecx - 0x58], al
inc ecx
cmp ecx, esi
jl 0x4def70
push dword [ebp - 0xc]
or byte [ebp - 0x58], 0x80
lea eax, [ebp - 0x58]
or byte [ebp + esi - 0x59], 1
push esi
push eax
call fcn.00487c70
add esp, 0xc
test eax, eax
je 0x4df29c
push dword [ebp + 0x2c]
push edi
push dword [ebp + 0x10]
push 0x32
push dword [ebp - 0xc]
call fcn.004e1930
add esp, 0x14
test eax, eax
jg 0x4defc6
je 0x4dee40
xor edi, edi
jmp 0x4df35f
mov edi, dword [ebp + 0x2c]
push 0
push 2
push edi
call fcn.004e1690
add esp, 0xc
test eax, eax
je 0x4df29c
push 0
push 3
push edi
call fcn.004e1690
add esp, 0xc
xor edi, edi
test eax, eax
je 0x4df35f
mov ecx, dword [ebp - 0x28]
mov eax, 0xcccccccd
mov dword [ebp - 0x24], edi
lea ecx, [ecx - 1]
mul ecx
mov eax, edx
shr eax, 7
mov dword [ebp - 0x30], eax
lea ecx, [ecx]
test edi, edi
je 0x4df02a
push edi
push 0
push dword [ebp + 0x2c]
call fcn.004e1690
add esp, 0xc
test eax, eax
je 0x4df29c
push 0
push dword [ebp - 0x20]
call fcn.00488470
xor edi, edi
add esp, 8
cmp dword [ebp - 0x30], edi
jl 0x4df0cc
lea eax, [esi - 1]
test eax, eax
js 0x4df059
lea esp, [esp]
inc byte [ebp + eax - 0x78]
jne 0x4df059
dec eax
jns 0x4df050
push 0
push dword [ebp + 0x14]
lea eax, [ebp - 0x58]
push 0
push eax
lea eax, [ebp - 0x78]
push esi
push eax
call fcn.0045dc20
add esp, 0x18
test eax, eax
je 0x4df29c
push ebx
lea eax, [ebp - 0x58]
push esi
push eax
call fcn.00487c70
add esp, 0xc
test eax, eax
je 0x4df29c
lea eax, [esi*8]
imul eax, edi
push eax
push ebx
push ebx
call fcn.00489190
add esp, 0xc
test eax, eax
je 0x4df29c
mov eax, dword [ebp - 0x20]
push ebx
push eax
push eax
call fcn.0048cc30
add esp, 0xc
test eax, eax
je 0x4df29c
inc edi
cmp edi, dword [ebp - 0x30]
jle 0x4df042
mov eax, dword [ebp - 0x28]
mov edi, dword [ebp - 0x20]
dec eax
push eax
push edi
call fcn.00488240
add esp, 8
test eax, eax
je 0x4df29c
push edi
mov edi, dword [ebp - 0x38]
push edi
call fcn.00488080
add esp, 8
test eax, eax
je 0x4df29c
push dword [ebp - 4]
push edi
push edi
call fcn.0048cc30
add esp, 0xc
test eax, eax
je 0x4df29c
push dword [ebp - 0xc]
push ebx
call fcn.004892e0
add esp, 8
test eax, eax
je 0x4df29c
push dword [ebp + 0x10]
push ebx
push edi
push dword [ebp - 0x10]
push 0
call fcn.004cb180
add esp, 0x14
test eax, eax
je 0x4df29c
call fcn.00488510
push eax
push dword [ebp - 0x10]
push ebx
call fcn.0048ccd0
add esp, 0xc
test eax, eax
je 0x4df29c
push ebx
push edi
mov edi, dword [ebp - 8]
push edi
call fcn.0048ccd0
add esp, 0xc
test eax, eax
je 0x4df29c
push dword [ebp - 4]
push edi
call fcn.00487e30
add esp, 8
test eax, eax
js 0x4df19d
mov edi, dword [ebp + 0x2c]
push edi
push 1
push dword [ebp + 0x10]
push 0x32
push dword [ebp - 8]
call fcn.004e1930
add esp, 0x14
test eax, eax
jg 0x4df1b5
jne 0x4df29c
mov edi, dword [ebp - 0x24]
inc edi
mov dword [ebp - 0x24], edi
cmp edi, 0x1000
jl 0x4df010
jmp 0x4dee40
push 1
push 2
push edi
call fcn.004e1690
add esp, 0xc
test eax, eax
je 0x4df29c
call fcn.00488510
push eax
push dword [ebp - 8]
push dword [ebp - 4]
call fcn.0048ccd0
add esp, 0xc
test eax, eax
je 0x4df29c
push dword [ebp + 0x10]
push dword [ebp - 0xc]
push dword [ebp - 4]
push 0
push ebx
call fcn.004cb180
add esp, 0x14
test eax, eax
je 0x4df29c
push 2
push dword [ebp - 4]
call fcn.00488470
add esp, 8
test eax, eax
je 0x4df29c
push dword [ebp + 0x10]
push dword [ebp - 8]
push dword [ebp - 0x14]
call fcn.004cce90
add esp, 0xc
test eax, eax
je 0x4df29c
push dword [ebp - 0x14]
push dword [ebp + 0x10]
push dword [ebp - 8]
push ebx
push dword [ebp - 4]
push dword [ebp - 0x18]
call fcn.004cba80
add esp, 0x18
test eax, eax
je 0x4df29c
jmp 0x4df250
mov ecx, dword [ebp - 0x18]
cmp dword [ecx + 4], 1
jne 0x4df2a3
mov eax, dword [ecx]
cmp dword [eax], 1
jne 0x4df2a3
cmp dword [ecx + 0xc], 0
jne 0x4df2a3
call fcn.00488510
push eax
mov eax, dword [ebp - 4]
push eax
push eax
call fcn.0048cc30
add esp, 0xc
test eax, eax
je 0x4df29c
push dword [ebp - 0x14]
inc dword [ebp - 0x1c]
push dword [ebp + 0x10]
push dword [ebp - 8]
push ebx
push dword [ebp - 4]
push dword [ebp - 0x18]
call fcn.004cba80
add esp, 0x18
test eax, eax
jne 0x4df250
xor edi, edi
jmp 0x4df35f
push 1
push 3
push edi
call fcn.004e1690
add esp, 0xc
test eax, eax
je 0x4df29c
mov edi, dword [ebp + 8]
mov dword [ebp - 0x10], 1
mov edi, edi
mov eax, dword [edi + 0xc]
test eax, eax
je 0x4df2d0
push eax
call fcn.00488190
add esp, 4
mov eax, dword [edi + 0x10]
test eax, eax
je 0x4df2e0
push eax
call fcn.00488190
add esp, 4
mov eax, dword [edi + 0x14]
test eax, eax
je 0x4df2f0
push eax
call fcn.00488190
add esp, 4
push dword [ebp - 8]
call fcn.00488150
push dword [ebp - 0xc]
mov dword [edi + 0xc], eax
call fcn.00488150
push dword [ebp - 0x18]
mov dword [edi + 0x10], eax
call fcn.00488150
add esp, 0xc
mov dword [edi + 0x14], eax
cmp dword [edi + 0xc], 0
je 0x4df29c
cmp dword [edi + 0x10], 0
je 0x4df29c
test eax, eax
je 0x4df29c
mov eax, dword [ebp + 0x24]
test eax, eax
je 0x4df338
mov ecx, dword [ebp - 0x24]
mov dword [eax], ecx
mov eax, dword [ebp + 0x28]
test eax, eax
je 0x4df344
mov ecx, dword [ebp - 0x1c]
mov dword [eax], ecx
mov eax, dword [ebp + 0x20]
test eax, eax
je 0x4df35c
push esi
lea ecx, [ebp - 0x98]
push ecx
push eax
call fcn.004f8270
add esp, 0xc
mov edi, dword [ebp - 0x10]
mov ebx, dword [ebp + 0x10]
push ebx
call fcn.0048c880
push ebx
call fcn.0048c8d0
add esp, 8
push dword [ebp - 0x14]
call fcn.004ccdf0
add esp, 4
pop ebx
mov eax, edi
pop edi
pop esi
mov esp, ebp
pop ebp
ret