Function at 0x574f40
Capabilities:
Encode data using xor

Disassembly:
test ecx, ecx
push esi
push edi
je 0x5753f9
mov edi, dword [esp + 0xc]
test edi, edi
je 0x5753f9
mov eax, dword [esp + 0x10]
mov esi, eax
and esi, 0x80000007
jns 0x574f69
dec esi
or esi, 0xfffffff8
inc esi
jne 0x5753f9
test eax, eax
jl 0x5753f9
test edx, edx
push ebx
push ebp
lea ebp, [edi + eax]
je 0x574fb5
mov eax, dword [edx]
mov edx, dword [edx + 4]
mov dword [esp + 0x14], eax
mov dword [esp + 0x18], edx
mov edx, dword [esp + 0x14]
mov eax, dword [esp + 0x18]
xchg al, ah
rol eax, 0x10
xchg al, ah
xchg dl, dh
ror edx, 0x10
xchg dl, dh
mov dword [esp + 0x14], edx
mov dword [esp + 0x18], eax
mov ebx, dword [esp + 0x14]
mov esi, dword [esp + 0x18]
jmp 0x574fb9
xor ebx, ebx
xor esi, esi
cmp edi, ebp
jae 0x5753f0
mov eax, dword [edi]
mov edx, dword [edi + 4]
mov dword [esp + 0x14], eax
mov dword [esp + 0x18], edx
mov edx, dword [esp + 0x14]
mov eax, dword [esp + 0x18]
xchg al, ah
rol eax, 0x10
xchg al, ah
xchg dl, dh
ror edx, 0x10
xchg dl, dh
mov dword [esp + 0x14], edx
mov dword [esp + 0x18], eax
mov eax, dword [esp + 0x14]
mov edx, dword [ecx + 0xc00]
xor edx, eax
xor edx, ebx
mov eax, edx
shr eax, 0x10
mov ebx, edx
shr ebx, 0x18
movzx eax, al
mov eax, dword [ecx + eax*4]
add eax, dword [ecx + ebx*4 + 0x400]
movzx ebx, dh
xor eax, dword [ecx + ebx*4 + 0xc48]
mov ebx, edx
and ebx, 0xff
add eax, dword [ecx + ebx*4 + 0x800]
xor eax, dword [ecx + 0xc04]
xor eax, dword [esp + 0x18]
xor eax, esi
mov dword [esp + 0x18], eax
movzx esi, byte [esp + 0x1a]
mov esi, dword [ecx + esi*4]
mov ebx, eax
shr ebx, 0x18
add esi, dword [ecx + ebx*4 + 0x400]
movzx ebx, ah
xor esi, dword [ecx + ebx*4 + 0xc48]
mov dword [esp + 0x14], edx
mov ebx, eax
and ebx, 0xff
add esi, dword [ecx + ebx*4 + 0x800]
xor esi, dword [ecx + 0xc08]
xor edx, esi
mov dword [esp + 0x14], edx
movzx esi, byte [esp + 0x16]
mov esi, dword [ecx + esi*4]
mov ebx, edx
shr ebx, 0x18
add esi, dword [ecx + ebx*4 + 0x400]
movzx ebx, dh
xor esi, dword [ecx + ebx*4 + 0xc48]
and edx, 0xff
add esi, dword [ecx + edx*4 + 0x800]
xor esi, dword [ecx + 0xc0c]
xor eax, esi
mov edx, eax
shr edx, 0x10
movzx edx, dl
mov edx, dword [ecx + edx*4]
mov esi, eax
shr esi, 0x18
add edx, dword [ecx + esi*4 + 0x400]
movzx esi, ah
xor edx, dword [ecx + esi*4 + 0xc48]
mov esi, eax
and esi, 0xff
mov ebx, dword [ecx + esi*4 + 0x800]
mov esi, dword [ecx + 0xc10]
add edx, ebx
xor edx, dword [esp + 0x14]
xor edx, esi
mov dword [esp + 0x14], edx
movzx esi, byte [esp + 0x16]
mov esi, dword [ecx + esi*4]
mov ebx, edx
shr ebx, 0x18
add esi, dword [ecx + ebx*4 + 0x400]
mov dword [esp + 0x18], eax
movzx ebx, dh
xor esi, dword [ecx + ebx*4 + 0xc48]
mov ebx, edx
and ebx, 0xff
add esi, dword [ecx + ebx*4 + 0x800]
xor esi, dword [ecx + 0xc14]
xor eax, esi
mov dword [esp + 0x18], eax
movzx esi, byte [esp + 0x1a]
mov esi, dword [ecx + esi*4]
mov ebx, eax
shr ebx, 0x18
add esi, dword [ecx + ebx*4 + 0x400]
movzx ebx, ah
xor esi, dword [ecx + ebx*4 + 0xc48]
mov ebx, eax
and ebx, 0xff
add esi, dword [ecx + ebx*4 + 0x800]
xor esi, dword [ecx + 0xc18]
xor edx, esi
mov dword [esp + 0x14], edx
movzx esi, byte [esp + 0x16]
mov esi, dword [ecx + esi*4]
mov ebx, edx
shr ebx, 0x18
add esi, dword [ecx + ebx*4 + 0x400]
movzx ebx, dh
xor esi, dword [ecx + ebx*4 + 0xc48]
and edx, 0xff
add esi, dword [ecx + edx*4 + 0x800]
xor esi, dword [ecx + 0xc1c]
xor eax, esi
mov edx, eax
shr edx, 0x10
movzx edx, dl
mov edx, dword [ecx + edx*4]
mov esi, eax
shr esi, 0x18
add edx, dword [ecx + esi*4 + 0x400]
movzx esi, ah
xor edx, dword [ecx + esi*4 + 0xc48]
mov esi, eax
and esi, 0xff
mov ebx, dword [ecx + esi*4 + 0x800]
mov esi, dword [ecx + 0xc20]
add edx, ebx
xor edx, dword [esp + 0x14]
xor edx, esi
mov dword [esp + 0x14], edx
movzx esi, byte [esp + 0x16]
mov esi, dword [ecx + esi*4]
mov ebx, edx
shr ebx, 0x18
add esi, dword [ecx + ebx*4 + 0x400]
movzx ebx, dh
xor esi, dword [ecx + ebx*4 + 0xc48]
mov ebx, edx
and ebx, 0xff
add esi, dword [ecx + ebx*4 + 0x800]
xor esi, dword [ecx + 0xc24]
mov dword [esp + 0x18], eax
xor eax, esi
mov dword [esp + 0x18], eax
movzx esi, byte [esp + 0x1a]
mov esi, dword [ecx + esi*4]
mov ebx, eax
shr ebx, 0x18
add esi, dword [ecx + ebx*4 + 0x400]
movzx ebx, ah
xor esi, dword [ecx + ebx*4 + 0xc48]
mov ebx, eax
and ebx, 0xff
add esi, dword [ecx + ebx*4 + 0x800]
xor esi, dword [ecx + 0xc28]
xor edx, esi
mov dword [esp + 0x14], edx
movzx esi, byte [esp + 0x16]
mov esi, dword [ecx + esi*4]
mov ebx, edx
shr ebx, 0x18
add esi, dword [ecx + ebx*4 + 0x400]
movzx ebx, dh
xor esi, dword [ecx + ebx*4 + 0xc48]
and edx, 0xff
add esi, dword [ecx + edx*4 + 0x800]
xor esi, dword [ecx + 0xc2c]
xor eax, esi
mov edx, eax
shr edx, 0x10
movzx edx, dl
mov edx, dword [ecx + edx*4]
mov esi, eax
shr esi, 0x18
add edx, dword [ecx + esi*4 + 0x400]
movzx esi, ah
xor edx, dword [ecx + esi*4 + 0xc48]
mov esi, eax
and esi, 0xff
mov ebx, dword [ecx + esi*4 + 0x800]
mov esi, dword [ecx + 0xc30]
add edx, ebx
xor edx, dword [esp + 0x14]
xor edx, esi
mov dword [esp + 0x14], edx
movzx esi, byte [esp + 0x16]
mov esi, dword [ecx + esi*4]
mov ebx, edx
shr ebx, 0x18
add esi, dword [ecx + ebx*4 + 0x400]
movzx ebx, dh
xor esi, dword [ecx + ebx*4 + 0xc48]
mov ebx, edx
and ebx, 0xff
add esi, dword [ecx + ebx*4 + 0x800]
xor esi, dword [ecx + 0xc34]
mov dword [esp + 0x18], eax
xor eax, esi
mov dword [esp + 0x18], eax
movzx esi, byte [esp + 0x1a]
mov esi, dword [ecx + esi*4]
mov ebx, eax
shr ebx, 0x18
add esi, dword [ecx + ebx*4 + 0x400]
movzx ebx, ah
xor esi, dword [ecx + ebx*4 + 0xc48]
mov ebx, eax
and ebx, 0xff
add esi, dword [ecx + ebx*4 + 0x800]
xor esi, dword [ecx + 0xc38]
xor edx, esi
mov dword [esp + 0x14], edx
movzx esi, byte [esp + 0x16]
mov esi, dword [ecx + esi*4]
mov ebx, edx
shr ebx, 0x18
add esi, dword [ecx + ebx*4 + 0x400]
movzx ebx, dh
xor esi, dword [ecx + ebx*4 + 0xc48]
mov ebx, edx
and ebx, 0xff
add esi, dword [ecx + ebx*4 + 0x800]
xor esi, dword [ecx + 0xc3c]
xor eax, esi
mov dword [esp + 0x18], eax
movzx esi, byte [esp + 0x1a]
mov esi, dword [ecx + esi*4]
mov ebx, eax
shr ebx, 0x18
add esi, dword [ecx + ebx*4 + 0x400]
movzx ebx, ah
xor esi, dword [ecx + ebx*4 + 0xc48]
mov ebx, eax
and ebx, 0xff
add esi, dword [ecx + ebx*4 + 0x800]
mov ebx, dword [ecx + 0xc44]
xor esi, edx
mov edx, dword [ecx + 0xc40]
xor eax, ebx
xor esi, edx
mov dword [esp + 0x14], esi
mov dword [esp + 0x18], eax
mov ebx, eax
mov edx, dword [esp + 0x14]
mov eax, dword [esp + 0x18]
xchg al, ah
rol eax, 0x10
xchg al, ah
xchg dl, dh
ror edx, 0x10
xchg dl, dh
mov dword [esp + 0x14], edx
mov dword [esp + 0x18], eax
mov eax, dword [esp + 0x18]
mov edx, dword [esp + 0x14]
mov dword [edi], eax
mov dword [edi + 4], edx
add edi, 8
cmp edi, ebp
jb 0x574fc1
pop ebp
pop ebx
pop edi
xor eax, eax
pop esi
ret 8
pop edi
or eax, 0xffffffff
pop esi
ret 8