Function at 0x1004f8b0
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.0x1004f8c8
jmp dword [eax*4 + 0x1004fccc]
push dword [ebp + 0xc]
push dword [ebp + 8]
call fcn.10051fc0
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 0x1004f91b
mov eax, dword [ebp + 0xc]
add eax, 0xfffffffe
nop dword [eax]
test eax, eax
je 0x1004f906
add edi, eax
sub ecx, 1
jne 0x1004f900
test edi, edi
je 0x1004f91b
cmp edi, 0x2aaaaaaa
jg 0x1004fcc6
mov eax, dword [esi + 4]
lea ebx, [edi + edi*2]
imul eax, dword [esi + 8]
cmp ebx, eax
je 0x1004f94f
mov eax, dword [esi]
test eax, eax
je 0x1004f93a
push dword [eax - 4]
call fcn.10089bd6
add esp, 4
test ebx, ebx
jle 0x1004f949
mov ecx, ebx
call fcn.100277b0
mov dword [esi], eax
jmp 0x1004f94f
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 0x1004fc8a
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 0x1004f9e4
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 0x1004f985
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 0x1004f974
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.10052140
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 0x1004fa4b
mov eax, dword [ebp + 0xc]
mov ecx, ebx
add eax, 0xfffffffe
nop word [eax + eax]
test eax, eax
je 0x1004fa36
add edi, eax
sub ecx, 1
jne 0x1004fa30
test edi, edi
je 0x1004fa4b
cmp edi, 0x2aaaaaaa
jg 0x1004fcc6
mov eax, dword [esi + 4]
lea ecx, [edi + edi*2]
imul eax, dword [esi + 8]
cmp ecx, eax
je 0x1004fa80
mov eax, dword [esi]
test eax, eax
je 0x1004fa6d
push dword [eax - 4]
call fcn.10089bd6
add esp, 4
lea ecx, [edi + edi*2]
test ecx, ecx
jle 0x1004fa7a
call fcn.100277b0
mov dword [esi], eax
jmp 0x1004fa80
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 0x1004fc8a
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 0x1004fb2a
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 - 0x14]
mov ecx, dword [ebp - 0x10]
add eax, ebx
add eax, dword [ebp - 0xc]
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 0x1004fac1
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 0x1004fab0
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.10052300
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 0x1004fb93
mov eax, dword [ebp + 0xc]
mov ecx, ebx
add eax, 0xfffffffe
test eax, eax
je 0x1004fb7e
add edi, eax
sub ecx, 1
jne 0x1004fb78
test edi, edi
je 0x1004fb93
cmp edi, 0x2aaaaaaa
jg 0x1004fcc6
mov eax, dword [esi + 4]
lea ecx, [edi + edi*2]
imul eax, dword [esi + 8]
cmp ecx, eax
je 0x1004fbc8
mov eax, dword [esi]
test eax, eax
je 0x1004fbb5
push dword [eax - 4]
call fcn.10089bd6
add esp, 4
lea ecx, [edi + edi*2]
test ecx, ecx
jle 0x1004fbc2
call fcn.100277b0
mov dword [esi], eax
jmp 0x1004fbc8
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 0x1004fc8a
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 0x1004fc74
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 - 4]
mov edx, dword [esi]
add eax, ebx
add eax, dword [ebp - 0xc]
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 0x1004fc11
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 0x1004fc00
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.100524a0
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.10052680
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.10002c20
nop
iretd