Function at 0x416ff4
Capabilities:
Encode data using xor

Disassembly:
push esi
push ebx
sub esp, 0x14
mov ecx, dword [esp + 0x20]
xor eax, eax
movzx edx, byte [ecx + eax]
test edx, edx
je 0x417016
movzx edx, byte [ecx + eax + 1]
add eax, 2
test edx, edx
jne 0x416fff
add eax, 0xffffffff
cmp eax, 0x2f
je 0x417023
xor eax, eax
add esp, 0x14
pop ebx
pop esi
ret
push 0x2f
push 0x48e660
mov eax, dword [esp + 0x28]
push eax
call fcn.0041c41c
mov edx, 0x48e6c0
xor eax, eax
mov dword [edx], eax
mov dword [edx + 4], eax
mov dword [edx + 8], eax
mov dword [edx + 0xc], eax
mov dword [edx + 0x10], eax
mov dword [edx + 0x14], eax
mov dword [edx + 0x18], eax
mov dword [edx + 0x1c], eax
mov dword [edx + 0x20], eax
mov dword [edx + 0x24], eax
mov dword [edx + 0x28], eax
mov dword [edx + 0x2c], eax
mov dword [edx + 0x30], eax
mov dword [edx + 0x34], eax
mov dword [edx + 0x38], eax
mov dword [edx + 0x3c], eax
mov dword [edx + 0x40], eax
mov dword [edx + 0x44], eax
mov dword [edx + 0x48], eax
mov dword [edx + 0x4c], eax
push 0x28
push 0x48e6c0
push 0x48e660
call fcn.0041c154
mov edx, 0x48e720
xor eax, eax
mov dword [edx], eax
mov dword [edx + 4], eax
mov dword [edx + 8], eax
mov dword [edx + 0xc], eax
mov dword [edx + 0x10], eax
mov dword [edx + 0x14], eax
mov dword [edx + 0x18], eax
mov dword [edx + 0x1c], eax
mov dword [edx + 0x20], eax
mov dword [edx + 0x24], eax
mov dword [edx + 0x28], eax
mov dword [edx + 0x2c], eax
mov dword [edx + 0x30], eax
mov dword [edx + 0x34], eax
mov dword [edx + 0x38], eax
mov dword [edx + 0x3c], eax
mov dword [edx + 0x40], eax
mov dword [edx + 0x44], eax
mov dword [edx + 0x48], eax
mov dword [edx + 0x4c], eax
push 0x28
push 0x48e720
push 0x19
push 0x48e6c0
call fcn.0041c028
add esp, 0x28
mov eax, dword [esp + 0x28]
mov dword [eax], 0xffffffff
xor ebx, ebx
mov esi, 0x48e45d
mov dword [0x48e780], 0x64
mov dword [esp + 4], edi
mov eax, 0x48e460
mov dword [esp], ebp
mov edx, 0x48e47c
mov ebp, ebx
push 0x48e494
call fcn.0041c2c4
mov edx, 0x48e45c
xor eax, eax
mov dword [edx], eax
mov dword [edx + 4], eax
mov dword [edx + 8], eax
mov dword [edx + 0xc], eax
mov dword [edx + 0x10], eax
mov dword [edx + 0x14], eax
mov byte [edx + 0x18], al
push 0x19
push 0x48e45c
push 0x48e720
push 0x48e494
call fcn.0041c398
push 0x18
push esi
call fcn.0041bf04
mov dword [esp + 0x28], eax
lea eax, [esp + 0x28]
push 1
push 0x48e4a4
push 4
push eax
call fcn.0041be78
add esp, 0x2c
lea ecx, [esp + 0x10]
call fcn.00419894
mov ebx, eax
movzx eax, byte [0x48e4a4]
movzx edx, byte [0x48e45c]
add ebx, 0xffffffff
cmp eax, edx
je 0x4171a8
add ebp, 1
cmp ebp, 0x64
jbe 0x41710d
mov edi, dword [esp + 4]
mov ebp, dword [esp]
mov eax, 1
add esp, 0x14
pop ebx
pop esi
ret
mov ecx, 0x48e478
mov edx, 0x48e45c
mov edi, dword [edx]
mov dword [ecx], edi
mov eax, dword [edx + 4]
mov dword [ecx + 4], eax
mov eax, dword [edx + 8]
mov dword [ecx + 8], eax
mov eax, dword [edx + 0xc]
mov dword [ecx + 0xc], eax
mov eax, dword [edx + 0x10]
mov dword [ecx + 0x10], eax
mov eax, dword [edx + 0x14]
mov dword [ecx + 0x14], eax
movzx eax, byte [edx + 0x18]
mov byte [ecx + 0x18], al
push 0x15
mov eax, 0x48e47c
push eax
mov edx, 0x48e460
push edx
call fcn.0041c580
add esp, 0xc
mov dword [esp + 8], ebp
mov ebp, 0x48e47c
mov ecx, 0x48e400
call fcn.004138b4
mov eax, dword [esp + 0x10]
push 0x30
mov edx, dword [eax + ebx*4]
push dword [edx + 0x10]
push 0x48e400
call fcn.00413798
push 0x48e400
push 0x48e580
call fcn.00412f90
push 2
push 0x48e4a4
push 0x10
push 0x48e580
call fcn.0041be78
add esp, 0x24
mov esi, ebp
mov edi, 0x48e4a4
mov ecx, 2
xor eax, eax
test ecx, ecx
je 0x417262
mov al, byte [esi]
sub al, byte [edi]
jne 0x417262
add esi, 1
add edi, 1
sub ecx, 1
jne 0x417251
seta al
setb cl
sub al, cl
movsx eax, al
test eax, eax
je 0x41728d
add ebx, 0xffffffff
cmp ebx, 0xffffffff
jne 0x4171fa
mov ebp, dword [esp + 8]
mov eax, dword [esp + 0x28]
mov esi, 0x48e45d
mov dword [eax], ebp
jmp 0x41718a
mov edi, dword [esp + 4]
mov ebp, dword [esp]
mov esi, ebx
mov ebx, dword [esp + 8]
mov edx, 0x48e45c
mov eax, 0x48e478
mov ecx, dword [eax]
mov dword [edx], ecx
mov ecx, dword [eax + 4]
mov dword [edx + 4], ecx
mov ecx, dword [eax + 8]
mov dword [edx + 8], ecx
mov ecx, dword [eax + 0xc]
mov dword [edx + 0xc], ecx
mov ecx, dword [eax + 0x10]
mov dword [edx + 0x10], ecx
mov ecx, dword [eax + 0x14]
mov dword [edx + 0x14], ecx
movzx eax, byte [eax + 0x18]
mov byte [edx + 0x18], al
mov ecx, dword [esp + 0x10]
mov eax, dword [ecx + esi*4]
mov eax, dword [eax + 0x10]
mov ecx, dword [eax]
mov edx, 0x48e7d4
mov dword [edx], ecx
mov ecx, dword [eax + 4]
mov dword [edx + 4], ecx
mov ecx, dword [eax + 8]
mov dword [edx + 8], ecx
mov eax, dword [eax + 0xc]
mov dword [edx + 0xc], eax
mov eax, dword [esp + 0x10]
mov edx, dword [eax + esi*4]
mov eax, dword [edx + 0x10]
mov dword [esp + 4], edi
add eax, 0x10
mov dword [esp], ebp
xor ecx, ecx
movzx edx, byte [eax]
xor byte [ecx + 0x48e7d4], dl
add eax, 1
add ecx, 1
cmp ecx, 0x10
jb 0x417308
mov edi, dword [esp + 4]
mov ebp, dword [esp]
mov dword [esp + 4], edi
mov dword [esp], ebp
xor edx, edx
add eax, 1
movzx ecx, byte [eax - 1]
xor byte [edx + 0x48e7d4], cl
add edx, 1
cmp edx, 0x10
jb 0x41732c
mov edi, dword [esp + 4]
mov ebp, dword [esp]
push 0x13
push 0x48e47e
push 0x48e462
push 0x48e7d4
call fcn.0041c398
add esp, 0x10
mov ecx, dword [esp + 0x24]
mov eax, 0x48e478
mov edx, dword [eax]
mov dword [ecx], edx
mov edx, dword [eax + 4]
mov ecx, dword [esp + 0x24]
mov dword [ecx + 4], edx
mov ecx, dword [esp + 0x24]
mov edx, dword [eax + 8]
mov dword [ecx + 8], edx
mov edx, dword [eax + 0xc]
mov ecx, dword [esp + 0x24]
mov dword [ecx + 0xc], edx
mov ecx, dword [esp + 0x24]
mov edx, dword [eax + 0x10]
mov dword [ecx + 0x10], edx
mov edx, dword [eax + 0x14]
mov ecx, dword [esp + 0x24]
mov dword [ecx + 0x14], edx
mov edx, dword [esp + 0x24]
movzx eax, byte [eax + 0x18]
mov byte [edx + 0x18], al
mov edx, dword [esp + 0x28]
mov ecx, dword [esp + 0x10]
mov dword [edx], ebx
mov eax, dword [ecx + esi*4]
add esp, 0x14
pop ebx
pop esi
ret