Function at 0x415f88
Capabilities:
Encode data using xor

Disassembly:
mov al, byte [str.Viv8]
sub esp, 0x2c
mov ecx, dword [0x42b9e0]
or al, 0x1f
xor ecx, 0x8d04
mov byte [0x42b9cc], al
movzx eax, cx
push ebx
push ebp
push esi
push edi
mov word [0x42b9d0], cx
add eax, 0x3a43c94e
push 4
pop ecx
mov dword [str.EfMd], eax
call fcn.0041ebdb
mov edi, eax
test edi, edi
je 0x4164c7
mov dx, word [0x42b9d0]
mov cl, dl
movzx eax, dx
imul eax, eax, 0x4ad34db6
and cl, 0xf9
mov byte [0x42b9ae], cl
movzx ecx, cl
imul ecx, ecx, 0x15624ade
push 0x428f24
mov dword [0x42b9e0], eax
mov al, byte [str.EfMd]
add al, 0x28
mov byte [0x42b9cc], al
movzx eax, byte [0x42b9c4]
mov dword [0x42b9f0], ecx
mov ecx, 0x99ad
and ax, cx
push edi
mov word [0x42b9d0], ax
call fcn.00405af6
pop ecx
pop ecx
test eax, eax
je 0x4164ad
mov eax, dword [0x42b9f0]
or eax, 0xf3a9
mov word [0x42b9d0], ax
and al, 0xf0
push 0x1000
mov byte [0x42b9ae], al
call fcn.0040570b
movzx edx, byte [0x42b9c4]
mov esi, eax
pop ecx
lea ecx, [edx + 0x391ef516]
mov dword [0x42b9f0], ecx
lea ecx, [edx + 0x2cec77cc]
mov dword [str.Viv8], ecx
test esi, esi
je 0x4164ad
mov edx, dword [str.EfMd]
push 0x7c
pop eax
mov word [esp + 0x18], ax
xor eax, eax
mov word [esp + 0x1a], ax
lea ecx, [edx + 0x1b]
and dword [esp + 0x1c], 0
or edx, 0x26ce3108
movzx eax, cl
xor cl, 0x41
and eax, 0x367643ad
mov byte [0x42b9cc], cl
mov dword [str.Viv8], eax
mov ecx, 0x82f6
mov al, byte [0x42b9e0]
add al, 0x70
mov dword [0x42b9f0], edx
xor al, 0x95
mov byte [0x42b9ae], al
movzx eax, al
or ax, cx
mov word [0x42b9d0], ax
lea eax, [esp + 0x1c]
push eax
lea eax, [esp + 0x1c]
push eax
push edi
call fcn.004057dc
mov edx, dword [0x42b9f0]
mov ebx, eax
or edx, 0x6f02bed7
add esp, 0xc
mov dword [0x42b9f0], edx
test ebx, ebx
je 0x41649a
mov word [esp + 0x10], 0xd39a
mov byte [esp + 0x12], 0xcc
xor ecx, ecx
mov al, byte [esp + ecx + 0x10]
xor al, 0xbf
movzx eax, al
mov word [esp + ecx*2 + 0x28], ax
inc ecx
cmp ecx, 3
jl 0x416118
xor eax, eax
xor edx, 0xfb67
mov word [esp + 0x2e], ax
mov eax, dword [str.Viv8]
add eax, 0xfe8c209a
mov word [0x42b9d0], dx
mov dword [0x42b9f0], eax
mov al, byte [0x42b9ae]
xor al, 0x6d
mov byte [0x42b9cc], al
lea eax, [esp + 0x28]
push ebx
push eax
call fcn.00422d73
pop ecx
pop ecx
imul ecx, dword [0x42b9f0], 0xa51f99fa
mov ebp, eax
mov edx, ecx
xor edx, 0x8655
mov word [0x42b9d0], dx
test ebp, ebp
je 0x416451
mov eax, dword [0x42b9e0]
add cl, 0x51
add eax, 0x5f6cc9d
mov byte [0x42b9c4], cl
mov dword [str.EfMd], eax
movzx eax, dx
imul eax, eax, 0x6b8128d2
sub eax, 0x6008a992
mov dword [str.Viv8], eax
lea eax, [esp + 0x1c]
push eax
lea eax, [esp + 0x1c]
push eax
push 0
call fcn.004057dc
movzx ecx, byte [0x42b9ae]
add esp, 0xc
or ecx, 0x45a0d4ea
mov edx, 0x5060ff33
mov dword [0x42b9e0], ecx
xor ecx, ecx
inc ecx
push 0x800
push esi
push eax
call fcn.004155a6
call eax
test eax, eax
je 0x416415
mov word [esp + 0x14], 0xd891
xor ecx, ecx
mov byte [esp + 0x16], 0xdf
movzx eax, byte [esp + ecx + 0x14]
mov edx, 0xff
sub ax, 0x6c
and ax, dx
mov word [esp + ecx*2 + 0x30], ax
inc ecx
cmp ecx, 3
jl 0x416209
or byte [0x42b9cc], 0x30
xor eax, eax
mov word [esp + 0x36], ax
mov eax, 0x3b9a
xor word [0x42b9d0], ax
push esi
call fcn.0040581e
mov bl, byte [0x42b9ae]
mov edx, eax
pop ecx
movzx ecx, byte [str.EfMd]
imul ecx, ecx, 0xb0
movzx eax, word [esi + edx*2 - 2]
mov byte [0x42b9cc], cl
movzx ecx, word [0x42b9d0]
xor ecx, 0x7be820ba
mov dword [0x42b9e0], ecx
cmp eax, 0x5c
je 0x416283
cmp eax, 0x2f
jne 0x4162a3
movzx eax, bl
and eax, 0xc695b05e
mov dword [str.Viv8], eax
mov al, byte [0x42b9f0]
and al, 0xd4
mov byte [0x42b9cc], al
xor eax, eax
mov word [esi + edx*2 - 2], ax
movzx eax, bl
or ecx, 0x6a79cb32
add eax, 0x17918df2
mov dword [0x42b9f0], ecx
mov dword [str.EfMd], eax
lea eax, [esp + 0x1c]
push eax
lea eax, [esp + 0x1c]
push eax
push 0
call fcn.004057dc
movzx ecx, word [0x42b9d0]
add esp, 0xc
add ecx, 0x1d3c9b5d
mov dword [str.EfMd], ecx
push eax
lea eax, [esp + 0x34]
push eax
call fcn.00422d73
or byte [0x42b9c4], 0xe9
mov ebx, eax
pop ecx
pop ecx
test ebx, ebx
je 0x41640d
movzx eax, byte [0x42b9cc]
movzx edx, byte [0x42b9ae]
mov cl, byte [0x42b9e0]
and edx, 0xb354438a
mov dword [esp + 0x24], 0x5066
and cl, 0xbf
or ax, word [esp + 0x24]
mov word [0x42b9d0], ax
movzx eax, byte [0x42b9cc]
and eax, 0x3a679ac2
mov dword [0x42b9e0], edx
mov dword [str.Viv8], eax
and edx, 0x4146bdb0
lea eax, [esp + 0x1c]
mov byte [0x42b9c4], cl
push eax
lea eax, [esp + 0x1c]
mov byte [esp + 0x24], 0
push eax
push 0
mov dword [0x42b9f0], edx
call fcn.004057dc
mov edx, dword [str.Viv8]
add esp, 0xc
cmp word [eax], 0x31
jne 0x4163b9
movzx eax, byte [0x42b9cc]
imul eax, eax, 0x2f
mov byte [esp + 0x20], 1
sub al, 0x45
mov byte [0x42b9cc], al
mov eax, dword [0x42b9f0]
and eax, 0xb520bd84
imul ecx, eax, 0xe4d2c838
mov eax, edx
or eax, 0x3caae5b8
mov dword [str.EfMd], eax
mov dword [0x42b9f0], ecx
jmp 0x4163bf
mov ecx, dword [0x42b9f0]
push dword [esp + 0x20]
movzx eax, cl
mov ecx, esi
imul eax, eax, 0x50
push ebx
mov byte [0x42b9c4], al
imul eax, edx, 0x446984fc
mov edx, ebp
mov dword [0x42b9e0], eax
call fcn.004164ef
mov eax, dword [0x42b9f0]
or eax, 0x784a
mov word [0x42b9d0], ax
movzx eax, byte [0x42b9ae]
or eax, 0x37ef81a7
push ebx
mov dword [0x42b9f0], eax
call fcn.004056f0
add esp, 0xc
mov ecx, dword [0x42b9e0]
jmp 0x416432
mov ecx, dword [0x42b9e0]
mov eax, ecx
xor eax, 0x10ff4584
mov dword [str.EfMd], eax
lea eax, [ecx - 0x2d88035f]
mov dword [0x42b9f0], eax
imul eax, ecx, 0x24114736
push ebp
mov dword [0x42b9e0], eax
and al, 0xd8
mov byte [0x42b9ae], al
call fcn.004056f0
pop ecx
mov ecx, dword [str.EfMd]
movzx eax, byte [0x42b9c4]
xor cl, 0xf4
or eax, 0x9a8f88bc
mov byte [0x42b9cc], cl
mov dword [str.Viv8], eax
and eax, 0xb8d313f3
mov dword [str.EfMd], eax
lea eax, [esp + 0x1c]
push eax
lea eax, [esp + 0x1c]
push eax
push 0
call fcn.004057dc
mov ebx, eax
add esp, 0xc
test ebx, ebx
je 0x41649a
mov edx, dword [0x42b9f0]
jmp 0x416116
mov al, byte [0x42b9e0]
or al, 0xd8
push esi
mov byte [0x42b9ae], al
call fcn.004056f0
pop ecx
movzx eax, byte [0x42b9c4]
add eax, 0x50548370
push edi
mov dword [0x42b9e0], eax
call fcn.004056f0
pop ecx
jmp 0x4164e7
movzx eax, byte [0x42b9cc]
or eax, 0xf8991ade
mov dword [str.Viv8], eax
movzx eax, byte [0x42b9f0]
imul eax, eax, 0x6a
mov byte [0x42b9ae], al
pop edi
pop esi
pop ebp
pop ebx
add esp, 0x2c
ret