Function at 0x7df360
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 0x7df5b1
mov esi, dword [ebx + 0x9c]
test esi, esi
je 0x7df5b1
cmp dword [esi], 0
jne 0x7df398
pop esi
mov eax, 0xffffff9c
pop ebx
mov esp, ebp
pop ebp
ret
mov edx, dword [ebp + 0x10]
test edx, edx
jne 0x7df3a7
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 0x7df3c8
cmp dword [esi + 0x8c], 0
jne 0x7df3c8
mov dword [esi + 0x14], eax
mov edi, eax
mov eax, dword [esi + 8]
add eax, dword [esi + 0x58]
cmp edx, eax
jbe 0x7df3e0
cmp dword [esi + 0x8c], 0
je 0x7df3e0
mov dword [esi + 0x14], eax
mov edi, eax
test edi, edi
je 0x7df5a7
nop dword [eax + eax]
mov edi, dword [esi + 8]
test edi, edi
jne 0x7df4b8
mov eax, dword [esi + 0x58]
test eax, eax
je 0x7df4b8
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 0x7df58b
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 0x7df58b
cmp dword [ebx + 0xa0], 0
je 0x7df4aa
xor ebx, ebx
test edi, edi
je 0x7df4aa
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.007dec80
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.007dfd80
mov ecx, dword [esi]
add esp, 0x14
mov byte [ebx + ecx], al
inc ebx
mov ecx, dword [ebp - 8]
cmp ebx, edi
jb 0x7df470
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 0x7df52b
cmp dword [esi + 0x8c], 0
jne 0x7df52b
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.007dfe00
mov ebx, eax
add esp, 8
test ebx, ebx
js 0x7df4f6
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.007e1c70
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 0x7df59e
test ebx, ebx
jne 0x7df595
mov eax, dword [esi + 0x14]
jmp 0x7df57f
test edi, edi
jne 0x7df534
cmp dword [esi + 0x58], edi
je 0x7df5a7
mov ebx, dword [esi + 0x14]
cmp ebx, edi
cmovae ebx, edi
xor edx, edx
test ebx, ebx
je 0x7df553
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 0x7df542
push ebx
push dword [esi + 0x10]
push dword [esi + 0x50]
call fcn.007e1c70
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 0x7df5a7
mov ebx, dword [ebp + 8]
jmp 0x7df3f0
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