Function at 0x414a50
Capabilities:
Encode data using xor

Disassembly:
push ebp
mov ebp, esp
sub esp, 0x234
mov eax, dword [0x4ae084]
xor eax, ebp
mov dword [ebp - 4], eax
push ebx
push esi
mov esi, ecx
push edi
lea edi, [esi + 0xa3eb8]
mov dword [ebp - 0x224], esi
mov byte [ebp - 0x21d], 0
xor ebx, ebx
call fcn.0044e810
push eax
call dword [0x489118]
mov eax, esi
call fcn.004197e0
push ebx
push 0x80
push 3
push ebx
push 1
push 0x80000000
push str.system.dat
call dword [0x48908c]
mov edi, eax
cmp edi, 0xffffffff
je 0x414ed1
push ebx
push edi
call dword [0x489088]
mov esi, eax
cmp esi, 0x24c
jae 0x414b0f
mov esi, dword [ebp - 0x224]
mov eax, dword [esi + 0x21c]
mov edx, dword [eax + 0x14]
lea ecx, [esi + 0x21c]
call edx
push 0x10010
push 0x49d880
push 0x49c484
test eax, eax
je 0x414eb5
mov eax, dword [esi + 0x21c]
mov edx, dword [eax + 0xb8]
lea ecx, [esi + 0x21c]
call edx
jmp 0x414ebd
push esi
call fcn.004543c0
add esp, 4
push 0
mov ebx, eax
lea eax, [ebp - 0x230]
push eax
push esi
push ebx
push edi
call dword [0x48911c]
test eax, eax
jne 0x414b77
mov esi, dword [ebp - 0x224]
mov edx, dword [esi + 0x21c]
mov eax, dword [edx + 0x14]
lea ecx, [esi + 0x21c]
call eax
push 0x10010
push 0x49d880
push 0x49c49c
test eax, eax
je 0x414eb5
mov edx, dword [esi + 0x21c]
mov eax, dword [edx + 0xb8]
lea ecx, [esi + 0x21c]
call eax
jmp 0x414ebd
push edi
call dword [0x4890c0]
mov eax, dword [esi + ebx - 4]
push eax
call fcn.00464180
add esi, 0xfffffffc
add esp, 4
mov dword [ebp - 0x21c], esi
test ebx, ebx
je 0x414bd0
call fcn.0044fd30
mov edx, esi
mov eax, esi
shr eax, 1
mov ecx, ebx
je 0x414bc1
mov esi, eax
lea esp, [esp]
call fcn.0044fd10
movzx eax, ax
xor word [ecx], ax
add ecx, 2
dec esi
jne 0x414bb0
test dl, 1
je 0x414bd0
call fcn.0044fd10
movzx eax, ax
xor byte [ecx], al
mov eax, dword [ebx]
mov ecx, dword [eax + ebx]
add ecx, eax
mov dword [ebp - 0x228], eax
cmp ecx, dword [ebp - 0x21c]
je 0x414c34
mov esi, dword [ebp - 0x224]
mov edx, dword [esi + 0x21c]
mov eax, dword [edx + 0x14]
lea ecx, [esi + 0x21c]
call eax
push 0x10010
push 0x49d880
push 0x49c4c0
test eax, eax
jne 0x414c1b
push eax
call dword [0x48935c]
jmp 0x414ec4
mov edx, dword [esi + 0x21c]
mov eax, dword [edx + 0xb8]
lea ecx, [esi + 0x21c]
call eax
jmp 0x414ec4
sub esp, 0x18
mov edx, esp
mov dword [ebp - 0x21c], esp
lea ecx, [ebx + 0x15c]
push edx
call fcn.0044e240
mov esi, dword [ebp - 0x224]
lea eax, [esi + 0xa3f00]
push eax
call fcn.0044eaf0
test al, al
je 0x414e72
sub esp, 0x18
mov edx, esp
mov dword [ebp - 0x21c], esp
lea ecx, [ebx + 0x19c]
push edx
call fcn.0044e240
lea eax, [esi + 0xa3f18]
push eax
call fcn.0044eaf0
test al, al
je 0x414e72
cmp dword [ebx], 0x24c
jb 0x414e64
lea edi, [esi + 0xa3f48]
mov ecx, 0x93
mov esi, ebx
rep movsd dword es:[edi], dword [esi]
mov ecx, dword [ebp - 0x228]
mov edi, dword [ebp - 0x224]
lea edx, [ecx + ebx + 4]
xor esi, esi
add edi, 0x36840
mov dword [ebp - 0x21c], edx
mov eax, dword [ebp - 0x21c]
movzx ecx, byte [eax + esi]
sub esp, 0xc
mov eax, esp
mov dword [ebp - 0x22c], esp
push ecx
call fcn.0044fa00
call fcn.0044fa20
inc esi
add edi, 0xc
cmp esi, 0x1f40
jl 0x414cc9
mov edi, dword [ebp - 0x224]
xor esi, esi
add edi, 0x4df40
mov edx, dword [ebp - 0x228]
lea eax, [edx + ebx + 0x1f44]
movzx ecx, byte [eax + esi]
sub esp, 0xc
mov eax, esp
mov dword [ebp - 0x22c], esp
push ecx
call fcn.0044fa00
call fcn.0044fa20
inc esi
add edi, 0xc
cmp esi, 0xc8
jl 0x414d03
mov edi, dword [ebp - 0x224]
mov edx, dword [ebp - 0x228]
add edi, 0x4e918
lea esi, [edx + ebx + 0x2016]
mov dword [ebp - 0x21c], 0x1388
lea esp, [esp]
movzx ecx, word [esi]
sub esp, 0xc
mov eax, esp
mov dword [ebp - 0x22c], esp
push ecx
call fcn.0044fa00
call fcn.0044fa20
add esi, 2
add edi, 0xc
dec dword [ebp - 0x21c]
jne 0x414d60
mov edi, dword [ebp - 0x224]
mov edx, dword [ebp - 0x228]
add edi, 0x5d378
lea esi, [edx + ebx + 0x4728]
mov dword [ebp - 0x21c], 0x28
lea ebx, [ebx]
mov ecx, dword [esi]
sub esp, 0xc
mov eax, esp
mov dword [ebp - 0x22c], esp
push ecx
call fcn.0044fa00
call fcn.0044fa20
add esi, 4
add edi, 0xc
dec dword [ebp - 0x21c]
jne 0x414db0
mov edx, dword [ebp - 0x228]
xor edi, edi
lea esi, [edx + ebx + 0x47c8]
mov eax, dword [ebp - 0x224]
mov ecx, dword [esi]
push eax
mov edx, edi
call fcn.0041d540
inc edi
add esi, 4
cmp edi, 0x14
jl 0x414de5
push ebx
call fcn.0045510c
add esp, 4
mov byte [ebp - 0x21d], 1
call fcn.00464180
mov edi, dword [ebp - 0x224]
add edi, 0xa3eb8
call fcn.0044e810
mov esi, eax
push str.system.dat
mov ecx, esi
lea edi, [ebp - 0x110]
call fcn.0044fd50
add esp, 4
push str.system.da_
mov ecx, esi
lea edi, [ebp - 0x218]
call fcn.0044fd50
add esp, 4
push 0
mov ecx, edi
push ecx
lea edx, [ebp - 0x110]
push edx
call dword [0x4890d4]
jmp 0x414ed1
mov edi, str.SystemData
mov eax, esi
call fcn.004388d0
jmp 0x414ec4
mov eax, dword [esi + 0x21c]
mov edx, dword [eax + 0x14]
lea ecx, [esi + 0x21c]
call edx
push 0x10010
push 0x49d880
push 0x49c4dc
test eax, eax
jne 0x414e9f
push eax
call dword [0x48935c]
jmp 0x414ec4
mov eax, dword [esi + 0x21c]
mov edx, dword [eax + 0xb8]
lea ecx, [esi + 0x21c]
call edx
jmp 0x414ec4
push 0
call dword [0x48935c]
push edi
call dword [0x4890c0]
test ebx, ebx
je 0x414ed1
push ebx
call fcn.0045510c
add esp, 4
mov edi, dword [ebp - 0x224]
add edi, 0xa3ea0
call fcn.0044e810
push eax
call dword [0x489118]
mov ecx, dword [ebp - 4]
mov al, byte [ebp - 0x21d]
pop edi
pop esi
xor ecx, ebp
pop ebx
call fcn.004543d6
mov esp, ebp
pop ebp
ret