Function at 0x43cd70
Capabilities:
Encode data using xor

Disassembly:
push ebp
mov ebp, esp
push ebx
push edi
push esi
and esp, 0xfffffff8
sub esp, 0x28
mov eax, 0xc0000008
mov dword [esp + 4], ecx
cmp dword [ecx + 4], 0
je 0x43cfe5
mov ecx, dword [esp + 4]
mov ecx, dword [ecx]
test ecx, ecx
je 0x43cfe5
mov dword [esp], ecx
mov dword [esp + 8], 0xead5d4d7
mov dword [esp + 0xc], 0
mov byte [esp + 0x10], 0
mov ebx, 0x6fb77de3
mov eax, 0x9048821d
nop
movzx esi, byte [esp + eax + 0x6fb77deb]
mov edx, esi
not edx
and edx, eax
lea edx, [esi + edx*2]
add edx, ebx
lea ecx, [ebx - 1]
mov edi, ecx
and edi, esi
not edi
and edi, edx
or esi, eax
add esi, ebx
or esi, edi
mov dword [esp + 0x18], esi
mov esi, dword [esp + 0x18]
mov edx, esi
and edx, 0xf1fb8ec9
mov edi, 0xfffffffe
sub edi, edx
mov ebx, esi
and ebx, 2
imul ebx, edi
mov edi, esi
or edi, 0xfffffffd
inc edi
imul edi, edx
add edi, ebx
lea edx, [esi + edi]
add edx, 0xf1fb8ecb
and esi, 0xe047134
lea esi, [esi*2 + 0x6dec640b]
mov ebx, edx
not ebx
and ebx, esi
xor edx, esi
add ebx, ebx
sub ebx, edx
add bl, 0xf5
mov byte [esp + eax + 0x6fb77deb], bl
inc eax
mov ebx, ecx
cmp ecx, 0x6fb77dda
jne 0x43cdc0
mov eax, dword [esp + 8]
mov esi, dword [0x44ed90]
test esi, esi
je 0x43ce90
xor edi, edi
mov ebx, dword [0x44ed94]
nop
cmp dword [ebx + edi*8], 0x45a3f4b9
je 0x43ce70
inc edi
cmp esi, edi
jne 0x43ce60
jmp 0x43ce90
mov edx, dword [ebx + edi*8 + 4]
cmp edx, eax
je 0x43ce90
push dword [ebp + 8]
push dword [esp + 4]
push 2
push dword [0x44ed98]
push edx
call fcn.0043e300
add esp, 0x14
mov edi, dword [ebp + 0xc]
cmp edi, 1
mov esi, dword [ebp + 0x10]
mov ecx, esi
sbb ecx, 0
jl 0x43cfd4
cmp eax, 0xc000010a
jne 0x43cfd4
mov ecx, 0xffffd8f0
mov eax, edi
mul ecx
sub edx, edi
imul ecx, esi, 0xffffd8f0
add ecx, edx
mov dword [esp + 0x18], eax
mov dword [esp + 0x1c], ecx
mov eax, dword [esp + 4]
mov eax, dword [eax]
mov dword [esp], eax
mov dword [esp + 8], 0xead5d4d7
mov dword [esp + 0xc], 0
mov byte [esp + 0x10], 0
mov edi, 0x6fb77de3
mov eax, 0x9048821d
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
movzx ebx, byte [esp + eax + 0x6fb77deb]
mov ecx, ebx
not ecx
and ecx, eax
lea ecx, [ebx + ecx*2]
add ecx, edi
lea esi, [edi - 1]
mov edx, esi
and edx, ebx
not edx
and edx, ecx
or ebx, eax
add ebx, edi
or ebx, edx
mov dword [esp + 0x20], ebx
mov edi, dword [esp + 0x20]
mov edx, edi
and edx, 0xf1fb8ec9
mov ecx, 0xfffffffe
sub ecx, edx
mov ebx, edi
and ebx, 2
imul ebx, ecx
mov ecx, edi
or ecx, 0xfffffffd
inc ecx
imul ecx, edx
add ecx, ebx
lea edx, [edi + ecx]
add edx, 0xf1fb8ecb
and edi, 0xe047134
lea ecx, [edi*2 + 0x6dec640b]
mov ebx, edx
not ebx
and ebx, ecx
xor edx, ecx
add ebx, ebx
sub ebx, edx
add bl, 0xf5
mov byte [esp + eax + 0x6fb77deb], bl
inc eax
mov edi, esi
cmp esi, 0x6fb77dda
jne 0x43cf00
mov eax, dword [esp + 8]
mov esi, dword [0x44ed90]
test esi, esi
je 0x43cfd4
xor edi, edi
mov ebx, dword [0x44ed94]
nop
cmp dword [ebx + edi*8], 0x39c83604
je 0x43cfb0
inc edi
cmp esi, edi
jne 0x43cfa0
jmp 0x43cfd4
mov edx, dword [ebx + edi*8 + 4]
cmp edx, eax
je 0x43cfd4
lea eax, [esp + 0x18]
push eax
push 0
push dword [esp + 8]
push 3
push dword [0x44ed98]
push edx
call fcn.0043e300
add esp, 0x18
test eax, eax
js 0x43cfe5
mov ecx, dword [esp + 4]
mov esi, eax
call fcn.0043cc40
mov eax, esi
lea esp, [ebp - 0xc]
pop esi
pop edi
pop ebx
pop ebp
ret 0xc