Function at 0x41a4b8
Capabilities:
Encode data using xor

Disassembly:
push ebp
mov ebp, esp
mov eax, 0x1048
call fcn.004833f0
push esi
push edi
mov edi, dword [ebp + 0xc]
mov ecx, edi
mov eax, dword [edi]
call dword [eax + 8]
cmp eax, 0x38
jg 0x41a895
mov esi, dword [ebp + 8]
test esi, esi
je 0x41a895
test byte [esi + 4], 7
jne 0x41a895
lea eax, [ebp - 0x1048]
push edi
push eax
call fcn.0041a32f
mov eax, dword [esi + 4]
mov esi, dword [esi + 8]
shr eax, 3
pop ecx
test eax, eax
pop ecx
jle 0x41a891
lea edi, [esi + 4]
mov dword [ebp + 8], eax
push ebx
mov ecx, dword [esi]
xor ecx, dword [ebp - 0x1004]
mov dword [ebp + 0xc], ecx
movzx eax, byte [ebp + 0xe]
movzx edx, byte [ebp + 0xf]
mov eax, dword [ebp + eax*4 - 0xc00]
add eax, dword [ebp + edx*4 - 0x1000]
movzx edx, ch
xor eax, dword [ebp + edx*4 - 0x800]
movzx edx, cl
add eax, dword [ebp + edx*4 - 0x400]
xor eax, dword [edi]
xor eax, dword [ebp - 0x1008]
mov dword [ebp + 0xc], eax
movzx edx, byte [ebp + 0xe]
movzx ebx, byte [ebp + 0xf]
mov edx, dword [ebp + edx*4 - 0xc00]
add edx, dword [ebp + ebx*4 - 0x1000]
movzx ebx, ah
xor edx, dword [ebp + ebx*4 - 0x800]
movzx ebx, al
add edx, dword [ebp + ebx*4 - 0x400]
xor edx, dword [ebp - 0x100c]
xor ecx, edx
mov dword [ebp + 0xc], ecx
movzx edx, byte [ebp + 0xe]
movzx ebx, byte [ebp + 0xf]
mov edx, dword [ebp + edx*4 - 0xc00]
add edx, dword [ebp + ebx*4 - 0x1000]
movzx ebx, ch
xor edx, dword [ebp + ebx*4 - 0x800]
movzx ebx, cl
add edx, dword [ebp + ebx*4 - 0x400]
xor edx, dword [ebp - 0x1010]
xor eax, edx
mov dword [ebp + 0xc], eax
movzx edx, byte [ebp + 0xe]
movzx ebx, byte [ebp + 0xf]
mov edx, dword [ebp + edx*4 - 0xc00]
add edx, dword [ebp + ebx*4 - 0x1000]
movzx ebx, ah
xor edx, dword [ebp + ebx*4 - 0x800]
movzx ebx, al
add edx, dword [ebp + ebx*4 - 0x400]
xor edx, dword [ebp - 0x1014]
xor ecx, edx
mov dword [ebp + 0xc], ecx
movzx edx, byte [ebp + 0xe]
movzx ebx, byte [ebp + 0xf]
mov edx, dword [ebp + edx*4 - 0xc00]
add edx, dword [ebp + ebx*4 - 0x1000]
movzx ebx, ch
xor edx, dword [ebp + ebx*4 - 0x800]
movzx ebx, cl
add edx, dword [ebp + ebx*4 - 0x400]
xor edx, dword [ebp - 0x1018]
xor eax, edx
mov dword [ebp + 0xc], eax
movzx edx, byte [ebp + 0xe]
movzx ebx, byte [ebp + 0xf]
mov edx, dword [ebp + edx*4 - 0xc00]
add edx, dword [ebp + ebx*4 - 0x1000]
movzx ebx, ah
xor edx, dword [ebp + ebx*4 - 0x800]
movzx ebx, al
add edx, dword [ebp + ebx*4 - 0x400]
xor edx, dword [ebp - 0x101c]
xor ecx, edx
mov dword [ebp + 0xc], ecx
movzx edx, byte [ebp + 0xe]
movzx ebx, byte [ebp + 0xf]
mov edx, dword [ebp + edx*4 - 0xc00]
add edx, dword [ebp + ebx*4 - 0x1000]
movzx ebx, ch
xor edx, dword [ebp + ebx*4 - 0x800]
movzx ebx, cl
add edx, dword [ebp + ebx*4 - 0x400]
xor edx, dword [ebp - 0x1020]
xor eax, edx
mov dword [ebp + 0xc], eax
movzx edx, byte [ebp + 0xe]
movzx ebx, byte [ebp + 0xf]
mov edx, dword [ebp + edx*4 - 0xc00]
add edx, dword [ebp + ebx*4 - 0x1000]
movzx ebx, ah
xor edx, dword [ebp + ebx*4 - 0x800]
movzx ebx, al
add edx, dword [ebp + ebx*4 - 0x400]
xor edx, dword [ebp - 0x1024]
xor ecx, edx
mov dword [ebp + 0xc], ecx
movzx edx, byte [ebp + 0xe]
movzx ebx, byte [ebp + 0xf]
mov edx, dword [ebp + edx*4 - 0xc00]
add edx, dword [ebp + ebx*4 - 0x1000]
movzx ebx, ch
xor edx, dword [ebp + ebx*4 - 0x800]
movzx ebx, cl
add edx, dword [ebp + ebx*4 - 0x400]
xor edx, dword [ebp - 0x1028]
xor eax, edx
mov dword [ebp + 0xc], eax
movzx edx, byte [ebp + 0xe]
movzx ebx, byte [ebp + 0xf]
mov edx, dword [ebp + edx*4 - 0xc00]
add edx, dword [ebp + ebx*4 - 0x1000]
movzx ebx, ah
xor edx, dword [ebp + ebx*4 - 0x800]
movzx ebx, al
add edx, dword [ebp + ebx*4 - 0x400]
xor edx, dword [ebp - 0x102c]
xor ecx, edx
mov dword [ebp + 0xc], ecx
movzx edx, byte [ebp + 0xe]
movzx ebx, byte [ebp + 0xf]
mov edx, dword [ebp + edx*4 - 0xc00]
add edx, dword [ebp + ebx*4 - 0x1000]
movzx ebx, ch
xor edx, dword [ebp + ebx*4 - 0x800]
movzx ebx, cl
add edx, dword [ebp + ebx*4 - 0x400]
xor edx, dword [ebp - 0x1030]
xor eax, edx
mov dword [ebp + 0xc], eax
movzx edx, byte [ebp + 0xe]
movzx ebx, byte [ebp + 0xf]
mov edx, dword [ebp + edx*4 - 0xc00]
add edx, dword [ebp + ebx*4 - 0x1000]
movzx ebx, ah
xor edx, dword [ebp + ebx*4 - 0x800]
movzx ebx, al
add edx, dword [ebp + ebx*4 - 0x400]
xor edx, dword [ebp - 0x1034]
xor ecx, edx
mov dword [ebp + 0xc], ecx
movzx edx, byte [ebp + 0xe]
movzx ebx, byte [ebp + 0xf]
mov edx, dword [ebp + edx*4 - 0xc00]
add edx, dword [ebp + ebx*4 - 0x1000]
movzx ebx, ch
xor edx, dword [ebp + ebx*4 - 0x800]
movzx ebx, cl
add edx, dword [ebp + ebx*4 - 0x400]
xor edx, dword [ebp - 0x1038]
xor eax, edx
mov dword [ebp + 0xc], eax
movzx edx, byte [ebp + 0xe]
movzx ebx, byte [ebp + 0xf]
mov edx, dword [ebp + edx*4 - 0xc00]
add edx, dword [ebp + ebx*4 - 0x1000]
movzx ebx, ah
xor edx, dword [ebp + ebx*4 - 0x800]
movzx ebx, al
add edx, dword [ebp + ebx*4 - 0x400]
xor edx, dword [ebp - 0x103c]
xor ecx, edx
mov dword [ebp + 0xc], ecx
movzx edx, byte [ebp + 0xe]
movzx ebx, byte [ebp + 0xf]
mov edx, dword [ebp + edx*4 - 0xc00]
add edx, dword [ebp + ebx*4 - 0x1000]
movzx ebx, ch
xor edx, dword [ebp + ebx*4 - 0x800]
push 4
movzx ebx, cl
add edx, dword [ebp + ebx*4 - 0x400]
xor edx, dword [ebp - 0x1040]
xor eax, edx
mov dword [ebp + 0xc], eax
movzx edx, byte [ebp + 0xe]
movzx ebx, byte [ebp + 0xf]
mov edx, dword [ebp + edx*4 - 0xc00]
add edx, dword [ebp + ebx*4 - 0x1000]
movzx ebx, ah
xor edx, dword [ebp + ebx*4 - 0x800]
movzx ebx, al
add edx, dword [ebp + ebx*4 - 0x400]
xor ecx, edx
mov edx, dword [ebp - 0x1048]
xor edx, eax
pop eax
mov dword [esi], edx
mov edx, dword [ebp - 0x1044]
add esi, eax
xor edx, ecx
add edi, eax
mov dword [esi], edx
add edi, eax
add esi, eax
dec dword [ebp + 8]
jne 0x41a516
pop ebx
mov al, 1
jmp 0x41a897
xor al, al
pop edi
pop esi
leave
ret