Function at 0x449500
Capabilities:
Encode data using xor

Disassembly:
push ebp
mov ebp, esp
mov eax, 0x3654
call fcn.0042c670
push ebx
push esi
push edi
push 0x3600
lea eax, [ebp - 0x3650]
mov esi, ecx
push 0
push eax
call fcn.0040a910
lea ecx, [esi + 0x1a0]
mov dword [ebp - 0x6e], 0x5780190
add esp, 0xc
test ecx, ecx
je 0x44959c
xor ebx, ebx
mov dword [ebp - 4], ecx
cmp dword [esi + 4], 0xffffffff
mov edi, 4
je 0x44959c
nop dword [eax]
mov eax, dword [esi + 4]
push 0
push edi
push ecx
push eax
call dword [0x454334]
cmp eax, 1
jge 0x449583
call dword [0x454314]
cmp eax, 0x2733
jne 0x449591
push 0x14
call dword [0x454110]
inc ebx
cmp ebx, 0xa
je 0x449591
mov ecx, dword [ebp - 4]
jmp 0x44958d
mov ecx, dword [ebp - 4]
sub edi, eax
add ecx, eax
mov dword [ebp - 4], ecx
test edi, edi
jg 0x449550
test edi, edi
je 0x4495a5
mov ecx, esi
call fcn.00447870
xor eax, eax
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
ret
mov edx, dword [esi + 0x12c]
lea ebx, [esi + 0x1a0]
mov eax, edx
and eax, 0xf
movzx eax, byte [eax + esi + 0x164]
add al, byte [esi + 0x134]
xor byte [ebx], al
mov cl, byte [ebx]
movsx eax, cl
mov dword [esi + 0x134], eax
lea eax, [edx + 1]
mov dword [esi + 0x12c], eax
and eax, 0xf
mov dl, byte [eax + esi + 0x164]
add dl, cl
xor dl, byte [ebx + 1]
mov byte [ebx + 1], dl
inc dword [esi + 0x12c]
movsx eax, dl
mov dword [esi + 0x134], eax
mov eax, dword [esi + 0x12c]
and eax, 0xf
mov cl, byte [eax + esi + 0x164]
add cl, dl
xor cl, byte [ebx + 2]
mov byte [ebx + 2], cl
inc dword [esi + 0x12c]
movsx eax, cl
mov dword [esi + 0x134], eax
mov eax, dword [esi + 0x12c]
and eax, 0xf
mov al, byte [eax + esi + 0x164]
add al, cl
xor al, byte [ebx + 3]
mov byte [ebx + 3], al
inc dword [esi + 0x12c]
movsx eax, al
mov dword [esi + 0x134], eax
mov eax, dword [ebx]
and eax, 3
cmp al, 3
jne 0x449664
push 2
mov ecx, esi
call fcn.00447510
xor eax, eax
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
ret
mov ecx, dword [esi + 0x144]
test ecx, ecx
jne 0x449703
cmp dword [esi + 0x140], 0x2cb
jg 0x4496aa
lea eax, [esi + 0x140]
cmp ecx, 0xa
jne 0x449733
cmp dword [eax], 0x2cb
jg 0x4496aa
cmp ecx, 0xc
jne 0x449748
cmp dword [eax], 0x2cb
jle 0x449748
xor ebx, ebx
lea ecx, [ebp - 0x50]
cmp dword [esi + 4], 0xffffffff
mov edi, 0x48
mov dword [ebp - 4], ecx
je 0x44959c
mov eax, dword [esi + 4]
push 0
push edi
push ecx
push eax
call dword [0x454334]
cmp eax, 1
jge 0x44988e
call dword [0x454314]
cmp eax, 0x2733
jne 0x4498a0
push 0x14
call dword [0x454110]
inc ebx
cmp ebx, 0xa
je 0x4498a0
mov ecx, dword [ebp - 4]
jmp 0x449898
cmp ecx, 2
jne 0x449714
cmp dword [esi + 0x140], 0x2cb
jg 0x4496aa
cmp ecx, 3
jne 0x44967e
cmp dword [esi + 0x140], 0x2cb
lea eax, [esi + 0x140]
jg 0x4496aa
cmp ecx, 0xb
jne 0x449695
cmp dword [eax], 0x2cb
jg 0x4496aa
cmp dword [0x4850b0], 0
je 0x449762
call fcn.0043a830
mov dword [esi + 0x1dc], edx
mov dword [esi + 0x1d8], eax
push 0
mov ecx, esi
call fcn.00447510
test eax, eax
je 0x44959c
lea edi, [esi + 0x10]
mov dword [edi], 0
cmp dword [edi + 0xc], 0
jne 0x4497a2
push 0x454420
push 4
call fcn.00408b10
add esp, 8
test eax, eax
je 0x4498f3
mov dword [eax], 0
mov dword [edi + 0xc], eax
mov ebx, dword [edi]
mov eax, ebx
sub eax, dword [edi + 8]
add eax, 0x6c18
js 0x4497bf
add eax, 0x40
mov ecx, edi
push eax
call fcn.00445080
test eax, eax
je 0x449806
mov edx, dword [edi + 4]
lea eax, [ebp - 4]
mov ecx, dword [edi + 0xc]
add edx, 8
push eax
mov eax, dword [edi]
add eax, edx
mov dword [ebp - 4], 0
push eax
push 0x3600
lea eax, [ebp - 0x3650]
push eax
call fcn.0044d100
test eax, eax
je 0x449806
mov eax, dword [edi + 4]
mov ecx, dword [ebp - 4]
mov dword [ebx + eax], 0x3600
mov eax, dword [edi + 4]
mov dword [ebx + eax + 4], ecx
lea eax, [ecx + 8]
add dword [edi], eax
push edi
mov ecx, esi
call fcn.004470b0
test eax, eax
je 0x44959c
mov eax, dword [esi + 0x1a8]
test eax, eax
je 0x449833
push eax
call fcn.0041afc0
add esp, 4
mov dword [esi + 0x1ac], 0
push 0x80a
call fcn.0041afdb
add esp, 4
mov dword [esi + 0x1a8], eax
test eax, eax
je 0x44959c
cmp dword [0x4850c8], 0
mov dword [esi + 0x1ac], 0x800
mov dword [esi + 0x180], 1
je 0x44987b
push 0
push esi
call fcn.00445e10
test eax, eax
je 0x44959c
mov ecx, edi
call fcn.00445180
pop edi
pop esi
mov eax, 1
pop ebx
mov esp, ebp
pop ebp
ret
mov ecx, dword [ebp - 4]
sub edi, eax
add ecx, eax
mov dword [ebp - 4], ecx
test edi, edi
jg 0x4496c1
test edi, edi
jne 0x449595
mov edx, dword [esi + 0x12c]
xor ecx, ecx
mov eax, edx
inc edx
and eax, 0xf
movzx eax, byte [eax + esi + 0x164]
add al, byte [esi + 0x134]
xor byte [ebp + ecx - 0x50], al
movzx eax, byte [ebp + ecx - 0x50]
inc ecx
movsx eax, al
mov dword [esi + 0x134], eax
mov dword [esi + 0x12c], edx
cmp ecx, 0x48
jl 0x4498b0
mov ecx, dword [ebp - 0x4c]
mov eax, dword [ebp - 0x50]
mov dword [esi + 0x1dc], ecx
jmp 0x44975c
mov dword [edi + 0xc], 0
jmp 0x449806