Function at 0x49c7c0
Capabilities:
Encode data using xor

Disassembly:
push ebp
push edi
push esi
push ebx
sub esp, 0x4c
mov ebp, dword [esp + 0x64]
mov edi, dword [esp + 0x60]
mov ebx, ebp
mov dword [esp + 0x18], edi
mov dword [esp + 0x1c], ebp
or ebx, edi
je 0x49c90e
mov ebp, eax
lea eax, [eax + 0xc8]
mov dword [esp + 0x2c], edx
mov dword [esp + 0x10], 0
mov dword [esp + 0x14], 0
mov dword [esp + 0x38], eax
mov esi, dword [esp + 0x10]
mov edi, dword [esp + 0x14]
mov edx, dword [ebp + 0x190]
mov ecx, dword [esp + 0x2c]
mov eax, dword [ebp + 0x188]
shrd esi, edi, 3
add ecx, esi
test edx, edx
mov dword [esp + 0x24], eax
mov dword [esp + 0x28], ecx
jne 0x49c850
mov ebx, dword [esp + 0x1c]
xor edi, edi
mov esi, eax
mov ecx, dword [esp + 0x18]
cmp ebx, 0
ja 0x49c920
cmp ecx, eax
jae 0x49c920
nop
lea esi, [esi]
mov eax, dword [esp + 0x18]
sub eax, dword [esp + 0x10]
mov ebx, dword [esp + 0x24]
lea esi, [edx + eax]
mov ecx, ebx
sub ecx, edx
cmp esi, ebx
cmova eax, ecx
shr edx, 3
add edx, dword [esp + 0x38]
mov ebx, eax
and ebx, 7
sub eax, ebx
mov edi, eax
shr eax, 3
mov dword [esp], edx
mov dword [esp + 8], eax
mov eax, dword [esp + 0x28]
mov dword [esp + 4], eax
call sub.msvcrt.dll_memcpy
mov esi, dword [ebp + 0x190]
xor edx, edx
add esi, edi
add dword [esp + 0x10], edi
adc dword [esp + 0x14], edx
cmp esi, dword [ebp + 0x188]
mov dword [ebp + 0x190], esi
je 0x49ca60
test ebx, ebx
je 0x49c8f6
mov edx, dword [esp + 0x14]
mov eax, dword [esp + 0x10]
mov ecx, ebx
mov edi, esi
add esi, ebx
shr edi, 3
shrd eax, edx, 3
mov edx, 1
shl edx, cl
mov ecx, dword [esp + 0x2c]
sub edx, 1
and dl, byte [ecx + eax]
mov eax, ebx
mov byte [ebp + edi + 0xc8], dl
xor edx, edx
add dword [esp + 0x10], eax
adc dword [esp + 0x14], edx
mov dword [ebp + 0x190], esi
mov ebx, dword [esp + 0x14]
mov edx, dword [esp + 0x1c]
mov ecx, dword [esp + 0x10]
cmp edx, ebx
mov eax, dword [esp + 0x18]
jae 0x49ca40
add esp, 0x4c
xor eax, eax
pop ebx
pop esi
pop edi
pop ebp
ret
sub ecx, esi
sbb ebx, edi
mov dword [esp + 0x30], ecx
mov ecx, dword [esp + 0x10]
mov eax, ebx
mov dword [esp + 0x34], ebx
mov ebx, dword [esp + 0x14]
cmp eax, ebx
jb 0x49c850
jbe 0x49cad0
mov eax, dword [esp + 0x18]
sub eax, dword [esp + 0x10]
mov edx, dword [esp + 0x1c]
sbb edx, dword [esp + 0x14]
mov dword [esp + 8], esi
mov dword [esp + 0xc], edi
mov dword [esp], eax
mov dword [esp + 4], edx
call fcn.00448270
cmp dword [esp + 0x24], 0x240
mov dword [esp + 0x30], eax
mov eax, edx
mov dword [esp + 0x3c], edx
je 0x49cb80
cmp dword [esp + 0x24], 0x340
je 0x49cae0
cmp dword [esp + 0x24], 0x400
je 0x49cbf1
cmp dword [esp + 0x24], 0x440
je 0x49cc40
cmp dword [esp + 0x24], 0x480
je 0x49cc80
cmp dword [esp + 0x24], 0x540
je 0x49cb30
or eax, dword [esp + 0x30]
je 0x49ca15
mov ebx, ebp
mov ecx, dword [esp + 0x24]
mov ebp, dword [esp + 0x28]
xor esi, esi
xor edi, edi
lea esi, [esi]
shr ecx, 6
mov edx, ebp
mov eax, ebx
call fcn.0048fb50
mov ecx, dword [ebx + 0x188]
add esi, 1
mov edx, dword [esp + 0x3c]
adc edi, 0
mov eax, ecx
xor edx, edi
shr eax, 3
add ebp, eax
mov eax, dword [esp + 0x30]
xor eax, esi
or edx, eax
jne 0x49c9e0
mov ebp, ebx
mov esi, ecx
xor edi, edi
mov ebx, dword [esp + 0x30]
mov ecx, dword [esp + 0x3c]
mov eax, ebx
imul eax, edi
imul ecx, esi
add ecx, eax
mov eax, ebx
mul esi
add edx, ecx
add dword [esp + 0x10], eax
adc dword [esp + 0x14], edx
jmp 0x49c8f6
ja 0x49c801
cmp eax, ecx
ja 0x49c801
add esp, 0x4c
xor eax, eax
pop ebx
pop esi
pop edi
pop ebp
ret
cmp esi, 0x240
je 0x49cb70
cmp esi, 0x340
je 0x49cbc1
cmp esi, 0x400
je 0x49cbd1
cmp esi, 0x440
je 0x49cb21
cmp esi, 0x480
je 0x49cc30
cmp esi, 0x540
je 0x49cbe1
mov edx, dword [esp + 0x38]
mov ecx, esi
mov eax, ebp
shr ecx, 6
call fcn.0048fb50
mov dword [ebp + 0x190], 0
xor esi, esi
jmp 0x49c8b3
cmp dword [esp + 0x30], ecx
jb 0x49c850
jmp 0x49c944
or eax, dword [esp + 0x30]
je 0x49ccd2
mov ebx, dword [esp + 0x28]
xor esi, esi
xor edi, edi
mov edx, ebx
mov eax, ebp
call fcn.00492dc0
mov edx, dword [esp + 0x3c]
mov eax, dword [esp + 0x30]
add esi, 1
adc edi, 0
add ebx, 0x68
xor edx, edi
xor eax, esi
or edx, eax
jne 0x49caf2
mov esi, dword [ebp + 0x188]
xor edi, edi
jmp 0x49ca15
mov edx, dword [esp + 0x38]
mov eax, ebp
call fcn.004963b0
jmp 0x49cab8
or eax, dword [esp + 0x30]
je 0x49ccea
mov ebx, dword [esp + 0x28]
xor esi, esi
xor edi, edi
mov edx, ebx
mov eax, ebp
call fcn.00499d10
mov edx, dword [esp + 0x3c]
mov eax, dword [esp + 0x30]
add esi, 1
adc edi, 0
add ebx, 0xa8
xor edx, edi
xor eax, esi
or edx, eax
jne 0x49cb42
jmp 0x49cb14
mov edx, dword [esp + 0x38]
mov eax, ebp
call fcn.004914c0
jmp 0x49cab8
or eax, dword [esp + 0x30]
je 0x49ccc6
mov ebx, dword [esp + 0x28]
xor esi, esi
xor edi, edi
mov edx, ebx
mov eax, ebp
call fcn.004914c0
mov edx, dword [esp + 0x3c]
mov eax, dword [esp + 0x30]
add esi, 1
adc edi, 0
add ebx, 0x48
xor edx, edi
xor eax, esi
or edx, eax
jne 0x49cb92
mov esi, dword [ebp + 0x188]
xor edi, edi
jmp 0x49ca15
mov edx, dword [esp + 0x38]
mov eax, ebp
call fcn.00492dc0
jmp 0x49cab8
mov edx, dword [esp + 0x38]
mov eax, ebp
call fcn.00494840
jmp 0x49cab8
mov edx, dword [esp + 0x38]
mov eax, ebp
call fcn.00499d10
jmp 0x49cab8
or eax, dword [esp + 0x30]
je 0x49ccde
mov ebx, dword [esp + 0x28]
xor esi, esi
xor edi, edi
mov edx, ebx
mov eax, ebp
call fcn.00494840
mov edx, dword [esp + 0x3c]
mov eax, dword [esp + 0x30]
add esi, 1
adc edi, 0
sub ebx, 0xffffff80
xor edx, edi
xor eax, esi
or edx, eax
jne 0x49cc03
jmp 0x49cb14
mov edx, dword [esp + 0x38]
mov eax, ebp
call fcn.00497fd0
jmp 0x49cab8
or eax, dword [esp + 0x30]
je 0x49ccf6
mov ebx, dword [esp + 0x28]
xor esi, esi
xor edi, edi
mov edx, ebx
mov eax, ebp
call fcn.004963b0
mov edx, dword [esp + 0x3c]
mov eax, dword [esp + 0x30]
add esi, 1
adc edi, 0
add ebx, 0x88
xor edx, edi
xor eax, esi
or edx, eax
jne 0x49cc52
jmp 0x49cb14
or eax, dword [esp + 0x30]
je 0x49ccba
mov ebx, dword [esp + 0x28]
xor esi, esi
xor edi, edi
nop
mov edx, ebx
mov eax, ebp
call fcn.00497fd0
mov edx, dword [esp + 0x3c]
mov eax, dword [esp + 0x30]
add esi, 1
adc edi, 0
add ebx, 0x90
xor edx, edi
xor eax, esi
or edx, eax
jne 0x49cc90
jmp 0x49cb14
mov esi, 0x480
xor edi, edi
jmp 0x49ca15
mov esi, 0x240
xor edi, edi
jmp 0x49ca15
mov esi, 0x340
xor edi, edi
jmp 0x49ca15
mov esi, 0x400
xor edi, edi
jmp 0x49ca15
mov esi, 0x540
xor edi, edi
jmp 0x49ca15
mov esi, 0x440
xor edi, edi
jmp 0x49ca15