Function at 0x41fc00
Capabilities:
Encode data using xor

Disassembly:
push ebp
mov ebp, esp
sub esp, 0x18
push ebx
push esi
mov esi, dword [ebp + 8]
push edi
mov ecx, 0xb
xor eax, eax
mov edi, esi
xor ebx, ebx
rep stosd dword es:[edi], eax
mov edi, dword [ebp + 0xc]
mov eax, dword [edi + 4]
test eax, eax
jle 0x41fc34
mov ecx, dword [edi + 8]
mov edx, eax
cmp dword [ecx], 0
jle 0x41fc2e
inc ebx
add ecx, 4
dec edx
jne 0x41fc28
mov dword [esi + 4], eax
mov dword [esi + 8], ebx
mov eax, dword [edi]
push ebx
mov dword [esi], eax
mov ecx, dword [edi + 4]
mov edx, dword [edi + 8]
push ecx
push edx
call fcn.0041f5e0
mov dword [ebp + 8], eax
lea eax, [ebx*4]
mov dword [ebp - 8], eax
add eax, 3
add esp, 0xc
and al, 0xfc
call fcn.004bc9d0
mov ecx, dword [ebp + 8]
mov eax, esp
test ecx, ecx
mov dword [ebp - 0xc], eax
jne 0x41fcda
mov eax, dword [esi + 0x10]
test eax, eax
je 0x41fc82
push eax
call fcn.004bc8dd
add esp, 4
mov eax, dword [esi + 0x14]
test eax, eax
je 0x41fc92
push eax
call fcn.004bc8dd
add esp, 4
mov eax, dword [esi + 0x18]
test eax, eax
je 0x41fca2
push eax
call fcn.004bc8dd
add esp, 4
mov eax, dword [esi + 0x1c]
test eax, eax
je 0x41fcb2
push eax
call fcn.004bc8dd
add esp, 4
mov eax, dword [esi + 0x20]
test eax, eax
je 0x41fcc2
push eax
call fcn.004bc8dd
add esp, 4
mov ecx, 0xb
xor eax, eax
mov edi, esi
rep stosd dword es:[edi], eax
or eax, 0xffffffff
lea esp, [ebp - 0x24]
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
ret
test ebx, ebx
jle 0x41fd55
mov edi, eax
mov eax, dword [ebp + 8]
sub edi, eax
mov dword [ebp - 0x10], ebx
mov eax, dword [ecx]
mov edx, eax
shl edx, 0x10
shr eax, 0x10
xor eax, edx
and eax, 0xffff
xor eax, edx
mov edx, eax
shl edx, 8
shr eax, 8
xor eax, edx
and eax, 0xff00ff
xor eax, edx
mov edx, eax
shl edx, 4
shr eax, 4
xor eax, edx
and eax, 0xf0f0f0f
xor eax, edx
lea edx, [eax*4]
shr eax, 2
xor eax, edx
and eax, 0x33333333
xor eax, edx
lea edx, [eax + eax]
shr eax, 1
xor eax, edx
and eax, 0x55555555
xor eax, edx
mov dword [ecx], eax
mov eax, dword [ebp - 0x10]
mov dword [edi + ecx], ecx
add ecx, 4
dec eax
mov dword [ebp - 0x10], eax
jne 0x41fce8
mov edi, dword [ebp + 0xc]
mov eax, dword [ebp - 0xc]
push 0x420150
push 4
push ebx
push eax
call fcn.004bd10d
mov eax, dword [ebp - 8]
add esp, 0x10
add eax, 3
and al, 0xfc
call fcn.004bc9d0
mov eax, dword [ebp - 8]
mov dword [ebp - 4], esp
push eax
call fcn.004bc474
mov dword [esi + 0x14], eax
add esp, 4
xor eax, eax
test ebx, ebx
jle 0x41fdd4
mov ecx, dword [ebp - 0xc]
mov edx, dword [ecx + eax*4]
mov ecx, dword [ebp + 8]
sub edx, ecx
mov ecx, dword [ebp - 4]
sar edx, 2
mov dword [ecx + edx*4], eax
inc eax
cmp eax, ebx
jl 0x41fd8b
test ebx, ebx
jle 0x41fdd4
mov eax, ecx
mov ecx, dword [ebp + 8]
sub ecx, eax
mov dword [ebp - 0x10], ebx
mov dword [ebp - 0x14], ecx
jmp 0x41fdba
mov ecx, dword [ebp - 0x14]
mov edx, dword [eax]
mov edi, dword [esi + 0x14]
mov ecx, dword [ecx + eax]
add eax, 4
mov dword [edi + edx*4], ecx
mov ecx, dword [ebp - 0x10]
dec ecx
mov dword [ebp - 0x10], ecx
jne 0x41fdb7
mov edi, dword [ebp + 0xc]
mov edx, dword [ebp + 8]
push edx
call fcn.004bc8dd
mov eax, dword [ebp - 4]
push eax
push ebx
push edi
call fcn.0041f7c0
mov ecx, dword [ebp - 8]
mov dword [esi + 0x10], eax
push ecx
call fcn.004bc474
mov dword [esi + 0x18], eax
mov edx, dword [edi + 4]
add esp, 0x14
xor ecx, ecx
xor eax, eax
test edx, edx
jle 0x41fe23
mov edx, dword [edi + 8]
cmp dword [edx + eax*4], 0
jle 0x41fe1b
mov edx, dword [ebp - 4]
mov ebx, dword [esi + 0x18]
mov edx, dword [edx + ecx*4]
inc ecx
mov dword [ebx + edx*4], eax
mov edx, dword [edi + 4]
inc eax
cmp eax, edx
jl 0x41fe05
push ecx
call fcn.004bc474
mov dword [esi + 0x1c], eax
mov eax, dword [edi + 4]
add esp, 4
xor ebx, ebx
xor ecx, ecx
mov dword [ebp + 8], ebx
test eax, eax
jle 0x41fe67
mov eax, dword [edi + 8]
mov edx, dword [eax + ecx*4]
lea eax, [eax + ecx*4]
test edx, edx
jle 0x41fe5f
mov edx, dword [ebp - 4]
mov al, byte [eax]
mov edx, dword [edx + ebx*4]
mov ebx, dword [esi + 0x1c]
mov byte [edx + ebx], al
mov ebx, dword [ebp + 8]
inc ebx
mov dword [ebp + 8], ebx
mov eax, dword [edi + 4]
inc ecx
cmp ecx, eax
jl 0x41fe3d
mov ecx, dword [esi + 8]
xor eax, eax
test ecx, ecx
je 0x41fe75
inc eax
shr ecx, 1
jne 0x41fe70
add eax, 0xfffffffc
cmp eax, 5
mov dword [esi + 0x24], eax
jge 0x41fe87
mov dword [esi + 0x24], 5
mov ecx, dword [esi + 0x24]
mov eax, 8
cmp ecx, eax
jle 0x41fe96
mov dword [esi + 0x24], eax
mov ecx, dword [esi + 0x24]
mov edi, 1
shl edi, cl
push 4
push edi
mov dword [ebp - 0x14], edi
call fcn.004bc337
mov dword [esi + 0x20], eax
xor edx, edx
add esp, 8
xor eax, eax
cmp ebx, edx
mov dword [esi + 0x28], edx
mov dword [ebp + 0xc], eax
jle 0x41ff99
mov ebx, dword [esi + 0x24]
mov ecx, dword [esi + 0x1c]
mov edi, dword [esi + 0x28]
movsx edx, byte [ecx + eax]
cmp edi, edx
jge 0x41fed7
mov dword [esi + 0x28], edx
movsx edx, byte [ecx + eax]
cmp edx, ebx
jg 0x41ff85
mov ecx, dword [esi + 0x14]
xor edi, edi
mov eax, dword [ecx + eax*4]
mov ecx, eax
shl ecx, 0x10
shr eax, 0x10
xor eax, ecx
and eax, 0xffff
xor eax, ecx
mov ecx, eax
shl ecx, 8
shr eax, 8
xor eax, ecx
and eax, 0xff00ff
xor eax, ecx
mov ecx, eax
shl ecx, 4
shr eax, 4
xor eax, ecx
and eax, 0xf0f0f0f
xor eax, ecx
lea ecx, [eax*4]
shr eax, 2
xor eax, ecx
and eax, 0x33333333
xor eax, ecx
lea ecx, [eax + eax]
shr eax, 1
xor eax, ecx
and eax, 0x55555555
xor eax, ecx
mov ecx, ebx
mov dword [ebp - 0x10], eax
sub ecx, edx
mov eax, 1
shl eax, cl
test eax, eax
mov eax, dword [ebp + 0xc]
jle 0x41ff85
mov ebx, edi
mov ecx, edx
mov edx, dword [ebp - 0x10]
shl ebx, cl
lea ecx, [eax + 1]
or ebx, edx
mov edx, dword [esi + 0x20]
inc edi
mov dword [edx + ebx*4], ecx
mov ecx, dword [esi + 0x1c]
mov ebx, dword [esi + 0x24]
movsx edx, byte [ecx + eax]
mov ecx, ebx
mov eax, 1
sub ecx, edx
shl eax, cl
cmp edi, eax
mov eax, dword [ebp + 0xc]
jl 0x41ff54
mov ecx, dword [ebp + 8]
inc eax
cmp eax, ecx
mov dword [ebp + 0xc], eax
jl 0x41fec6
mov edi, dword [ebp - 0x14]
xor edx, edx
mov eax, dword [esi + 0x24]
mov ecx, 0x1f
sub ecx, eax
mov eax, 0xfffffffe
shl eax, cl
cmp edi, edx
mov dword [ebp - 4], edx
mov dword [ebp - 8], edx
mov dword [ebp + 0xc], edx
mov dword [ebp - 0x18], eax
jle 0x420140
mov ebx, dword [esi + 0x24]
mov edx, dword [ebp + 0xc]
mov ecx, 0x20
sub ecx, ebx
mov ebx, dword [esi + 0x20]
shl edx, cl
mov eax, edx
mov ecx, edx
shl eax, 0x10
shr ecx, 0x10
xor ecx, eax
and ecx, 0xffff
xor ecx, eax
mov edi, ecx
mov eax, ecx
shl edi, 8
shr eax, 8
xor eax, edi
and eax, 0xff00ff
xor eax, edi
mov edi, eax
shl edi, 4
shr eax, 4
xor eax, edi
and eax, 0xf0f0f0f
xor eax, edi
lea edi, [eax*4]
shr eax, 2
xor eax, edi
and eax, 0x33333333
xor eax, edi
mov edi, eax
and eax, 0xd5555555
shr edi, 1
and edi, 0x55555555
add eax, eax
or edi, eax
cmp dword [ebx + edi*4], 0
jne 0x42012e
mov eax, dword [ebp - 4]
mov edi, dword [ebp + 8]
inc eax
cmp eax, edi
jge 0x420077
mov edi, dword [esi + 0x14]
mov dword [ebp - 0x10], eax
lea eax, [edi + eax*4]
mov edi, dword [ebp + 8]
mov dword [ebp - 0xc], eax
mov eax, dword [ebp - 0xc]
cmp dword [eax], edx
ja 0x420077
mov eax, dword [ebp - 4]
inc eax
mov dword [ebp - 4], eax
mov eax, dword [ebp - 0x10]
inc eax
mov dword [ebp - 0x10], eax
mov eax, dword [ebp - 0xc]
add eax, 4
mov dword [ebp - 0xc], eax
mov eax, dword [ebp - 0x10]
cmp eax, edi
jl 0x420052
mov eax, dword [ebp - 8]
cmp eax, edi
jge 0x4200b1
mov edi, dword [esi + 0x14]
lea eax, [edi + eax*4]
mov dword [ebp - 0x10], eax
mov eax, dword [ebp - 0x10]
mov edi, dword [ebp - 0x18]
mov eax, dword [eax]
and eax, edi
cmp edx, eax
jb 0x4200ae
mov edi, dword [ebp - 0x10]
mov eax, dword [ebp - 8]
add edi, 4
inc eax
mov dword [ebp - 0x10], edi
mov edi, dword [ebp + 8]
cmp eax, edi
mov dword [ebp - 8], eax
jl 0x420087
jmp 0x4200b1
mov edi, dword [ebp + 8]
mov edx, dword [ebp - 8]
mov eax, dword [ebp - 4]
sub edi, edx
mov edx, eax
cmp edx, 0x7fff
jbe 0x4200c8
mov eax, 0x7fff
cmp edi, 0x7fff
jbe 0x4200d5
mov edi, 0x7fff
mov edx, ecx
or eax, 0xffff0000
shl edx, 8
shr ecx, 8
xor ecx, edx
and ecx, 0xff00ff
xor ecx, edx
mov edx, ecx
shl edx, 4
shr ecx, 4
xor ecx, edx
and ecx, 0xf0f0f0f
xor ecx, edx
shl eax, 0xf
lea edx, [ecx*4]
or eax, edi
shr ecx, 2
xor ecx, edx
and ecx, 0x33333333
xor ecx, edx
mov edx, ecx
and ecx, 0xd5555555
shr edx, 1
and edx, 0x55555555
add ecx, ecx
or edx, ecx
mov dword [ebx + edx*4], eax
mov eax, dword [ebp + 0xc]
mov ecx, dword [ebp - 0x14]
inc eax
cmp eax, ecx
mov dword [ebp + 0xc], eax
jl 0x41ffbe
xor eax, eax
lea esp, [ebp - 0x24]
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
ret