Function at 0x7dced0
Capabilities:
Encode data using xor

Disassembly:
push ebp
mov ebp, esp
sub esp, 0xc
push ebx
mov ebx, dword [ebp + 8]
mov dword [ebp - 4], 0
push esi
test ebx, ebx
je 0x7dd121
mov esi, dword [ebx + 0x9c]
test esi, esi
je 0x7dd121
cmp dword [esi], 0
jne 0x7dcf08
pop esi
mov eax, 0xffffff9c
pop ebx
mov esp, ebp
pop ebp
ret
mov edx, dword [ebp + 0x10]
test edx, edx
jne 0x7dcf17
pop esi
xor eax, eax
pop ebx
mov esp, ebp
pop ebp
ret
mov eax, dword [ebp + 0xc]
mov dword [esi + 0x10], eax
mov eax, dword [esi + 0x5c]
mov dword [esi + 0x14], edx
push edi
mov edi, edx
cmp edx, eax
jbe 0x7dcf38
cmp dword [esi + 0x8c], 0
jne 0x7dcf38
mov dword [esi + 0x14], eax
mov edi, eax
mov eax, dword [esi + 8]
add eax, dword [esi + 0x58]
cmp edx, eax
jbe 0x7dcf50
cmp dword [esi + 0x8c], 0
je 0x7dcf50
mov dword [esi + 0x14], eax
mov edi, eax
test edi, edi
je 0x7dd117
nop dword [eax + eax]
mov edi, dword [esi + 8]
test edi, edi
jne 0x7dd028
mov eax, dword [esi + 0x58]
test eax, eax
je 0x7dd028
mov edi, 0x4000
cmp eax, edi
push 0
cmovb edi, eax
mov eax, dword [esi + 0x88]
add eax, dword [esi + 0x3c]
push eax
push dword [esi + 0x80]
mov eax, dword [esi + 0x70]
push dword [esi + 0x7c]
call eax
add esp, 0x10
test eax, eax
jne 0x7dd0fb
mov eax, dword [esi + 0x64]
push edi
push dword [esi]
push dword [esi + 0x80]
push dword [esi + 0x7c]
call eax
add esp, 0x10
cmp eax, edi
jne 0x7dd0fb
cmp dword [ebx + 0xa0], 0
je 0x7dd01a
xor ebx, ebx
test edi, edi
je 0x7dd01a
mov ecx, dword [ebp + 8]
add ecx, 0xa4
mov dword [ebp - 8], ecx
nop dword [eax]
mov eax, dword [ebp + 8]
mov edx, dword [esi]
push dword [eax + 0xb0]
push ecx
call fcn.007dc7f0
xor byte [edx + ebx], al
movsx eax, byte [edx + ebx]
push eax
mov eax, dword [ebp + 8]
push dword [eax + 0xb0]
push dword [ebp - 8]
call fcn.007dd8f0
mov ecx, dword [esi]
add esp, 0x14
mov byte [ebx + ecx], al
inc ebx
mov ecx, dword [ebp - 8]
cmp ebx, edi
jb 0x7dcfe0
add dword [esi + 0x3c], edi
mov eax, dword [esi]
sub dword [esi + 0x58], edi
mov dword [esi + 4], eax
mov dword [esi + 8], edi
cmp dword [esi + 0x84], 0
je 0x7dd09b
cmp dword [esi + 0x8c], 0
jne 0x7dd09b
mov eax, dword [esi + 0x18]
mov dword [ebp - 8], eax
mov eax, dword [esi + 0x10]
mov dword [ebp - 0xc], eax
lea eax, [esi + 4]
push 2
push eax
call fcn.007dd970
mov ebx, eax
add esp, 8
test ebx, ebx
js 0x7dd066
cmp dword [esi + 0x1c], 0
mov eax, 0xfffffffd
cmovne ebx, eax
mov edi, dword [esi + 0x18]
sub edi, dword [ebp - 8]
push edi
push dword [ebp - 0xc]
push dword [esi + 0x50]
call fcn.007df7e0
mov ecx, dword [ebp - 4]
add esp, 0xc
sub dword [esi + 0x5c], edi
add ecx, edi
mov dword [esi + 0x50], eax
mov dword [ebp - 4], ecx
cmp ebx, 1
je 0x7dd10e
test ebx, ebx
jne 0x7dd105
mov eax, dword [esi + 0x14]
jmp 0x7dd0ef
test edi, edi
jne 0x7dd0a4
cmp dword [esi + 0x58], edi
je 0x7dd117
mov ebx, dword [esi + 0x14]
cmp ebx, edi
cmovae ebx, edi
xor edx, edx
test ebx, ebx
je 0x7dd0c3
mov eax, dword [esi + 4]
mov ecx, dword [esi + 0x10]
mov al, byte [edx + eax]
mov byte [edx + ecx], al
inc edx
cmp edx, ebx
jb 0x7dd0b2
push ebx
push dword [esi + 0x10]
push dword [esi + 0x50]
call fcn.007df7e0
sub dword [esi + 0x5c], ebx
add esp, 0xc
sub dword [esi + 8], ebx
add dword [esi + 0x10], ebx
add dword [esi + 4], ebx
add dword [esi + 0x18], ebx
mov dword [esi + 0x50], eax
mov eax, dword [esi + 0x14]
sub eax, ebx
add dword [ebp - 4], ebx
mov dword [esi + 0x14], eax
test eax, eax
je 0x7dd117
mov ebx, dword [ebp + 8]
jmp 0x7dcf60
pop edi
pop esi
or eax, 0xffffffff
pop ebx
mov esp, ebp
pop ebp
ret
pop edi
pop esi
mov eax, ebx
pop ebx
mov esp, ebp
pop ebp
ret
pop edi
pop esi
mov eax, ecx
pop ebx
mov esp, ebp
pop ebp
ret
mov eax, dword [ebp - 4]
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
ret
pop esi
mov eax, 0xffffff9a
pop ebx
mov esp, ebp
pop ebp
ret