Function at 0x415a50
Capabilities:
Encode data using xor

Disassembly:
sub esp, 0x30
mov eax, dword [0x46aff0]
xor eax, esp
mov dword [esp + 0x2c], eax
push ebp
mov ebp, dword [esp + 0x3c]
push esi
mov esi, dword [esp + 0x3c]
cmp byte [esi + 0x148], 9
push edi
mov edi, dword [esp + 0x4c]
mov dword [esp + 0x14], esi
je 0x415a91
pop edi
pop esi
mov eax, 0xfffffffb
pop ebp
mov ecx, dword [esp + 0x2c]
xor ecx, esp
call fcn.00434834
add esp, 0x30
ret
mov cl, byte [esi]
cmp cl, 5
je 0x415ab5
cmp byte [esi + 1], 1
jne 0x415ab5
pop edi
pop esi
mov eax, 0xfffffffa
pop ebp
mov ecx, dword [esp + 0x2c]
xor ecx, esp
call fcn.00434834
add esp, 0x30
ret
test ebp, ebp
je 0x415dc0
mov eax, dword [esp + 0x48]
test eax, eax
jle 0x415dc0
cdq
and edx, 0x7f
add eax, edx
movsx ecx, cl
sar eax, 7
sub ecx, 3
push ebx
mov dword [esp + 0x14], eax
je 0x415d85
sub ecx, 1
je 0x415cd4
sub ecx, 1
je 0x415b07
pop ebx
pop edi
pop esi
or eax, 0xffffffff
pop ebp
mov ecx, dword [esp + 0x2c]
xor ecx, esp
call fcn.00434834
add esp, 0x30
ret
mov ecx, dword [esi + 0x44]
mov edx, dword [esi + 0x48]
mov dword [esp + 0x1c], ecx
mov ecx, dword [esi + 0x4c]
mov dword [esp + 0x20], edx
mov edx, dword [esi + 0x50]
mov dword [esp + 0x24], ecx
mov dword [esp + 0x28], edx
mov dword [esp + 0x10], eax
test eax, eax
jle 0x415daa
nop
xor esi, esi
mov ecx, dword [esp + 0x20]
mov eax, dword [esp + 0x1c]
mov edx, dword [esp + 0x24]
mov bl, byte [esp + 0x1d]
mov dword [esp + 0x2c], eax
mov eax, dword [esp + 0x28]
mov dword [esp + 0x30], ecx
lea ecx, [esp + 0x2c]
mov dword [esp + 0x34], edx
push ecx
mov edx, ecx
mov dword [esp + 0x3c], eax
mov eax, dword [esp + 0x1c]
push edx
push eax
call fcn.00414b70
mov dl, byte [esp + 0x28]
mov al, byte [esp + 0x2a]
add dl, dl
mov cl, bl
shr cl, 7
or cl, dl
mov byte [esp + 0x28], cl
mov cl, al
shr cl, 7
add bl, bl
or cl, bl
mov byte [esp + 0x29], cl
mov cl, byte [esp + 0x2b]
mov dl, cl
shr dl, 7
add al, al
or dl, al
mov al, byte [esp + 0x2c]
mov byte [esp + 0x2a], dl
mov dl, al
shr dl, 7
add cl, cl
or dl, cl
mov cl, byte [esp + 0x2d]
mov byte [esp + 0x2b], dl
mov dl, cl
shr dl, 7
add al, al
or dl, al
mov al, byte [esp + 0x2e]
mov byte [esp + 0x2c], dl
mov dl, al
shr dl, 7
add cl, cl
or dl, cl
mov cl, byte [esp + 0x2f]
mov byte [esp + 0x2d], dl
mov dl, cl
shr dl, 7
add al, al
or dl, al
mov al, byte [esp + 0x30]
mov byte [esp + 0x2e], dl
mov dl, al
shr dl, 7
add cl, cl
or dl, cl
mov cl, byte [esp + 0x31]
mov byte [esp + 0x2f], dl
mov dl, cl
shr dl, 7
add al, al
or dl, al
mov al, byte [esp + 0x32]
mov byte [esp + 0x30], dl
mov dl, al
shr dl, 7
add cl, cl
or dl, cl
mov cl, byte [esp + 0x33]
mov byte [esp + 0x31], dl
mov dl, cl
add esp, 0xc
shr dl, 7
add al, al
or dl, al
mov al, byte [esp + 0x28]
mov byte [esp + 0x26], dl
add cl, cl
mov dl, al
shr dl, 7
or dl, cl
mov cl, byte [esp + 0x29]
mov byte [esp + 0x27], dl
mov dl, cl
shr dl, 7
add al, al
or dl, al
mov al, byte [esp + 0x2a]
add cl, cl
mov byte [esp + 0x28], dl
mov dl, al
shr dl, 7
or dl, cl
movzx ecx, byte [esp + 0x2b]
shr cl, 7
add al, al
or cl, al
mov byte [esp + 0x2a], cl
mov eax, esi
mov byte [esp + 0x29], dl
shr eax, 3
movzx ebx, byte [eax + ebp]
mov edx, esi
and edx, 7
mov cl, 7
sub cl, dl
shr bl, cl
movzx ecx, byte [esp + 0x2b]
and bl, 1
add cl, cl
or bl, cl
mov byte [esp + 0x2b], bl
movzx ebx, byte [esp + 0x2c]
and bl, 0x80
mov cl, dl
shr bl, cl
inc esi
xor byte [eax + edi], bl
cmp esi, 0x80
jl 0x415b32
mov eax, dword [esp + 0x10]
dec eax
mov dword [esp + 0x10], eax
test eax, eax
jg 0x415b30
mov eax, dword [esp + 0x14]
pop ebx
pop edi
pop esi
shl eax, 7
pop ebp
mov ecx, dword [esp + 0x2c]
xor ecx, esp
call fcn.00434834
add esp, 0x30
ret
mov edx, dword [esi + 0x48]
mov ecx, dword [esi + 0x4c]
mov ebx, dword [esi + 0x44]
mov dword [esp + 0x20], edx
mov edx, dword [esi + 0x50]
mov dword [esp + 0x24], ecx
mov dword [esp + 0x28], edx
mov dword [esp + 0x10], eax
test eax, eax
jle 0x415daa
lea eax, [esp + 0x2c]
push eax
push ebp
push esi
call fcn.00414f70
mov eax, dword [esp + 0x38]
mov ecx, dword [esp + 0x3c]
xor ecx, dword [esp + 0x2c]
mov edx, dword [esp + 0x40]
xor edx, dword [esp + 0x30]
xor eax, ebx
mov ebx, dword [esp + 0x34]
xor dword [esp + 0x44], ebx
mov ebx, dword [ebp]
mov dword [edi], eax
mov dword [esp + 0x38], eax
mov eax, dword [ebp + 4]
mov dword [edi + 4], ecx
mov dword [esp + 0x2c], eax
mov eax, dword [esp + 0x44]
mov dword [esp + 0x3c], ecx
mov ecx, dword [ebp + 8]
mov dword [edi + 8], edx
mov dword [esp + 0x40], edx
mov edx, dword [ebp + 0xc]
mov dword [edi + 0xc], eax
mov eax, dword [esp + 0x1c]
dec eax
add esp, 0xc
add ebp, 0x10
add edi, 0x10
mov dword [esp + 0x24], ecx
mov dword [esp + 0x28], edx
mov dword [esp + 0x10], eax
test eax, eax
jg 0x415cf8
mov eax, dword [esp + 0x14]
pop ebx
pop edi
pop esi
shl eax, 7
pop ebp
mov ecx, dword [esp + 0x2c]
xor ecx, esp
call fcn.00434834
add esp, 0x30
ret
mov ebx, eax
test eax, eax
jle 0x415daa
jmp 0x415d90
push edi
push ebp
push esi
call fcn.00414f70
dec ebx
add esp, 0xc
add ebp, 0x10
add edi, 0x10
test ebx, ebx
jg 0x415d90
mov eax, dword [esp + 0x14]
pop ebx
pop edi
pop esi
shl eax, 7
pop ebp
mov ecx, dword [esp + 0x2c]
xor ecx, esp
call fcn.00434834
add esp, 0x30
ret
mov ecx, dword [esp + 0x38]
pop edi
pop esi
pop ebp
xor ecx, esp
xor eax, eax
call fcn.00434834
add esp, 0x30
ret