Function at 0x43e7a0
Capabilities:
Encode data using xor

Disassembly:
push ebp
mov ebp, esp
push ebx
push edi
push esi
and esp, 0xfffffff8
sub esp, 0x80
mov edi, 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 + 0x34], 0x100000
mov dword [esp + 0x18], 0
mov dword [esp + 8], 0xc0c7c6c5
mov word [esp + 0xc], 0
xor eax, eax
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
mov ecx, eax
add cl, 0xb1
xor cl, byte [esp + eax + 8]
add cl, 0x8b
mov byte [esp + eax + 8], cl
inc eax
cmp eax, 6
jne 0x43e800
mov eax, dword [esp + 8]
mov ecx, dword [0x450c18]
test ecx, ecx
je 0x43e86e
xor edx, edx
mov esi, dword [0x450c1c]
nop
nop
nop
nop
cmp dword [esi + edx*8], 0x3e416e49
je 0x43e840
inc edx
cmp ecx, edx
jne 0x43e830
jmp 0x43e86e
mov ecx, dword [esi + edx*8 + 4]
cmp ecx, eax
je 0x43e86e
lea eax, [esp + 0x34]
lea edx, [esp + 0x18]
push 4
push 0x3000
push eax
push 0
push edx
push 0xffffffffffffffff
push 6
push dword [0x450c20]
push ecx
call fcn.00440770
add esp, 0x24
test eax, eax
js 0x43eeb2
cmp dword [edi + 4], 0
je 0x43ee40
mov dword [esp + 0x28], edi
mov eax, dword [edi + 4]
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 dword [esp + 8], 0x23232120
mov ecx, 0xed7a61eb
mov edx, 0xdaf4c3d6
nop
nop
nop
nop
nop
nop
nop
movzx edi, byte [esp + ecx + 0x12859e1d]
mov ebx, ecx
xor ebx, 0x6cc9923
mov esi, edx
and esi, 0xd264c198
sub esi, ebx
xor esi, edi
mov ebx, esi
or ebx, 0x17
add ebx, esi
not esi
or esi, 0x17
add ebx, esi
add bl, 2
mov byte [esp + ecx + 0x12859e1d], bl
inc ecx
add edx, 2
cmp ecx, 0xed7a61ef
jne 0x43e8d0
mov dword [esp + 0x38], 0x7fff
cmp eax, 2
je 0x43e925
mov dword [esp + 0x38], 0
mov eax, 0xfffeffff
je 0x43e931
mov eax, SysReAllocString
mov edx, dword [esp + 8]
mov ecx, edx
sar ecx, 0x1f
mov dword [esp + 0x1c], eax
cmp edx, eax
mov dword [esp + 0x30], ecx
mov eax, ecx
sbb eax, dword [esp + 0x38]
mov edi, dword [esp + 0x28]
jae 0x43edea
mov dword [esp + 0x24], 0
mov dword [esp + 0x14], 0
mov dword [esp + 4], 0
nop
nop
nop
nop
mov dword [esp + 0x2c], edx
mov ecx, edi
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 dword [esp + 0x40]
push edx
call fcn.0043e3b0
mov edx, dword [esp + 0x2c]
cmp eax, 0xbfffffff
ja 0x43edea
test eax, eax
js 0x43edb0
cmp dword [esp + 0x60], 0x1000
jne 0x43edb0
test byte [esp + 0x5c], 0x66
je 0x43edb0
mov esi, dword [esp + 0x40]
cmp dword [esp + 0x34], esi
mov ebx, dword [esp + 0x44]
mov eax, 0
sbb eax, ebx
jae 0x43eafe
mov dword [esp + 8], 0xc0c7c6c5
mov word [esp + 0xc], 0
xor eax, eax
nop
nop
mov ecx, eax
add cl, 0xb1
xor cl, byte [esp + eax + 8]
add cl, 0x8b
mov byte [esp + eax + 8], cl
inc eax
cmp eax, 6
jne 0x43e9f0
mov eax, dword [0x450c18]
test eax, eax
je 0x43ea5a
mov ecx, dword [esp + 8]
xor edx, edx
mov edi, dword [0x450c1c]
nop
nop
nop
nop
nop
cmp dword [edi + edx*8], 0x16194952
je 0x43ea30
inc edx
cmp eax, edx
jne 0x43ea20
jmp 0x43ea5a
mov eax, dword [edi + edx*8 + 4]
cmp eax, ecx
je 0x43ea5a
push 0x8000
lea ecx, [esp + 0x40]
push ecx
lea ecx, [esp + 0x20]
push ecx
push 0xffffffffffffffff
push 4
push dword [0x450c20]
push eax
call fcn.00440770
add esp, 0x1c
mov dword [esp + 0x3c], 0
mov dword [esp + 0x18], 0
mov dword [esp + 0x34], esi
mov dword [esp + 8], 0xc0c7c6c5
mov word [esp + 0xc], 0
xor eax, eax
nop
mov ecx, eax
add cl, 0xb1
xor cl, byte [esp + eax + 8]
add cl, 0x8b
mov byte [esp + eax + 8], cl
inc eax
cmp eax, 6
jne 0x43ea80
mov eax, dword [esp + 8]
mov ecx, dword [0x450c18]
test ecx, ecx
je 0x43eaee
xor edx, edx
mov edi, dword [0x450c1c]
nop
nop
nop
nop
cmp dword [edi + edx*8], 0x3e416e49
je 0x43eac0
inc edx
cmp ecx, edx
jne 0x43eab0
jmp 0x43eaee
mov ecx, dword [edi + edx*8 + 4]
cmp ecx, eax
je 0x43eaee
push 4
push 0x3000
lea eax, [esp + 0x3c]
push eax
push 0
lea eax, [esp + 0x28]
push eax
push 0xffffffffffffffff
push 6
push dword [0x450c20]
push ecx
call fcn.00440770
add esp, 0x24
test eax, eax
mov edi, dword [esp + 0x28]
mov edx, dword [esp + 0x2c]
js 0x43edea
mov ecx, edi
lea eax, [esp + 0x70]
push eax
push ebx
push esi
push dword [esp + 0x24]
push dword [esp + 0x40]
push edx
call fcn.0043e650
test eax, eax
jns 0x43eb24
cmp eax, 0x8000000d
jne 0x43edb0
mov eax, dword [esp + 0x70]
mov ecx, dword [esp + 0x74]
mov edx, dword [ebp + 0x10]
cmp eax, edx
sbb ecx, 0
jb 0x43edb0
push dword [ebp + 0x14]
push edx
push dword [ebp + 0xc]
push eax
push dword [esp + 0x28]
lea eax, [esp + 0x1c]
push eax
call fcn.0043ef00
add esp, 0x18
mov esi, dword [esp + 8]
mov eax, dword [esp + 0xc]
mov dword [esp + 0x58], eax
cmp esi, eax
mov ebx, dword [esp + 0x14]
je 0x43ed95
mov dword [esp + 0x64], esi
mov eax, dword [esp + 0x2c]
mov ecx, dword [esp + 4]
jmp 0x43ebca
push dword [esp + 0x14]
call fcn.0040c8e0
add esp, 4
mov edi, dword [esp + 0x54]
mov eax, dword [esp + 0x24]
lea eax, [edi + eax*8]
mov dword [esp + 0x24], eax
mov ecx, edi
mov edx, dword [esp + 0x20]
add ecx, edx
mov ebx, edi
mov eax, dword [esp + 0x2c]
mov edi, dword [esp + 0x6c]
mov dword [ebx + edx], edi
mov edi, edx
mov edx, dword [esp + 0x68]
mov dword [ebx + edi + 4], edx
add ecx, 8
add esi, 4
cmp esi, dword [esp + 0x58]
je 0x43ed55
mov edi, dword [esi]
sub edi, dword [esp + 0x18]
mov edx, edi
sar edx, 0x1f
add edi, eax
mov dword [esp + 0x6c], edi
adc edx, dword [esp + 0x30]
mov dword [esp + 0x68], edx
mov edx, ecx
sub edx, ebx
cmp ecx, dword [esp + 0x24]
jne 0x43eba9
mov dword [esp + 4], ecx
mov dword [esp + 0x20], edx
sar edx, 3
lea eax, [edx + 1]
mov ecx, edx
shr ecx, 1
add ecx, edx
cmp ecx, eax
ja 0x43ec07
mov ecx, eax
mov eax, ecx
and eax, 0xfffffff7
mov edi, ecx
and edi, 8
mov edx, ecx
mov dword [esp + 0x24], ecx
or edx, 8
imul edx, edi
xor edi, 8
imul edi, eax
add edx, edi
push edx
call fcn.0040c8d0
add esp, 4
mov edi, eax
test ebx, ebx
je 0x43eb90
cmp edi, ebx
mov dword [esp + 0x14], ebx
mov eax, dword [esp + 4]
mov ecx, dword [esp + 0x20]
mov dword [esp + 0x54], edi
jbe 0x43ed02
cmp eax, edi
jbe 0x43ed02
test ecx, ecx
je 0x43eb80
mov ebx, dword [esp + 0x14]
mov edx, dword [esp + 0x20]
lea eax, [ebx + edx]
dec eax
mov ecx, dword [esp + 0x54]
add ecx, edx
dec ecx
mov edi, edx
and edi, 7
je 0x43ec98
neg edi
xor edx, edx
nop
nop
movzx ebx, byte [eax + edx]
mov byte [ecx + edx], bl
dec edx
cmp edi, edx
jne 0x43ec80
add eax, edx
add ecx, edx
add edx, dword [esp + 0x20]
mov ebx, dword [esp + 0x14]
mov edi, ebx
sub edi, dword [esp + 4]
cmp edi, 0xfffffff8
ja 0x43eb80
neg edx
xor edi, edi
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 0x43ecb0
jmp 0x43eb80
shr ecx, 2
mov dword [esp + 4], ebx
mov eax, edi
mov edx, dword [esp + 4]
xchg esi, edx
rep movsd dword es:[edi], dword [esi]
xchg esi, edx
mov ecx, dword [esp + 0x20]
mov edx, ecx
and edx, 0xfffffffc
lea edi, [eax + edx]
add edx, ebx
mov ebx, ecx
shr ecx, 1
and ecx, 1
mov eax, edx
mov dword [esp + 4], edi
xchg esi, eax
rep movsw word es:[edi], word [esi]
xchg esi, eax
test bl, 1
je 0x43eb80
mov eax, dword [esp + 0x20]
and eax, 2
movzx ecx, byte [edx + eax]
mov edx, dword [esp + 4]
mov byte [edx + eax], cl
jmp 0x43eb80
mov eax, dword [ebp + 8]
mov dword [eax + 4], ecx
mov dword [eax], ebx
mov edx, dword [esp + 0x24]
mov dword [eax + 8], edx
mov eax, dword [esp + 0x64]
test eax, eax
mov esi, dword [esp + 0x1c]
je 0x43eddc
mov dword [esp + 4], ecx
cmp eax, dword [esp + 0x58]
mov edi, dword [esp + 0x28]
je 0x43edd6
mov dword [esp + 0x14], ebx
push eax
call fcn.0040c8e0
add esp, 4
mov dword [esp + 8], 0
jmp 0x43edb4
mov eax, dword [ebp + 8]
mov ecx, dword [esp + 4]
mov dword [eax + 4], ecx
mov dword [eax], ebx
mov ecx, dword [esp + 0x24]
mov dword [eax + 8], ecx
nop
nop
nop
nop
nop
nop
nop
nop
mov esi, dword [esp + 0x1c]
mov edx, dword [esp + 0x40]
add edx, dword [esp + 0x48]
mov eax, dword [esp + 0x44]
adc eax, dword [esp + 0x4c]
cmp edx, esi
mov dword [esp + 0x30], eax
sbb eax, dword [esp + 0x38]
jb 0x43e970
jmp 0x43edea
mov dword [esp + 0x14], ebx
jmp 0x43edb4
mov dword [esp + 4], ecx
mov dword [esp + 0x14], ebx
mov edi, dword [esp + 0x28]
jmp 0x43edb4
mov dword [esp + 8], 0xc0c7c6c5
mov word [esp + 0xc], 0
xor eax, eax
nop
nop
nop
nop
nop
mov ecx, eax
add cl, 0xb1
xor cl, byte [esp + eax + 8]
add cl, 0x8b
mov byte [esp + eax + 8], cl
inc eax
cmp eax, 6
jne 0x43ee00
mov eax, dword [0x450c18]
test eax, eax
je 0x43eeb2
mov ecx, dword [esp + 8]
xor edx, edx
mov esi, dword [0x450c1c]
nop
cmp dword [esi + edx*8], 0x16194952
je 0x43ee88
inc edx
cmp eax, edx
jne 0x43ee30
jmp 0x43eeb2
push 0xbbf966b4
push dword [0x450c0c]
call fcn.004435b0
add esp, 8
test eax, eax
je 0x43eebf
mov ecx, dword [edi]
test ecx, ecx
je 0x43e880
mov dword [esp + 8], 0
lea edx, [esp + 8]
push edx
push ecx
call eax
test eax, eax
je 0x43eecb
cmp dword [esp + 8], 0
je 0x43eecb
mov dword [edi + 4], 3
jmp 0x43e880
mov eax, dword [esi + edx*8 + 4]
cmp eax, ecx
je 0x43eeb2
lea ecx, [esp + 0x3c]
lea edx, [esp + 0x18]
push 0x8000
push ecx
push edx
push 0xffffffffffffffff
push 4
push dword [0x450c20]
push eax
call fcn.00440770
add esp, 0x1c
mov eax, dword [ebp + 8]
lea esp, [ebp - 0xc]
pop esi
pop edi
pop ebx
pop ebp
ret 0x10
mov dword [edi + 4], 1
jmp 0x43e880
lea eax, [esp + 0x48]
push eax
call fcn.00443d70
add esp, 4
test al, al
je 0x43e880
mov eax, dword [esp + 0x48]
mov ecx, 2
cmp eax, 3
je 0x43eef0
mov ecx, eax
mov dword [edi + 4], ecx
jmp 0x43e880