Function at 0x49f6c0
Capabilities:
Encode data using xor

Disassembly:
push ebp
mov ebp, esp
sub esp, 0x18
mov eax, dword [ebp + 0x10]
push ebx
mov bh, byte [eax + 0x3030]
push esi
push edi
mov edi, dword [eax + 0x10]
mov esi, ecx
mov ecx, dword [ebp + 8]
push 0
test edi, edi
lea eax, [esi + 0x10]
push 4
setne bl
push eax
mov byte [ebp - 1], bh
mov byte [ebp - 2], bl
call fcn.0049d280
test bh, bh
je 0x49f71e
mov ecx, dword [esi + 0x10]
mov edx, ecx
mov eax, ecx
shl edx, 0x10
and eax, 0xff00
add edx, eax
movzx eax, byte [esi + 0x13]
shr ecx, 8
shl edx, 8
and ecx, 0xff00
add edx, ecx
add edx, eax
mov dword [esi + 0x10], edx
mov eax, dword [esi + 0x10]
test eax, eax
setne byte [ebp - 4]
test eax, eax
je 0x49f743
test bl, bl
je 0x49f73f
cmp eax, edi
je 0x49f73f
pop edi
pop esi
or eax, 0xffffffff
pop ebx
mov esp, ebp
pop ebp
ret 0xc
test eax, eax
jne 0x49f750
test bl, bl
je 0x49f74c
mov dword [esi + 0x10], edi
jmp 0x49f75b
test eax, eax
je 0x49f75b
test bl, bl
jne 0x49f75b
mov dword [esi + 0x10], 0
mov edi, dword [ebp + 8]
push 0
push 1
lea eax, [ebp - 3]
push eax
mov ecx, edi
call fcn.0049d280
mov al, byte [ebp - 3]
cmp al, 0x59
jne 0x49f77a
mov byte [esi + 0x20], 1
jmp 0x49f782
cmp al, 0x4e
jne 0x49f782
mov byte [esi + 0x20], 0
push 0
push 4
push esi
mov ecx, edi
call fcn.0049d280
test bh, bh
je 0x49f7b8
mov ecx, dword [esi]
mov edx, ecx
mov eax, ecx
shl edx, 0x10
and eax, 0xff00
add edx, eax
movzx eax, byte [esi + 3]
shr ecx, 8
shl edx, 8
and ecx, 0xff00
add edx, ecx
add edx, eax
mov dword [esi], edx
push 0
lea eax, [esi + 4]
push 4
push eax
mov ecx, edi
call fcn.0049d280
test bh, bh
je 0x49f7f3
mov ecx, dword [esi + 4]
mov edx, ecx
mov eax, ecx
shl edx, 0x10
and eax, 0xff00
add edx, eax
movzx eax, byte [esi + 7]
shr ecx, 8
shl edx, 8
and ecx, 0xff00
add edx, ecx
add edx, eax
mov dword [esi + 4], edx
push 0
lea eax, [esi + 8]
push 4
push eax
mov ecx, edi
call fcn.0049d280
test bh, bh
je 0x49f82e
mov ecx, dword [esi + 8]
mov edx, ecx
mov eax, ecx
shl edx, 0x10
and eax, 0xff00
add edx, eax
movzx eax, byte [esi + 0xb]
shr ecx, 8
shl edx, 8
and ecx, 0xff00
add edx, ecx
add edx, eax
mov dword [esi + 8], edx
mov eax, dword [esi + 8]
xor ecx, ecx
mov edx, 4
mul edx
seto cl
neg ecx
or ecx, eax
push ecx
call fcn.004a262c
add esp, 4
cmp byte [esi + 0x20], 0
mov dword [ebp - 0xc], eax
je 0x49f890
mov ecx, dword [ebp + 8]
push 0
push 4
lea edi, [esi + 0x14]
push edi
call fcn.0049d280
test bh, bh
je 0x49f88d
mov ecx, dword [edi]
mov edx, ecx
mov eax, ecx
shl edx, 0x10
and eax, 0xff00
add edx, eax
movzx eax, byte [esi + 0x17]
shr ecx, 8
shl edx, 8
and ecx, 0xff00
add edx, ecx
add edx, eax
mov dword [edi], edx
mov edi, dword [ebp + 8]
push 0
push 4
lea ebx, [esi + 0x18]
push ebx
mov ecx, edi
call fcn.0049d280
cmp byte [ebp - 1], 0
je 0x49f8cb
mov ecx, dword [ebx]
mov edx, ecx
mov eax, ecx
shl edx, 0x10
and eax, 0xff00
add edx, eax
movzx eax, byte [esi + 0x1b]
shr ecx, 8
shl edx, 8
and ecx, 0xff00
add edx, ecx
add edx, eax
mov dword [ebx], edx
cmp byte [esi + 0x20], 0
je 0x49f92c
mov eax, dword [esi]
xor ecx, ecx
mov edx, 4
mul edx
seto cl
neg ecx
or ecx, eax
push ecx
call fcn.004a262c
mov ecx, dword [esi]
add esp, 4
shl ecx, 2
push 0
push ecx
push eax
mov ecx, edi
mov dword [esi + 0x24], eax
call fcn.0049d280
mov eax, dword [esi]
xor ecx, ecx
mov edx, 2
mul edx
seto cl
neg ecx
or ecx, eax
push ecx
call fcn.004a262c
mov ecx, dword [esi]
add esp, 4
add ecx, ecx
push 0
push ecx
push eax
mov ecx, edi
mov dword [esi + 0x28], eax
call fcn.0049d280
mov eax, dword [esi]
xor ecx, ecx
mov edx, 4
mul edx
seto cl
neg ecx
or ecx, eax
push ecx
call fcn.004a262c
mov ecx, dword [esi]
add esp, 4
shl ecx, 2
push 0
push ecx
push eax
mov ecx, edi
mov dword [esi + 0x2c], eax
call fcn.0049d280
mov eax, dword [esi]
xor ecx, ecx
mov edx, 2
mul edx
seto cl
neg ecx
or ecx, eax
push ecx
call fcn.004a262c
mov ecx, dword [esi]
add esp, 4
add ecx, ecx
push 0
push ecx
push eax
mov ecx, edi
mov dword [esi + 0x30], eax
call fcn.0049d280
cmp byte [ebp - 1], 0
je 0x49fa3f
xor ebx, ebx
cmp dword [esi], ebx
jbe 0x49fa3c
jmp 0x49f9a0
cmp byte [esi + 0x20], 0
je 0x49f9eb
mov eax, dword [esi + 0x24]
mov edx, dword [eax + ebx*4]
lea edi, [eax + ebx*4]
mov ecx, edx
shl ecx, 0x10
mov eax, edx
and eax, 0xff00
add ecx, eax
movzx eax, byte [edi + 3]
shl ecx, 8
add ecx, eax
shr edx, 8
and edx, 0xff00
add ecx, edx
mov dword [edi], ecx
mov eax, dword [esi + 0x28]
movzx ecx, byte [eax + ebx*2 + 1]
lea edx, [eax + ebx*2]
mov ax, word [edx]
shl ax, 8
xor cx, ax
mov word [edx], cx
mov eax, dword [esi + 0x2c]
mov edx, dword [eax + ebx*4]
lea edi, [eax + ebx*4]
mov ecx, edx
shl ecx, 0x10
mov eax, edx
and eax, 0xff00
add ecx, eax
movzx eax, byte [edi + 3]
shl ecx, 8
add ecx, eax
shr edx, 8
and edx, 0xff00
add ecx, edx
mov dword [edi], ecx
mov eax, dword [esi + 0x30]
movzx ecx, byte [eax + ebx*2 + 1]
lea edx, [eax + ebx*2]
inc ebx
mov ax, word [edx]
shl ax, 8
xor cx, ax
mov word [edx], cx
cmp ebx, dword [esi]
jb 0x49f9a0
mov edi, dword [ebp + 8]
lea ebx, [esi + 0x18]
cmp byte [esi + 0x20], 0
je 0x49fa60
push dword [esi + 0x14]
call fcn.004a262c
add esp, 4
mov ecx, edi
push 0
push dword [esi + 0x14]
mov dword [esi + 0x3c], eax
push eax
call fcn.0049d280
push dword [ebx]
call fcn.004a262c
add esp, 4
mov ecx, edi
push 0
push dword [ebx]
mov dword [esi + 0x40], eax
push eax
call fcn.0049d280
cmp byte [ebp - 1], 0
je 0x49fab0
mov edi, dword [esi + 0x40]
xor edx, edx
test dword [ebx], 0xfffffffe
jbe 0x49faad
lea esp, [esp]
mov ax, word [edi + edx*2]
movzx ecx, byte [edi + edx*2 + 1]
shl ax, 8
xor cx, ax
mov word [edi + edx*2], cx
mov eax, dword [ebx]
inc edx
shr eax, 1
cmp edx, eax
jb 0x49fa90
mov edi, dword [ebp + 8]
cmp byte [esi + 0x20], 0
lea ebx, [esi + 8]
je 0x49fb63
mov eax, dword [ebx]
xor ecx, ecx
mov edx, 2
mul edx
seto cl
neg ecx
or ecx, eax
push ecx
call fcn.004a262c
mov ecx, dword [ebx]
add esp, 4
add ecx, ecx
push 0
push ecx
push eax
mov ecx, edi
mov dword [esi + 0x54], eax
call fcn.0049d280
mov eax, dword [ebx]
push 0
shl eax, 2
push eax
push dword [ebp - 0xc]
mov ecx, edi
call fcn.0049d280
cmp byte [ebp - 1], 0
je 0x49fb63
xor edi, edi
cmp dword [ebx], edi
jbe 0x49fb63
jmp 0x49fb10
mov eax, dword [esi + 0x54]
movzx ecx, byte [eax + edi*2 + 1]
lea edx, [eax + edi*2]
inc edi
mov ax, word [edx]
shl ax, 8
xor cx, ax
mov eax, dword [ebp - 0xc]
mov word [edx], cx
mov edx, dword [eax + edi*4 - 4]
mov ecx, edx
shl ecx, 0x10
mov eax, edx
and eax, 0xff00
add ecx, eax
mov eax, dword [ebp - 0xc]
shl ecx, 8
movzx eax, byte [eax + edi*4 - 1]
shr edx, 8
add ecx, eax
mov eax, dword [ebp - 0xc]
and edx, 0xff00
add ecx, edx
mov dword [eax + edi*4 - 4], ecx
cmp edi, dword [ebx]
jb 0x49fb10
jmp 0x49fb66
mov eax, dword [ebp - 0xc]
cmp byte [esi + 0x20], 0
je 0x49fd61
xor ecx, ecx
mov dword [ebp - 8], ecx
cmp dword [ebx], ecx
jbe 0x49fd61
mov edx, eax
mov dword [ebp - 0x14], eax
mov eax, dword [esi + 0x54]
movzx eax, word [eax + ecx*2]
mov ecx, dword [ebp + 0x10]
lea eax, [eax + eax*2]
mov ebx, dword [ecx + eax*4 + 0x3c]
mov edi, dword [ecx + eax*4 + 0x40]
mov eax, dword [edx]
xor ecx, ecx
add eax, ebx
mov edx, 4
mul edx
seto cl
mov dword [ebp - 0x18], ebx
neg ecx
or ecx, eax
push ecx
call fcn.004a262c
mov ecx, dword [esi + 0x54]
mov edx, dword [ebp - 8]
add esp, 4
cmp byte [ebp - 2], 0
movzx ecx, word [ecx + edx*2]
mov edx, dword [ebp + 0x10]
lea ecx, [ecx + ecx*2]
mov dword [edx + ecx*4 + 0x40], eax
je 0x49fc01
xor edx, edx
test ebx, ebx
je 0x49fbf8
mov eax, dword [esi + 0x54]
mov ecx, dword [ebp - 8]
inc edx
movzx eax, word [eax + ecx*2]
mov ecx, dword [ebp + 0x10]
lea eax, [eax + eax*2]
mov ecx, dword [ecx + eax*4 + 0x40]
mov eax, dword [edi + edx*4 - 4]
mov dword [ecx + edx*4 - 4], eax
cmp edx, ebx
jb 0x49fbd7
push edi
call fcn.004a549d
add esp, 4
mov eax, dword [esi + 0x54]
mov ecx, dword [ebp - 8]
mov edx, dword [ebp - 0x14]
movzx eax, word [eax + ecx*2]
mov ecx, dword [ebp + 0x10]
lea eax, [eax + eax*2]
xor ebx, ebx
lea ecx, [ecx + eax*4]
mov eax, dword [edx]
add dword [ecx + 0x3c], eax
cmp dword [edx], ebx
jbe 0x49fd4b
mov edi, dword [ebp - 0x18]
shl edi, 2
lea esp, [esp]
mov ecx, dword [ebp + 8]
push 0
push 4
lea eax, [ebp - 0x10]
push eax
call fcn.0049d280
cmp byte [ebp - 1], 0
je 0x49fc70
mov ecx, dword [ebp - 0x10]
mov edx, ecx
shl edx, 0x10
mov eax, ecx
and eax, 0xff00
add edx, eax
mov eax, ecx
shr eax, 8
shl edx, 8
and eax, 0xff00
add edx, eax
shr ecx, 0x18
add edx, ecx
mov dword [ebp - 0x10], edx
jmp 0x49fc73
mov edx, dword [ebp - 0x10]
cmp byte [ebp - 4], 0
je 0x49fc89
cmp byte [ebp - 2], 0
je 0x49fc8f
mov ecx, dword [esi + 0x10]
add ecx, edx
jmp 0x49fd25
cmp byte [ebp - 2], 0
jne 0x49fcab
mov eax, dword [esi + 0x54]
mov ecx, dword [ebp - 8]
movzx eax, word [eax + ecx*2]
mov ecx, dword [ebp + 0x10]
lea eax, [eax + eax*2]
mov eax, dword [ecx + eax*4 + 0x40]
mov dword [edi + eax], edx
jmp 0x49fd3c
mov eax, dword [esi + 0x30]
mov ecx, dword [ebp - 8]
movzx eax, word [eax + edx*2]
push eax
mov eax, dword [esi + 0x2c]
mov eax, dword [eax + edx*4]
add eax, dword [esi + 0x40]
push eax
mov eax, dword [esi + 0x28]
movzx eax, word [eax + edx*2]
push eax
mov eax, dword [esi + 0x24]
mov eax, dword [eax + edx*4]
add eax, dword [esi + 0x3c]
push eax
mov eax, dword [esi + 0x54]
movzx eax, word [eax + ecx*2]
mov ecx, dword [ebp + 0x10]
lea eax, [eax + eax*2]
push dword [ecx + eax*4 + 0x40]
push dword [ebp - 0x18]
push edx
call fcn.004a0640
test al, al
je 0x49fd1f
mov ecx, dword [esi + 0x28]
mov eax, dword [ebp - 0x10]
xor edx, edx
mov word [ecx + eax*2], dx
mov ecx, dword [esi + 0x30]
mov eax, dword [ebp - 0x10]
mov word [ecx + eax*2], dx
mov eax, dword [esi + 0x54]
mov ecx, dword [ebp - 8]
movzx eax, word [eax + ecx*2]
mov ecx, dword [ebp + 0x10]
lea eax, [eax + eax*2]
dec dword [ecx + eax*4 + 0x3c]
dec dword [esi + 4]
jmp 0x49fd3f
mov ecx, dword [esi + 0x10]
add ecx, dword [ebp - 0x10]
mov edx, dword [ebp - 8]
mov eax, dword [esi + 0x54]
movzx eax, word [eax + edx*2]
mov edx, dword [ebp + 0x10]
lea eax, [eax + eax*2]
mov eax, dword [edx + eax*4 + 0x40]
mov dword [edi + eax], ecx
add edi, 4
mov edx, dword [ebp - 0x14]
inc ebx
cmp ebx, dword [edx]
jb 0x49fc30
mov ecx, dword [ebp - 8]
inc ecx
add edx, 4
mov dword [ebp - 8], ecx
mov dword [ebp - 0x14], edx
cmp ecx, dword [esi + 8]
jb 0x49fb82
mov ecx, dword [ebp + 8]
push 0
push 4
lea ebx, [esi + 0xc]
push ebx
call fcn.0049d280
cmp byte [ebp - 1], 0
je 0x49fd9d
mov ecx, dword [ebx]
mov edx, ecx
mov eax, ecx
shl edx, 0x10
and eax, 0xff00
add edx, eax
movzx eax, byte [esi + 0xf]
shr ecx, 8
shl edx, 8
and ecx, 0xff00
add edx, ecx
add edx, eax
mov dword [ebx], edx
cmp dword [ebx], 0
je 0x49ff4d
mov ecx, dword [ebp + 8]
push 0
push 4
lea edi, [esi + 0x1c]
push edi
call fcn.0049d280
cmp byte [ebp - 1], 0
je 0x49fde2
mov ecx, dword [edi]
mov edx, ecx
mov eax, ecx
shl edx, 0x10
and eax, 0xff00
add edx, eax
movzx eax, byte [esi + 0x1f]
shr ecx, 8
shl edx, 8
and ecx, 0xff00
add edx, ecx
add edx, eax
mov dword [edi], edx
mov eax, dword [ebx]
xor ecx, ecx
mov edx, 4
mul edx
seto cl
neg ecx
or ecx, eax
push ecx
call fcn.004a262c
mov ecx, dword [ebx]
add esp, 4
shl ecx, 2
push 0
push ecx
mov ecx, dword [ebp + 8]
push eax
mov dword [esi + 0x58], eax
call fcn.0049d280
mov eax, dword [ebx]
xor ecx, ecx
mov edx, 4
mul edx
seto cl
neg ecx
or ecx, eax
push ecx
call fcn.004a262c
mov ecx, dword [ebx]
add esp, 4
shl ecx, 2
push 0
push ecx
mov ecx, dword [ebp + 8]
push eax
mov dword [esi + 0x34], eax
call fcn.0049d280
mov eax, dword [ebx]
xor ecx, ecx
mov edx, 2
mul edx
seto cl
neg ecx
or ecx, eax
push ecx
call fcn.004a262c
mov ecx, dword [ebx]
add esp, 4
add ecx, ecx
push 0
push ecx
mov ecx, dword [ebp + 8]
push eax
mov dword [esi + 0x38], eax
call fcn.0049d280
cmp byte [ebp - 1], 0
je 0x49fefe
xor ebx, ebx
cmp dword [esi + 0xc], ebx
jbe 0x49fefe
mov eax, dword [esi + 0x38]
movzx ecx, byte [eax + ebx*2 + 1]
lea edx, [eax + ebx*2]
mov ax, word [edx]
shl ax, 8
xor cx, ax
mov word [edx], cx
mov eax, dword [esi + 0x34]
mov edx, dword [eax + ebx*4]
lea edi, [eax + ebx*4]
mov ecx, edx
shl ecx, 0x10
mov eax, edx
and eax, 0xff00
add ecx, eax
movzx eax, byte [edi + 3]
shl ecx, 8
add ecx, eax
shr edx, 8
and edx, 0xff00
add ecx, edx
mov dword [edi], ecx
mov eax, dword [esi + 0x58]
mov edx, dword [eax + ebx*4]
lea edi, [eax + ebx*4]
mov ecx, edx
shl ecx, 0x10
mov eax, edx
and eax, 0xff00
add ecx, eax
movzx eax, byte [edi + 3]
shl ecx, 8
shr edx, 8
add ecx, eax
and edx, 0xff00
add ecx, edx
inc ebx
mov dword [edi], ecx
cmp ebx, dword [esi + 0xc]
jb 0x49fe83
lea edi, [esi + 0x1c]
push dword [edi]
call fcn.004a262c
mov ecx, dword [ebp + 8]
add esp, 4
mov dword [esi + 0x44], eax
push 0
push dword [edi]
push eax
call fcn.0049d280
cmp byte [ebp - 1], 0
je 0x49ff4d
mov esi, dword [esi + 0x44]
xor edx, edx
test dword [edi], 0xfffffffe
jbe 0x49ff4d
jmp 0x49ff30
mov ax, word [esi + edx*2]
movzx ecx, byte [esi + edx*2 + 1]
shl ax, 8
xor cx, ax
mov word [esi + edx*2], cx
mov eax, dword [edi]
inc edx
shr eax, 1
cmp edx, eax
jb 0x49ff30
push dword [ebp - 0xc]
call fcn.004a549d
add esp, 4
xor eax, eax
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
ret 0xc