Function at 0x43eea0
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 + 0x2c], 0
mov dword [esp + 0x24], 0x100000
mov dword [esp + 0x18], 0
mov dword [esp + 0xc], 0xe0e7e6e5
mov word [esp + 0x10], 0
mov eax, 0x59
mov ecx, 0x26
nop
nop
nop
nop
nop
nop
nop
mov esi, ecx
and esi, 0x3e
mov edx, eax
and edx, 0x41
or edx, esi
xor dl, byte [esp + eax - 0x4d]
xor dl, 0xbe
add dl, 0xc3
mov byte [esp + eax - 0x4d], dl
inc eax
dec ecx
cmp eax, 0x5f
jne 0x43ef00
mov eax, dword [esp + 0xc]
mov ecx, dword [0x44fabc]
test ecx, ecx
je 0x43ef7e
xor edx, edx
mov esi, dword [0x44fac0]
nop
nop
nop
nop
nop
nop
nop
nop
nop
cmp dword [esi + edx*8], 0xf3285e74
je 0x43ef50
inc edx
cmp ecx, edx
jne 0x43ef40
jmp 0x43ef7e
mov ecx, dword [esi + edx*8 + 4]
cmp ecx, eax
je 0x43ef7e
lea eax, [esp + 0x24]
lea edx, [esp + 0x18]
push 4
push 0x3000
push eax
push 0
push edx
push 0xffffffffffffffff
push 6
push dword [0x44fac4]
push ecx
call fcn.00440ac0
add esp, 0x24
test eax, eax
js 0x43f5c2
cmp dword [ebx + 4], 0
je 0x43f550
mov dword [esp + 0x20], 0
cmp dword [ebx + 4], 2
mov dword [esp + 0x48], 0x7fff
je 0x43efae
mov dword [esp + 0x48], 0
mov dword [esp + 0x44], 0xfffeffff
je 0x43efc0
mov dword [esp + 0x44], SysReAllocString
mov dword [esp + 0x3c], 0
mov dword [esp + 0x38], 0
mov dword [esp + 0x34], 0
mov dword [esp + 0x30], 0
mov dword [esp + 0x5c], 0
mov dword [esp + 0x58], 0
mov edi, 0x10000
mov dword [esp + 8], 0
mov dword [esp + 4], 0
mov dword [esp + 0x1c], 0
mov dword [esp + 0x4c], ebx
jmp 0x43f055
mov edi, dword [esp + 0x1c]
mov dword [esp + 0x1c], edi
mov eax, dword [esp + 0x38]
mov edx, dword [esp + 0x3c]
mov edi, dword [esp + 0x30]
mov esi, dword [esp + 0x34]
mov ecx, esi
and ecx, edx
xor esi, edx
mov edx, edi
and edx, eax
xor edi, eax
shld ecx, edx, 1
add edx, edx
add edi, edx
adc esi, ecx
cmp edi, dword [esp + 0x44]
mov dword [esp + 0x20], esi
mov eax, esi
sbb eax, dword [esp + 0x48]
jae 0x43f4d8
mov ecx, dword [esp + 0x4c]
lea eax, [esp + 0x58]
push eax
lea eax, [esp + 0x60]
push eax
lea eax, [esp + 0x38]
push eax
lea eax, [esp + 0x44]
push eax
push dword [esp + 0x30]
push edi
call fcn.0043ea90
cmp eax, 0xbfffffff
ja 0x43f4d8
mov dword [esp + 0x28], edi
test eax, eax
js 0x43f01b
cmp dword [esp + 0x5c], 0x1000
jne 0x43f01b
test byte [esp + 0x58], 0x66
je 0x43f01b
mov esi, dword [esp + 0x30]
cmp dword [esp + 0x24], esi
mov ebx, dword [esp + 0x34]
mov eax, 0
sbb eax, ebx
mov edx, dword [esp + 0x28]
jae 0x43f21a
mov dword [esp + 0xc], 0xe0e7e6e5
mov word [esp + 0x10], 0
mov eax, 0x59
mov ecx, 0x26
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
mov edi, ecx
and edi, 0x3e
mov edx, eax
and edx, 0x41
or edx, edi
xor dl, byte [esp + eax - 0x4d]
xor dl, 0xbe
add dl, 0xc3
mov byte [esp + eax - 0x4d], dl
inc eax
dec ecx
cmp eax, 0x5f
jne 0x43f0e0
mov eax, dword [0x44fabc]
test eax, eax
je 0x43f15a
mov ecx, dword [esp + 0xc]
xor edx, edx
mov edi, dword [0x44fac0]
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
cmp dword [edi + edx*8], 0x731cdbf3
je 0x43f130
inc edx
cmp eax, edx
jne 0x43f120
jmp 0x43f15a
mov eax, dword [edi + edx*8 + 4]
cmp eax, ecx
je 0x43f15a
push 0x8000
lea ecx, [esp + 0x30]
push ecx
lea ecx, [esp + 0x20]
push ecx
push 0xffffffffffffffff
push 4
push dword [0x44fac4]
push eax
call fcn.00440ac0
add esp, 0x1c
mov dword [esp + 0x2c], 0
mov dword [esp + 0x18], 0
mov dword [esp + 0x24], esi
mov dword [esp + 0xc], 0xe0e7e6e5
mov word [esp + 0x10], 0
mov eax, 0x59
mov ecx, 0x26
nop
nop
nop
nop
nop
nop
nop
nop
nop
mov edi, ecx
and edi, 0x3e
mov edx, eax
and edx, 0x41
or edx, edi
xor dl, byte [esp + eax - 0x4d]
xor dl, 0xbe
add dl, 0xc3
mov byte [esp + eax - 0x4d], dl
inc eax
dec ecx
cmp eax, 0x5f
jne 0x43f190
mov eax, dword [esp + 0xc]
mov ecx, dword [0x44fabc]
test ecx, ecx
je 0x43f20e
xor edx, edx
mov edi, dword [0x44fac0]
nop
nop
nop
nop
nop
nop
nop
nop
nop
cmp dword [edi + edx*8], 0xf3285e74
je 0x43f1e0
inc edx
cmp ecx, edx
jne 0x43f1d0
jmp 0x43f20e
mov ecx, dword [edi + edx*8 + 4]
cmp ecx, eax
je 0x43f20e
push 4
push 0x3000
lea eax, [esp + 0x2c]
push eax
push 0
lea eax, [esp + 0x28]
push eax
push 0xffffffffffffffff
push 6
push dword [0x44fac4]
push ecx
call fcn.00440ac0
add esp, 0x24
test eax, eax
mov edx, dword [esp + 0x28]
js 0x43f4d8
mov ecx, dword [esp + 0x4c]
lea eax, [esp + 0x70]
push eax
push ebx
push esi
push dword [esp + 0x24]
push dword [esp + 0x30]
push edx
call fcn.0043ed30
test eax, eax
jns 0x43f242
cmp eax, 0x8000000d
jne 0x43f013
mov eax, dword [esp + 0x70]
mov ecx, dword [esp + 0x74]
mov edx, dword [ebp + 0x10]
cmp eax, edx
sbb ecx, 0
mov edi, dword [esp + 0x1c]
jb 0x43f017
push dword [ebp + 0x14]
push edx
push dword [ebp + 0xc]
push eax
push dword [esp + 0x28]
lea eax, [esp + 0x20]
push eax
call fcn.0043f610
add esp, 0x18
mov eax, dword [esp + 0xc]
mov ecx, dword [esp + 0x10]
mov dword [esp + 0x50], ecx
cmp eax, ecx
mov edx, dword [esp + 4]
je 0x43f4bb
mov dword [esp + 0x60], eax
jmp 0x43f2bb
mov eax, dword [esp + 0x54]
mov dword [edx + ebx], ecx
mov dword [edx + ebx + 4], esi
add edi, 8
add eax, 4
cmp eax, dword [esp + 0x50]
je 0x43f484
mov dword [esp + 4], edx
mov dword [esp + 0x1c], edi
mov dword [esp + 0x54], eax
mov esi, dword [eax]
sub esi, dword [esp + 0x18]
mov ebx, esi
sar ebx, 0x1f
mov edi, dword [esp + 0x28]
mov ecx, edi
and ecx, esi
mov edx, dword [esp + 0x20]
mov eax, edx
and eax, ebx
shld eax, ecx, 1
add ecx, ecx
xor ebx, edx
mov edx, dword [esp + 4]
xor esi, edi
mov edi, dword [esp + 0x1c]
add esi, ecx
mov ecx, esi
mov esi, ebx
adc esi, eax
mov ebx, edi
sub ebx, edx
cmp edi, dword [esp + 8]
jne 0x43f2a0
mov dword [esp + 0x6c], ecx
mov dword [esp + 0x68], esi
mov ecx, ebx
sar ecx, 3
lea eax, [ecx + 1]
mov esi, ecx
shr esi, 1
add esi, ecx
cmp esi, eax
ja 0x43f322
mov esi, eax
lea eax, [esi*8]
push eax
call fcn.0040cbb0
add esp, 4
mov edx, eax
mov eax, dword [esp + 4]
test eax, eax
je 0x43f468
mov dword [esp + 0x64], esi
cmp edx, eax
mov dword [esp + 8], ebx
mov dword [esp + 0x40], edx
jbe 0x43f40f
cmp edi, edx
jbe 0x43f40f
test ebx, ebx
je 0x43f450
mov edx, dword [esp + 8]
mov eax, edx
and eax, 0xfffffffe
add eax, eax
mov ecx, edx
xor ecx, 1
sub eax, ecx
mov ebx, dword [esp + 4]
lea ecx, [ebx + eax]
add eax, dword [esp + 0x40]
mov edi, edx
and edi, 7
je 0x43f3a8
neg edi
xor edx, edx
nop
nop
nop
nop
movzx ebx, byte [ecx + edx]
mov byte [eax + edx], bl
dec edx
cmp edi, edx
jne 0x43f390
add ecx, edx
add eax, edx
add edx, dword [esp + 8]
mov ebx, dword [esp + 4]
mov edi, ebx
sub edi, dword [esp + 0x1c]
cmp edi, 0xfffffff8
ja 0x43f450
neg edx
xor edi, edi
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 0x43f3c0
jmp 0x43f450
mov ecx, ebx
shr ecx, 2
mov esi, dword [esp + 4]
mov eax, esi
mov edi, edx
xchg esi, eax
rep movsd dword es:[edi], dword [esi]
xchg esi, eax
mov eax, edx
mov edx, ebx
and edx, 0xfffffffc
add eax, edx
add edx, esi
mov esi, eax
mov ecx, ebx
shr ecx, 1
and ecx, 1
mov eax, edx
mov edi, esi
xchg esi, eax
rep movsw word es:[edi], word [esi]
xchg esi, eax
test bl, 1
je 0x43f450
mov eax, dword [esp + 8]
and eax, 2
movzx ecx, byte [edx + eax]
mov byte [esi + eax], cl
push dword [esp + 4]
call fcn.0040cbc0
add esp, 4
mov ebx, dword [esp + 8]
mov esi, dword [esp + 0x64]
mov edx, dword [esp + 0x40]
lea eax, [edx + esi*8]
mov dword [esp + 8], eax
mov edi, edx
add edi, ebx
mov eax, dword [esp + 0x54]
mov esi, dword [esp + 0x68]
mov ecx, dword [esp + 0x6c]
jmp 0x43f2a4
mov eax, dword [ebp + 8]
mov dword [eax + 4], edi
mov dword [eax], edx
mov ecx, dword [esp + 8]
mov dword [eax + 8], ecx
mov eax, dword [esp + 0x60]
test eax, eax
je 0x43f4cf
cmp eax, dword [esp + 0x50]
je 0x43f4cf
mov dword [esp + 4], edx
push eax
call fcn.0040cbc0
add esp, 4
mov dword [esp + 0xc], 0
jmp 0x43f017
mov eax, dword [ebp + 8]
mov dword [eax + 4], edi
mov dword [eax], edx
mov ecx, dword [esp + 8]
mov dword [eax + 8], ecx
jmp 0x43f017
mov dword [esp + 4], edx
jmp 0x43f017
mov dword [esp + 0xc], 0xe0e7e6e5
mov word [esp + 0x10], 0
mov eax, 0x59
mov ecx, 0x26
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
mov esi, ecx
and esi, 0x3e
mov edx, eax
and edx, 0x41
or edx, esi
xor dl, byte [esp + eax - 0x4d]
xor dl, 0xbe
add dl, 0xc3
mov byte [esp + eax - 0x4d], dl
inc eax
dec ecx
cmp eax, 0x5f
jne 0x43f500
mov eax, dword [0x44fabc]
test eax, eax
je 0x43f5c2
mov ecx, dword [esp + 0xc]
xor edx, edx
mov esi, dword [0x44fac0]
nop
nop
nop
nop
nop
nop
cmp dword [esi + edx*8], 0x731cdbf3
je 0x43f598
inc edx
cmp eax, edx
jne 0x43f540
jmp 0x43f5c2
push 0xf8eb88df
push dword [0x44fab0]
call fcn.00443160
add esp, 8
test eax, eax
je 0x43f5cf
mov ecx, dword [ebx]
test ecx, ecx
je 0x43ef90
mov dword [esp + 0xc], 0
lea edx, [esp + 0xc]
push edx
push ecx
call eax
test eax, eax
je 0x43f5db
cmp dword [esp + 0xc], 0
je 0x43f5db
mov dword [ebx + 4], 3
jmp 0x43ef90
mov eax, dword [esi + edx*8 + 4]
cmp eax, ecx
je 0x43f5c2
push 0x8000
lea ecx, [esp + 0x30]
push ecx
lea ecx, [esp + 0x20]
push ecx
push 0xffffffffffffffff
push 4
push dword [0x44fac4]
push eax
call fcn.00440ac0
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 0x43ef90
lea eax, [esp + 0x38]
push eax
call fcn.00443820
add esp, 4
test al, al
je 0x43ef90
mov eax, dword [esp + 0x38]
mov ecx, 2
cmp eax, 3
je 0x43f600
mov ecx, eax
mov dword [ebx + 4], ecx
jmp 0x43ef90