Function at 0x41fe50
Capabilities:
Encode data using xor

Disassembly:
push ebp
mov ebp, esp
push ebx
push edi
push esi
and esp, 0xfffffff8
sub esp, 0x48
xor ebx, ebx
cmp dword [ecx], 0xffffffff
je 0x4202ad
mov edi, ecx
nop
nop
nop
nop
nop
nop
nop
mov esi, 2
sub esi, ebx
push 0xadeee8f4
push dword [0x44bd38]
call fcn.0043f9a0
add esp, 8
push 0
push esi
lea ecx, [esp + 0x20]
push ecx
push dword [edi]
call eax
test eax, eax
jle 0x41fea3
add ebx, eax
cmp ebx, 2
jl 0x41fe70
jmp 0x41fee6
cmp dword [edi], 0xffffffff
je 0x41fede
push 0x59ea2086
push dword [0x44bd38]
call fcn.0043f9a0
add esp, 8
push 2
push dword [edi]
call eax
push 0x2e775759
push dword [0x44bd38]
call fcn.0043f9a0
add esp, 8
push dword [edi]
call eax
mov dword [edi], 0xffffffff
test ebx, ebx
jle 0x420123
movzx eax, byte [esp + 0x19]
mov ecx, eax
not cl
or cl, 0x7f
add cl, al
inc cl
movzx eax, cl
mov dword [esp + 0x20], eax
mov dword [esp + 0x24], 0
xor ebx, ebx
cmp cl, 0x7f
mov dword [esp + 4], edi
je 0x41ff66
cmp eax, 0x7e
jne 0x42006c
mov word [esp + 8], 0
xor esi, esi
lea edi, [esp + 8]
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
mov ebx, 2
sub ebx, esi
push 0xadeee8f4
push dword [0x44bd38]
call fcn.0043f9a0
add esp, 8
push 0
push ebx
push edi
mov ecx, dword [esp + 0x10]
push dword [ecx]
call eax
test eax, eax
jle 0x41ffb6
add esi, eax
cmp esi, 2
jl 0x41ff30
jmp 0x41fff5
mov dword [esp + 0xc], 0
mov dword [esp + 8], 0
lea esi, [esp + 8]
nop
nop
nop
nop
nop
nop
mov edi, 8
sub edi, ebx
push 0xadeee8f4
push dword [0x44bd38]
call fcn.0043f9a0
add esp, 8
push 0
push edi
mov edi, dword [esp + 0xc]
push esi
push dword [edi]
call eax
test eax, eax
jle 0x420018
add ebx, eax
cmp ebx, 8
jl 0x41ff80
jmp 0x420053
mov edi, dword [esp + 4]
cmp dword [edi], 0xffffffff
je 0x41fff5
push 0x59ea2086
push dword [0x44bd38]
call fcn.0043f9a0
add esp, 8
push 2
push dword [edi]
call eax
push 0x2e775759
push dword [0x44bd38]
call fcn.0043f9a0
add esp, 8
push dword [edi]
call eax
mov dword [edi], 0xffffffff
test esi, esi
setg bl
movzx eax, word [esp + 8]
rol ax, 8
movzx eax, ax
mov dword [esp + 0x20], eax
mov dword [esp + 0x24], 0
mov edi, dword [esp + 4]
jmp 0x42006c
cmp dword [edi], 0xffffffff
je 0x420053
push 0x59ea2086
push dword [0x44bd38]
call fcn.0043f9a0
add esp, 8
push 2
push dword [edi]
call eax
push 0x2e775759
push dword [0x44bd38]
call fcn.0043f9a0
add esp, 8
push dword [edi]
call eax
mov dword [edi], 0xffffffff
test ebx, ebx
setg bl
mov eax, dword [esp + 8]
mov ecx, dword [esp + 0xc]
bswap ecx
bswap eax
mov dword [esp + 0x24], eax
mov dword [esp + 0x20], ecx
xor eax, eax
cmp byte [esp + 0x19], 0
js 0x4200a9
test bl, bl
je 0x420123
mov dword [esp + 0x34], eax
push dword [esp + 0x20]
call fcn.004082b0
add esp, 4
mov dword [esp + 0x2c], eax
xor esi, esi
xor ebx, ebx
jmp 0x420147
add esi, eax
cmp esi, 4
mov eax, esi
jge 0x420116
mov edi, 4
sub edi, eax
push 0xadeee8f4
push dword [0x44bd38]
mov esi, eax
call fcn.0043f9a0
add esp, 8
push 0
push edi
mov edi, dword [esp + 0xc]
lea ecx, [esp + 0x30]
push ecx
push dword [edi]
call eax
test eax, eax
jg 0x4200a0
cmp dword [edi], 0xffffffff
je 0x420114
push 0x59ea2086
push dword [0x44bd38]
call fcn.0043f9a0
add esp, 8
push 2
push dword [edi]
call eax
push 0x2e775759
push dword [0x44bd38]
call fcn.0043f9a0
add esp, 8
push dword [edi]
call eax
mov dword [edi], 0xffffffff
mov eax, esi
test eax, eax
setg al
test bl, bl
jne 0x42007d
xor ebx, ebx
jmp 0x4202ad
mov eax, dword [esp + 0x38]
add eax, esi
mov ebx, dword [esp + 0x3c]
adc ebx, 0
test esi, esi
mov esi, eax
jle 0x42021d
mov eax, dword [esp + 0x20]
mov ecx, dword [esp + 0x24]
cmp esi, eax
mov edx, ebx
sbb edx, ecx
jae 0x420225
mov dword [esp + 0x3c], ebx
sub eax, esi
mov ebx, eax
cmp eax, 0xffff
jl 0x42016f
mov ebx, 0xffff
test eax, eax
jle 0x420214
mov eax, dword [esp + 0x2c]
mov dword [esp + 0x38], esi
add eax, esi
mov dword [esp + 0x40], eax
xor esi, esi
nop
nop
nop
nop
nop
nop
nop
nop
nop
mov edi, ebx
sub edi, esi
push 0xadeee8f4
push dword [0x44bd38]
call fcn.0043f9a0
add esp, 8
push 0
push edi
mov edi, dword [esp + 0xc]
push dword [esp + 0x48]
push dword [edi]
call eax
test eax, eax
jle 0x4201d0
add esi, eax
cmp esi, ebx
jl 0x420190
jmp 0x420130
cmp dword [edi], 0xffffffff
je 0x420130
push 0x59ea2086
push dword [0x44bd38]
call fcn.0043f9a0
add esp, 8
push 2
push dword [edi]
call eax
push 0x2e775759
push dword [0x44bd38]
call fcn.0043f9a0
add esp, 8
push dword [edi]
call eax
mov dword [edi], 0xffffffff
jmp 0x420130
xor ecx, ecx
mov eax, 1
jmp 0x420225
mov eax, dword [esp + 0x20]
mov ecx, dword [esp + 0x24]
or eax, ecx
setne al
mov ecx, dword [esp + 0x34]
and cl, al
cmp cl, 1
jne 0x420263
xor eax, eax
xor ecx, ecx
nop
nop
nop
nop
nop
nop
nop
mov edx, dword [esp + 0x2c]
mov esi, eax
and esi, 3
movzx ebx, byte [esp + esi + 0x28]
xor byte [edx + eax], bl
add eax, 1
adc ecx, 0
cmp eax, dword [esp + 0x20]
mov edx, ecx
sbb edx, dword [esp + 0x24]
jb 0x420240
cmp byte [edi + 5], 0
je 0x42027c
lea eax, [esp + 8]
mov ecx, edi
lea edx, [esp + 0x18]
push edx
push eax
call fcn.00421670
jmp 0x42028d
lea eax, [esp + 8]
mov ecx, edi
lea edx, [esp + 0x18]
push edx
push eax
call fcn.004214f0
mov eax, dword [esp + 0x14]
mov edx, dword [ebp + 8]
mov dword [edx + 0xc], eax
mov eax, dword [esp + 0x10]
mov dword [edx + 8], eax
mov eax, dword [esp + 8]
mov ecx, dword [esp + 0xc]
mov dword [edx + 4], ecx
mov dword [edx], eax
mov bl, 1
mov eax, ebx
lea esp, [ebp - 0xc]
pop esi
pop edi
pop ebx
pop ebp
ret 4