Function at 0x415789
Capabilities:
Encode data using xor

Disassembly:
sub esp, 0x180
push ebx
movzx ebx, byte [0x42c95e]
mov eax, 0x81fa
imul ebx, eax
push ebp
push esi
push edi
push ecx
movzx eax, bx
mov edi, ecx
mov dword [esp + 0x14], eax
sub bl, 0x41
lea eax, [esp + 0x48]
mov dword [esp + 0x44], edx
push eax
push ecx
mov byte [0x42c95e], bl
call fcn.00415c70
mov ebp, eax
add esp, 0xc
mov dword [esp + 0x3c], ebp
test ebp, ebp
je 0x415b7b
mov ebx, dword [esp + 0x10]
xor ecx, ecx
mov edx, dword [ebp + 0x20]
add bl, 0x3e
and bl, 0xf9
mov dword [esp + 0x10], ecx
sub bl, 0x1a
add edx, edi
or bl, 0xb2
mov dword [esp + 0x4c], edx
sub bl, 0x28
mov byte [0x42c95e], bl
cmp dword [ebp + 0x18], ecx
jbe 0x415b7b
push dword [esp + 0x40]
xor bl, 0x4d
mov esi, 0x1b91
movzx eax, bl
add ax, si
mov byte [0x42c95e], bl
mov esi, 0x653b
or ax, si
mov word [0x42c920], ax
mov eax, dword [edx + ecx*4]
add eax, edi
push eax
call fcn.00406800
pop ecx
pop ecx
test eax, eax
jne 0x415b3d
mov edx, dword [esp + 0x10]
mov eax, dword [ebp + 0x24]
mov ecx, dword [ebp + 0x1c]
add ecx, edi
lea eax, [eax + edx*2]
movzx eax, word [eax + edi]
mov ecx, dword [ecx + eax*4]
lea edx, [ecx + edi]
cmp edx, ebp
jb 0x415b5a
mov eax, dword [esp + 0x44]
add eax, ebp
cmp edx, eax
jae 0x415b5a
mov dword [esp + 0x14], 0xfae6f1ff
xor ecx, ecx
mov dword [esp + 0x18], 0xa6a7f8f1
mov dword [esp + 0x1c], 0xf8f8f0ba
mov al, byte [esp + ecx + 0x14]
xor al, 0x94
movzx eax, al
mov word [esp + ecx*2 + 0x74], ax
inc ecx
cmp ecx, 0xc
jl 0x41588a
xor eax, eax
xor ebx, ebx
mov word [esp + 0x8c], ax
mov al, 0xfd
cmp byte [edx], bl
je 0x415901
lea ebp, [esp + 0x90]
mov cl, al
sub ebp, edx
mov esi, edx
mov dword [esp + 0x48], ebp
mov ebp, dword [esp + 0x3c]
cmp ebx, 0x7c
jae 0x415901
mov ebp, dword [esp + 0x48]
and cl, 0x78
mov al, byte [esi]
not cl
dec cl
xor cl, 0x70
mov byte [esi + ebp], al
mov al, cl
mov ebp, dword [esp + 0x3c]
xor al, 7
cmp byte [esi], 0x2e
je 0x4158f5
inc ebx
mov cl, al
inc esi
cmp byte [esi], 0
jne 0x4158c5
jmp 0x415901
or cl, 0x3e
movzx eax, cl
imul eax, eax, 0x82
lea ecx, [edx + 1]
mov dword [esp + ebx + 0x91], 0x6c6c64
add ecx, ebx
xor al, 0xa9
xor edx, edx
mov byte [0x42c95e], al
cmp byte [ecx], dl
je 0x415947
lea esi, [esp + 0x110]
mov bl, al
sub esi, ecx
mov al, bl
cmp edx, 0x7f
jae 0x415947
mov al, byte [ecx]
inc edx
mov byte [ecx + esi], al
mov bl, 0xde
inc ecx
mov byte [0x42c95e], 0xde
mov al, bl
cmp byte [ecx], 0
jne 0x415929
movzx ecx, al
mov eax, 0xbcbf
imul ecx, eax
mov eax, 0x3bde
mov byte [esp + edx + 0x110], 0
or cx, ax
mov word [0x42c920], cx
lea ecx, [esp + 0x74]
call fcn.00415b99
mov bl, byte [0x42c95e]
mov esi, eax
xor bl, 0xde
or bl, 0x4e
mov byte [0x42c95e], bl
test esi, esi
je 0x415b43
movzx ecx, word [0x42c920]
lea edx, [esp + 0x60]
movaps xmm1, xmmword [0x429fe0]
mov eax, 0xce32
imul ecx, eax
mov eax, 0x1467
mov dword [esp + 0x2c], 0x172e3f1d
mov dword [esp + 0x30], 0x362f3e35
mov dword [esp + 0x34], 0x343b123f
mov dword [esp + 0x38], 0x1b3f363e
movups xmm0, xmmword [esp + 0x2c]
xor cx, ax
mov byte [esp + 0x70], 0
mov word [0x42c920], cx
sub cl, 0x44
pxor xmm1, xmm0
mov byte [0x42c95e], cl
push 0
mov ecx, esi
movups xmmword [esp + 0x64], xmm1
call fcn.00415789
pop ecx
movzx ecx, byte [0x42c95e]
mov edx, eax
imul ecx, ecx, 0xfb
mov bl, cl
mov byte [0x42c95e], bl
test edx, edx
je 0x415b43
add cl, 0x23
or cl, 0x1b
movzx eax, cl
mov byte [0x42c95e], cl
mov ecx, 0xec8e
and ax, cx
mov ecx, 0x2434
sub ax, cx
mov word [0x42c920], ax
lea eax, [esp + 0x90]
push eax
call edx
mov edi, eax
mov ax, word [0x42c920]
lea edx, [eax - 0x60]
test edi, edi
jne 0x415afd
mov dword [esp + 0x20], 0x2c292704
xor ecx, ecx
mov dword [esp + 0x24], 0x3a2a2104
mov dword [esp + 0x28], 0x9313a29
mov al, byte [esp + ecx + 0x20]
xor al, 0x48
mov byte [esp + ecx + 0x50], al
inc ecx
cmp ecx, 0xc
jl 0x415a78
movzx ecx, dl
mov eax, 0x21cc
imul ecx, eax
lea edx, [esp + 0x50]
push 0
mov byte [esp + 0x60], 0
mov word [0x42c920], cx
xor cl, 0xeb
mov byte [0x42c95e], cl
mov ecx, esi
call fcn.00415789
pop ecx
mov ecx, eax
mov edx, 0xe2aa
movzx eax, byte [0x42c95e]
and ax, dx
test ecx, ecx
je 0x415afd
sub al, 0x19
mov edx, 0x231
mov byte [0x42c95e], al
movzx eax, al
and ax, dx
mov edx, 0x15cc
or ax, dx
mov word [0x42c920], ax
lea eax, [esp + 0x90]
push eax
call ecx
mov edi, eax
mov ax, word [0x42c920]
or al, 0xef
mov bl, al
mov byte [0x42c95e], bl
test edi, edi
je 0x415b43
push dword [esp + 0x194]
add al, al
lea edx, [esp + 0x114]
sub al, 0x2c
mov ecx, 0xdb70
mov byte [0x42c95e], al
movzx eax, al
or ax, cx
mov ecx, edi
mov word [0x42c920], ax
call fcn.00415789
pop ecx
jmp 0x415b8e
mov bl, byte [0x42c95e]
mov ecx, dword [esp + 0x10]
inc ecx
mov dword [esp + 0x10], ecx
cmp ecx, dword [ebp + 0x18]
jae 0x415b7b
mov edx, dword [esp + 0x4c]
jmp 0x415806
cmp byte [esp + 0x194], 0
mov eax, 0x7bd7
mov word [0x42c920], ax
cmove ecx, edx
mov byte [0x42c95e], 0xc
mov eax, ecx
jmp 0x415b8e
movzx eax, bl
mov ecx, 0x5b2d
sub ax, cx
mov word [0x42c920], ax
xor eax, eax
pop edi
pop esi
pop ebp
pop ebx
add esp, 0x180
ret