Function at 0x17e864
Capabilities:
Encode data using xor

Disassembly:
sub esp, 0x30
push ebp
push esi
push edi
push 0
push dword [esp + 0x48]
mov ebp, ecx
push dword [esp + 0x48]
mov dword [esp + 0x34], ebp
push edx
push ebp
call fcn.00163128
mov dword [esp + 0x40], 0x35ea
lea edi, [esp + 0x44]
xor eax, eax
stosd dword es:[edi], eax
stosd dword es:[edi], eax
stosd dword es:[edi], eax
mov dword [esp + 0x20], 0x409789
shr dword [esp + 0x20], 0xc
shr dword [esp + 0x20], 0xf
shr dword [esp + 0x20], 0xa
xor dword [esp + 0x20], 0xd31b
mov dword [esp + 0x2c], 0x9988eb
shr dword [esp + 0x2c], 0xb
shr dword [esp + 0x2c], 4
xor dword [esp + 0x2c], 0x706a8
mov dword [esp + 0x30], 0x82a9ab
add dword [esp + 0x30], 0xed1c
shl dword [esp + 0x30], 0xe
xor dword [esp + 0x30], 0xe5b2701d
push dword [esp + 0x30]
mov edx, dword [esp + 0x30]
mov ecx, dword [esp + 0x24]
push ebp
call fcn.00165c5c
mov esi, eax
add esp, 0x1c
test esi, esi
je 0x17ebc7
mov dword [esp + 0x1c], 0x3e8db3
add dword [esp + 0x1c], 0x9dd0
add dword [esp + 0x1c], 0xe10d
shl dword [esp + 0x1c], 6
xor dword [esp + 0x1c], 0x10033400
mov dword [esp + 0x18], 0x70fba
or dword [esp + 0x18], 0xd940892
add dword [esp + 0x18], 0x2c6f
shl dword [esp + 0x18], 0xc
xor dword [esp + 0x18], 0x73c2b000
mov dword [esp + 0x10], 0x4b594f
or dword [esp + 0x10], 0x4e01cc25
add dword [esp + 0x10], 0xffff2075
or dword [esp + 0x10], 0x464dab1f
xor dword [esp + 0x10], 0x4e4fffbf
mov dword [esp + 0x24], 0xf238e
or dword [esp + 0x24], 0xe9967d76
xor dword [esp + 0x24], 0xe994c679
mov dword [esp + 0x20], 0x43367
shl dword [esp + 0x20], 0x10
xor dword [esp + 0x20], 0x336e445c
mov dword [esp + 0x14], 0xc435b9
shl dword [esp + 0x14], 7
shl dword [esp + 0x14], 6
or dword [esp + 0x14], 0x176f1289
xor dword [esp + 0x14], 0x97fce269
mov dword [esp + 0xc], 0xf74afc
or dword [esp + 0xc], 0x96780cd9
xor dword [esp + 0xc], 0xf4619879
add dword [esp + 0xc], 0xffffef11
xor dword [esp + 0xc], 0x629a6558
push ebx
push dword [esp + 0x10]
push dword [esp + 0x18]
push dword [esp + 0x20]
push dword [esp + 0x30]
push dword [esp + 0x38]
mov ecx, dword [esp + 0x30]
push dword [esi + 0x50]
or ecx, dword [esp + 0x38]
call fcn.00162e1b
mov ebx, eax
add esp, 0x18
test ebx, ebx
je 0x17ebc4
mov dword [esp + 0x28], 0x4a971f
xor edx, edx
imul ecx, dword [esp + 0x28], 0x31
push 0x79
mov dword [esp + 0x2c], ecx
xor dword [esp + 0x2c], 0xe4537a4
mov dword [esp + 0x1c], 0xae6fd7
mov eax, dword [esp + 0x1c]
pop ecx
div ecx
mov dword [esp + 0x18], eax
shl dword [esp + 0x18], 0x10
xor dword [esp + 0x18], 0x7104c76a
mov dword [esp + 0x20], 0x5f3fd2
add dword [esp + 0x20], 0xffff6e3e
imul eax, dword [esp + 0x20], 0x3b
mov dword [esp + 0x20], eax
shr dword [esp + 0x20], 3
xor dword [esp + 0x20], 0x2bbd7d6
mov dword [esp + 0x1c], 0x5327a6
or dword [esp + 0x1c], 0x6071c8ae
shr dword [esp + 0x1c], 0xe
xor dword [esp + 0x1c], 0x15577
push dword [esp + 0x1c]
push dword [esi + 0x54]
push dword [esp + 0x28]
push ebx
push dword [esp + 0x28]
mov edx, dword [ebp]
mov ecx, dword [esp + 0x3c]
call fcn.001800fb
movzx eax, word [esi + 6]
add esp, 0x14
movzx ebp, word [esi + 0x14]
imul eax, eax, 0x28
add ebp, 0x18
add ebp, esi
add eax, ebp
mov dword [esp + 0x24], eax
cmp ebp, eax
jae 0x17ebc4
mov edi, dword [ebp + 0xc]
mov ecx, dword [ebp + 0x10]
add edi, ebx
mov eax, dword [esp + 0x2c]
mov dword [esp + 0x28], 0x7a
mov esi, dword [eax]
add esi, dword [ebp + 0x14]
cmp dword [ebp + 8], ecx
cmovb ecx, dword [ebp + 8]
xor edx, edx
mov dword [esp + 0x20], 0xe4ea5c
shl dword [esp + 0x20], 6
mov eax, dword [esp + 0x20]
div dword [esp + 0x28]
xor edx, edx
mov dword [esp + 0x28], 0x7b
mov dword [esp + 0x20], eax
add dword [esp + 0x20], 0xffff3dc8
xor dword [esp + 0x20], 0x72fa45
mov dword [esp + 0x18], 0x284491
mov eax, dword [esp + 0x18]
div dword [esp + 0x28]
xor edx, edx
mov dword [esp + 0x28], 0x3e
mov dword [esp + 0x18], eax
xor dword [esp + 0x18], 0x2c517462
xor dword [esp + 0x18], 0x2c54c8e9
mov dword [esp + 0x1c], 0xe25300
mov eax, dword [esp + 0x1c]
div dword [esp + 0x28]
mov edx, esi
mov dword [esp + 0x1c], eax
add dword [esp + 0x1c], 0x98a6
xor dword [esp + 0x1c], 0xccb35
mov dword [esp + 0x28], 0x11138f
shr dword [esp + 0x28], 0xc
xor dword [esp + 0x28], 0x666c5
push dword [esp + 0x28]
push ecx
push dword [esp + 0x24]
push edi
push dword [esp + 0x28]
mov ecx, dword [esp + 0x34]
call fcn.001800fb
add ebp, 0x28
add esp, 0x14
cmp ebp, dword [esp + 0x24]
jb 0x17eadf
mov eax, ebx
pop ebx
pop edi
pop esi
pop ebp
add esp, 0x30
ret