Function at 0x4103b0
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 0x4103f1
mov edi, 0x40
push edi
lea eax, [ebp - 0x44]
push esi
push eax
call fcn.0041eab0
dec edi
add esp, 0xc
xor ebx, ebx
xor eax, eax
mov dword [ebp - 0x4c], edi
test edi, edi
jle 0x41045b
jmp 0x410410
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 0x41045b
mov ecx, eax
movzx edi, dl
and ecx, 7
shl edi, cl
test edi, edi
jne 0x41044f
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 0x41044f
xor cl, cl
jmp 0x410451
mov cl, 1
mov byte [ebp + eax - 0x44], cl
inc eax
cmp eax, dword [ebp - 0x4c]
jl 0x410410
cmp dword [ebp - 0x54], 0
mov ebx, dword [ebp + 0xc]
lea eax, [ebx*4]
je 0x410484
mov edx, dword [0x43e560]
add edx, dword [ebp + 8]
mov ecx, 0x48
xor edx, 0x13
sub ecx, edx
mov dword [0x43e564], ecx
add dword [0x43e564], eax
mov eax, ebx
and eax, 0x80000001
jns 0x410498
dec eax
or eax, 0xfffffffe
inc eax
sar ebx, 2
mov dword [ebp - 0x58], eax
mov dword [ebp - 0x50], ebx
test eax, eax
je 0x410551
xor edi, edi
xor ecx, ecx
mov dword [ebp - 0x4c], edi
cmp ebx, edi
jbe 0x410547
mov dword [ebp - 0x54], 0x43ce30
nop
mov edx, ecx
and edx, 0x80000003
jns 0x4104cf
dec edx
or edx, 0xfffffffc
inc edx
jne 0x41050d
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 0x41053e
cmp dword [ebp - 0x58], 0
je 0x410508
inc byte [esi + ecx]
jmp 0x41053e
dec byte [esi + ecx]
jmp 0x41053e
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 0x41053e
sub dword [ebp - 0x54], 4
dec edi
lea eax, [edi + 6]
test eax, eax
jns 0x410547
mov dword [ebp - 0x4c], 0
inc ecx
cmp ecx, ebx
jb 0x4104c0
cmp dword [ebp - 0x58], 0
je 0x410a4e
lea ecx, [ebx - 8]
cmp ecx, 0x5a
ja 0x4108a4
mov ecx, 0x43cd60
xor edi, edi
cmp dword [ebp - 0x58], 0
je 0x4105ff
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 0x41058f
dec ebx
or ebx, 0xfffffffe
inc ebx
jne 0x410595
xor dl, al
jmp 0x41059b
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 0x4105b7
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 0x4105eb
dec edx
or edx, 0xfffffffe
inc edx
jne 0x4106a7
mov al, byte [edi + 0x43cd0e]
xor byte [ebp - 0x45], al
jmp 0x4106b0
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 0x410625
add byte [ebp - 0x45], 0xfe
movzx edx, byte [edi + 0x43cd0f]
and edx, 0x80000001
jns 0x410639
dec edx
or edx, 0xfffffffe
inc edx
jne 0x410643
mov al, byte [edi + 0x43cd0f]
jmp 0x410649
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 0x410687
add byte [ebp - 0x45], 0xfe
movzx eax, byte [edi + 0x43cd0e]
and eax, 0x80000001
jns 0x41069a
dec eax
or eax, 0xfffffffe
inc eax
jne 0x41070c
mov al, byte [edi + 0x43cd0e]
xor byte [ebp - 0x45], al
jmp 0x410715
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 0x4106ca
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 0x4106ff
dec edx
or edx, 0xfffffffe
inc edx
jne 0x410770
mov al, byte [edi + 0x43cd0d]
xor byte [ebp - 0x45], al
jmp 0x410779
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 0x410750
add byte [ebp - 0x45], 0xfe
movzx eax, byte [edi + 0x43cd0d]
and eax, 0x80000001
jns 0x410763
dec eax
or eax, 0xfffffffe
inc eax
jne 0x4107d7
mov al, byte [edi + 0x43cd0d]
xor byte [ebp - 0x45], al
jmp 0x4107e0
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 0x410795
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 0x4107ca
dec edx
or edx, 0xfffffffe
inc edx
jne 0x41083d
mov al, byte [edi + 0x43cd0c]
xor byte [ebp - 0x45], al
jmp 0x410846
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 0x41081d
add al, 0xfe
mov dl, byte [edi + 0x43cd0c]
mov byte [ebp - 0x45], dl
movzx edx, dl
and edx, 0x80000001
jns 0x410836
dec edx
or edx, 0xfffffffe
inc edx
jne 0x410874
xor al, byte [ebp - 0x45]
jmp 0x41087a
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 0x41085e
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 0x41088b
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 0x410564
mov ebx, dword [ebp - 0x50]
jmp 0x410a3d
cmp ebx, 0x9e
jbe 0x410a30
mov ecx, 0xf
mov eax, 0x43cd70
lea ebx, [ebx]
cmp dword [ebp - 0x58], 0
lea edx, [ecx + 1]
je 0x410976
and edx, 0x80000007
mov edi, dword [eax]
jns 0x4108dc
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 0x410906
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 0x410931
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 0x41095c
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 0x410a19
and edx, 0x80000007
mov edi, dword [eax + 4]
jns 0x410986
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 0x4109ae
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 0x4109d9
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 0x410a04
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 0x4108c0
jmp 0x410a3d
mov al, byte [0x43cd0d]
add al, byte [0x43cdf2]
xor byte [esi], al
mov eax, dword [ebp - 0x58]
add dword [0x43e564], eax
test eax, eax
je 0x4104a9
xor ebx, ebx
mov cl, byte [ebp + ebx - 0x44]
xor cl, 0x32
mov byte [ebx + 0x43c748], cl
inc ebx
cmp ebx, 0x10
jl 0x410a50
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 [0x43e564], 0x10
test ebx, ebx
jle 0x410aa6
cmp eax, 4
jge 0x410aa1
mov cl, al
add cl, cl
add cl, bl
mov byte [ebp + eax - 0x44], cl
inc eax
cmp eax, ebx
jl 0x410a92
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.0041ad7d
mov esp, ebp
pop ebp
ret