Function at 0x473840
Capabilities:
Encode data using xor

Disassembly:
push ebp
mov ebp, esp
sub esp, 0x28
push esi
mov esi, dword [ebp + 8]
cmp dword [esi], 0
push edi
mov edi, ecx
je 0x47385d
pop edi
mov eax, 0xfffffffb
pop esi
mov esp, ebp
pop ebp
ret
cmp dword [esi + 8], 0
je 0x47386e
pop edi
mov eax, 0xfffffffa
pop esi
mov esp, ebp
pop ebp
ret
test edi, edi
je 0x473b36
test eax, eax
jle 0x473b36
cdq
and edx, 0x7f
push ebx
lea ebx, [edx + eax]
mov eax, dword [esi + 4]
sar ebx, 7
sub eax, 0
mov dword [ebp - 8], ebx
je 0x473b02
dec eax
je 0x473a6f
dec eax
je 0x4738ac
pop ebx
pop edi
or eax, 0xffffffff
pop esi
mov esp, ebp
pop ebp
ret
mov eax, dword [esi + 0xc]
mov ecx, dword [esi + 0x10]
mov edx, dword [esi + 0x14]
mov dword [ebp - 0x18], eax
mov eax, dword [esi + 0x18]
mov dword [ebp - 0x14], ecx
mov dword [ebp - 0x10], edx
mov dword [ebp - 0xc], eax
mov dword [ebp - 4], ebx
test ebx, ebx
jle 0x473b2a
xor edi, edi
jmp 0x4738e3
mov esi, dword [ebp + 8]
xor edi, edi
jmp 0x4738e3
mov esi, dword [ebp + 8]
mov edx, dword [ebp - 0x14]
mov ecx, dword [ebp - 0x18]
mov eax, dword [ebp - 0x10]
mov dword [ebp - 0x24], edx
lea edx, [ebp - 0x28]
mov dword [ebp - 0x28], ecx
mov ecx, dword [ebp - 0xc]
mov dword [ebp - 0x20], eax
push edx
mov eax, edx
mov dword [ebp - 0x1c], ecx
call fcn.004740f0
movzx eax, byte [ebp - 0x28]
movzx ebx, byte [ebp - 0x18]
add bl, bl
mov edx, edi
and edx, 7
and al, 0x80
mov cl, dl
shr al, cl
movzx ecx, byte [ebp - 0x17]
shr cl, 7
or cl, bl
movzx ebx, byte [ebp - 0x17]
mov byte [ebp - 0x18], cl
movzx ecx, byte [ebp - 0x16]
shr cl, 7
add bl, bl
or cl, bl
movzx ebx, byte [ebp - 0x16]
mov byte [ebp - 0x17], cl
movzx ecx, byte [ebp - 0x15]
shr cl, 7
add bl, bl
or cl, bl
movzx ebx, byte [ebp - 0x15]
mov byte [ebp - 0x16], cl
movzx ecx, byte [ebp - 0x14]
shr cl, 7
add bl, bl
or cl, bl
movzx ebx, byte [ebp - 0x14]
mov byte [ebp - 0x15], cl
movzx ecx, byte [ebp - 0x13]
shr cl, 7
add bl, bl
or cl, bl
movzx ebx, byte [ebp - 0x13]
mov byte [ebp - 0x14], cl
movzx ecx, byte [ebp - 0x12]
shr cl, 7
add bl, bl
or cl, bl
movzx ebx, byte [ebp - 0x12]
mov byte [ebp - 0x13], cl
movzx ecx, byte [ebp - 0x11]
shr cl, 7
add bl, bl
or cl, bl
movzx ebx, byte [ebp - 0x11]
mov byte [ebp - 0x12], cl
movzx ecx, byte [ebp - 0x10]
shr cl, 7
add bl, bl
or cl, bl
movzx ebx, byte [ebp - 0x10]
mov byte [ebp - 0x11], cl
movzx ecx, byte [ebp - 0xf]
shr cl, 7
add bl, bl
or cl, bl
movzx ebx, byte [ebp - 0xf]
mov esi, edi
shr esi, 3
add esi, dword [ebp + 0xc]
mov byte [ebp - 0x10], cl
movzx ecx, byte [ebp - 0xe]
xor byte [esi], al
mov al, byte [esi]
add esp, 4
shr cl, 7
add bl, bl
or cl, bl
movzx ebx, byte [ebp - 0xe]
mov byte [ebp - 0xf], cl
movzx ecx, byte [ebp - 0xd]
shr cl, 7
add bl, bl
or cl, bl
movzx ebx, byte [ebp - 0xd]
mov byte [ebp - 0xe], cl
movzx ecx, byte [ebp - 0xc]
shr cl, 7
add bl, bl
or cl, bl
movzx ebx, byte [ebp - 0xc]
mov byte [ebp - 0xd], cl
movzx ecx, byte [ebp - 0xb]
shr cl, 7
add bl, bl
or cl, bl
movzx ebx, byte [ebp - 0xb]
mov byte [ebp - 0xc], cl
movzx ecx, byte [ebp - 0xa]
shr cl, 7
add bl, bl
or cl, bl
movzx ebx, byte [ebp - 0xa]
mov byte [ebp - 0xb], cl
movzx ecx, byte [ebp - 9]
shr cl, 7
add bl, bl
or cl, bl
mov byte [ebp - 0xa], cl
mov cl, 7
sub cl, dl
mov dl, byte [ebp - 9]
shr al, cl
add dl, dl
inc edi
and al, 1
or al, dl
mov byte [ebp - 9], al
cmp edi, 0x80
jl 0x4738e0
mov eax, dword [ebp - 4]
dec eax
mov dword [ebp - 4], eax
test eax, eax
jg 0x4738d3
mov ebx, dword [ebp - 8]
mov eax, ebx
pop ebx
pop edi
shl eax, 7
pop esi
mov esp, ebp
pop ebp
ret
mov eax, dword [esi + 0xc]
xor eax, dword [edi]
mov ecx, dword [esi + 0x10]
xor ecx, dword [edi + 4]
mov edx, dword [esi + 0x14]
xor edx, dword [edi + 8]
mov dword [ebp - 0x28], eax
mov eax, dword [esi + 0x18]
xor eax, dword [edi + 0xc]
mov dword [ebp - 0x24], ecx
lea ecx, [ebp - 0x28]
mov dword [ebp - 0x1c], eax
mov eax, dword [ebp + 0xc]
push ecx
mov dword [ebp - 0x20], edx
call fcn.004740f0
lea ecx, [ebx - 1]
add esp, 4
add edi, 0x10
mov dword [ebp - 4], ecx
test ecx, ecx
jle 0x473b2a
lea ebx, [eax + 8]
mov edx, dword [ebx - 8]
xor edx, dword [edi]
mov ecx, dword [edi + 8]
xor ecx, dword [ebx]
mov eax, dword [ebx - 4]
xor eax, dword [edi + 4]
mov dword [ebp - 0x28], edx
mov edx, dword [ebx + 4]
xor edx, dword [edi + 0xc]
mov dword [ebp - 0x20], ecx
lea ecx, [ebp - 0x28]
mov dword [ebp - 0x24], eax
add ebx, 0x10
lea eax, [ebx - 8]
push ecx
mov dword [ebp - 0x1c], edx
call fcn.004740f0
mov eax, dword [ebp - 4]
dec eax
add esp, 4
add edi, 0x10
mov dword [ebp - 4], eax
test eax, eax
jg 0x473ab1
mov ebx, dword [ebp - 8]
mov eax, ebx
pop ebx
pop edi
shl eax, 7
pop esi
mov esp, ebp
pop ebp
ret
mov dword [ebp - 4], ebx
test ebx, ebx
jle 0x473b2a
mov eax, dword [ebp + 0xc]
sub edi, eax
mov edi, edi
lea edx, [edi + eax]
push edx
call fcn.004740f0
mov ecx, dword [ebp - 4]
dec ecx
add esp, 4
add eax, 0x10
mov dword [ebp - 4], ecx
test ecx, ecx
jg 0x473b10
mov eax, ebx
pop ebx
pop edi
shl eax, 7
pop esi
mov esp, ebp
pop ebp
ret
pop edi
xor eax, eax
pop esi
mov esp, ebp
pop ebp
ret