Function at 0x4140d0
Capabilities:
Encode data using xor

Disassembly:
push ebp
mov ebp, esp
sub esp, 0x58
mov eax, dword [0x43e0b0]
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 0x414111
mov edi, 0x40
push edi
lea eax, [ebp - 0x44]
push esi
push eax
call fcn.004217f0
dec edi
add esp, 0xc
xor ebx, ebx
xor eax, eax
mov dword [ebp - 0x4c], edi
test edi, edi
jle 0x41417b
jmp 0x414130
mov cl, byte [ebx + 0x43fd09]
xor byte [ebp + eax - 0x44], cl
mov dl, byte [ebp + eax - 0x44]
inc ebx
mov dword [ebp - 0x50], ebx
cmp ebx, 6
jge 0x41417b
mov ecx, eax
movzx edi, dl
and ecx, 7
shl edi, cl
test edi, edi
jne 0x41416f
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 0x41416f
xor cl, cl
jmp 0x414171
mov cl, 1
mov byte [ebp + eax - 0x44], cl
inc eax
cmp eax, dword [ebp - 0x4c]
jl 0x414130
cmp dword [ebp - 0x54], 0
mov ebx, dword [ebp + 0xc]
lea eax, [ebx*4]
je 0x4141a4
mov edx, dword [0x441524]
add edx, dword [ebp + 8]
mov ecx, 0x48
xor edx, 0x13
sub ecx, edx
mov dword [0x441528], ecx
add dword [0x441528], eax
mov eax, ebx
and eax, 0x80000001
jns 0x4141b8
dec eax
or eax, 0xfffffffe
inc eax
sar ebx, 2
mov dword [ebp - 0x58], eax
mov dword [ebp - 0x50], ebx
test eax, eax
je 0x414271
xor edi, edi
xor ecx, ecx
mov dword [ebp - 0x4c], edi
cmp ebx, edi
jbe 0x414267
mov dword [ebp - 0x54], 0x43fe30
nop
mov edx, ecx
and edx, 0x80000003
jns 0x4141ef
dec edx
or edx, 0xfffffffc
inc edx
jne 0x41422d
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 + 0x43fd0e]
add eax, ebx
cmp eax, edx
jne 0x41425e
cmp dword [ebp - 0x58], 0
je 0x414228
inc byte [esi + ecx]
jmp 0x41425e
dec byte [esi + ecx]
jmp 0x41425e
mov al, byte [edi + 0x43fdf6]
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 + 0x43fdf8]
jle 0x41425e
sub dword [ebp - 0x54], 4
dec edi
lea eax, [edi + 6]
test eax, eax
jns 0x414267
mov dword [ebp - 0x4c], 0
inc ecx
cmp ecx, ebx
jb 0x4141e0
cmp dword [ebp - 0x58], 0
je 0x41476e
lea ecx, [ebx - 8]
cmp ecx, 0x5a
ja 0x4145c4
mov ecx, 0x43fd60
xor edi, edi
cmp dword [ebp - 0x58], 0
je 0x41431f
mov edx, dword [ecx + 8]
lea eax, [edx + esi]
mov dl, byte [eax]
mov dword [ebp - 0x4c], eax
mov al, byte [edi + 0x43fd0f]
movzx ebx, al
and ebx, 0x80000001
jns 0x4142af
dec ebx
or ebx, 0xfffffffe
inc ebx
jne 0x4142b5
xor dl, al
jmp 0x4142bb
xor dl, byte [edi + 0x43fdf7]
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 0x4142d7
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 + 0x43fd0e]
add eax, esi
and edx, 0x80000001
mov dword [ebp - 0x4c], eax
mov al, byte [eax]
mov byte [ebp - 0x45], al
jns 0x41430b
dec edx
or edx, 0xfffffffe
inc edx
jne 0x4143c7
mov al, byte [edi + 0x43fd0e]
xor byte [ebp - 0x45], al
jmp 0x4143d0
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 0x414345
add byte [ebp - 0x45], 0xfe
movzx edx, byte [edi + 0x43fd0f]
and edx, 0x80000001
jns 0x414359
dec edx
or edx, 0xfffffffe
inc edx
jne 0x414363
mov al, byte [edi + 0x43fd0f]
jmp 0x414369
mov al, byte [edi + 0x43fdf7]
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 0x4143a7
add byte [ebp - 0x45], 0xfe
movzx eax, byte [edi + 0x43fd0e]
and eax, 0x80000001
jns 0x4143ba
dec eax
or eax, 0xfffffffe
inc eax
jne 0x41442c
mov al, byte [edi + 0x43fd0e]
xor byte [ebp - 0x45], al
jmp 0x414435
xor al, byte [ebx + 0x43fdef]
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 0x4143ea
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 + 0x43fd0d]
add eax, esi
and edx, 0x80000001
mov dword [ebp - 0x4c], eax
mov al, byte [eax]
mov byte [ebp - 0x45], al
jns 0x41441f
dec edx
or edx, 0xfffffffe
inc edx
jne 0x414490
mov al, byte [edi + 0x43fd0d]
xor byte [ebp - 0x45], al
jmp 0x414499
mov dl, byte [ebx + 0x43fdef]
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 0x414470
add byte [ebp - 0x45], 0xfe
movzx eax, byte [edi + 0x43fd0d]
and eax, 0x80000001
jns 0x414483
dec eax
or eax, 0xfffffffe
inc eax
jne 0x4144f7
mov al, byte [edi + 0x43fd0d]
xor byte [ebp - 0x45], al
jmp 0x414500
xor al, byte [ebx + 0x43fdee]
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 0x4144b5
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 + 0x43fd0c]
add eax, esi
and edx, 0x80000001
mov dword [ebp - 0x4c], eax
mov al, byte [eax]
mov byte [ebp - 0x45], al
jns 0x4144ea
dec edx
or edx, 0xfffffffe
inc edx
jne 0x41455d
mov al, byte [edi + 0x43fd0c]
xor byte [ebp - 0x45], al
jmp 0x414566
mov dl, byte [ebx + 0x43fdee]
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 0x41453d
add al, 0xfe
mov dl, byte [edi + 0x43fd0c]
mov byte [ebp - 0x45], dl
movzx edx, dl
and edx, 0x80000001
jns 0x414556
dec edx
or edx, 0xfffffffe
inc edx
jne 0x414594
xor al, byte [ebp - 0x45]
jmp 0x41459a
xor al, byte [ebx + 0x43fded]
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 0x41457e
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 0x4145ab
xor al, byte [ebx + 0x43fded]
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 0x414284
mov ebx, dword [ebp - 0x50]
jmp 0x41475d
cmp ebx, 0x9e
jbe 0x414750
mov ecx, 0xf
mov eax, 0x43fd70
lea ebx, [ebx]
cmp dword [ebp - 0x58], 0
lea edx, [ecx + 1]
je 0x414696
and edx, 0x80000007
mov edi, dword [eax]
jns 0x4145fc
dec edx
or edx, 0xfffffff8
inc edx
mov dl, byte [edx + 0x43fd08]
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 0x414626
dec edx
or edx, 0xfffffff8
inc edx
mov dl, byte [edx + 0x43fd08]
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 0x414651
dec edx
or edx, 0xfffffff8
inc edx
mov dl, byte [edx + 0x43fd08]
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 0x41467c
dec edx
or edx, 0xfffffff8
inc edx
mov ebx, dword [eax + 0x1c]
mov dl, byte [edx + 0x43fd08]
xor dl, byte [edi + esi]
mov bl, byte [esi + ebx]
mov byte [edi + esi], bl
mov edi, dword [eax + 0x1c]
jmp 0x414739
and edx, 0x80000007
mov edi, dword [eax + 4]
jns 0x4146a6
dec edx
or edx, 0xfffffff8
inc edx
mov dl, byte [edx + 0x43fd08]
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 0x4146ce
dec edx
or edx, 0xfffffff8
inc edx
mov dl, byte [edx + 0x43fd08]
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 0x4146f9
dec edx
or edx, 0xfffffff8
inc edx
mov dl, byte [edx + 0x43fd08]
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 0x414724
dec edx
or edx, 0xfffffff8
inc edx
mov ebx, dword [eax + 0x18]
mov dl, byte [edx + 0x43fd08]
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 0x4145e0
jmp 0x41475d
mov al, byte [0x43fd0d]
add al, byte [0x43fdf2]
xor byte [esi], al
mov eax, dword [ebp - 0x58]
add dword [0x441528], eax
test eax, eax
je 0x4141c9
xor ebx, ebx
mov cl, byte [ebp + ebx - 0x44]
xor cl, 0x32
mov byte [ebx + 0x43f748], cl
inc ebx
cmp ebx, 0x10
jl 0x414770
mov esi, dword [0x43fa70]
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 [0x441528], 0x10
test ebx, ebx
jle 0x4147c6
cmp eax, 4
jge 0x4147c1
mov cl, al
add cl, cl
add cl, bl
mov byte [ebp + eax - 0x44], cl
inc eax
cmp eax, ebx
jl 0x4147b2
movzx ecx, byte [0x43f768]
add ecx, dword [0x43fa6c]
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 [0x43f74b], cl
mov ecx, dword [ebp - 4]
pop esi
xor ecx, ebp
mov eax, 1
pop ebx
call fcn.0041e965
mov esp, ebp
pop ebp
ret