Function at 0x10002975
Capabilities:
Encode data using xor

Disassembly:
push ebp
mov ebp, esp
add esp, 0xfffffff0
cmp dword [ebx + 0x45e08c], 0
jne 0x100029c6
push edi
and dword [esp], 0
xor dword [esp], ecx
and dword [ebp - 0x10], 0
push dword [ebp - 0x10]
xor dword [esp], edx
push dword [ebp - 0xc]
mov dword [esp], esp
call dword [ebx + 0x45e4c8]
mov dword [ebp - 0x10], edi
and edi, 0
xor edi, eax
and dword [ebx + 0x45e08c], 0
or dword [ebx + 0x45e08c], edi
mov edi, dword [ebp - 0x10]
pop dword [ebp - 0xc]
mov edx, dword [ebp - 0xc]
pop dword [ebp - 8]
mov ecx, dword [ebp - 8]
push ebp
xor dword [esp], ebp
mov dword [esp], edx
push ebp
xor dword [esp], ebp
or dword [esp], ecx
push 0
mov dword [esp], edx
xor edx, edx
xor edx, dword [ebp + 8]
mov eax, edx
pop edx
cmp dword [ebx + 0x45e05c], 0
jne 0x10002a10
push dword [ebp - 0xc]
mov dword [esp], eax
push 0
call dword [ebx + 0x45e5a4]
push 0
mov dword [esp], ecx
sub ecx, ecx
or ecx, eax
mov dword [ebx + 0x45e05c], ecx
pop ecx
xor eax, eax
mov eax, dword [esp]
add esp, 4
push 0
or dword [esp], edi
push eax
pop edi
add edi, dword [eax + 0x3c]
mov eax, edi
pop edi
push ebp
and dword [esp], 0
add dword [esp], eax
mov dword [ebp - 0xc], edx
and edx, 0
or edx, eax
and edi, 0
xor edi, edx
mov edx, dword [ebp - 0xc]
movzx eax, word [edi + 6]
cmp dword [ebx + 0x45e21c], 0
jne 0x10002a73
push ebx
sub dword [esp], ebx
xor dword [esp], eax
push dword [ebx + 0x45e1f0]
call dword [ebx + 0x45e580]
mov dword [ebp - 0x10], esi
and esi, 0
xor esi, eax
and dword [ebx + 0x45e21c], 0
xor dword [ebx + 0x45e21c], esi
mov esi, dword [ebp - 0x10]
pop dword [ebp - 8]
mov eax, dword [ebp - 8]
push ecx
xor ecx, dword [esp]
xor ecx, eax
and dword [ebp - 4], 0
xor dword [ebp - 4], ecx
pop ecx
push ecx
sub dword [esp], ecx
mov dword [esp], edi
push esi
xor esi, dword [esp]
or esi, dword [edi + 0x54]
and edx, 0
or edx, esi
pop esi
mov dword [ebp - 0x10], esi
sub esi, esi
xor esi, dword [ebx + 0x45e298]
mov edi, esi
mov esi, dword [ebp - 0x10]
mov dword [ebp - 8], edi
sub edi, edi
or edi, dword [ebp + 8]
mov esi, edi
mov edi, dword [ebp - 8]
cmp dword [ebx + 0x45e0c4], 0
jne 0x10002ae9
push ebp
and dword [esp], 0
or dword [esp], edx
push dword [ebx + 0x45e278]
call dword [ebx + 0x45e584]
push ecx
and ecx, 0
or ecx, eax
and dword [ebx + 0x45e0c4], 0
xor dword [ebx + 0x45e0c4], ecx
pop ecx
pop dword [ebp - 0xc]
mov edx, dword [ebp - 0xc]
push edx
pop dword [ebp - 8]
push dword [ebp - 8]
pop ecx
cmp edi, esi
je 0x10002b3d
movsb byte es:[edi], byte [esi]
dec ecx
jne 0x10002af5
mov dword [ebp - 0x10], edx
xor edx, edx
xor edx, dword [ebx + 0x45e298]
mov edi, edx
mov edx, dword [ebp - 0x10]
mov dword [ebx + 0x45e088], 0x40
lea eax, [ebx + 0x45e088]
push esi
and dword [esp], 0
add dword [esp], eax
push 2
mov dword [ebp - 8], 0
push dword [ebp - 8]
or dword [esp], edx
push esi
sub dword [esp], esi
xor dword [esp], edi
call dword [ebx + 0x45e4bc]
xor edi, edi
mov edi, dword [esp]
sub esp, 0xfffffffc
push esi
mov esi, edi
add esi, 0xf8
mov edi, esi
pop esi
push edx
and dword [esp], 0
xor dword [esp], edi
push ebx
and ebx, 0
or ebx, dword [ebp + 8]
and esi, 0
or esi, ebx
pop ebx
push ebx
and ebx, 0
or ebx, dword [edi + 0x10]
and ecx, 0
xor ecx, ebx
pop ebx
push 0
mov dword [esp], ebp
push esi
pop ebp
add ebp, dword [edi + 0x14]
mov esi, ebp
pop ebp
mov edi, dword [edi + 0xc]
push eax
mov eax, dword [ebx + 0x45e298]
push edi
pop dword [ebp - 8]
add dword [ebp - 8], eax
push dword [ebp - 8]
pop edi
pop eax
rep movsb byte es:[edi], byte [esi]
and edi, 0
xor edi, dword [esp]
sub esp, 0xfffffffc
push esi
mov esi, edi
add esi, 0x28
mov edi, esi
pop esi
dec dword [ebp - 4]
jne 0x10002b51
and edi, 0
add edi, dword [esp]
sub esp, 0xfffffffc
push ecx
and ecx, 0
xor ecx, dword [edi + 0x28]
and eax, 0
xor eax, ecx
pop ecx
push 0
or dword [esp], ecx
push eax
pop ecx
add ecx, dword [ebx + 0x45e298]
mov eax, ecx
pop ecx
mov dword [ebp - 8], edi
sub edi, edi
xor edi, eax
mov dword [ebx + 0x45e03c], edi
mov edi, dword [ebp - 8]
mov dword [ebp - 0x10], edx
xor edx, dword [ebp - 0x10]
xor edx, dword [ebx + 0x45e298]
and esi, 0
or esi, edx
mov edx, dword [ebp - 0x10]
cmp esi, 0
jbe 0x10002c28
and dword [ebp - 0xc], 0
push dword [ebp - 0xc]
or dword [esp], esi
call fcn.100012c6
mov dword [ebp - 0xc], 0
push dword [ebp - 0xc]
or dword [esp], esi
call fcn.10002f2b
and ecx, 0
pop dword [ebp - 8]
add ecx, dword [ebp - 8]
pop dword [ebp - 0x10]
mov edx, dword [ebp - 0x10]
leave
ret 4