Function at 0x1649d9c
Capabilities:
Encode data using xor

Disassembly:
push ebp
mov ebp, esp
sub esp, 0x20
mov ecx, dword [ebp + 0xc]
push ebx
mov ebx, dword [ebp + 8]
push esi
mov esi, dword [ebp + 0x10]
push edi
mov edi, dword [ebp + 0x14]
lea eax, [ebx + ecx]
mov dword [ebp - 4], eax
cmp ecx, 0x20
jb 0x1649f03
add eax, 0xffffffe0
mov dword [ebp - 0x20], eax
mov eax, esi
add eax, 0xadc0b5d6
mov dword [ebp - 0x14], eax
mov eax, edi
adc eax, 0x60ea27ee
mov dword [ebp - 0x10], eax
mov eax, esi
add eax, 0x27d4eb4f
mov dword [ebp - 0xc], eax
mov eax, edi
adc eax, 0xc2b2ae3d
mov dword [ebp - 8], eax
mov eax, esi
add eax, 0x7a143579
mov dword [ebp - 0x18], eax
mov eax, edi
adc eax, 0x61c8864e
mov dword [ebp - 0x1c], eax
push ebx
call fcn.016414c8
push edx
push eax
push dword [ebp - 0x10]
push dword [ebp - 0x14]
call fcn.016487e4
add ebx, 8
mov dword [ebp - 0x14], eax
push ebx
mov dword [ebp - 0x10], edx
call fcn.016414c8
push edx
push eax
push dword [ebp - 8]
push dword [ebp - 0xc]
call fcn.016487e4
add ebx, 8
mov dword [ebp - 0xc], eax
push ebx
mov dword [ebp - 8], edx
call fcn.016414c8
push edx
push eax
push edi
push esi
call fcn.016487e4
add ebx, 8
mov esi, eax
push ebx
mov edi, edx
call fcn.016414c8
add esp, 0x40
push edx
push eax
push dword [ebp - 0x1c]
push dword [ebp - 0x18]
call fcn.016487e4
add ebx, 8
mov dword [ebp - 0x18], eax
add esp, 0x10
mov ecx, edx
mov dword [ebp - 0x1c], ecx
cmp ebx, dword [ebp - 0x20]
jbe 0x1649e02
push ecx
push eax
push edi
push esi
push dword [ebp - 8]
mov dword [ebp - 0x20], edi
push dword [ebp - 0xc]
mov dword [ebp - 0x1c], esi
push dword [ebp - 0x10]
push dword [ebp - 0x14]
push 0x12
push ecx
push eax
call fcn.00e13394
push 0xc
push dword [ebp - 0x20]
mov edi, eax
mov esi, edx
push dword [ebp - 0x1c]
call fcn.00e13394
push 7
push dword [ebp - 8]
add edi, eax
push dword [ebp - 0xc]
adc esi, edx
call fcn.00e13394
push 1
push dword [ebp - 0x10]
add edi, eax
push dword [ebp - 0x14]
adc esi, edx
call fcn.00e13394
add esp, 0x30
add edi, eax
adc esi, edx
push esi
push edi
call fcn.01646914
add esp, 0x10
push edx
push eax
call fcn.01646914
add esp, 0x10
push edx
push eax
call fcn.01646914
add esp, 0x10
push edx
push eax
call fcn.01646914
mov ecx, dword [ebp + 0xc]
add esp, 0x10
mov esi, eax
mov edi, edx
jmp 0x1649f0f
add esi, 0x165667c5
adc edi, 0x27d4eb2f
add esi, ecx
lea eax, [ebx + 8]
mov dword [ebp - 0x1c], esi
adc edi, 0
cmp eax, dword [ebp - 4]
ja 0x1649f72
push 0x1b
push ebx
call fcn.016414c8
push edx
push eax
push 0
push 0
call fcn.016487e4
add esp, 0x14
xor edx, edi
xor eax, esi
push edx
push eax
call fcn.00e13394
add esp, 0xc
push 0x9e3779b1
push 0x85ebca87
push edx
push eax
call fcn.00e117b0
mov esi, eax
mov edi, edx
add esi, 0xc2b2ae63
adc edi, 0x85ebca77
add ebx, 8
lea eax, [ebx + 8]
cmp eax, dword [ebp - 4]
jbe 0x1649f1f
mov dword [ebp - 0x1c], esi
mov eax, dword [ebp - 4]
lea ecx, [ebx + 4]
mov dword [ebp - 0x20], ecx
cmp ecx, eax
ja 0x1649fd2
push 0x17
push ebx
call fcn.01649d28
pop ecx
mov ecx, eax
mov eax, 0x9e3779b1
mul ecx
mov esi, eax
mov eax, 0x85ebca87
mul ecx
xor eax, dword [ebp - 0x1c]
add esi, edx
xor esi, edi
push esi
push eax
call fcn.00e13394
add esp, 0xc
push 0xc2b2ae3d
push 0x27d4eb4f
push edx
push eax
call fcn.00e117b0
mov ebx, dword [ebp - 0x20]
mov esi, eax
mov eax, dword [ebp - 4]
add esi, 0x9e3779f9
mov edi, edx
adc edi, 0x165667b1
cmp ebx, eax
jae 0x164a016
movzx eax, byte [ebx]
push 0xb
push 0x27d4eb2f
cdq
push 0x165667c5
push edx
push eax
call fcn.00e117b0
xor edx, edi
xor eax, esi
push edx
push eax
call fcn.00e13394
add esp, 0xc
push 0x9e3779b1
push 0x85ebca87
push edx
push eax
call fcn.00e117b0
inc ebx
mov esi, eax
mov edi, edx
cmp ebx, dword [ebp - 4]
jb 0x1649fd6
push 0xc2b2ae3d
xor eax, eax
mov ecx, edi
push 0x27d4eb4f
shr ecx, 1
xor eax, edi
xor ecx, esi
push eax
push ecx
call fcn.00e117b0
mov esi, eax
mov ecx, edx
shrd esi, ecx, 0x1d
push 0x165667b1
shr ecx, 0x1d
xor esi, eax
push 0x9e3779f9
xor ecx, edx
push ecx
push esi
call fcn.00e117b0
mov ecx, edx
xor esi, esi
pop edi
xor eax, ecx
xor edx, esi
pop esi
pop ebx
leave
ret