Function at 0x4190c0
Capabilities:
Encode data using xor

Disassembly:
sub esp, 0x30
mov eax, dword [0x46dff0]
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 0x419101
pop edi
pop esi
mov eax, 0xfffffffb
pop ebp
mov ecx, dword [esp + 0x2c]
xor ecx, esp
call fcn.00437ed4
add esp, 0x30
ret
mov cl, byte [esi]
cmp cl, 5
je 0x419125
cmp byte [esi + 1], 1
jne 0x419125
pop edi
pop esi
mov eax, 0xfffffffa
pop ebp
mov ecx, dword [esp + 0x2c]
xor ecx, esp
call fcn.00437ed4
add esp, 0x30
ret
test ebp, ebp
je 0x419430
mov eax, dword [esp + 0x48]
test eax, eax
jle 0x419430
cdq
and edx, 0x7f
add eax, edx
movsx ecx, cl
sar eax, 7
sub ecx, 3
push ebx
mov dword [esp + 0x14], eax
je 0x4193f5
sub ecx, 1
je 0x419344
sub ecx, 1
je 0x419177
pop ebx
pop edi
pop esi
or eax, 0xffffffff
pop ebp
mov ecx, dword [esp + 0x2c]
xor ecx, esp
call fcn.00437ed4
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 0x41941a
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.004181e0
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 0x4191a2
mov eax, dword [esp + 0x10]
dec eax
mov dword [esp + 0x10], eax
test eax, eax
jg 0x4191a0
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.00437ed4
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 0x41941a
lea eax, [esp + 0x2c]
push eax
push ebp
push esi
call fcn.004185e0
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 0x419368
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.00437ed4
add esp, 0x30
ret
mov ebx, eax
test eax, eax
jle 0x41941a
jmp 0x419400
push edi
push ebp
push esi
call fcn.004185e0
dec ebx
add esp, 0xc
add ebp, 0x10
add edi, 0x10
test ebx, ebx
jg 0x419400
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.00437ed4
add esp, 0x30
ret
mov ecx, dword [esp + 0x38]
pop edi
pop esi
pop ebp
xor ecx, esp
xor eax, eax
call fcn.00437ed4
add esp, 0x30
ret