Function at 0x451400
Capabilities:
Encode data using xor

Disassembly:
push ebp
mov ebp, esp
sub esp, 0x820
mov eax, dword [0x6e7024]
xor eax, ebp
mov dword [ebp - 4], eax
push ebx
mov ebx, dword [ebp + 8]
push edi
mov edi, dword [ebp + 0xc]
mov dword [ebp - 0x814], ebx
test edi, edi
jne 0x451464
push dword [0x648fa4]
lea eax, [ebp - 0x810]
push edi
push eax
mov dword [ebp - 0x810], 0x64a518
mov dword [ebp - 0x80c], 0x889
call fcn.00437d10
add esp, 0xc
mov eax, 0x80070057
pop edi
pop ebx
mov ecx, dword [ebp - 4]
xor ecx, ebp
call fcn.00630fec
mov esp, ebp
pop ebp
ret
push 0
push 0
push 0
call fcn.0042f690
movzx eax, ax
add esp, 0xc
mov dword [ebp - 0x808], eax
call dword [0x64737c]
mov ecx, edi
or eax, 1
mov dword [ebp - 0x820], eax
lea edx, [ecx + 2]
nop
mov ax, word [ecx]
add ecx, 2
test ax, ax
jne 0x451490
sub ecx, edx
sar ecx, 1
lea eax, [ecx*2 + 2]
mov dword [ebp - 0x81c], eax
cmp eax, 0x104
jle 0x4514f3
push dword [0x648fa4]
lea eax, [ebp - 0x810]
push 0
push eax
mov dword [ebp - 0x810], 0x64a518
mov dword [ebp - 0x80c], 0x896
call fcn.00437d10
add esp, 0xc
mov eax, 0x80070057
pop edi
pop ebx
mov ecx, dword [ebp - 4]
xor ecx, ebp
call fcn.00630fec
mov esp, ebp
pop ebp
ret
push esi
lea eax, [ebp - 0x808]
push eax
push 2
lea eax, [ebp - 0x820]
push eax
push ebx
call fcn.0044fcf0
mov esi, eax
add esp, 0x10
test esi, esi
jns 0x45154a
lea eax, [ebp - 0x810]
push esi
push eax
mov dword [ebp - 0x810], 0x64a518
mov dword [ebp - 0x80c], 0x89e
call fcn.0047c780
add esp, 8
mov eax, esi
pop esi
pop edi
pop ebx
mov ecx, dword [ebp - 4]
xor ecx, ebp
call fcn.00630fec
mov esp, ebp
pop ebp
ret
lea eax, [ebp - 0x808]
push eax
push 2
lea eax, [ebp - 0x81c]
push eax
push ebx
call fcn.0044fcf0
mov esi, eax
add esp, 0x10
test esi, esi
jns 0x4515a0
lea eax, [ebp - 0x810]
push esi
push eax
mov dword [ebp - 0x810], 0x64a518
mov dword [ebp - 0x80c], 0x8a6
call fcn.0047c780
add esp, 8
mov eax, esi
pop esi
pop edi
pop ebx
mov ecx, dword [ebp - 4]
xor ecx, ebp
call fcn.00630fec
mov esp, ebp
pop ebp
ret
lea eax, [ebp - 0x808]
push eax
push 4
lea eax, [ebp + 0x10]
push eax
push ebx
call fcn.0044fcf0
mov esi, eax
add esp, 0x10
test esi, esi
jns 0x4515f3
lea eax, [ebp - 0x810]
push esi
push eax
mov dword [ebp - 0x810], 0x64a518
mov dword [ebp - 0x80c], 0x8ae
call fcn.0047c780
add esp, 8
mov eax, esi
pop esi
pop edi
pop ebx
mov ecx, dword [ebp - 4]
xor ecx, ebp
call fcn.00630fec
mov esp, ebp
pop ebp
ret
mov eax, dword [ebp - 0x808]
mov byte [ebp - 0x808], ah
mov byte [ebp - 0x807], al
movzx eax, word [ebp - 0x808]
push 0
mov dword [ebp - 0x808], eax
push 2
lea eax, [ebp - 0x808]
push eax
push ebx
call fcn.0044fcf0
mov esi, eax
add esp, 0x10
test esi, esi
jns 0x451663
lea eax, [ebp - 0x810]
push esi
push eax
mov dword [ebp - 0x810], 0x64a518
mov dword [ebp - 0x80c], 0x8b7
call fcn.0047c780
add esp, 8
mov eax, esi
pop esi
pop edi
pop ebx
mov ecx, dword [ebp - 4]
xor ecx, ebp
call fcn.00630fec
mov esp, ebp
pop ebp
ret
push 0
push 0
push 0
call fcn.0042f690
mov ebx, dword [ebp - 0x81c]
movzx eax, ax
add esp, 0xc
mov dword [ebp - 0x808], eax
test ebx, ebx
je 0x4516f3
mov eax, 0x400
lea esp, [esp]
cmp ebx, 0x400
mov esi, ebx
cmova esi, eax
xor eax, eax
test esi, esi
je 0x4516b7
mov cl, byte [eax + edi]
xor cl, 0x73
movzx ecx, cl
mov word [ebp + eax*2 - 0x804], cx
inc eax
cmp eax, esi
jb 0x4516a1
lea eax, [ebp - 0x808]
push eax
push esi
lea eax, [ebp - 0x804]
push eax
push dword [ebp - 0x814]
call fcn.0044fcf0
add esp, 0x10
mov dword [ebp - 0x80c], eax
test eax, eax
js 0x451762
add edi, esi
mov eax, 0x400
sub ebx, esi
jne 0x451690
mov eax, dword [ebp - 0x808]
mov byte [ebp - 0x808], ah
mov byte [ebp - 0x807], al
movzx eax, word [ebp - 0x808]
push 0
mov dword [ebp - 0x808], eax
push 2
lea eax, [ebp - 0x808]
push eax
push dword [ebp - 0x814]
call fcn.0044fcf0
mov esi, eax
add esp, 0x10
test esi, esi
jns 0x45179d
lea eax, [ebp - 0x810]
push esi
push eax
mov dword [ebp - 0x810], 0x64a518
mov dword [ebp - 0x80c], 0x8e8
call fcn.0047c780
add esp, 8
mov eax, esi
pop esi
pop edi
pop ebx
mov ecx, dword [ebp - 4]
xor ecx, ebp
call fcn.00630fec
mov esp, ebp
pop ebp
ret
push eax
lea eax, [ebp - 0x818]
push eax
mov dword [ebp - 0x818], 0x64a518
mov dword [ebp - 0x814], 0x8d9
call fcn.0047c780
mov eax, dword [ebp - 0x80c]
add esp, 8
pop esi
pop edi
pop ebx
mov ecx, dword [ebp - 4]
xor ecx, ebp
call fcn.00630fec
mov esp, ebp
pop ebp
ret
mov ecx, dword [ebp - 4]
pop esi
pop edi
xor ecx, ebp
xor eax, eax
pop ebx
call fcn.00630fec
mov esp, ebp
pop ebp
ret