Function at 0xdc7280
Capabilities:
Encode data using xor

Disassembly:
push ebp
mov ebp, esp
push edi
push esi
push ebx
sub esp, 0x2c
mov ebx, dword [eax + 0x20]
mov byte [ebp - 0x1d], 0
mov byte [ebp - 0x1e], 0
mov eax, dword [ebx + 8]
cmp eax, 1
je 0xdc74f8
cmp eax, 2
jne 0xdc7297
mov eax, dword [ebx + 4]
xor ecx, ecx
cmp eax, 2
je 0xdc73ab
mov eax, dword [ebx + 0x48]
cmp eax, dword [ebx + 0x44]
jle 0xdc73fa
mov edx, dword [ebx]
mov edi, dword [edx + 4]
test edi, edi
je 0xdc73fa
mov esi, dword [ebx + 0xc]
test esi, esi
jne 0xdc7341
jmp 0xdc7405
mov edi, dword [ebx + 0x38]
cmp edi, 1
nop
je 0xdc7696
cmp dword [ebp - 0x24], 0xff
lea esi, [esi]
jbe 0xdc75dd
mov eax, dword [ebp - 0x1c]
mov dword [ebx + 0x38], 1
mov dword [ebx + 0x34], eax
add dword [edx + 8], 1
mov eax, dword [edx + 8]
add dword [edx], 1
sub dword [edx + 4], 1
test eax, eax
jne 0xdc7319
add dword [edx + 0xc], 1
mov eax, dword [ebx + 0xc]
mov esi, dword [ebx + 0x44]
sub eax, 1
cmp esi, dword [ebx + 0x48]
mov dword [ebx + 0xc], eax
jge 0xdc73e8
mov ecx, dword [edx + 4]
test ecx, ecx
je 0xdc73e8
test eax, eax
je 0xdc73e8
mov eax, dword [edx]
mov ecx, dword [ebx + 0x34]
movzx eax, byte [eax]
mov dword [ebp - 0x24], ecx
cmp ecx, eax
mov dword [ebp - 0x1c], eax
jne 0xdc72d8
mov edi, dword [ebx + 0x38]
cmp edi, 0xff
je 0xdc76fd
lea eax, [edi + 1]
mov dword [ebx + 0x38], eax
jmp 0xdc7303
mov edi, dword [ebx + 0x38]
cmp edi, 1
je 0xdc77c7
cmp dword [ebp - 0x24], 0xff
jbe 0xdc7709
mov eax, dword [ebp - 0x18]
mov dword [ebx + 0x38], 1
mov dword [ebx + 0x34], eax
add dword [edx + 8], 1
mov eax, dword [edx + 8]
add dword [edx], 1
sub dword [edx + 4], 1
test eax, eax
jne 0xdc73a6
add dword [edx + 0xc], 1
mov ecx, 1
mov esi, dword [ebx + 0x44]
cmp esi, dword [ebx + 0x48]
jge 0xdc73ed
mov edx, dword [ebx]
mov eax, dword [edx + 4]
test eax, eax
je 0xdc73ed
mov eax, dword [edx]
movzx eax, byte [eax]
mov dword [ebp - 0x18], eax
mov eax, dword [ebx + 0x34]
mov ecx, dword [ebp - 0x18]
mov dword [ebp - 0x24], eax
cmp eax, ecx
jne 0xdc736a
mov edi, dword [ebx + 0x38]
cmp edi, 0xff
je 0xdc78a0
lea eax, [edi + 1]
mov dword [ebx + 0x38], eax
jmp 0xdc7390
mov ecx, 1
or byte [ebp - 0x1e], cl
cmp dword [ebx + 4], 2
je 0xdc76df
mov eax, dword [ebx + 0xc]
test eax, eax
jne 0xdc76dc
mov edx, dword [ebx + 0x34]
cmp edx, 0xff
mov dword [ebp - 0x24], edx
ja 0xdc74ce
mov eax, dword [ebx + 0x38]
mov byte [ebp - 0x11], dl
test eax, eax
jle 0xdc744f
mov ecx, dword [ebx + 0x260]
movzx edi, dl
xor esi, esi
mov edx, ecx
mov eax, ecx
shr edx, 0x18
add esi, 1
xor edx, edi
shl eax, 8
xor eax, dword [edx*4 + 0xe67720]
cmp dword [ebx + 0x38], esi
mov ecx, eax
mov dword [ebx + 0x260], eax
jg 0xdc742c
mov eax, dword [ebx + 0x38]
mov ecx, dword [ebp - 0x24]
cmp eax, 2
mov byte [ebx + ecx + 0x58], 1
je 0xdc796a
cmp eax, 3
je 0xdc7936
cmp eax, 1
je 0xdc7920
mov byte [eax + ebx + 0x54], 1
mov edx, dword [ebx + 0x24]
mov eax, dword [ebx + 0x44]
movzx ecx, byte [ebp - 0x11]
mov byte [edx + eax], cl
mov edx, dword [ebx + 0x44]
mov eax, dword [ebx + 0x24]
add edx, 1
mov dword [ebx + 0x44], edx
mov byte [eax + edx], cl
mov edx, dword [ebx + 0x44]
mov eax, dword [ebx + 0x24]
add edx, 1
mov dword [ebx + 0x44], edx
mov byte [eax + edx], cl
mov edx, dword [ebx + 0x44]
mov eax, dword [ebx + 0x24]
add edx, 1
mov dword [ebx + 0x44], edx
mov byte [eax + edx], cl
mov ecx, dword [ebx + 0x44]
movzx eax, byte [ebx + 0x38]
mov edx, dword [ebx + 0x24]
add ecx, 1
sub eax, 4
mov dword [ebx + 0x44], ecx
mov byte [edx + ecx], al
add dword [ebx + 0x44], 1
xor eax, eax
cmp dword [ebx + 4], 4
mov dword [ebx + 0x34], 0x100
mov dword [ebx + 0x38], 0
sete al
mov dword [esp + 4], eax
mov dword [esp], ebx
call fcn.00dc8860
mov dword [ebx + 8], 1
mov edx, dword [ebx]
xor eax, eax
jmp 0xdc753a
mov ecx, dword [ebx + 0x50]
cmp ecx, dword [ebx + 0x4c]
jge 0xdc7865
mov eax, dword [edx + 0x10]
mov edx, dword [ebx + 0x2c]
movzx edx, byte [edx + ecx]
mov byte [eax], dl
mov eax, dword [ebx]
add dword [ebx + 0x50], 1
add dword [eax + 0x18], 1
mov edx, eax
mov ecx, dword [eax + 0x18]
sub dword [eax + 0x14], 1
add dword [eax + 0x10], 1
test ecx, ecx
jne 0xdc7535
add dword [eax + 0x1c], 1
mov eax, 1
mov esi, dword [edx + 0x14]
test esi, esi
jne 0xdc74fe
or byte [ebp - 0x1d], al
mov eax, dword [ebx + 0x50]
cmp eax, dword [ebx + 0x4c]
jl 0xdc75c8
cmp dword [ebx + 4], 4
je 0xdc7872
mov dword [ebx + 0x44], 0
mov eax, 1
mov dword [ebx + 0x4c], 0
mov dword [ebx + 0x50], 0
mov dword [ebx + 0x260], 0xffffffff
mov byte [ebx + 0x58], 0
nop
mov byte [eax + ebx + 0x58], 0
add eax, 1
cmp eax, 0x100
jne 0xdc7580
mov eax, dword [ebx + 4]
add dword [ebx + 0x26c], 1
mov dword [ebx + 8], 2
cmp eax, 3
jne 0xdc72a8
mov eax, dword [ebx + 0xc]
test eax, eax
jne 0xdc72b3
cmp dword [ebx + 0x34], 0xff
ja 0xdc75c8
mov eax, dword [ebx + 0x38]
test eax, eax
jg 0xdc72b3
movzx ecx, byte [ebp - 0x1e]
or cl, byte [ebp - 0x1d]
setne al
add esp, 0x2c
pop ebx
movzx eax, al
pop esi
pop edi
pop ebp
ret
movzx edx, byte [ebp - 0x24]
test edi, edi
mov byte [ebp - 0x12], dl
jle 0xdc7613
movzx esi, byte [ebp - 0x12]
xor edx, edx
mov ecx, dword [ebx + 0x260]
mov eax, ecx
add edx, 1
shr eax, 0x18
xor eax, esi
shl ecx, 8
xor ecx, dword [eax*4 + 0xe67720]
cmp dword [ebx + 0x38], edx
mov dword [ebx + 0x260], ecx
jg 0xdc75f4
mov ecx, dword [ebp - 0x24]
cmp edi, 2
mov byte [ebx + ecx + 0x58], 1
je 0xdc7859
cmp edi, 3
je 0xdc7823
cmp edi, 1
je 0xdc780b
mov eax, dword [ebx + 0x44]
mov byte [edi + ebx + 0x54], 1
mov edx, dword [ebx + 0x24]
movzx ecx, byte [ebp - 0x12]
mov byte [edx + eax], cl
mov edx, dword [ebx + 0x44]
mov eax, dword [ebx + 0x24]
add edx, 1
mov dword [ebx + 0x44], edx
mov byte [eax + edx], cl
mov edx, dword [ebx + 0x44]
mov eax, dword [ebx + 0x24]
add edx, 1
mov dword [ebx + 0x44], edx
mov byte [eax + edx], cl
mov edx, dword [ebx + 0x44]
mov eax, dword [ebx + 0x24]
add edx, 1
mov dword [ebx + 0x44], edx
mov byte [eax + edx], cl
mov ecx, dword [ebx + 0x44]
movzx eax, byte [ebx + 0x38]
mov edx, dword [ebx + 0x24]
add ecx, 1
sub eax, 4
mov dword [ebx + 0x44], ecx
mov byte [edx + ecx], al
mov edx, dword [ebx]
add dword [ebx + 0x44], 1
jmp 0xdc72f6
mov eax, dword [ebx + 0x260]
movzx edx, cl
mov ecx, eax
shr ecx, 0x18
xor edx, ecx
shl eax, 8
xor eax, dword [edx*4 + 0xe67720]
mov edx, dword [ebx + 0x24]
mov dword [ebx + 0x260], eax
mov eax, dword [ebp - 0x24]
mov byte [ebx + eax + 0x58], 1
mov eax, dword [ebx + 0x44]
movzx ecx, byte [ebp - 0x24]
mov byte [edx + eax], cl
mov eax, dword [ebp - 0x1c]
add dword [ebx + 0x44], 1
mov edx, dword [ebx]
mov dword [ebx + 0x34], eax
jmp 0xdc7303
mov esi, dword [ebx + 0x44]
cmp esi, dword [ebx + 0x48]
jge 0xdc7904
mov eax, dword [ebx]
mov eax, dword [eax + 4]
test eax, eax
je 0xdc75c8
mov eax, dword [ebx + 8]
jmp 0xdc7297
movzx edx, byte [ebp - 0x24]
mov byte [ebp - 0x12], dl
jmp 0xdc75e8
movzx eax, byte [ebp - 0x24]
test edi, edi
mov byte [ebp - 0x13], al
jle 0xdc7743
movzx edx, byte [ebp - 0x13]
mov ecx, dword [ebx + 0x260]
mov dword [ebp - 0x10], edx
xor edx, edx
mov eax, ecx
add edx, 1
shr eax, 0x18
xor eax, dword [ebp - 0x10]
shl ecx, 8
xor ecx, dword [eax*4 + 0xe67720]
cmp dword [ebx + 0x38], edx
mov dword [ebx + 0x260], ecx
jg 0xdc7723
mov ecx, dword [ebp - 0x24]
cmp edi, 2
mov byte [ebx + ecx + 0x58], 1
je 0xdc78f8
cmp edi, 3
je 0xdc78c1
cmp edi, 1
je 0xdc78ac
mov byte [edi + ebx + 0x54], 1
mov eax, dword [ebx + 0x24]
movzx edx, byte [ebp - 0x13]
mov byte [eax + esi], dl
mov edx, dword [ebx + 0x44]
mov eax, dword [ebx + 0x24]
movzx ecx, byte [ebp - 0x13]
add edx, 1
mov dword [ebx + 0x44], edx
mov byte [eax + edx], cl
mov edx, dword [ebx + 0x44]
mov eax, dword [ebx + 0x24]
add edx, 1
mov dword [ebx + 0x44], edx
mov byte [eax + edx], cl
mov edx, dword [ebx + 0x44]
mov eax, dword [ebx + 0x24]
add edx, 1
mov dword [ebx + 0x44], edx
mov byte [eax + edx], cl
mov ecx, dword [ebx + 0x44]
movzx eax, byte [ebx + 0x38]
mov edx, dword [ebx + 0x24]
add ecx, 1
sub eax, 4
mov dword [ebx + 0x44], ecx
mov byte [edx + ecx], al
mov edx, dword [ebx]
add dword [ebx + 0x44], 1
jmp 0xdc7383
mov eax, dword [ebx + 0x260]
movzx edx, byte [ebp - 0x24]
mov ecx, eax
shr ecx, 0x18
xor edx, ecx
shl eax, 8
xor eax, dword [edx*4 + 0xe67720]
mov dword [ebx + 0x260], eax
mov eax, dword [ebp - 0x24]
mov byte [ebx + eax + 0x58], 1
mov eax, dword [ebx + 0x24]
movzx edx, byte [ebp - 0x24]
mov byte [eax + esi], dl
mov ecx, dword [ebp - 0x18]
add dword [ebx + 0x44], 1
mov edx, dword [ebx]
mov dword [ebx + 0x34], ecx
jmp 0xdc7390
mov edx, dword [ebx + 0x24]
mov eax, dword [ebx + 0x44]
movzx ecx, byte [ebp - 0x12]
mov byte [edx + eax], cl
mov edx, dword [ebx]
add dword [ebx + 0x44], 1
jmp 0xdc72f6
mov eax, dword [ebx + 0x44]
mov edx, dword [ebx + 0x24]
movzx ecx, byte [ebp - 0x12]
mov byte [edx + eax], cl
mov edx, dword [ebx + 0x44]
mov eax, dword [ebx + 0x24]
add edx, 1
mov dword [ebx + 0x44], edx
mov byte [eax + edx], cl
mov edx, dword [ebx + 0x44]
mov eax, dword [ebx + 0x24]
add edx, 1
mov dword [ebx + 0x44], edx
mov byte [eax + edx], cl
mov edx, dword [ebx]
add dword [ebx + 0x44], 1
jmp 0xdc72f6
mov edx, dword [ebx + 0x24]
mov eax, dword [ebx + 0x44]
movzx ecx, byte [ebp - 0x12]
jmp 0xdc783c
or byte [ebp - 0x1d], al
cmp dword [ebx + 4], 4
jne 0xdc7556
mov eax, dword [ebx + 0xc]
test eax, eax
jne 0xdc7556
cmp dword [ebx + 0x34], 0xff
ja 0xdc75c8
mov eax, dword [ebx + 0x38]
test eax, eax
jg 0xdc7556
jmp 0xdc75c8
movzx eax, byte [ebp - 0x24]
mov byte [ebp - 0x13], al
jmp 0xdc7714
movzx edx, byte [ebp - 0x13]
mov eax, dword [ebx + 0x24]
mov byte [eax + esi], dl
mov edx, dword [ebx]
add dword [ebx + 0x44], 1
jmp 0xdc7383
mov eax, dword [ebx + 0x24]
movzx edx, byte [ebp - 0x13]
mov byte [eax + esi], dl
mov edx, dword [ebx + 0x44]
mov eax, dword [ebx + 0x24]
movzx ecx, byte [ebp - 0x13]
add edx, 1
mov dword [ebx + 0x44], edx
mov byte [eax + edx], cl
mov edx, dword [ebx + 0x44]
mov eax, dword [ebx + 0x24]
add edx, 1
mov dword [ebx + 0x44], edx
mov byte [eax + edx], cl
mov edx, dword [ebx]
add dword [ebx + 0x44], 1
jmp 0xdc7383
mov eax, dword [ebx + 0x24]
movzx ecx, byte [ebp - 0x13]
mov byte [eax + esi], cl
jmp 0xdc78de
mov dword [esp + 4], 0
mov dword [esp], ebx
call fcn.00dc8860
mov dword [ebx + 8], 1
jmp 0xdc74f8
mov eax, dword [ebx + 0x44]
mov edx, dword [ebx + 0x24]
movzx ecx, byte [ebp - 0x11]
mov byte [edx + eax], cl
add dword [ebx + 0x44], 1
jmp 0xdc74ce
mov eax, dword [ebx + 0x44]
mov edx, dword [ebx + 0x24]
movzx ecx, byte [ebp - 0x11]
mov byte [edx + eax], cl
mov edx, dword [ebx + 0x44]
mov eax, dword [ebx + 0x24]
add edx, 1
mov dword [ebx + 0x44], edx
mov byte [eax + edx], cl
mov edx, dword [ebx + 0x44]
mov eax, dword [ebx + 0x24]
add edx, 1
mov dword [ebx + 0x44], edx
mov byte [eax + edx], cl
add dword [ebx + 0x44], 1
jmp 0xdc74ce
mov edx, dword [ebx + 0x24]
mov eax, dword [ebx + 0x44]
movzx ecx, byte [ebp - 0x11]
jmp 0xdc794f