Function at 0x101573a0
Capabilities:
Encode data using xor

Disassembly:
push ebp
mov ebp, esp
sub esp, 0x30
mov eax, dword [esi + 0x9a78]
push ebx
push edi
lea edi, [esi + 0x9a78]
push edi
push eax
call fcn.1011e340
mov eax, dword [esi + 0x9978]
mov ecx, dword [esi + 0x9878]
cdq
mov dword [ebp - 0x30], ecx
mov ecx, eax
movsx eax, word [edi]
mov ebx, edx
push ebx
cdq
push ecx
push edx
push eax
mov dword [ebp - 0x28], ecx
mov dword [ebp - 0x24], ebx
call fcn.1015f3d0
movsx ebx, word [edi + 2]
mov ecx, 0x19
sub ecx, ebx
call fcn.1015f7a0
movsx edx, ax
mov eax, dword [ebp - 0x30]
mov dword [esi + 0x9870], edx
cdq
mov ecx, eax
movsx eax, word [edi]
mov ebx, edx
push ebx
cdq
push ecx
push edx
push eax
mov dword [ebp - 0x20], ecx
mov dword [ebp - 0x1c], ebx
call fcn.1015f3d0
movsx ebx, word [edi + 2]
mov ecx, 0x19
sub ecx, ebx
call fcn.1015f7a0
mov ecx, dword [ebp - 0x24]
cwde
mov dword [esi + 0x9974], eax
movsx eax, word [esi + 0x9870]
lea ebx, [edi + 4]
push ebx
push ecx
mov ecx, dword [ebp - 0x28]
cdq
push ecx
push edx
push eax
call fcn.1015f3d0
shrd eax, edx, 0xe
sar edx, 0xe
mov edx, dword [ebx]
sub edx, eax
push edx
call fcn.1011e340
mov ecx, dword [ebp - 0x1c]
movsx eax, word [esi + 0x9870]
push ecx
mov ecx, dword [ebp - 0x20]
cdq
push ecx
push edx
push eax
call fcn.1015f3d0
shrd eax, edx, 0xe
mov ecx, eax
mov eax, dword [esi + 0x997c]
sar edx, 0xe
mov edx, dword [esi + 0x987c]
sub eax, ecx
mov dword [ebp - 0x18], eax
mov dword [ebp - 0x2c], edx
cdq
mov ecx, eax
movsx eax, word [ebx]
mov dword [ebp - 0x24], edx
mov ebx, edx
push ebx
cdq
push ecx
push edx
push eax
mov dword [ebp - 0x28], ecx
call fcn.1015f3d0
movsx ebx, word [edi + 6]
mov ecx, 0x19
sub ecx, ebx
call fcn.1015f7a0
cwde
mov dword [esi + 0x9874], eax
movsx eax, word [edi + 4]
imul dword [ebp - 0x2c]
movsx ebx, word [edi + 6]
mov ecx, 0x19
sub ecx, ebx
call fcn.1015f7a0
mov edx, dword [ebp + 8]
movsx ecx, ax
mov dword [esi + 0x9978], ecx
mov ecx, 2
xor bl, bl
add edx, 0xfffffffe
mov byte [ebp - 1], bl
mov dword [ebp - 0x10], ecx
cmp edx, ecx
jle 0x10157621
add edx, 0xfffffffe
add edi, 8
mov dword [ebp - 0x14], edx
lea eax, [esi + 0x9980]
lea ecx, [esi + 0x9874]
add edx, 2
mov dword [ebp - 8], edi
mov dword [ebp - 0xc], eax
mov dword [ebp + 8], ecx
mov dword [ebp - 0x10], edx
jmp 0x10157520
push edi
movsx edi, word [eax - 0xc]
movsx edx, bl
mov eax, dword [ebp + edx*4 - 0x30]
imul edi
mov edi, eax
movsx eax, word [ecx]
mov ecx, dword [ebp - 0x24]
push ecx
mov ecx, dword [ebp - 0x28]
mov ebx, edx
cdq
push ecx
push edx
push eax
call fcn.1015f3d0
add edi, eax
adc ebx, edx
shrd edi, ebx, 0xe
mov edx, edi
mov edi, dword [ebp - 8]
mov eax, dword [edi]
sub eax, edx
push eax
sar ebx, 0xe
call fcn.1011e340
mov bl, byte [ebp - 1]
mov ecx, dword [ebp + 8]
movsx eax, word [ecx]
mov dword [ebp - 0x18], eax
mov ecx, dword [ecx + 0xc]
xor bl, 1
movsx edx, bl
mov eax, dword [ebp + edx*4 - 0x30]
imul dword [ebp - 0x18]
shrd eax, edx, 0xe
sar edx, 0xe
mov edx, dword [ebp - 0xc]
mov dword [ebp - 0x18], eax
mov eax, dword [edx]
sub eax, dword [ebp - 0x18]
xor bl, 1
movsx edx, bl
lea edx, [ebp + edx*4 - 0x30]
mov dword [edx], ecx
mov dword [ebp - 0x18], eax
mov dword [ebp - 0x1c], edx
cdq
mov dword [ebp - 0x28], eax
movsx eax, word [edi]
mov ecx, edx
push ecx
mov dword [ebp - 0x24], ecx
mov ecx, dword [ebp - 0x28]
cdq
push ecx
push edx
push eax
call fcn.1015f3d0
movsx edi, word [edi + 2]
mov ecx, 0x19
sub ecx, edi
call fcn.1015f7a0
mov ecx, dword [ebp - 8]
movsx edx, ax
mov eax, dword [ebp + 8]
mov dword [eax + 4], edx
movsx edx, word [ecx]
mov eax, dword [ebp - 0x1c]
mov eax, dword [eax]
movsx edi, word [ecx + 2]
imul edx
mov ecx, 0x19
sub ecx, edi
call fcn.1015f7a0
movsx ecx, ax
mov eax, dword [ebp - 0xc]
xor bl, 1
mov dword [eax - 4], ecx
mov ecx, dword [ebp + 8]
mov byte [ebp - 1], bl
mov edi, dword [ebp - 8]
add ecx, 4
add edi, 4
add eax, 4
dec dword [ebp - 0x14]
mov dword [ebp + 8], ecx
mov dword [ebp - 8], edi
mov dword [ebp - 0xc], eax
jne 0x10157520
mov ecx, dword [ebp - 0x10]
lea eax, [esi + ecx*4 + 0x9a78]
mov dword [ebp + 8], eax
push eax
movsx eax, word [esi + ecx*4 + 0x996c]
movsx edx, bl
imul dword [ebp + edx*4 - 0x30]
mov edi, eax
movsx eax, word [esi + ecx*4 + 0x986c]
mov dword [ebp - 0x1c], edx
imul dword [ebp - 0x18]
add edi, eax
mov eax, dword [ebp - 0x1c]
adc eax, edx
shrd edi, eax, 0xe
mov ecx, edi
mov edi, dword [ebp + 8]
mov edx, dword [edi]
sub edx, ecx
push edx
sar eax, 0xe
call fcn.1011e340
xor bl, 1
movsx eax, bl
mov eax, dword [ebp + eax*4 - 0x30]
mov ebx, dword [ebp - 0x10]
cdq
mov dword [ebp - 0x30], eax
movsx eax, word [esi + ebx*4 + 0x986c]
mov ecx, edx
push ecx
mov dword [ebp - 0x2c], ecx
mov ecx, dword [ebp - 0x30]
cdq
push ecx
push edx
push eax
call fcn.1015f3d0
shrd eax, edx, 0xe
mov ecx, eax
mov eax, dword [esi + ebx*4 + 0x9978]
sub eax, ecx
sar edx, 0xe
cdq
mov ecx, edx
movsx edx, word [edi + 2]
mov dword [ebp - 0x28], eax
mov eax, 0x19
sub eax, edx
mov dword [ebp + 8], eax
movsx eax, word [edi]
push ecx
mov dword [ebp - 0x24], ecx
mov ecx, dword [ebp - 0x28]
cdq
push ecx
push edx
push eax
call fcn.1015f3d0
mov ecx, dword [ebp + 8]
call fcn.1015f7a0
mov ecx, dword [ebp - 0x2c]
movsx edx, ax
lea edi, [ebx*4 + 4]
lea eax, [edi + esi + 0x9a78]
push eax
mov dword [esi + ebx*4 + 0x9870], edx
mov dword [ebp + 8], eax
movsx eax, word [esi + ebx*4 + 0x9970]
push ecx
mov ecx, dword [ebp - 0x30]
cdq
push ecx
push edx
push eax
call fcn.1015f3d0
mov ecx, dword [ebp - 0x24]
mov ebx, eax
movsx eax, word [edi + esi + 0x986c]
mov dword [ebp - 0x1c], edx
cdq
push ecx
mov ecx, dword [ebp - 0x28]
push ecx
push edx
push eax
call fcn.1015f3d0
add ebx, eax
mov eax, dword [ebp - 0x1c]
adc eax, edx
mov edx, dword [ebp + 8]
shrd ebx, eax, 0xe
sar eax, 0xe
mov eax, dword [edx]
sub eax, ebx
push eax
call fcn.1011e340
pop edi
pop ebx
mov esp, ebp
pop ebp
ret 4