Function at 0x1004fce0
Capabilities:
Encode data using xor

Disassembly:
push ebp
mov ebp, esp
movzx eax, byte [ecx]
sub esp, 0x2c
dec eax
push ebx
push esi
mov esi, edx
push edi
cmp eax, 7
ja case.default.0x1004fcf8
jmp dword [eax*4 + 0x100500fc]
push dword [ebp + 0xc]
push dword [ebp + 8]
call fcn.10052410
add esp, 8
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
ret
mov eax, dword [ecx + 4]
xor edi, edi
mov ecx, dword [ebp + 8]
mov dword [ebp - 0x14], eax
mov dword [ebp - 0x18], ecx
test ecx, ecx
je 0x1004fd4b
mov eax, dword [ebp + 0xc]
add eax, 0xfffffffe
nop dword [eax]
test eax, eax
je 0x1004fd36
add edi, eax
sub ecx, 1
jne 0x1004fd30
test edi, edi
je 0x1004fd4b
cmp edi, 0x2aaaaaaa
jg 0x100500f6
mov eax, dword [esi + 4]
lea ebx, [edi + edi*2]
imul eax, dword [esi + 8]
cmp ebx, eax
je 0x1004fd7f
mov eax, dword [esi]
test eax, eax
je 0x1004fd6a
push dword [eax - 4]
call fcn.10080ff6
add esp, 4
test ebx, ebx
jle 0x1004fd79
mov ecx, ebx
call fcn.10027f80
mov dword [esi], eax
jmp 0x1004fd7f
mov dword [esi], 0
mov edx, dword [ebp + 8]
mov dword [esi + 4], edi
xor edi, edi
mov dword [esi + 8], 3
mov dword [ebp - 4], edi
test edx, edx
je 0x100500ba
mov ecx, dword [ebp + 0xc]
add ecx, 0xfffffffe
xor eax, eax
mov dword [ebp - 0x10], eax
xor ebx, ebx
mov dword [ebp - 8], ebx
test ecx, ecx
je 0x1004fe14
mov edx, dword [ebp - 0x14]
add edx, eax
mov dword [ebp - 0xc], edx
movzx eax, byte [edx]
mov ecx, dword [esi]
mov dword [ecx + edi*4], eax
mov eax, dword [esi + 4]
mov ecx, dword [ebp - 0xc]
add eax, edi
mov edx, dword [esi]
movzx ecx, byte [ecx + ebx + 1]
xor ebx, 1
mov dword [edx + eax*4], ecx
mov eax, dword [ebp - 0x14]
mov ecx, dword [ebp - 8]
add eax, ebx
add eax, dword [ebp - 0x10]
mov edx, dword [esi + 4]
mov edi, dword [esi]
movzx ecx, byte [eax + ecx + 1]
mov eax, dword [ebp - 4]
inc dword [ebp - 4]
lea eax, [eax + edx*2]
mov edx, dword [ebp - 0xc]
mov dword [edi + eax*4], ecx
inc edx
mov eax, dword [ebp - 8]
mov ecx, dword [ebp + 0xc]
inc eax
mov edi, dword [ebp - 4]
add ecx, 0xfffffffe
mov dword [ebp - 8], eax
mov dword [ebp - 0xc], edx
cmp eax, ecx
jb 0x1004fdb5
mov eax, dword [ebp - 0x10]
mov edx, dword [ebp - 0x18]
add eax, dword [ebp + 0xc]
sub edx, 1
mov dword [ebp - 0x10], eax
mov dword [ebp - 0x18], edx
jne 0x1004fda4
mov al, 1
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
ret
push dword [ebp + 0xc]
push dword [ebp + 8]
call fcn.10052580
add esp, 8
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
ret
mov ebx, dword [ebp + 8]
xor edi, edi
mov eax, dword [ecx + 4]
mov dword [ebp - 0x10], eax
mov dword [ebp - 0x24], ebx
test ebx, ebx
je 0x1004fe7b
mov eax, dword [ebp + 0xc]
mov ecx, ebx
add eax, 0xfffffffe
nop word [eax + eax]
test eax, eax
je 0x1004fe66
add edi, eax
sub ecx, 1
jne 0x1004fe60
test edi, edi
je 0x1004fe7b
cmp edi, 0x2aaaaaaa
jg 0x100500f6
mov eax, dword [esi + 4]
lea ecx, [edi + edi*2]
imul eax, dword [esi + 8]
cmp ecx, eax
je 0x1004feb0
mov eax, dword [esi]
test eax, eax
je 0x1004fe9d
push dword [eax - 4]
call fcn.10080ff6
add esp, 4
lea ecx, [edi + edi*2]
test ecx, ecx
jle 0x1004feaa
call fcn.10027f80
mov dword [esi], eax
jmp 0x1004feb0
mov dword [esi], 0
xor edx, edx
mov dword [esi + 4], edi
mov dword [esi + 8], 3
mov dword [ebp - 4], edx
test ebx, ebx
je 0x100500ba
mov ecx, dword [ebp + 0xc]
xor eax, eax
mov dword [ebp - 0x14], eax
lea edi, [ecx - 2]
add ecx, ecx
mov dword [ebp - 0x28], ecx
mov ecx, dword [ebp - 0x10]
mov dword [ebp - 0x1c], edi
mov dword [ebp - 0x20], ecx
xor ebx, ebx
mov dword [ebp - 0xc], ebx
test edi, edi
je 0x1004ff5a
mov dword [ebp - 8], eax
mov edi, ecx
mov dword [ebp - 0x18], ecx
movzx eax, word [edi]
mov ecx, dword [esi]
mov dword [ecx + edx*4], eax
mov eax, dword [ebp - 8]
mov ecx, dword [ebp - 0x10]
add eax, ebx
mov edi, dword [esi]
xor ebx, 1
inc dword [ebp - 8]
movzx ecx, word [ecx + eax*2 + 2]
mov eax, dword [ebp - 4]
add eax, dword [esi + 4]
mov dword [edi + eax*4], ecx
mov eax, dword [ebp - 0xc]
mov ecx, dword [ebp - 0x10]
add eax, ebx
add eax, dword [ebp - 0x14]
mov edx, dword [esi + 4]
mov edi, dword [esi]
movzx ecx, word [ecx + eax*2 + 2]
mov eax, dword [ebp - 4]
lea eax, [eax + edx*2]
mov edx, dword [ebp - 4]
mov dword [edi + eax*4], ecx
inc edx
mov eax, dword [ebp - 0xc]
mov edi, dword [ebp - 0x18]
inc eax
add edi, 2
mov dword [ebp - 4], edx
mov dword [ebp - 0xc], eax
mov dword [ebp - 0x18], edi
cmp eax, dword [ebp - 0x1c]
jb 0x1004fef1
mov eax, dword [ebp - 0x14]
mov ecx, dword [ebp - 0x20]
mov edi, dword [ebp - 0x1c]
add eax, dword [ebp + 0xc]
add ecx, dword [ebp - 0x28]
sub dword [ebp - 0x24], 1
mov dword [ebp - 0x14], eax
mov dword [ebp - 0x20], ecx
jne 0x1004fee0
mov al, 1
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
ret
push dword [ebp + 0xc]
push dword [ebp + 8]
call fcn.10052740
add esp, 8
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
ret
mov ebx, dword [ebp + 8]
xor edi, edi
mov eax, dword [ecx + 4]
mov dword [ebp - 0x14], eax
mov dword [ebp - 0x18], ebx
test ebx, ebx
je 0x1004ffc3
mov eax, dword [ebp + 0xc]
mov ecx, ebx
add eax, 0xfffffffe
test eax, eax
je 0x1004ffae
add edi, eax
sub ecx, 1
jne 0x1004ffa8
test edi, edi
je 0x1004ffc3
cmp edi, 0x2aaaaaaa
jg 0x100500f6
mov eax, dword [esi + 4]
lea ecx, [edi + edi*2]
imul eax, dword [esi + 8]
cmp ecx, eax
je 0x1004fff8
mov eax, dword [esi]
test eax, eax
je 0x1004ffe5
push dword [eax - 4]
call fcn.10080ff6
add esp, 4
lea ecx, [edi + edi*2]
test ecx, ecx
jle 0x1004fff2
call fcn.10027f80
mov dword [esi], eax
jmp 0x1004fff8
mov dword [esi], 0
xor edx, edx
mov dword [esi + 4], edi
mov dword [esi + 8], 3
mov dword [ebp - 0x10], edx
test ebx, ebx
je 0x100500ba
mov ecx, dword [ebp + 0xc]
xor eax, eax
mov dword [ebp - 4], eax
lea edi, [ecx - 2]
shl ecx, 2
mov dword [ebp - 0x28], ecx
mov ecx, dword [ebp - 0x14]
mov dword [ebp - 0x20], edi
mov dword [ebp - 0x1c], ecx
nop dword [eax]
xor ebx, ebx
mov dword [ebp - 0xc], ebx
test edi, edi
je 0x100500a4
mov dword [ebp - 8], eax
mov eax, ecx
mov dword [ebp - 0x24], ecx
mov eax, dword [eax]
mov ecx, dword [esi]
mov dword [ecx + edx*4], eax
add edx, dword [esi + 4]
mov ecx, dword [ebp - 8]
mov edi, dword [esi]
add ecx, ebx
mov eax, dword [ebp - 0x14]
xor ebx, 1
inc dword [ebp - 8]
mov eax, dword [eax + ecx*4 + 4]
mov dword [edi + edx*4], eax
mov edi, dword [ebp - 0x10]
mov ecx, dword [esi + 4]
mov eax, dword [ebp - 0xc]
mov edx, dword [esi]
add eax, ebx
add eax, dword [ebp - 4]
lea ecx, [edi + ecx*2]
mov edi, dword [ebp - 0x14]
mov eax, dword [edi + eax*4 + 4]
mov edi, dword [ebp - 0xc]
mov dword [edx + ecx*4], eax
inc edi
mov edx, dword [ebp - 0x10]
mov eax, dword [ebp - 0x24]
inc edx
add eax, 4
mov dword [ebp - 0x10], edx
mov dword [ebp - 0xc], edi
mov dword [ebp - 0x24], eax
cmp edi, dword [ebp - 0x20]
jb 0x10050041
mov eax, dword [ebp - 4]
mov ecx, dword [ebp - 0x1c]
mov edi, dword [ebp - 0x20]
add eax, dword [ebp + 0xc]
add ecx, dword [ebp - 0x28]
sub dword [ebp - 0x18], 1
mov dword [ebp - 4], eax
mov dword [ebp - 0x1c], ecx
jne 0x10050030
mov al, 1
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
ret
push dword [ebp + 0xc]
push dword [ebp + 8]
call fcn.100528e0
add esp, 8
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
ret
push dword [ebp + 0xc]
push dword [ebp + 8]
call fcn.10052ac0
add esp, 8
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
ret
pop edi
pop esi
xor al, al
pop ebx
mov esp, ebp
pop ebp
ret
call fcn.10002cb0
nop
invalid