Function at 0x10162ff0
Capabilities:
Encode data using xor

Disassembly:
push ebp
mov ebp, esp
sub esp, 0x164
mov eax, dword [0x10411ce0]
xor eax, ebp
mov dword [ebp - 4], eax
mov eax, dword [ebp + 0x1c]
shl byte [ebp + 0x18], 1
push ebx
mov ebx, dword [ebp + 0x14]
mov dword [ebp - 0x154], eax
mov eax, ebx
push esi
mov esi, edx
mov dword [ebp - 0x160], ecx
mov edx, dword [ebp + 0x10]
sub eax, edx
mov ecx, dword [ebp + 0x20]
mov dword [ebp - 0x144], esi
mov dword [ebp - 0x148], ecx
movzx eax, word [eax*4 + 0x103cdff2]
mov dword [ebp - 0x164], eax
mov eax, dword [ebp + 8]
cmp eax, dword [ebp + 0xc]
jge 0x101633f4
push edi
lea ecx, [ecx]
xor edi, edi
test esi, esi
je 0x101630d9
mov esi, edx
cmp edx, ebx
jge 0x101633be
mov eax, dword [ebp - 0x144]
lea ecx, [ebp - 0x134]
sub eax, ecx
lea edx, [ebp - 0x134]
mov ecx, dword [ebp - 0x160]
sub ecx, edx
mov dword [ebp - 0x138], eax
mov dword [ebp - 0x13c], ecx
lea esp, [esp]
mov edx, dword [ebp + 8]
lea ecx, [ebp - 0x134]
lea ecx, [ecx + esi*4]
mov eax, dword [eax + ecx]
mov edx, dword [eax + edx*4]
mov eax, dword [ebp - 0x13c]
mov dword [ecx], edx
mov eax, dword [eax + ecx]
mov ecx, dword [ebp + 8]
mov eax, dword [eax + ecx*4]
mov ecx, eax
mov dword [ebp + esi*4 - 0x9c], eax
inc esi
sar ecx, 0x1f
xor ecx, eax
mov eax, edx
sar eax, 0x1f
xor eax, edx
or ecx, eax
mov eax, dword [ebp - 0x138]
or edi, ecx
cmp esi, ebx
jl 0x10163090
jmp 0x10163115
cmp dword [ebp + 0x10], ebx
jge 0x101633c4
mov esi, dword [ebp - 0x160]
lea eax, [ebp - 0x9c]
sub esi, eax
mov ecx, dword [ebp + 8]
lea eax, [esi + edx*4]
mov eax, dword [ebp + eax - 0x9c]
mov ecx, dword [eax + ecx*4]
mov eax, ecx
sar eax, 0x1f
xor eax, ecx
mov dword [ebp + edx*4 - 0x9c], ecx
inc edx
or edi, eax
cmp edx, ebx
jl 0x101630f0
test edi, edi
je 0x101633b5
xor esi, esi
bsr ecx, edi
mov dword [ebp - 0x15c], esi
setne al
test al, al
je 0x10163138
mov eax, 0x1f
sub eax, ecx
jmp 0x1016313d
mov eax, 0x20
sub al, 4
mov dword [ebp - 0x15c], eax
movsx ecx, al
js 0x10163227
cmp dword [ebp - 0x144], esi
je 0x101631e8
mov edx, dword [ebp + 0x10]
mov dword [ebp - 0x13c], edx
mov dword [ebp - 0x150], ecx
lea esp, [esp]
mov eax, dword [ebp + edx*4 - 0x9c]
mov edi, dword [ebp + edx*4 - 0x134]
shl eax, cl
shl edi, cl
mov dword [ebp - 0x138], eax
mov dword [ebp - 0x158], edi
mov dword [ebp - 0x140], eax
mov eax, dword [ebp - 0x140]
imul dword [ebp - 0x138]
mov dword [ebp - 0x140], edx
mov dword [ebp - 0x138], edi
mov eax, dword [ebp - 0x138]
imul dword [ebp - 0x158]
mov dword [ebp - 0x138], edx
mov eax, dword [ebp - 0x138]
mov edx, dword [ebp - 0x13c]
add eax, dword [ebp - 0x140]
inc edx
mov ecx, dword [ebp - 0x150]
add esi, eax
mov dword [ebp - 0x13c], edx
cmp edx, ebx
jl 0x10163170
jmp 0x10163302
mov edi, dword [ebp + 0x10]
jmp 0x101631f0
mov eax, dword [ebp + edi*4 - 0x9c]
shl eax, cl
mov dword [ebp - 0x150], eax
mov dword [ebp - 0x138], eax
mov eax, dword [ebp - 0x138]
imul dword [ebp - 0x150]
mov dword [ebp - 0x138], edx
add esi, dword [ebp - 0x138]
inc edi
cmp edi, ebx
jl 0x101631f0
jmp 0x10163302
neg ecx
mov dword [ebp - 0x14c], ecx
cmp dword [ebp - 0x144], esi
je 0x101632c5
mov edx, dword [ebp + 0x10]
mov dword [ebp - 0x13c], edx
jmp 0x10163250
mov eax, dword [ebp + edx*4 - 0x9c]
mov edi, dword [ebp + edx*4 - 0x134]
sar eax, cl
sar edi, cl
mov dword [ebp - 0x150], eax
mov dword [ebp - 0x158], edi
mov dword [ebp - 0x138], eax
mov eax, dword [ebp - 0x138]
imul dword [ebp - 0x150]
mov dword [ebp - 0x138], edx
mov dword [ebp - 0x140], edi
mov eax, dword [ebp - 0x140]
imul dword [ebp - 0x158]
mov dword [ebp - 0x140], edx
mov eax, dword [ebp - 0x140]
mov edx, dword [ebp - 0x13c]
add eax, dword [ebp - 0x138]
inc edx
mov ecx, dword [ebp - 0x14c]
add esi, eax
mov dword [ebp - 0x13c], edx
cmp edx, ebx
jl 0x10163250
jmp 0x10163302
mov edi, dword [ebp + 0x10]
jmp 0x101632d0
mov eax, dword [ebp + edi*4 - 0x9c]
sar eax, cl
mov dword [ebp - 0x14c], eax
mov dword [ebp - 0x138], eax
mov eax, dword [ebp - 0x138]
imul dword [ebp - 0x14c]
mov dword [ebp - 0x138], edx
add esi, dword [ebp - 0x138]
inc edi
cmp edi, ebx
jl 0x101632d0
add esi, esi
mov eax, esi
jne 0x1016330c
xor eax, eax
jmp 0x10163337
test esi, esi
jns 0x10163314
mov eax, esi
not eax
bsr ecx, eax
mov dword [ebp - 0x14c], 0
setne al
test al, al
je 0x10163331
mov eax, 0x1f
sub eax, ecx
jmp 0x10163336
mov eax, 0x20
dec eax
mov cl, al
mov dword [ebp - 0x13c], eax
mov eax, dword [ebp - 0x164]
cwde
shl esi, cl
shl eax, 0x10
mov dword [ebp - 0x14c], esi
mov dword [ebp - 0x138], eax
mov eax, dword [ebp - 0x138]
imul dword [ebp - 0x14c]
mov dword [ebp - 0x138], edx
mov edi, dword [ebp - 0x154]
mov eax, dword [ebp - 0x138]
mov ecx, dword [ebp - 0x15c]
add eax, eax
mov esi, dword [ebp - 0x144]
add cl, cl
add cl, byte [ebp - 0x13c]
mov dword [edi], eax
add edi, 4
mov al, byte [ebp + 0x18]
sub al, cl
mov dword [ebp - 0x154], edi
mov ecx, dword [ebp - 0x148]
test esi, esi
je 0x101633ac
mov byte [ecx], al
mov eax, dword [ebp + 8]
jmp 0x101633dc
inc al
mov byte [ecx], al
mov eax, dword [ebp + 8]
jmp 0x101633dc
mov ecx, dword [ebp - 0x148]
mov eax, dword [ebp + 8]
mov esi, dword [ebp - 0x144]
mov edx, dword [ebp - 0x154]
mov dword [edx], 0
add edx, 4
mov dword [ebp - 0x154], edx
mov byte [ecx], 0
mov edx, dword [ebp + 0x10]
inc eax
inc ecx
mov dword [ebp + 8], eax
mov dword [ebp - 0x148], ecx
cmp eax, dword [ebp + 0xc]
jl 0x10163050
pop edi
mov ecx, dword [ebp - 4]
pop esi
xor ecx, ebp
pop ebx
call fcn.102d6d23
mov esp, ebp
pop ebp
ret