Function at 0x1004e980
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.0x1004e998
jmp dword [eax*4 + 0x1004ed9c]
push dword [ebp + 0xc]
push dword [ebp + 8]
call fcn.100510b0
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 0x1004e9eb
mov eax, dword [ebp + 0xc]
add eax, 0xfffffffe
nop dword [eax]
test eax, eax
je 0x1004e9d6
add edi, eax
sub ecx, 1
jne 0x1004e9d0
test edi, edi
je 0x1004e9eb
cmp edi, 0x2aaaaaaa
jg 0x1004ed96
mov eax, dword [esi + 4]
lea ebx, [edi + edi*2]
imul eax, dword [esi + 8]
cmp ebx, eax
je 0x1004ea1f
mov eax, dword [esi]
test eax, eax
je 0x1004ea0a
push dword [eax - 4]
call fcn.10086b56
add esp, 4
test ebx, ebx
jle 0x1004ea19
mov ecx, ebx
call fcn.10026d20
mov dword [esi], eax
jmp 0x1004ea1f
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 0x1004ed5a
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 0x1004eab4
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 0x1004ea55
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 0x1004ea44
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.10051220
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 0x1004eb1b
mov eax, dword [ebp + 0xc]
mov ecx, ebx
add eax, 0xfffffffe
nop word [eax + eax]
test eax, eax
je 0x1004eb06
add edi, eax
sub ecx, 1
jne 0x1004eb00
test edi, edi
je 0x1004eb1b
cmp edi, 0x2aaaaaaa
jg 0x1004ed96
mov eax, dword [esi + 4]
lea ecx, [edi + edi*2]
imul eax, dword [esi + 8]
cmp ecx, eax
je 0x1004eb50
mov eax, dword [esi]
test eax, eax
je 0x1004eb3d
push dword [eax - 4]
call fcn.10086b56
add esp, 4
lea ecx, [edi + edi*2]
test ecx, ecx
jle 0x1004eb4a
call fcn.10026d20
mov dword [esi], eax
jmp 0x1004eb50
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 0x1004ed5a
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 0x1004ebfa
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 0x1004eb91
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 0x1004eb80
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.100513e0
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 0x1004ec63
mov eax, dword [ebp + 0xc]
mov ecx, ebx
add eax, 0xfffffffe
test eax, eax
je 0x1004ec4e
add edi, eax
sub ecx, 1
jne 0x1004ec48
test edi, edi
je 0x1004ec63
cmp edi, 0x2aaaaaaa
jg 0x1004ed96
mov eax, dword [esi + 4]
lea ecx, [edi + edi*2]
imul eax, dword [esi + 8]
cmp ecx, eax
je 0x1004ec98
mov eax, dword [esi]
test eax, eax
je 0x1004ec85
push dword [eax - 4]
call fcn.10086b56
add esp, 4
lea ecx, [edi + edi*2]
test ecx, ecx
jle 0x1004ec92
call fcn.10026d20
mov dword [esi], eax
jmp 0x1004ec98
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 0x1004ed5a
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 0x1004ed44
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 0x1004ece1
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 0x1004ecd0
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.10051580
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.10051760
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.10002c00
nop
lahf
jmp 4189650342