Function at 0x43dda0
Capabilities:
Encode data using xor

Disassembly:
push ebp
mov ebp, esp
push ebx
push edi
push esi
and esp, 0xfffffff8
sub esp, 0x80
mov ebx, ecx
mov eax, dword [ebp + 8]
mov dword [eax + 8], 0
mov dword [eax + 4], 0
mov dword [eax], 0
mov dword [esp + 0x3c], 0
mov dword [esp + 0x28], 0x100000
mov dword [esp + 0x18], 0
mov dword [esp + 0xc], 0xd4d5cacb
mov byte [esp + 0x10], 0
mov eax, 0x2b05744e
mov ecx, 0x14fa8bb1
nop
nop
nop
nop
nop
nop
nop
nop
nop
movzx esi, byte [esp + eax - 0x2b057442]
mov edi, ecx
and edi, 0x10008b93
mov edx, eax
and edx, 0x2805040c
or edx, edi
xor edx, esi
mov esi, edx
xor esi, 0x53
mov edi, edx
xor edi, 0x55
and edi, esi
xor edx, 0xaa
lea edx, [edx + edi*2]
inc dl
mov byte [esp + eax - 0x2b057442], dl
inc eax
dec ecx
cmp eax, 0x2b057453
jne 0x43de00
mov eax, dword [esp + 0xc]
mov ecx, dword [0x44e478]
test ecx, ecx
je 0x43de9e
xor edx, edx
mov esi, dword [0x44e47c]
nop
nop
nop
nop
nop
nop
nop
cmp dword [esi + edx*8], 0x3e416e49
je 0x43de70
inc edx
cmp ecx, edx
jne 0x43de60
jmp 0x43de9e
mov ecx, dword [esi + edx*8 + 4]
cmp ecx, eax
je 0x43de9e
lea eax, [esp + 0x28]
lea edx, [esp + 0x18]
push 4
push 0x3000
push eax
push 0
push edx
push 0xffffffffffffffff
push 6
push dword [0x44e480]
push ecx
call fcn.0043fae0
add esp, 0x24
test eax, eax
js 0x43e532
cmp dword [ebx + 4], 0
je 0x43e4c0
xor edx, edx
cmp dword [ebx + 4], 2
mov edi, 0x7fff
je 0x43dec2
mov edi, 0
mov dword [esp + 0x50], 0xfffeffff
je 0x43ded4
mov dword [esp + 0x50], SysStringLen
mov dword [esp + 0x4c], 0
mov dword [esp + 0x48], 0
mov dword [esp + 0x44], 0
mov dword [esp + 0x40], 0
mov dword [esp + 0x60], 0
mov dword [esp + 0x5c], 0
mov esi, 0x10000
mov dword [esp + 0x1c], 0
mov dword [esp + 8], 0
mov dword [esp + 4], 0
mov dword [esp + 0x54], ebx
mov dword [esp + 0x2c], edi
jmp 0x43df6e
mov eax, dword [ebp + 8]
mov ecx, dword [esp + 4]
mov dword [eax + 4], ecx
mov ecx, dword [esp + 8]
mov dword [eax], ecx
mov ecx, dword [esp + 0x1c]
mov dword [eax + 8], ecx
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
mov esi, dword [esp + 0x40]
add esi, dword [esp + 0x48]
mov edx, dword [esp + 0x44]
adc edx, dword [esp + 0x4c]
cmp esi, dword [esp + 0x50]
mov eax, edx
sbb eax, edi
jae 0x43e435
mov dword [esp + 0x38], edx
mov ecx, dword [esp + 0x54]
lea eax, [esp + 0x5c]
push eax
lea eax, [esp + 0x64]
push eax
lea eax, [esp + 0x48]
push eax
lea eax, [esp + 0x54]
push eax
push edx
push esi
call fcn.0043d950
mov edx, dword [esp + 0x38]
cmp eax, 0xbfffffff
ja 0x43e435
mov dword [esp + 0x24], esi
test eax, eax
js 0x43df50
cmp dword [esp + 0x60], 0x1000
jne 0x43df50
test byte [esp + 0x5c], 0x66
je 0x43df50
mov esi, dword [esp + 0x40]
cmp dword [esp + 0x28], esi
mov ecx, dword [esp + 0x44]
mov eax, 0
mov dword [esp + 0x34], ecx
sbb eax, ecx
mov ebx, dword [esp + 0x24]
jae 0x43e182
mov dword [esp + 0xc], 0xd4d5cacb
mov byte [esp + 0x10], 0
mov eax, 0x2b05744e
mov ebx, 0x14fa8bb1
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
movzx edi, byte [esp + eax - 0x2b057442]
mov ecx, ebx
and ecx, 0x10008b93
mov edx, eax
and edx, 0x2805040c
or edx, ecx
xor edx, edi
mov ecx, edx
xor ecx, 0x53
mov edi, edx
xor edi, 0x55
and edi, ecx
xor edx, 0xaa
lea ecx, [edx + edi*2]
inc cl
mov byte [esp + eax - 0x2b057442], cl
inc eax
dec ebx
cmp eax, 0x2b057453
jne 0x43e000
mov eax, dword [0x44e478]
test eax, eax
je 0x43e09a
mov ecx, dword [esp + 0xc]
xor edx, edx
mov edi, dword [0x44e47c]
nop
nop
nop
nop
nop
nop
nop
nop
cmp dword [edi + edx*8], 0x16194952
je 0x43e070
inc edx
cmp eax, edx
jne 0x43e060
jmp 0x43e09a
mov eax, dword [edi + edx*8 + 4]
cmp eax, ecx
je 0x43e09a
push 0x8000
lea ecx, [esp + 0x40]
push ecx
lea ecx, [esp + 0x20]
push ecx
push 0xffffffffffffffff
push 4
push dword [0x44e480]
push eax
call fcn.0043fae0
add esp, 0x1c
mov dword [esp + 0x3c], 0
mov dword [esp + 0x18], 0
mov dword [esp + 0x28], esi
mov dword [esp + 0xc], 0xd4d5cacb
mov byte [esp + 0x10], 0
mov eax, 0x2b05744e
mov ecx, 0x14fa8bb1
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
movzx edi, byte [esp + eax - 0x2b057442]
mov ebx, ecx
and ebx, 0x10008b93
mov edx, eax
and edx, 0x2805040c
or edx, ebx
xor edx, edi
mov edi, edx
xor edi, 0x53
mov ebx, edx
xor ebx, 0x55
and ebx, edi
xor edx, 0xaa
lea edx, [edx + ebx*2]
inc dl
mov byte [esp + eax - 0x2b057442], dl
inc eax
dec ecx
cmp eax, 0x2b057453
jne 0x43e0d0
mov eax, dword [esp + 0xc]
mov ecx, dword [0x44e478]
test ecx, ecx
je 0x43e16e
xor edx, edx
mov edi, dword [0x44e47c]
nop
nop
nop
nop
nop
nop
nop
cmp dword [edi + edx*8], 0x3e416e49
je 0x43e140
inc edx
cmp ecx, edx
jne 0x43e130
jmp 0x43e16e
mov ecx, dword [edi + edx*8 + 4]
cmp ecx, eax
je 0x43e16e
push 4
push 0x3000
lea eax, [esp + 0x30]
push eax
push 0
lea eax, [esp + 0x28]
push eax
push 0xffffffffffffffff
push 6
push dword [0x44e480]
push ecx
call fcn.0043fae0
add esp, 0x24
test eax, eax
mov edi, dword [esp + 0x2c]
mov edx, dword [esp + 0x38]
mov ebx, dword [esp + 0x24]
js 0x43e435
mov ecx, dword [esp + 0x54]
lea eax, [esp + 0x70]
push eax
push dword [esp + 0x38]
push esi
push dword [esp + 0x24]
push edx
push ebx
call fcn.0043dc00
test eax, eax
jns 0x43e1aa
cmp eax, 0x8000000d
jne 0x43df50
mov eax, dword [esp + 0x70]
mov ecx, dword [esp + 0x74]
mov edx, dword [ebp + 0x10]
cmp eax, edx
sbb ecx, 0
jb 0x43df50
push dword [ebp + 0x14]
push edx
push dword [ebp + 0xc]
push eax
push dword [esp + 0x28]
lea eax, [esp + 0x20]
push eax
call fcn.0043e580
add esp, 0x18
mov esi, dword [esp + 0xc]
mov eax, dword [esp + 0x10]
mov dword [esp + 0x58], eax
cmp esi, eax
je 0x43df2b
mov dword [esp + 0x64], esi
mov ecx, dword [esp + 8]
mov edx, dword [esp + 0x24]
mov ebx, dword [esp + 4]
jmp 0x43e225
mov ebx, dword [esp + 4]
mov edi, dword [esp + 0x34]
mov dword [ecx + eax], edi
mov edi, eax
mov eax, dword [esp + 0x6c]
mov dword [ecx + edi + 4], eax
add ebx, 8
add esi, 4
cmp esi, dword [esp + 0x58]
je 0x43e3e5
mov edi, dword [esi]
sub edi, dword [esp + 0x18]
mov eax, edi
sar eax, 0x1f
add edi, edx
mov dword [esp + 0x34], edi
adc eax, dword [esp + 0x38]
mov dword [esp + 0x6c], eax
mov eax, ebx
sub eax, ecx
mov dword [esp + 4], ebx
cmp ebx, dword [esp + 0x1c]
jne 0x43e200
mov dword [esp + 8], ecx
mov dword [esp + 0x20], eax
mov ecx, eax
sar ecx, 3
lea eax, [ecx + 1]
mov ebx, ecx
shr ebx, 1
add ebx, ecx
cmp ebx, eax
ja 0x43e268
mov ebx, eax
mov eax, ebx
and eax, 8
mov ecx, ebx
or ecx, 8
imul ecx, eax
xor eax, 8
mov edx, ebx
and edx, 0xfffffff7
imul edx, eax
add ecx, edx
push ecx
call fcn.0040c9c0
add esp, 4
mov ecx, eax
mov edx, dword [esp + 8]
test edx, edx
je 0x43e3cd
mov dword [esp + 0x1c], ebx
cmp ecx, edx
mov eax, dword [esp + 4]
mov dword [esp + 0x30], ecx
jbe 0x43e35f
cmp eax, ecx
jbe 0x43e35f
cmp dword [esp + 0x20], 0
je 0x43e3b9
mov eax, dword [esp + 8]
mov edx, dword [esp + 0x20]
add eax, edx
dec eax
mov ecx, dword [esp + 0x30]
add ecx, edx
dec ecx
mov edi, edx
and edi, 7
je 0x43e2f4
neg edi
xor edx, edx
nop
nop
nop
movzx ebx, byte [eax + edx]
mov byte [ecx + edx], bl
dec edx
cmp edi, edx
jne 0x43e2e0
add eax, edx
add ecx, edx
add edx, dword [esp + 0x20]
mov edi, dword [esp + 8]
sub edi, dword [esp + 4]
cmp edi, 0xfffffff8
ja 0x43e3b9
neg edx
xor edi, edi
nop
nop
nop
nop
nop
nop
nop
movzx ebx, byte [eax + edi]
mov byte [ecx + edi], bl
movzx ebx, byte [eax + edi - 1]
mov byte [ecx + edi - 1], bl
movzx ebx, byte [eax + edi - 2]
mov byte [ecx + edi - 2], bl
movzx ebx, byte [eax + edi - 3]
mov byte [ecx + edi - 3], bl
movzx ebx, byte [eax + edi - 4]
mov byte [ecx + edi - 4], bl
movzx ebx, byte [eax + edi - 5]
mov byte [ecx + edi - 5], bl
movzx ebx, byte [eax + edi - 6]
mov byte [ecx + edi - 6], bl
movzx ebx, byte [eax + edi - 7]
mov byte [ecx + edi - 7], bl
add edi, 0xfffffff8
cmp edx, edi
jne 0x43e310
jmp 0x43e3b9
mov ebx, dword [esp + 0x20]
mov edi, ecx
mov ecx, ebx
shr ecx, 2
mov dword [esp + 4], edx
mov eax, dword [esp + 4]
xchg esi, eax
rep movsd dword es:[edi], dword [esi]
xchg esi, eax
mov ecx, edx
mov edx, ebx
and edx, 0xfffffffc
mov eax, dword [esp + 0x30]
lea edi, [eax + edx]
add edx, ecx
mov eax, ebx
not eax
or eax, 3
add eax, ebx
inc eax
mov ecx, eax
shr ecx, 1
mov dword [esp + 4], edx
mov dword [esp + 0x68], edi
mov ebx, dword [esp + 4]
xchg esi, ebx
rep movsw word es:[edi], word [esi]
xchg esi, ebx
test al, 1
je 0x43e3b9
and eax, 0xfffffffe
movzx ecx, byte [edx + eax]
mov edx, dword [esp + 0x68]
mov byte [edx + eax], cl
push dword [esp + 8]
call fcn.0040c9d0
add esp, 4
mov ebx, dword [esp + 0x1c]
mov ecx, dword [esp + 0x30]
lea eax, [ecx + ebx*8]
mov dword [esp + 0x1c], eax
mov ebx, ecx
mov eax, dword [esp + 0x20]
add ebx, eax
mov edx, dword [esp + 0x24]
jmp 0x43e204
mov eax, dword [ebp + 8]
mov dword [esp + 4], ebx
mov dword [eax + 4], ebx
mov dword [eax], ecx
mov edx, dword [esp + 0x1c]
mov dword [eax + 8], edx
mov eax, dword [esp + 0x64]
test eax, eax
je 0x43e428
mov dword [esp + 8], ecx
cmp eax, dword [esp + 0x58]
mov edi, dword [esp + 0x2c]
je 0x43df50
push eax
call fcn.0040c9d0
add esp, 4
mov dword [esp + 0xc], 0
jmp 0x43df50
mov dword [esp + 8], ecx
mov edi, dword [esp + 0x2c]
jmp 0x43df50
mov dword [esp + 0xc], 0xd4d5cacb
mov byte [esp + 0x10], 0
mov eax, 0x2b05744e
mov ecx, 0x14fa8bb1
nop
nop
nop
nop
movzx esi, byte [esp + eax - 0x2b057442]
mov edi, ecx
and edi, 0x10008b93
mov edx, eax
and edx, 0x2805040c
or edx, edi
xor edx, esi
mov esi, edx
xor esi, 0x53
mov edi, edx
xor edi, 0x55
and edi, esi
xor edx, 0xaa
lea edx, [edx + edi*2]
inc dl
mov byte [esp + eax - 0x2b057442], dl
inc eax
dec ecx
cmp eax, 0x2b057453
jne 0x43e450
mov eax, dword [0x44e478]
test eax, eax
je 0x43e532
mov ecx, dword [esp + 0xc]
xor edx, edx
mov esi, dword [0x44e47c]
nop
nop
nop
nop
cmp dword [esi + edx*8], 0x16194952
je 0x43e508
inc edx
cmp eax, edx
jne 0x43e4b0
jmp 0x43e532
push 0xbbf966b4
push dword [0x44e46c]
call fcn.00442130
add esp, 8
test eax, eax
je 0x43e53f
mov ecx, dword [ebx]
test ecx, ecx
je 0x43deb0
mov dword [esp + 0xc], 0
lea edx, [esp + 0xc]
push edx
push ecx
call eax
test eax, eax
je 0x43e54b
cmp dword [esp + 0xc], 0
je 0x43e54b
mov dword [ebx + 4], 3
jmp 0x43deb0
mov eax, dword [esi + edx*8 + 4]
cmp eax, ecx
je 0x43e532
push 0x8000
lea ecx, [esp + 0x40]
push ecx
lea ecx, [esp + 0x20]
push ecx
push 0xffffffffffffffff
push 4
push dword [0x44e480]
push eax
call fcn.0043fae0
add esp, 0x1c
mov eax, dword [ebp + 8]
lea esp, [ebp - 0xc]
pop esi
pop edi
pop ebx
pop ebp
ret 0x10
mov dword [ebx + 4], 1
jmp 0x43deb0
lea eax, [esp + 0x48]
push eax
call fcn.00442930
add esp, 4
test al, al
je 0x43deb0
mov eax, dword [esp + 0x48]
mov ecx, 2
cmp eax, 3
je 0x43e570
mov ecx, eax
mov dword [ebx + 4], ecx
jmp 0x43deb0