Function at 0x4f9b80
Capabilities:
Encode data using xor

Disassembly:
mov eax, dword [esp + 0x28]
mov ecx, dword [esp + 0x24]
mov edx, dword [esp + 0x20]
sub esp, 0x90
push ebx
mov ebx, dword [esp + 0x9c]
push eax
push ecx
mov ecx, dword [esp + 0xb8]
lea eax, [esp + 0x48]
push edx
mov edx, dword [esp + 0xb8]
push eax
mov eax, dword [esp + 0xb4]
push ecx
push edx
push ebx
push eax
call fcn.00547180
add esp, 0x20
test eax, eax
je 0x4f9bd4
mov eax, 1
pop ebx
add esp, 0x90
ret
mov ecx, dword [esp + 0xa4]
mov eax, dword [ebx + 8]
push ebp
mov ebp, dword [esp + 0x5c]
mov ecx, dword [ecx + 8]
push esi
push edi
mov edi, dword [esp + 0x6c]
mov dword [esp + 0x10], ecx
mov ecx, dword [esp + 0x54]
mov edx, dword [esp + 0x68]
mov esi, dword [esp + 0x60]
sub edi, ebp
imul ebp, dword [esp + 0x10]
imul ecx, eax
mov dword [esp + 0x1c], eax
mov eax, dword [esp + 0x50]
sub edx, esi
lea esi, [esi + esi*2]
lea ebx, [eax + eax*2]
add ebp, esi
mov esi, dword [esp + 0xb0]
add ecx, ebx
mov ebx, dword [esp + 0xa8]
mov dword [esp + 0x34], edx
add ecx, dword [ebx + 4]
mov ebx, dword [esi + 4]
add ebp, ebx
mov bl, byte [esp + 0x4c]
test bl, bl
je 0x4f9f99
mov ebx, edx
mov esi, edx
sar ebx, 3
mov dword [esp + 0x20], ebx
mov ebx, dword [esp + 0x58]
and esi, 7
sub eax, ebx
mov ebx, dword [esp + 0x1c]
add eax, esi
mov dword [esp + 0x18], esi
lea ebx, [ebx + eax*2]
add eax, ebx
mov dword [esp + 0x28], eax
mov eax, esi
sub eax, edx
mov edx, dword [esp + 0x10]
lea edx, [edx + eax*2]
add eax, edx
test edi, edi
mov dword [esp + 0x1c], eax
jle 0x4fa0d8
mov dword [esp + 0x14], edi
mov edx, dword [esp + 0x20]
test edx, edx
jle 0x4f9f01
lea eax, [ebp + 8]
mov dword [esp + 0x10], edx
mov edx, dword [ecx]
mov edi, dword [ebp]
and edx, 0xffffff
and edi, 0xffffff
mov ebx, edx
mov esi, edx
xor ebx, edi
and esi, edi
and ebx, 0xfefefe
lea esi, [ebx + esi*2]
shr esi, 8
and esi, 0x10101
add esi, 0x7f7f7f
xor esi, 0x7f7f7f
sub edx, esi
add edx, edi
or edx, esi
mov esi, edx
shr edx, 0x10
mov word [ebp], si
mov byte [eax - 6], dl
mov edx, dword [ecx + 3]
mov edi, dword [eax - 5]
and edx, 0xffffff
and edi, 0xffffff
mov ebx, edx
mov esi, edx
xor ebx, edi
and esi, edi
and ebx, 0xfefefe
lea esi, [ebx + esi*2]
shr esi, 8
and esi, 0x10101
add esi, 0x7f7f7f
xor esi, 0x7f7f7f
sub edx, esi
add edx, edi
or edx, esi
mov esi, edx
shr edx, 0x10
mov word [eax - 5], si
mov byte [eax - 3], dl
mov edx, dword [ecx + 6]
mov edi, dword [eax - 2]
and edx, 0xffffff
and edi, 0xffffff
mov ebx, edx
mov esi, edx
xor ebx, edi
and esi, edi
and ebx, 0xfefefe
lea esi, [ebx + esi*2]
shr esi, 8
and esi, 0x10101
add esi, 0x7f7f7f
xor esi, 0x7f7f7f
sub edx, esi
add edx, edi
or edx, esi
mov esi, edx
shr edx, 0x10
mov word [eax - 2], si
mov byte [eax], dl
mov edx, dword [ecx + 9]
mov edi, dword [eax + 1]
and edx, 0xffffff
and edi, 0xffffff
mov ebx, edx
mov esi, edx
xor ebx, edi
and esi, edi
and ebx, 0xfefefe
lea esi, [ebx + esi*2]
shr esi, 8
and esi, 0x10101
add esi, 0x7f7f7f
xor esi, 0x7f7f7f
sub edx, esi
add edx, edi
or edx, esi
mov esi, edx
shr edx, 0x10
mov word [eax + 1], si
mov byte [eax + 3], dl
mov edx, dword [ecx + 0xc]
mov edi, dword [eax + 4]
and edx, 0xffffff
and edi, 0xffffff
mov ebx, edx
mov esi, edx
xor ebx, edi
and esi, edi
and ebx, 0xfefefe
lea esi, [ebx + esi*2]
shr esi, 8
and esi, 0x10101
add esi, 0x7f7f7f
xor esi, 0x7f7f7f
sub edx, esi
add edx, edi
or edx, esi
mov esi, edx
shr edx, 0x10
mov word [eax + 4], si
mov byte [eax + 6], dl
mov edx, dword [ecx + 0xf]
mov edi, dword [eax + 7]
and edx, 0xffffff
and edi, 0xffffff
mov ebx, edx
mov esi, edx
xor ebx, edi
and esi, edi
and ebx, 0xfefefe
lea esi, [ebx + esi*2]
shr esi, 8
and esi, 0x10101
add esi, 0x7f7f7f
xor esi, 0x7f7f7f
sub edx, esi
add edx, edi
or edx, esi
mov esi, edx
shr edx, 0x10
mov word [eax + 7], si
mov byte [eax + 9], dl
mov edx, dword [ecx + 0x12]
mov edi, dword [eax + 0xa]
and edx, 0xffffff
and edi, 0xffffff
mov ebx, edx
mov esi, edx
xor ebx, edi
and esi, edi
and ebx, 0xfefefe
lea esi, [ebx + esi*2]
shr esi, 8
and esi, 0x10101
add esi, 0x7f7f7f
xor esi, 0x7f7f7f
sub edx, esi
add edx, edi
or edx, esi
mov esi, edx
shr edx, 0x10
mov word [eax + 0xa], si
mov byte [eax + 0xc], dl
mov edx, dword [ecx + 0x15]
mov edi, dword [eax + 0xd]
and edx, 0xffffff
and edi, 0xffffff
mov ebx, edx
mov esi, edx
xor ebx, edi
and esi, edi
and ebx, 0xfefefe
lea esi, [ebx + esi*2]
shr esi, 8
and esi, 0x10101
add esi, 0x7f7f7f
xor esi, 0x7f7f7f
sub edx, esi
add edx, edi
add ebp, 0x18
or edx, esi
add eax, 0x18
mov esi, edx
add ecx, 0x18
shr edx, 0x10
mov byte [eax - 9], dl
mov edx, dword [esp + 0x10]
mov word [eax - 0xb], si
dec edx
mov dword [esp + 0x10], edx
jne 0x4f9c97
mov esi, dword [esp + 0x18]
test esi, esi
jle 0x4f9f71
mov eax, ecx
mov edi, ebp
sub eax, ebp
mov dword [esp + 0x10], esi
mov dword [esp + 0x24], eax
jmp 0x4f9f19
mov eax, dword [esp + 0x24]
mov eax, dword [eax + edi]
mov esi, dword [edi]
and eax, 0xffffff
and esi, 0xffffff
mov ebx, eax
mov edx, eax
xor ebx, esi
and edx, esi
and ebx, 0xfefefe
add edi, 3
lea edx, [ebx + edx*2]
shr edx, 8
and edx, 0x10101
add edx, 0x7f7f7f
xor edx, 0x7f7f7f
sub eax, edx
add eax, esi
or eax, edx
mov word [edi - 3], ax
shr eax, 0x10
mov byte [edi - 1], al
mov eax, dword [esp + 0x10]
dec eax
mov dword [esp + 0x10], eax
jne 0x4f9f15
mov esi, dword [esp + 0x18]
mov edi, dword [esp + 0x1c]
mov edx, dword [esp + 0x28]
mov eax, dword [esp + 0x14]
add ebp, edi
add ecx, edx
dec eax
mov dword [esp + 0x14], eax
jne 0x4f9c84
pop edi
pop esi
pop ebp
xor eax, eax
pop ebx
add esp, 0x90
ret
mov eax, dword [esp + 0x8c]
mov esi, dword [esp + 0x80]
mov dword [esp + 0x40], esi
mov esi, dword [esp + 0x84]
lea eax, [eax + eax*2]
mov dword [esp + 0x38], esi
mov esi, dword [esp + 0x94]
mov dword [esp + 0x30], eax
mov eax, dword [esp + 0x1c]
mov dword [esp + 0x28], esi
imul eax, dword [esp + 0x9c]
mov esi, dword [esp + 0x88]
mov dword [esp + 0x3c], eax
mov dword [esp + 0x48], esi
mov esi, dword [esp + 0x98]
mov dword [esp + 0x2c], esi
mov esi, dword [esp + 0x90]
test edi, edi
mov dword [esp + 0x14], esi
jle 0x4fa0d8
mov dword [esp + 0x20], edi
mov esi, dword [esp + 0x14]
mov edi, dword [esp + 0x28]
add esi, edi
mov dword [esp + 0x14], esi
js 0x4fa025
mov ebx, dword [esp + 0x1c]
mov edi, dword [esp + 0x2c]
add ecx, ebx
sub esi, edi
mov dword [esp + 0x14], esi
mov esi, dword [esp + 0x40]
mov dword [esp + 0x44], ecx
test edx, edx
mov dword [esp + 0x18], esi
jle 0x4fa0bd
mov edi, ebp
mov dword [esp + 0x24], edx
mov eax, dword [esp + 0x18]
mov edx, dword [esp + 0x38]
add eax, edx
mov dword [esp + 0x18], eax
js 0x4fa05c
mov edx, dword [esp + 0x48]
add ecx, 3
sub eax, edx
mov dword [esp + 0x18], eax
mov eax, dword [ecx]
mov esi, dword [edi]
and eax, 0xffffff
and esi, 0xffffff
mov ebx, eax
mov edx, eax
xor ebx, esi
and edx, esi
and ebx, 0xfefefe
add edi, 3
lea edx, [ebx + edx*2]
shr edx, 8
and edx, 0x10101
add edx, 0x7f7f7f
xor edx, 0x7f7f7f
sub eax, edx
add eax, esi
mov esi, dword [esp + 0x30]
or eax, edx
add ecx, esi
mov word [edi - 3], ax
shr eax, 0x10
mov byte [edi - 1], al
mov eax, dword [esp + 0x24]
dec eax
mov dword [esp + 0x24], eax
jne 0x4fa03f
mov edx, dword [esp + 0x34]
mov eax, dword [esp + 0x3c]
mov ecx, dword [esp + 0x44]
mov edi, dword [esp + 0x10]
mov esi, dword [esp + 0x20]
add ecx, eax
add ebp, edi
dec esi
mov dword [esp + 0x20], esi
jne 0x4fa005
pop edi
pop esi
pop ebp
xor eax, eax
pop ebx
add esp, 0x90
ret