Function at 0x415ea0
Capabilities:
Encode data using xor

Disassembly:
sub esp, 0x14c
mov eax, dword [0x56c3c0]
xor eax, esp
mov dword [esp + 0x144], eax
cmp dword [esp + 0x150], 0
push ebx
push ebp
mov ebp, dword [esp + 0x15c]
push esi
mov esi, ecx
push edi
mov dword [esp + 0x1c], esi
mov dword [esp + 0x20], ebp
jbe 0x4160cf
jmp 0x415ee0
mov al, byte [ebp]
cmp al, 2
jne 0x416004
mov eax, dword [esp + 0x1c]
lea esi, [ebp + 4]
mov ecx, 0x42
lea edi, [esp + 0x48]
rep movsd dword es:[edi], dword [esi]
mov ebx, dword [esp + 0x48]
mov edx, dword [esp + 0x4c]
add eax, 2
mov edi, 0x80
jmp 0x415f14
mov dl, byte [esp + 0x18]
inc bl
movzx ecx, bl
mov bl, byte [esp + ecx + 0x50]
add dl, bl
movzx edx, dl
mov dword [esp + 0x18], edx
lea edx, [esp + edx + 0x50]
mov dword [esp + 0x34], edx
mov dl, byte [edx]
mov byte [esp + ecx + 0x50], dl
mov esi, dword [esp + 0x34]
add dl, bl
mov byte [esi], bl
movzx edx, dl
movzx edx, byte [esp + edx + 0x50]
xor byte [eax - 2], dl
inc cl
movzx ecx, cl
movzx edx, byte [esp + ecx + 0x50]
mov byte [esp + 0x17], bl
mov byte [esp + 0x17], dl
mov dl, byte [esp + 0x18]
add dl, byte [esp + 0x17]
movzx ebx, byte [esp + 0x17]
movzx edx, dl
lea esi, [esp + edx + 0x50]
mov dword [esp + 0x18], edx
mov dl, byte [esi]
mov byte [esp + ecx + 0x50], dl
add dl, byte [esp + 0x17]
mov byte [esi], bl
movzx edx, dl
movzx edx, byte [esp + edx + 0x50]
xor byte [eax - 1], dl
inc cl
movzx ecx, cl
movzx edx, byte [esp + ecx + 0x50]
mov byte [esp + 0x17], dl
mov dl, byte [esp + 0x18]
add dl, byte [esp + 0x17]
movzx ebx, byte [esp + 0x17]
movzx edx, dl
lea esi, [esp + edx + 0x50]
mov dword [esp + 0x18], edx
mov dl, byte [esi]
mov byte [esp + ecx + 0x50], dl
add dl, byte [esp + 0x17]
mov byte [esi], bl
inc cl
movzx edx, dl
movzx edx, byte [esp + edx + 0x50]
xor byte [eax], dl
movzx ebx, cl
mov dl, byte [esp + ebx + 0x50]
mov cl, byte [esp + 0x18]
add cl, dl
movzx ecx, cl
lea esi, [esp + ecx + 0x50]
mov dword [esp + 0x18], ecx
mov cl, byte [esi]
mov byte [esp + ebx + 0x50], cl
add cl, dl
movzx ecx, cl
mov byte [esi], dl
movzx edx, byte [esp + ecx + 0x50]
xor byte [eax + 1], dl
add eax, 4
sub edi, 1
jne 0x415f10
jmp 0x4160b3
cmp al, 3
je 0x4160b3
cmp al, 4
je 0x4160b3
cmp al, 5
je 0x4160b3
cmp al, 1
jne 0x4160b3
mov eax, dword [esp + 0x20]
mov ecx, dword [eax + 0x1f0]
mov edi, dword [ebp + 0x1e4]
mov ebx, dword [ebp + 0x1e8]
mov ebp, dword [ebp + 0x1ec]
mov dword [esp + 0x44], ecx
mov dword [esp + 0x18], 0x20
mov eax, dword [esp + 0x20]
lea edx, [esp + 0x24]
push edx
add eax, 4
push eax
mov ecx, esi
call fcn.00418950
mov edx, dword [esp + 0x4c]
mov eax, dword [esp + 0x2c]
mov ecx, dword [esp + 0x30]
xor dword [esp + 0x34], ebp
mov ebp, dword [esi + 8]
xor dword [esp + 0x38], edx
mov edx, dword [esi + 0xc]
xor eax, edi
mov edi, dword [esi]
xor ecx, ebx
mov ebx, dword [esi + 4]
mov dword [esi], eax
mov dword [esi + 4], ecx
mov dword [esp + 0x2c], eax
mov eax, dword [esp + 0x34]
mov dword [esp + 0x30], ecx
mov ecx, dword [esp + 0x38]
mov dword [esi + 8], eax
mov dword [esi + 0xc], ecx
add esp, 8
add esi, 0x10
sub dword [esp + 0x18], 1
mov dword [esp + 0x44], edx
jne 0x41604c
mov ebp, dword [esp + 0x20]
mov esi, dword [esp + 0x1c]
add esi, 0x200
sub dword [esp + 0x160], 1
mov dword [esp + 0x1c], esi
jne 0x415ee0
mov ecx, dword [esp + 0x154]
pop edi
pop esi
pop ebp
pop ebx
xor ecx, esp
call fcn.004d6555
add esp, 0x14c
ret