Function at 0x43ec20
Capabilities:
Encode data using xor

Disassembly:
push ebp
mov ebp, esp
push ebx
push edi
push esi
and esp, 0xfffffff8
sub esp, 0x80
mov dword [esp + 0x24], ecx
mov eax, dword [ebp + 8]
mov dword [eax + 8], 0
mov dword [eax + 4], 0
mov dword [eax], 0
mov dword [esp + 0x44], 0
mov dword [esp + 0x34], 0x100000
mov dword [esp + 0x18], 0
mov dword [esp + 0xc], 0x34353a3b
mov eax, 0x9a22fb6
mov ecx, 0x65dd049
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
movzx esi, byte [esp + eax - 0x9a22faa]
mov edi, ecx
and edi, 0x608904b
mov edx, eax
and edx, 0x8000084
or edx, edi
xor edx, esi
xor edx, 0x28554084
mov edi, 0xbfd51170
sub edi, edx
mov esi, edi
add edx, 0x402aee8f
mov ebx, edx
and edx, 0x1e
and edi, 0xe1
or edi, edx
not ebx
xor edi, 0x1f
and ebx, 1
or ebx, edi
and esi, 1
add ebx, esi
mov byte [esp + eax - 0x9a22faa], bl
inc eax
dec ecx
cmp eax, 0x9a22fba
jne 0x43ec80
mov eax, dword [esp + 0xc]
mov ecx, dword [0x4504d8]
test ecx, ecx
je 0x43ed3e
xor edx, edx
mov esi, dword [0x4504dc]
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
cmp dword [esi + edx*8], 0x3e416e49
je 0x43ed10
inc edx
cmp ecx, edx
jne 0x43ed00
jmp 0x43ed3e
mov ecx, dword [esi + edx*8 + 4]
cmp ecx, eax
je 0x43ed3e
lea eax, [esp + 0x34]
lea edx, [esp + 0x18]
push 4
push 0x3000
push eax
push 0
push edx
push 0xffffffffffffffff
push 6
push dword [0x4504e0]
push ecx
call fcn.00440d90
add esp, 0x24
test eax, eax
mov esi, dword [esp + 0x24]
js 0x43f4c2
cmp dword [esi + 4], 0
je 0x43f450
mov eax, dword [esi + 4]
mov dword [esp + 0x20], eax
mov dword [esp + 0x54], 0
mov dword [esp + 0x50], 0
mov dword [esp + 0x4c], 0
mov dword [esp + 0x48], 0
mov dword [esp + 0x64], 0
mov dword [esp + 0x60], 0
mov dword [esp + 0xc], 0x313d3f3c
mov word [esp + 0x10], 0
mov ecx, 0x24f86675
mov eax, 0xdb07998a
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
movzx ebx, byte [esp + ecx - 0x24f86669]
mov esi, eax
or esi, ebx
lea edi, [ebx + ebx]
not edi
add edi, ebx
and ebx, 0xffffffec
and edi, 0x77a2a513
or edi, ebx
mov edx, eax
and edx, 0x8805188c
mov ebx, ecx
and ebx, 0x24a02413
or ebx, edx
xor ebx, edi
lea edx, [esi + esi]
not edx
add edx, esi
not ebx
and ebx, esi
or ebx, edx
add bl, 0xb7
mov byte [esp + ecx - 0x24f86669], bl
inc ecx
dec eax
cmp ecx, 0x24f8667b
jne 0x43edb0
mov edi, 0x7fff
cmp dword [esp + 0x20], 2
je 0x43ee14
mov edi, 0
mov eax, 0xfffeffff
je 0x43ee20
mov eax, SysReAllocString
mov edx, dword [esp + 0xc]
mov ecx, edx
sar ecx, 0x1f
mov dword [esp + 0x6c], eax
cmp edx, eax
mov dword [esp + 0x20], ecx
mov eax, ecx
sbb eax, edi
mov esi, dword [esp + 0x24]
jae 0x43f3ad
mov dword [esp + 0x1c], 0
mov dword [esp + 8], 0
mov dword [esp + 4], 0
mov dword [esp + 0x38], edi
jmp 0x43ee88
mov edx, dword [esp + 4]
mov dword [esp + 4], edx
mov edx, dword [esp + 0x48]
add edx, dword [esp + 0x50]
mov eax, dword [esp + 0x4c]
adc eax, dword [esp + 0x54]
cmp edx, dword [esp + 0x6c]
mov dword [esp + 0x20], eax
sbb eax, edi
jae 0x43f3ad
mov dword [esp + 0x2c], edx
mov ecx, esi
lea eax, [esp + 0x60]
push eax
lea eax, [esp + 0x68]
push eax
lea eax, [esp + 0x50]
push eax
lea eax, [esp + 0x5c]
push eax
push dword [esp + 0x30]
push edx
call fcn.0043e780
mov edx, dword [esp + 0x2c]
cmp eax, 0xbfffffff
ja 0x43f3ad
test eax, eax
js 0x43ee68
cmp dword [esp + 0x64], 0x1000
jne 0x43ee68
test byte [esp + 0x60], 0x66
je 0x43ee68
mov eax, dword [esp + 0x48]
mov dword [esp + 0x30], eax
cmp dword [esp + 0x34], eax
mov ecx, dword [esp + 0x4c]
mov eax, 0
mov dword [esp + 0x40], ecx
sbb eax, ecx
jae 0x43f0ce
mov dword [esp + 0xc], 0x34353a3b
mov eax, 0x9a22fb6
mov edi, 0x65dd049
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
movzx ecx, byte [esp + eax - 0x9a22faa]
mov esi, edi
and esi, 0x608904b
mov edx, eax
and edx, 0x8000084
or edx, esi
xor edx, ecx
xor edx, 0x28554084
mov ebx, 0xbfd51170
sub ebx, edx
mov esi, ebx
add edx, 0x402aee8f
mov ecx, edx
and edx, 0x1e
and ebx, 0xe1
or ebx, edx
not ecx
xor ebx, 0x1f
and ecx, 1
or ecx, ebx
and esi, 1
add ecx, esi
mov byte [esp + eax - 0x9a22faa], cl
inc eax
dec edi
cmp eax, 0x9a22fba
jne 0x43ef10
mov eax, dword [0x4504d8]
test eax, eax
je 0x43efca
mov ecx, dword [esp + 0xc]
xor edx, edx
mov esi, dword [0x4504dc]
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
cmp dword [esi + edx*8], 0x16194952
je 0x43efa0
inc edx
cmp eax, edx
jne 0x43ef90
jmp 0x43efca
mov eax, dword [esi + edx*8 + 4]
cmp eax, ecx
je 0x43efca
push 0x8000
lea ecx, [esp + 0x48]
push ecx
lea ecx, [esp + 0x20]
push ecx
push 0xffffffffffffffff
push 4
push dword [0x4504e0]
push eax
call fcn.00440d90
add esp, 0x1c
mov dword [esp + 0x44], 0
mov dword [esp + 0x18], 0
mov eax, dword [esp + 0x30]
mov dword [esp + 0x34], eax
mov dword [esp + 0xc], 0x34353a3b
mov eax, 0x9a22fb6
mov ecx, 0x65dd049
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
movzx esi, byte [esp + eax - 0x9a22faa]
mov edi, ecx
and edi, 0x608904b
mov edx, eax
and edx, 0x8000084
or edx, edi
xor edx, esi
xor edx, 0x28554084
mov esi, 0xbfd51170
sub esi, edx
mov edi, esi
add edx, 0x402aee8f
mov ebx, edx
and edx, 0x1e
and esi, 0xe1
or esi, edx
not ebx
xor esi, 0x1f
and ebx, 1
or ebx, esi
and edi, 1
add ebx, edi
mov byte [esp + eax - 0x9a22faa], bl
inc eax
dec ecx
cmp eax, 0x9a22fba
jne 0x43f000
mov eax, dword [esp + 0xc]
mov ecx, dword [0x4504d8]
test ecx, ecx
mov edi, dword [esp + 0x38]
je 0x43f0be
xor edx, edx
mov esi, dword [0x4504dc]
nop
nop
nop
nop
nop
nop
nop
nop
nop
cmp dword [esi + edx*8], 0x3e416e49
je 0x43f090
inc edx
cmp ecx, edx
jne 0x43f080
jmp 0x43f0be
mov ecx, dword [esi + edx*8 + 4]
cmp ecx, eax
je 0x43f0be
push 4
push 0x3000
lea eax, [esp + 0x3c]
push eax
push 0
lea eax, [esp + 0x28]
push eax
push 0xffffffffffffffff
push 6
push dword [0x4504e0]
push ecx
call fcn.00440d90
add esp, 0x24
test eax, eax
mov esi, dword [esp + 0x24]
mov edx, dword [esp + 0x2c]
js 0x43f3ad
mov ecx, esi
lea eax, [esp + 0x70]
push eax
push dword [esp + 0x44]
push dword [esp + 0x38]
push dword [esp + 0x24]
push dword [esp + 0x30]
push edx
call fcn.0043ea60
test eax, eax
jns 0x43f0fa
cmp eax, 0x8000000d
jne 0x43ee60
mov eax, dword [esp + 0x70]
mov ecx, dword [esp + 0x74]
mov edx, dword [ebp + 0x10]
cmp eax, edx
sbb ecx, 0
jb 0x43ee60
push dword [ebp + 0x14]
push edx
push dword [ebp + 0xc]
push eax
push dword [esp + 0x28]
lea eax, [esp + 0x20]
push eax
call fcn.0043f510
add esp, 0x18
mov eax, dword [esp + 0xc]
mov ecx, dword [esp + 0x10]
mov dword [esp + 0x5c], ecx
cmp eax, ecx
je 0x43f380
mov dword [esp + 0x68], eax
mov esi, eax
mov ecx, dword [esp + 8]
mov eax, dword [esp + 0x2c]
mov edx, dword [esp + 4]
jmp 0x43f1a8
push dword [esp + 8]
call fcn.0040c8c0
add esp, 4
mov ebx, dword [esp + 0x28]
mov edi, dword [esp + 0x3c]
mov eax, dword [esp + 0x1c]
lea eax, [edi + eax*8]
mov dword [esp + 0x1c], eax
mov edx, edi
add edx, ebx
mov ecx, edi
mov eax, dword [esp + 0x2c]
mov edi, dword [esp + 0x30]
mov dword [ecx + ebx], edi
mov edi, dword [esp + 0x40]
mov dword [ecx + ebx + 4], edi
add edx, 8
add esi, 4
cmp esi, dword [esp + 0x5c]
je 0x43f335
mov edi, dword [esi]
sub edi, dword [esp + 0x18]
mov ebx, edi
sar ebx, 0x1f
add edi, eax
mov dword [esp + 0x30], edi
adc ebx, dword [esp + 0x20]
mov dword [esp + 0x40], ebx
mov ebx, edx
sub ebx, ecx
cmp edx, dword [esp + 0x1c]
jne 0x43f189
mov dword [esp + 4], edx
mov dword [esp + 8], ecx
mov edx, ebx
sar edx, 3
lea eax, [edx + 1]
mov ecx, edx
shr ecx, 1
add ecx, edx
cmp ecx, eax
ja 0x43f1e7
mov ecx, eax
mov eax, ecx
and eax, 0xfffffff7
mov edi, ecx
and edi, 8
mov edx, ecx
mov dword [esp + 0x1c], ecx
or edx, 8
imul edx, edi
xor edi, 8
imul edi, eax
add edx, edi
push edx
call fcn.0040c8b0
add esp, 4
mov edi, eax
mov edx, dword [esp + 8]
test edx, edx
je 0x43f174
cmp edi, edx
mov dword [esp + 0x28], ebx
mov dword [esp + 0x3c], edi
jbe 0x43f2e2
cmp dword [esp + 4], edi
jbe 0x43f2e2
test ebx, ebx
je 0x43f160
mov edx, dword [esp + 0x28]
mov eax, dword [esp + 0x3c]
add eax, edx
dec eax
mov ecx, dword [esp + 8]
add ecx, edx
dec ecx
mov edi, edx
and edi, 7
je 0x43f274
neg edi
xor edx, edx
nop
nop
nop
nop
nop
movzx ebx, byte [ecx + edx]
mov byte [eax + edx], bl
dec edx
cmp edi, edx
jne 0x43f260
add ecx, edx
add eax, edx
add edx, dword [esp + 0x28]
mov edi, dword [esp + 8]
sub edi, dword [esp + 4]
cmp edi, 0xfffffff8
ja 0x43f160
neg edx
xor edi, edi
nop
nop
nop
nop
nop
nop
nop
movzx ebx, byte [ecx + edi]
mov byte [eax + edi], bl
movzx ebx, byte [ecx + edi - 1]
mov byte [eax + edi - 1], bl
movzx ebx, byte [ecx + edi - 2]
mov byte [eax + edi - 2], bl
movzx ebx, byte [ecx + edi - 3]
mov byte [eax + edi - 3], bl
movzx ebx, byte [ecx + edi - 4]
mov byte [eax + edi - 4], bl
movzx ebx, byte [ecx + edi - 5]
mov byte [eax + edi - 5], bl
movzx ebx, byte [ecx + edi - 6]
mov byte [eax + edi - 6], bl
movzx ebx, byte [ecx + edi - 7]
mov byte [eax + edi - 7], bl
add edi, 0xfffffff8
cmp edx, edi
jne 0x43f290
jmp 0x43f160
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 + 0x3c]
lea edi, [eax + edx]
add edx, ecx
mov ecx, ebx
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 0x43f160
mov eax, dword [esp + 0x28]
and eax, 2
movzx ecx, byte [edx + eax]
mov edx, dword [esp + 4]
mov byte [edx + eax], cl
jmp 0x43f160
mov eax, dword [ebp + 8]
mov dword [eax + 4], edx
mov dword [eax], ecx
mov esi, dword [esp + 0x1c]
mov dword [eax + 8], esi
mov eax, dword [esp + 0x68]
test eax, eax
je 0x43f39c
mov dword [esp + 8], ecx
cmp eax, dword [esp + 0x5c]
mov esi, dword [esp + 0x24]
mov edi, dword [esp + 0x38]
je 0x43ee64
push eax
mov dword [esp + 8], edx
call fcn.0040c8c0
mov edx, dword [esp + 8]
add esp, 4
mov dword [esp + 0xc], 0
jmp 0x43ee64
mov eax, dword [ebp + 8]
mov edx, dword [esp + 4]
mov dword [eax + 4], edx
mov ecx, dword [esp + 8]
mov dword [eax], ecx
mov ecx, dword [esp + 0x1c]
mov dword [eax + 8], ecx
jmp 0x43ee64
mov dword [esp + 8], ecx
mov esi, dword [esp + 0x24]
mov edi, dword [esp + 0x38]
jmp 0x43ee64
mov dword [esp + 0xc], 0x34353a3b
mov eax, 0x9a22fb6
mov ecx, 0x65dd049
nop
movzx esi, byte [esp + eax - 0x9a22faa]
mov edi, ecx
and edi, 0x608904b
mov edx, eax
and edx, 0x8000084
or edx, edi
xor edx, esi
xor edx, 0x28554084
mov edi, 0xbfd51170
sub edi, edx
mov esi, edi
add edx, 0x402aee8f
mov ebx, edx
and edx, 0x1e
and edi, 0xe1
or edi, edx
not ebx
xor edi, 0x1f
and ebx, 1
or ebx, edi
and esi, 1
add ebx, esi
mov byte [esp + eax - 0x9a22faa], bl
inc eax
dec ecx
cmp eax, 0x9a22fba
jne 0x43f3c0
mov eax, dword [0x4504d8]
test eax, eax
je 0x43f4c2
mov ecx, dword [esp + 0xc]
xor edx, edx
mov esi, dword [0x4504dc]
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
cmp dword [esi + edx*8], 0x16194952
je 0x43f498
inc edx
cmp eax, edx
jne 0x43f440
jmp 0x43f4c2
push 0xbbf966b4
push dword [0x4504cc]
call fcn.004433b0
add esp, 8
test eax, eax
je 0x43f4cf
mov ecx, dword [esi]
test ecx, ecx
je 0x43ed54
mov dword [esp + 0xc], 0
lea edx, [esp + 0xc]
push edx
push ecx
call eax
test eax, eax
je 0x43f4db
cmp dword [esp + 0xc], 0
je 0x43f4db
mov dword [esi + 4], 3
jmp 0x43ed54
mov eax, dword [esi + edx*8 + 4]
cmp eax, ecx
je 0x43f4c2
lea ecx, [esp + 0x44]
lea edx, [esp + 0x18]
push 0x8000
push ecx
push edx
push 0xffffffffffffffff
push 4
push dword [0x4504e0]
push eax
call fcn.00440d90
add esp, 0x1c
mov eax, dword [ebp + 8]
lea esp, [ebp - 0xc]
pop esi
pop edi
pop ebx
pop ebp
ret 0x10
mov dword [esi + 4], 1
jmp 0x43ed54
lea eax, [esp + 0x50]
push eax
call fcn.00443bb0
add esp, 4
test al, al
je 0x43ed54
mov eax, dword [esp + 0x50]
mov ecx, 2
cmp eax, 3
je 0x43f500
mov ecx, eax
mov dword [esi + 4], ecx
jmp 0x43ed54