Function at 0x419620
Capabilities:
Encode data using xor

Disassembly:
mov eax, 0x48b398
call fcn.0046c6d8
sub esp, 0x134
push ebx
push esi
push edi
mov eax, dword [ebp + 0x40]
mov dword [ebp - 4], 2
add eax, 0x44
push eax
call fcn.0046bedc
mov ebx, dword [ebp + 0x48]
pop ecx
test ebx, ebx
mov esi, eax
je 0x419683
push ebx
call fcn.0046c750
mov edi, eax
pop ecx
cmp edi, 0x20
jge 0x41967e
push edi
push ebx
push esi
call fcn.0046c3a0
push 0x20
pop eax
sub eax, edi
add edi, esi
push eax
push 0x50ae70
push edi
call fcn.0046c3a0
add esp, 0x18
jmp 0x419693
push 0x20
push ebx
jmp 0x41968a
push 0x20
push 0x50ae70
push esi
call fcn.0046c3a0
add esp, 0xc
lea ecx, [ebp + 0x14]
call fcn.0040e21d
push 0x20
lea eax, [esi + 0x20]
push dword [ebp + 0x18]
push eax
call fcn.0046c3a0
mov eax, dword [ebp + 0x34]
add esp, 0xc
mov ecx, eax
mov byte [esi + 0x40], al
sar ecx, 8
mov byte [esi + 0x41], cl
mov ecx, eax
sar ecx, 0x10
sar eax, 0x18
mov byte [esi + 0x42], cl
mov byte [esi + 0x43], al
mov eax, dword [ebp + 0x3c]
test eax, eax
jne 0x4196d4
mov eax, 0x48e914
push dword [ebp + 0x40]
push eax
lea eax, [esi + 0x44]
push eax
call fcn.0046c3a0
mov eax, dword [ebp + 0x40]
mov ebx, dword [ebp + 0x4c]
add eax, 0x44
push ebx
push eax
push esi
call fcn.00419b44
add esp, 0x18
cmp dword [ebp + 0xc], 3
jne 0x41970e
push 0x32
pop edi
push ebx
push dword [ebp + 0x10]
push ebx
call fcn.00419b44
add esp, 0xc
dec edi
jne 0x4196fe
cmp dword [ebp + 0xc], 2
jne 0x419793
lea eax, [ebp - 0x140]
push eax
push dword [ebp + 0x10]
push ebx
call fcn.00419a7a
and byte [ebp - 0xd], 0
and byte [ebp - 0xe], 0
add esp, 0xc
xor edi, edi
cmp dword [ebp + 0x2c], edi
jb 0x41974b
cmp dword [ebp + 0x28], 0
je 0x41974b
lea ecx, [ebp + 0x24]
call fcn.0040e21d
mov eax, dword [ebp + 0x28]
add eax, edi
jmp 0x419750
mov eax, 0x48e914
mov al, byte [eax]
push eax
lea eax, [ebp - 0xd]
push eax
lea eax, [ebp - 0xe]
push eax
lea eax, [ebp - 0x140]
push eax
call fcn.00419ae6
add esp, 0x10
mov byte [ebp + edi - 0x40], al
inc edi
cmp edi, 0x20
jl 0x419731
push 0x20
lea eax, [ebp - 0x40]
push 0x50ae70
push eax
call fcn.0046d4e0
add esp, 0xc
mov edi, eax
neg edi
sbb edi, edi
inc edi
jmp 0x419878
cmp dword [ebp + 0xc], 3
jne 0x419876
lea ecx, [ebp + 0x24]
call fcn.0040e21d
push 0x20
lea eax, [ebp - 0x40]
push dword [ebp + 0x28]
push eax
call fcn.0046c3a0
add esp, 0xc
mov dword [ebp + 0xc], 0x13
xor edi, edi
cmp dword [ebp + 0x10], edi
jle 0x4197de
mov ecx, dword [ebp + 0x4c]
lea eax, [ebp - 0x20]
sub ecx, eax
lea eax, [ebp + edi - 0x20]
mov dl, byte [ecx + eax]
xor dl, byte [ebp + 0xc]
inc edi
cmp edi, dword [ebp + 0x10]
mov byte [eax], dl
jl 0x4197cc
lea eax, [ebp - 0x140]
push eax
lea eax, [ebp - 0x20]
push dword [ebp + 0x10]
push eax
call fcn.00419a7a
and byte [ebp - 0xd], 0
and byte [ebp - 0xe], 0
add esp, 0xc
xor ebx, ebx
mov al, byte [ebp + ebx - 0x40]
lea edi, [ebp + ebx - 0x40]
push eax
lea eax, [ebp - 0xd]
push eax
lea eax, [ebp - 0xe]
push eax
lea eax, [ebp - 0x140]
push eax
call fcn.00419ae6
add esp, 0x10
inc ebx
cmp ebx, 0x20
mov byte [edi], al
jl 0x4197fe
dec dword [ebp + 0xc]
jns 0x4197bd
push 0x20
push 0x50ae70
push esi
call fcn.0046c3a0
mov eax, dword [ebp + 0x3c]
add esp, 0xc
test eax, eax
jne 0x419847
mov eax, 0x48e914
push dword [ebp + 0x40]
push eax
lea eax, [esi + 0x20]
push eax
call fcn.0046c3a0
mov eax, dword [ebp + 0x40]
push esi
add eax, 0x20
push eax
push esi
call fcn.00419b44
push 0x10
lea eax, [ebp - 0x40]
push esi
push eax
call fcn.0046d4e0
add esp, 0x24
jmp 0x419787
xor edi, edi
push esi
call fcn.0046be94
pop ecx
mov byte [ebp - 4], 1
push 1
lea ecx, [ebp + 0x14]
call fcn.00405ef0
and byte [ebp - 4], 0
push 1
lea ecx, [ebp + 0x24]
call fcn.00405ef0
or dword [ebp - 4], 0xffffffff
push 1
lea ecx, [ebp + 0x38]
call fcn.00405ef0
mov ecx, dword [ebp - 0xc]
mov eax, edi
pop edi
pop esi
pop ebx
mov dword fs:[0], ecx
leave
ret