Function at 0x4793c5
Capabilities:
Encode data using xor

Disassembly:
sub esp, 0x1c
push ebx
push ebp
mov ebp, dword [esp + 0x28]
test ebp, ebp
je 0x4795df
mov ebx, dword [esp + 0x2c]
test ebx, ebx
je 0x4795df
cmp byte [ebx], 1
je 0x4795df
push esi
mov esi, dword [esp + 0x34]
test esi, esi
je 0x4795d6
mov ecx, dword [esp + 0x38]
test ecx, ecx
jle 0x4795d6
mov eax, ecx
cdq
and edx, 0xf
add eax, edx
push edi
mov edi, eax
movzx eax, byte [ebp + 0x14]
sar edi, 4
dec eax
je 0x47952d
dec eax
je 0x47942d
pop edi
pop esi
pop ebp
mov eax, 0xfffffffb
pop ebx
add esp, 0x1c
ret
test edi, edi
mov eax, ebp
mov ebp, dword [esp + 0x40]
jle 0x479490
mov dword [esp + 0x30], edi
mov edx, dword [eax]
mov ecx, dword [esi]
xor ecx, edx
mov edx, dword [eax + 4]
mov dword [esp + 0x1c], ecx
xor edx, dword [esi + 4]
mov ecx, dword [eax + 8]
mov dword [esp + 0x20], edx
xor ecx, dword [esi + 8]
mov edx, dword [eax + 0xc]
xor edx, dword [esi + 0xc]
mov eax, dword [ebx + 0x4c]
push eax
lea eax, [ebx + 0x54]
push eax
mov dword [esp + 0x2c], ecx
lea ecx, [esp + 0x24]
push ebp
push ecx
mov dword [esp + 0x38], edx
call fcn.0049c595
mov ecx, dword [esp + 0x40]
mov eax, ebp
add esp, 0x10
add esi, 0x10
add ebp, 0x10
dec ecx
mov dword [esp + 0x30], ecx
jne 0x47943b
mov ecx, dword [esp + 0x3c]
shl edi, 4
mov edx, edi
mov dword [esp + 0x10], edx
sub edx, ecx
add edx, 0x10
mov edi, 0x10
sub edi, edx
test edi, edi
jle 0x4794e5
mov ebx, eax
sub ebx, esi
mov dword [esp + 0x14], ebx
lea ebx, [esp + 0x1c]
sub ebx, esi
mov ecx, esi
mov dword [esp + 0x18], ebx
mov dword [esp + 0x30], edi
lea esp, [esp]
mov esi, dword [esp + 0x14]
mov bl, byte [esi + ecx]
xor bl, byte [ecx]
mov esi, dword [esp + 0x18]
mov byte [esi + ecx], bl
mov esi, dword [esp + 0x30]
inc ecx
dec esi
mov dword [esp + 0x30], esi
jne 0x4794c5
mov ebx, dword [esp + 0x34]
mov ecx, edi
cmp ecx, 0x10
jge 0x479508
mov esi, eax
lea eax, [esp + 0x1c]
sub esi, eax
nop
lea eax, [esi + ecx]
mov al, byte [esp + eax + 0x1c]
xor al, dl
mov byte [esp + ecx + 0x1c], al
inc ecx
cmp ecx, 0x10
jl 0x4794f5
mov ecx, dword [ebx + 0x4c]
push ecx
add ebx, 0x54
push ebx
lea edx, [esp + 0x24]
push ebp
push edx
call fcn.0049c595
mov eax, dword [esp + 0x20]
add esp, 0x10
pop edi
pop esi
pop ebp
add eax, 0x10
pop ebx
add esp, 0x1c
ret
test edi, edi
mov ebp, dword [esp + 0x40]
jle 0x479560
mov dword [esp + 0x30], edi
mov eax, dword [ebx + 0x4c]
push eax
lea eax, [ebx + 0x54]
push eax
push ebp
push esi
call fcn.0049c595
mov eax, dword [esp + 0x40]
add esp, 0x10
add esi, 0x10
add ebp, 0x10
dec eax
mov dword [esp + 0x30], eax
jne 0x479539
mov ecx, dword [esp + 0x3c]
shl edi, 4
mov edx, edi
sub edx, ecx
add edx, 0x10
mov dword [esp + 0x10], edi
mov ecx, 0x10
sub ecx, edx
mov eax, ecx
shr ecx, 2
lea edi, [esp + 0x1c]
rep movsd dword es:[edi], dword [esi]
mov ecx, eax
mov al, dl
mov dword [esp + 0x30], ebx
mov bl, al
mov bh, bl
and ecx, 3
rep movsb byte es:[edi], byte [esi]
mov eax, ebx
shl eax, 0x10
mov ax, bx
mov ebx, dword [esp + 0x30]
mov ecx, edx
shr ecx, 2
lea edi, [esp + 0x2c]
sub edi, edx
add ebx, 0x54
rep stosd dword es:[edi], eax
mov ecx, edx
and ecx, 3
rep stosb byte es:[edi], al
mov eax, dword [ebx - 8]
push eax
push ebx
lea ecx, [esp + 0x24]
push ebp
push ecx
call fcn.0049c595
mov eax, dword [esp + 0x20]
add esp, 0x10
pop edi
pop esi
pop ebp
add eax, 0x10
pop ebx
add esp, 0x1c
ret
pop esi
pop ebp
xor eax, eax
pop ebx
add esp, 0x1c
ret
pop ebp
mov eax, 0xfffffffb
pop ebx
add esp, 0x1c
ret