Function at 0x410880
Capabilities:
Encode data using xor

Disassembly:
push ebp
mov ebp, esp
sub esp, 0x58
mov eax, dword [0x43b050]
xor eax, ebp
mov dword [ebp - 4], eax
push ebx
push esi
mov esi, edx
mov eax, 0xaaaaaaab
mul ecx
shr edx, 2
lea eax, [edx + edx*2]
lea edx, [eax + eax]
mov eax, ecx
sub eax, edx
mov dword [ebp - 0x54], eax
mov eax, 0xaaaaaaab
mul ecx
push edi
mov edi, edx
shr edi, 1
cmp edi, 0x40
jle 0x4108c1
mov edi, 0x40
push edi
lea eax, [ebp - 0x44]
push esi
push eax
call fcn.0041ef90
dec edi
add esp, 0xc
xor ebx, ebx
xor eax, eax
mov dword [ebp - 0x4c], edi
test edi, edi
jle 0x41092b
jmp 0x4108e0
mov cl, byte [ebx + 0x43cd09]
xor byte [ebp + eax - 0x44], cl
mov dl, byte [ebp + eax - 0x44]
inc ebx
mov dword [ebp - 0x50], ebx
cmp ebx, 6
jge 0x41092b
mov ecx, eax
movzx edi, dl
and ecx, 7
shl edi, cl
test edi, edi
jne 0x41091f
mov cl, byte [ebp + 8]
mov bl, al
and bl, 7
sub cl, bl
mov ebx, dword [ebp - 0x50]
add cl, 8
shr dl, cl
test dl, dl
jne 0x41091f
xor cl, cl
jmp 0x410921
mov cl, 1
mov byte [ebp + eax - 0x44], cl
inc eax
cmp eax, dword [ebp - 0x4c]
jl 0x4108e0
cmp dword [ebp - 0x54], 0
mov ebx, dword [ebp + 0xc]
lea eax, [ebx*4]
je 0x410954
mov edx, dword [0x43e520]
add edx, dword [ebp + 8]
mov ecx, 0x48
xor edx, 0x13
sub ecx, edx
mov dword [0x43e524], ecx
add dword [0x43e524], eax
mov eax, ebx
and eax, 0x80000001
jns 0x410968
dec eax
or eax, 0xfffffffe
inc eax
sar ebx, 2
mov dword [ebp - 0x58], eax
mov dword [ebp - 0x50], ebx
test eax, eax
je 0x410a21
xor edi, edi
xor ecx, ecx
mov dword [ebp - 0x4c], edi
cmp ebx, edi
jbe 0x410a17
mov dword [ebp - 0x54], 0x43ce30
nop
mov edx, ecx
and edx, 0x80000003
jns 0x41099f
dec edx
or edx, 0xfffffffc
inc edx
jne 0x4109dd
mov eax, 0x24924925
mul ebx
mov eax, ebx
sub eax, edx
shr eax, 1
add eax, edx
shr eax, 2
lea edx, [eax*8]
sub edx, eax
mov eax, ecx
sub eax, edx
movzx edx, byte [edi + 0x43cd0e]
add eax, ebx
cmp eax, edx
jne 0x410a0e
cmp dword [ebp - 0x58], 0
je 0x4109d8
inc byte [esi + ecx]
jmp 0x410a0e
dec byte [esi + ecx]
jmp 0x410a0e
mov al, byte [edi + 0x43cdf6]
xor byte [esi + ecx], al
mov eax, dword [ebp - 0x4c]
mov edx, dword [ebp - 0x54]
mov edx, dword [edx]
inc eax
mov dword [ebp - 0x4c], eax
cmp eax, dword [edx*4 + 0x43cdf8]
jle 0x410a0e
sub dword [ebp - 0x54], 4
dec edi
lea eax, [edi + 6]
test eax, eax
jns 0x410a17
mov dword [ebp - 0x4c], 0
inc ecx
cmp ecx, ebx
jb 0x410990
cmp dword [ebp - 0x58], 0
je 0x410f1e
lea ecx, [ebx - 8]
cmp ecx, 0x5a
ja 0x410d74
mov ecx, 0x43cd60
xor edi, edi
cmp dword [ebp - 0x58], 0
je 0x410acf
mov edx, dword [ecx + 8]
lea eax, [edx + esi]
mov dl, byte [eax]
mov dword [ebp - 0x4c], eax
mov al, byte [edi + 0x43cd0f]
movzx ebx, al
and ebx, 0x80000001
jns 0x410a5f
dec ebx
or ebx, 0xfffffffe
inc ebx
jne 0x410a65
xor dl, al
jmp 0x410a6b
xor dl, byte [edi + 0x43cdf7]
mov byte [ebp - 0x45], dl
lea ebx, [edi + 7]
mov eax, 0xaaaaaaab
mul ebx
shr edx, 1
lea eax, [edx + edx*2]
mov edx, ebx
sub edx, eax
jne 0x410a87
add byte [ebp - 0x45], 2
mov eax, dword [ecx + 0xc]
mov dl, byte [esi + eax]
mov eax, dword [ebp - 0x4c]
mov byte [eax], dl
mov al, byte [ebp - 0x45]
mov edx, dword [ecx + 0xc]
mov byte [esi + edx], al
mov eax, dword [ecx]
movzx edx, byte [edi + 0x43cd0e]
add eax, esi
and edx, 0x80000001
mov dword [ebp - 0x4c], eax
mov al, byte [eax]
mov byte [ebp - 0x45], al
jns 0x410abb
dec edx
or edx, 0xfffffffe
inc edx
jne 0x410b77
mov al, byte [edi + 0x43cd0e]
xor byte [ebp - 0x45], al
jmp 0x410b80
mov eax, dword [ecx + 0xc]
add eax, esi
mov dword [ebp - 0x4c], eax
mov al, byte [eax]
mov byte [ebp - 0x45], al
lea ebx, [edi + 7]
mov eax, 0xaaaaaaab
mul ebx
shr edx, 1
lea edx, [edx + edx*2]
mov eax, ebx
sub eax, edx
jne 0x410af5
add byte [ebp - 0x45], 0xfe
movzx edx, byte [edi + 0x43cd0f]
and edx, 0x80000001
jns 0x410b09
dec edx
or edx, 0xfffffffe
inc edx
jne 0x410b13
mov al, byte [edi + 0x43cd0f]
jmp 0x410b19
mov al, byte [edi + 0x43cdf7]
xor byte [ebp - 0x45], al
mov edx, dword [ecx + 8]
mov al, byte [esi + edx]
mov edx, dword [ebp - 0x4c]
mov byte [edx], al
mov dl, byte [ebp - 0x45]
mov eax, dword [ecx + 8]
mov byte [esi + eax], dl
mov eax, dword [ecx + 4]
add eax, esi
mov dword [ebp - 0x4c], eax
mov al, byte [eax]
mov byte [ebp - 0x45], al
lea edx, [edi + 6]
mov eax, 0xaaaaaaab
mul edx
shr edx, 1
lea eax, [edx + edx*2]
mov edx, ebx
sub edx, eax
dec edx
jne 0x410b57
add byte [ebp - 0x45], 0xfe
movzx eax, byte [edi + 0x43cd0e]
and eax, 0x80000001
jns 0x410b6a
dec eax
or eax, 0xfffffffe
inc eax
jne 0x410bdc
mov al, byte [edi + 0x43cd0e]
xor byte [ebp - 0x45], al
jmp 0x410be5
xor al, byte [ebx + 0x43cdef]
mov byte [ebp - 0x45], al
lea edx, [edi + 6]
mov eax, 0xaaaaaaab
mul edx
shr edx, 1
lea eax, [edx + edx*2]
mov edx, ebx
sub edx, eax
dec edx
jne 0x410b9a
add byte [ebp - 0x45], 2
mov eax, dword [ecx + 4]
mov dl, byte [esi + eax]
mov eax, dword [ebp - 0x4c]
mov byte [eax], dl
mov al, byte [ebp - 0x45]
mov edx, dword [ecx + 4]
mov byte [esi + edx], al
mov eax, dword [ecx - 8]
movzx edx, byte [edi + 0x43cd0d]
add eax, esi
and edx, 0x80000001
mov dword [ebp - 0x4c], eax
mov al, byte [eax]
mov byte [ebp - 0x45], al
jns 0x410bcf
dec edx
or edx, 0xfffffffe
inc edx
jne 0x410c40
mov al, byte [edi + 0x43cd0d]
xor byte [ebp - 0x45], al
jmp 0x410c49
mov dl, byte [ebx + 0x43cdef]
xor byte [ebp - 0x45], dl
mov eax, dword [ecx]
mov dl, byte [esi + eax]
mov eax, dword [ebp - 0x4c]
mov byte [eax], dl
mov al, byte [ebp - 0x45]
mov edx, dword [ecx]
mov byte [esi + edx], al
mov eax, dword [ecx - 4]
add eax, esi
mov dword [ebp - 0x4c], eax
mov al, byte [eax]
mov byte [ebp - 0x45], al
lea edx, [edi + 5]
mov eax, 0xaaaaaaab
mul edx
shr edx, 1
lea eax, [edx + edx*2]
mov edx, ebx
sub edx, eax
sub edx, 2
jne 0x410c20
add byte [ebp - 0x45], 0xfe
movzx eax, byte [edi + 0x43cd0d]
and eax, 0x80000001
jns 0x410c33
dec eax
or eax, 0xfffffffe
inc eax
jne 0x410ca7
mov al, byte [edi + 0x43cd0d]
xor byte [ebp - 0x45], al
jmp 0x410cb0
xor al, byte [ebx + 0x43cdee]
mov byte [ebp - 0x45], al
lea edx, [edi + 5]
mov eax, 0xaaaaaaab
mul edx
shr edx, 1
lea eax, [edx + edx*2]
mov edx, ebx
sub edx, eax
sub edx, 2
jne 0x410c65
add byte [ebp - 0x45], 2
mov eax, dword [ecx - 4]
mov dl, byte [esi + eax]
mov eax, dword [ebp - 0x4c]
mov byte [eax], dl
mov al, byte [ebp - 0x45]
mov edx, dword [ecx - 4]
mov byte [esi + edx], al
mov eax, dword [ecx - 0x10]
movzx edx, byte [edi + 0x43cd0c]
add eax, esi
and edx, 0x80000001
mov dword [ebp - 0x4c], eax
mov al, byte [eax]
mov byte [ebp - 0x45], al
jns 0x410c9a
dec edx
or edx, 0xfffffffe
inc edx
jne 0x410d0d
mov al, byte [edi + 0x43cd0c]
xor byte [ebp - 0x45], al
jmp 0x410d16
mov dl, byte [ebx + 0x43cdee]
xor byte [ebp - 0x45], dl
mov eax, dword [ecx - 8]
mov dl, byte [esi + eax]
mov eax, dword [ebp - 0x4c]
mov byte [eax], dl
mov edx, dword [ecx - 8]
mov al, byte [ebp - 0x45]
mov byte [esi + edx], al
mov eax, dword [ecx - 0xc]
mov dl, byte [eax + esi]
add eax, esi
mov byte [ebp - 0x45], dl
mov dword [ebp - 0x4c], eax
lea edx, [edi + 4]
mov eax, 0xaaaaaaab
mul edx
shr edx, 1
lea eax, [edx + edx*2 + 3]
mov edx, ebx
sub edx, eax
mov al, byte [ebp - 0x45]
jne 0x410ced
add al, 0xfe
mov dl, byte [edi + 0x43cd0c]
mov byte [ebp - 0x45], dl
movzx edx, dl
and edx, 0x80000001
jns 0x410d06
dec edx
or edx, 0xfffffffe
inc edx
jne 0x410d44
xor al, byte [ebp - 0x45]
jmp 0x410d4a
xor al, byte [ebx + 0x43cded]
mov byte [ebp - 0x45], al
lea edx, [edi + 4]
mov eax, 0xaaaaaaab
mul edx
shr edx, 1
lea eax, [edx + edx*2 + 3]
sub ebx, eax
jne 0x410d2e
add byte [ebp - 0x45], 2
mov edx, dword [ecx - 0xc]
mov al, byte [esi + edx]
mov edx, dword [ebp - 0x4c]
mov byte [edx], al
mov eax, dword [ecx - 0xc]
mov dl, byte [ebp - 0x45]
mov byte [esi + eax], dl
jmp 0x410d5b
xor al, byte [ebx + 0x43cded]
mov edx, dword [ecx - 0x10]
mov dl, byte [esi + edx]
mov ebx, dword [ebp - 0x4c]
mov byte [ebx], dl
mov edx, dword [ecx - 0x10]
mov byte [esi + edx], al
sub edi, 4
lea eax, [edi + 7]
sub ecx, 0x20
test eax, eax
jns 0x410a34
mov ebx, dword [ebp - 0x50]
jmp 0x410f0d
cmp ebx, 0x9e
jbe 0x410f00
mov ecx, 0xf
mov eax, 0x43cd70
lea ebx, [ebx]
cmp dword [ebp - 0x58], 0
lea edx, [ecx + 1]
je 0x410e46
and edx, 0x80000007
mov edi, dword [eax]
jns 0x410dac
dec edx
or edx, 0xfffffff8
inc edx
mov dl, byte [edx + 0x43cd08]
xor dl, byte [edi + esi]
mov ebx, dword [eax + 4]
mov bl, byte [esi + ebx]
mov byte [edi + esi], bl
mov edi, dword [eax + 4]
mov byte [esi + edi], dl
mov edi, dword [eax + 8]
mov edx, ecx
and edx, 0x80000007
jns 0x410dd6
dec edx
or edx, 0xfffffff8
inc edx
mov dl, byte [edx + 0x43cd08]
xor dl, byte [edi + esi]
mov ebx, dword [eax + 0xc]
mov bl, byte [esi + ebx]
mov byte [edi + esi], bl
mov edi, dword [eax + 0xc]
mov byte [esi + edi], dl
mov edi, dword [eax + 0x10]
lea edx, [ecx - 1]
and edx, 0x80000007
jns 0x410e01
dec edx
or edx, 0xfffffff8
inc edx
mov dl, byte [edx + 0x43cd08]
xor dl, byte [edi + esi]
mov ebx, dword [eax + 0x14]
mov bl, byte [esi + ebx]
mov byte [edi + esi], bl
mov edi, dword [eax + 0x14]
mov byte [esi + edi], dl
mov edi, dword [eax + 0x18]
lea edx, [ecx - 2]
and edx, 0x80000007
jns 0x410e2c
dec edx
or edx, 0xfffffff8
inc edx
mov ebx, dword [eax + 0x1c]
mov dl, byte [edx + 0x43cd08]
xor dl, byte [edi + esi]
mov bl, byte [esi + ebx]
mov byte [edi + esi], bl
mov edi, dword [eax + 0x1c]
jmp 0x410ee9
and edx, 0x80000007
mov edi, dword [eax + 4]
jns 0x410e56
dec edx
or edx, 0xfffffff8
inc edx
mov dl, byte [edx + 0x43cd08]
xor dl, byte [edi + esi]
mov ebx, dword [eax]
mov bl, byte [esi + ebx]
mov byte [edi + esi], bl
mov edi, dword [eax]
mov byte [esi + edi], dl
mov edi, dword [eax + 0xc]
mov edx, ecx
and edx, 0x80000007
jns 0x410e7e
dec edx
or edx, 0xfffffff8
inc edx
mov dl, byte [edx + 0x43cd08]
xor dl, byte [edi + esi]
mov ebx, dword [eax + 8]
mov bl, byte [esi + ebx]
mov byte [edi + esi], bl
mov edi, dword [eax + 8]
mov byte [esi + edi], dl
mov edi, dword [eax + 0x14]
lea edx, [ecx - 1]
and edx, 0x80000007
jns 0x410ea9
dec edx
or edx, 0xfffffff8
inc edx
mov dl, byte [edx + 0x43cd08]
xor dl, byte [edi + esi]
mov ebx, dword [eax + 0x10]
mov bl, byte [esi + ebx]
mov byte [edi + esi], bl
mov edi, dword [eax + 0x10]
mov byte [esi + edi], dl
mov edi, dword [eax + 0x1c]
lea edx, [ecx - 2]
and edx, 0x80000007
jns 0x410ed4
dec edx
or edx, 0xfffffff8
inc edx
mov ebx, dword [eax + 0x18]
mov dl, byte [edx + 0x43cd08]
xor dl, byte [edi + esi]
mov bl, byte [esi + ebx]
mov byte [edi + esi], bl
mov edi, dword [eax + 0x18]
mov ebx, dword [ebp - 0x50]
sub ecx, 4
add eax, 0x20
mov byte [esi + edi], dl
cmp ecx, 0xffffffff
jg 0x410d90
jmp 0x410f0d
mov al, byte [0x43cd0d]
add al, byte [0x43cdf2]
xor byte [esi], al
mov eax, dword [ebp - 0x58]
add dword [0x43e524], eax
test eax, eax
je 0x410979
xor ebx, ebx
mov cl, byte [ebp + ebx - 0x44]
xor cl, 0x32
mov byte [ebx + 0x43c748], cl
inc ebx
cmp ebx, 0x10
jl 0x410f20
mov esi, dword [0x43ca70]
mov eax, 0x66666667
imul esi
sar edx, 1
mov eax, edx
shr eax, 0x1f
add eax, edx
lea edx, [eax + eax*4]
mov eax, esi
sub eax, edx
add ebx, eax
xor eax, eax
mov dword [0x43e524], 0x10
test ebx, ebx
jle 0x410f76
cmp eax, 4
jge 0x410f71
mov cl, al
add cl, cl
add cl, bl
mov byte [ebp + eax - 0x44], cl
inc eax
cmp eax, ebx
jl 0x410f62
movzx ecx, byte [0x43c768]
add ecx, dword [0x43ca6c]
mov eax, 0x66666667
add ecx, esi
add ecx, ebx
imul ecx
sar edx, 2
mov eax, edx
shr eax, 0x1f
add eax, edx
mov dl, al
add dl, dl
add dl, dl
add al, dl
add al, al
sub cl, al
add cl, byte [ebp - 0x42]
pop edi
mov byte [0x43c74b], cl
mov ecx, dword [ebp - 4]
pop esi
xor ecx, ebp
mov eax, 1
pop ebx
call fcn.0041b25d
mov esp, ebp
pop ebp
ret