Function at 0x101250f0
Capabilities:
Encode data using xor

Disassembly:
push ebp
mov ebp, esp
sub esp, 8
push edi
mov edi, ecx
mov dword [ebp - 8], edi
lea eax, [edi + 8]
test eax, eax
je 0x10125357
cmp dword [ebp + 8], 0
je 0x10125357
mov eax, dword [ebp + 0x10]
push ebx
mov ebx, dword [ebp + 0xc]
push esi
mov esi, ebx
add esi, 7
adc eax, 0
shrd esi, eax, 3
shr eax, 3
lea eax, [esi + 0x80]
push eax
call fcn.101c8213
push esi
push dword [ebp + 8]
mov dword [0x103d99f8], eax
push eax
call fcn.10175590
add esp, 0x10
mov ecx, edi
push dword [ebp + 0x10]
push ebx
push dword [0x103d99f8]
call fcn.10125440
push dword [edi + 0x28]
mov ecx, edi
push esi
push dword [ebp + 8]
call fcn.10125370
mov ebx, eax
lea edx, [edi + 0x3f0]
mov eax, dword [0x103d99f8]
lea ecx, [edx + 4]
add eax, esi
lea esi, [eax + 0xc]
sub eax, edx
mov dword [ebp + 8], eax
mov edx, 8
mov eax, dword [edi + 0x28]
lea ecx, [ecx + 0x10]
xor eax, dword [ecx - 0x14]
lea esi, [esi + 0x10]
xor eax, ebx
mov dword [esi - 0x1c], eax
sub dword [ecx - 0x14], ebx
mov eax, dword [ecx - 0x10]
xor eax, dword [edi + 0x28]
mov edi, dword [ebp + 8]
xor eax, ebx
mov dword [edi + ecx - 0x10], eax
sub dword [ecx - 0x10], ebx
mov eax, dword [ecx - 0xc]
mov edi, dword [ebp - 8]
xor eax, dword [edi + 0x28]
xor eax, ebx
mov dword [esi - 0x14], eax
sub dword [ecx - 0xc], ebx
mov eax, dword [edi + 0x28]
xor eax, ebx
xor eax, dword [ecx - 8]
mov dword [esi - 0x10], eax
sub dword [ecx - 8], ebx
dec edx
jne 0x10125184
mov eax, dword [ebp + 0x10]
test eax, eax
ja 0x101251e9
jb 0x101251e0
mov esi, dword [ebp + 0xc]
cmp esi, 0x200
jae 0x101251ec
mov esi, 0x200
xor eax, eax
jmp 0x10125203
mov esi, dword [ebp + 0xc]
add esi, 0x3ff
adc eax, 0
shrd esi, eax, 0xa
shr eax, 0xa
shld eax, esi, 0xa
shl esi, 0xa
add dword [edi + 0x28], ebx
mov ecx, dword [edi + 8]
mov dword [ebp + 8], esi
mov dword [ebp + 0x10], eax
cmp ecx, 0x180
ja 0x1012528f
je 0x101252bd
sub ecx, 0xe0
je 0x1012522a
sub ecx, 0x20
jne 0x10125297
mov ecx, esi
mov dword [ebp - 4], 0
mov ebx, eax
shrd ecx, ebx, 9
shr ebx, 9
mov dword [ebp - 8], ecx
test ebx, ebx
jb 0x1012532e
ja 0x10125251
test ecx, ecx
je 0x1012532e
xor esi, esi
movzx eax, byte [edi + 0x1d]
push eax
movzx eax, byte [edi + 0x1c]
push eax
mov eax, dword [0x103d99f8]
add eax, esi
push eax
push dword [edi + 0x18]
call fcn.10173860
mov eax, dword [ebp - 4]
add esp, 0x10
inc eax
add esi, 0x40
mov dword [ebp - 4], eax
cdq
cmp edx, ebx
jb 0x10125253
ja 0x10125328
cmp eax, dword [ebp - 8]
jb 0x10125253
jmp 0x10125328
cmp ecx, 0x200
je 0x101252bd
push dword [0x103d99f8]
call fcn.101c78e4
add esp, 4
mov dword [0x103d99f8], 0
mov eax, 2
pop esi
pop ebx
pop edi
mov esp, ebp
pop ebp
ret 0xc
cmp esi, 0x200
jne 0x101252d4
test eax, eax
jne 0x101252d4
mov dword [ebp - 8], 1
xor ebx, ebx
jmp 0x101252ec
mov edx, esi
mov ebx, eax
shrd edx, ebx, 0xa
shr ebx, 0xa
mov dword [ebp - 8], edx
test ebx, ebx
jb 0x1012532e
ja 0x101252ec
test edx, edx
je 0x1012532e
xor ecx, ecx
xor esi, esi
mov dword [ebp - 4], ecx
movzx eax, byte [edi + 0x1d]
push eax
movzx eax, byte [edi + 0x1c]
push eax
mov eax, dword [0x103d99f8]
add eax, ecx
push eax
push dword [edi + 0x18]
call fcn.10173ec0
mov ecx, dword [ebp - 4]
inc esi
mov eax, esi
sub ecx, 0xffffff80
cdq
add esp, 0x10
mov dword [ebp - 4], ecx
cmp edx, ebx
jb 0x101252f3
ja 0x10125328
cmp eax, dword [ebp - 8]
jb 0x101252f3
mov esi, dword [ebp + 8]
mov eax, dword [ebp + 0x10]
add dword [edi + 0x10], esi
adc dword [edi + 0x14], eax
push dword [0x103d99f8]
call fcn.101c78e4
add esp, 4
mov dword [0x103d99f8], 0
xor eax, eax
pop esi
pop ebx
pop edi
mov esp, ebp
pop ebp
ret 0xc
mov eax, 6
pop edi
mov esp, ebp
pop ebp
ret 0xc