Function at 0x43c450
Capabilities:
Encode data using xor

Disassembly:
push ebp
push ebx
push edi
push esi
sub esp, 0x24
mov eax, dword [esp + 0x3c]
xor ecx, ecx
test eax, eax
je 0x43c483
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
cmp word [eax + ecx], 0
lea ecx, [ecx + 2]
jne 0x43c470
add ecx, 0xfffffffe
and ecx, 0xfffe
mov word [esp + 0x18], cx
mov edx, eax
test eax, eax
je 0x43c493
add ecx, 2
mov edx, ecx
mov word [esp + 0x1a], dx
mov dword [esp + 0x1c], eax
mov dword [esp + 8], 0x6261606f
xor eax, eax
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
mov ecx, eax
add cl, 0xd7
xor cl, byte [esp + eax + 8]
add cl, 0x48
mov byte [esp + eax + 8], cl
inc eax
cmp eax, 4
jne 0x43c4b0
mov eax, dword [esp + 8]
mov dword [esp + 4], eax
mov dword [esp + 0x14], 0xb4b3b2b3
xor ecx, ecx
nop
nop
nop
nop
nop
nop
nop
nop
movzx eax, byte [esp + ecx + 0x14]
lea edx, [ecx + 0x62cd1d79]
xor edx, eax
add edx, 0xe9971437
mov eax, edx
xor eax, 0xfffffffe
mov esi, edx
or esi, 1
and esi, eax
mov eax, esi
and eax, 0xfd
mov edi, esi
and edi, 2
or esi, 2
imul esi, edi
xor edi, 2
imul edi, eax
xor edx, 1
add edx, esi
add edx, edi
mov byte [esp + ecx + 0x14], dl
mov eax, ecx
and eax, 1
xor ecx, 1
lea ecx, [ecx + eax*2]
cmp ecx, 4
jb 0x43c4e0
mov eax, dword [esp + 0x14]
mov dword [esp + 0xc], eax
mov dword [esp], 0x54555657
mov edx, 0x48578125
mov ebx, 0x90af024a
nop
nop
nop
nop
nop
movzx ebp, byte [esp + edx - 0x48578125]
mov eax, ebx
and eax, 0x102f0006
mov edi, edx
xor edi, 0x93ff443
add edi, eax
mov eax, edi
and eax, ebp
lea ecx, [edi + ebp]
not ecx
lea esi, [ecx + eax*2]
and esi, edi
mov ecx, esi
and ecx, 2
mov eax, esi
or esi, 2
imul esi, ecx
xor ecx, 2
and eax, 0x51ff757d
imul eax, ecx
sub esi, edi
mov ecx, 0x1419eff
sub ecx, esi
sub ecx, eax
add eax, esi
add eax, 0xfebe6200
and ecx, ebp
not ebp
and ebp, eax
sub ecx, ebp
add cl, 0xc0
mov byte [esp + edx - 0x48578125], cl
inc edx
add ebx, 2
cmp edx, 0x48578129
jne 0x43c550
mov ebx, dword [esp]
mov edx, dword [0x447604]
test edx, edx
je 0x43c623
xor eax, eax
mov ecx, dword [0x447608]
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
cmp dword [ecx + eax*8], 0x299a4ecd
je 0x43c5f0
inc eax
cmp edx, eax
jne 0x43c5e0
jmp 0x43c623
mov edx, dword [ecx + eax*8 + 4]
cmp edx, ebx
je 0x43c623
lea eax, [esp + 0x10]
lea ecx, [esp + 0x18]
push eax
push dword [esp + 8]
push 0
push dword [esp + 0x18]
push ecx
push dword [esp + 0x4c]
push 0x18
push edx
push dword [0x44760c]
call fcn.00439030
add esp, 0x24
mov ebx, eax
mov dword [esp], 0xe6a5a480
xor eax, eax
nop
nop
nop
nop
mov ecx, eax
add cl, 0x7b
xor cl, byte [esp + eax]
add cl, 0x28
mov byte [esp + eax], cl
mov ecx, eax
and ecx, 1
xor eax, 1
lea eax, [eax + ecx*2]
cmp eax, 4
jb 0x43c630
cmp ebx, dword [esp]
jne 0x43c855
push dword [esp + 0x10]
call fcn.004375a0
add esp, 4
mov dword [esp + 4], eax
mov eax, dword [esp + 0x10]
mov dword [esp + 0xc], eax
mov dword [esp + 8], 0xf8e7e6e7
xor edx, edx
xor edi, edi
nop
nop
nop
nop
nop
movzx ecx, byte [esp + edi + 8]
mov esi, edx
and esi, 2
mov eax, edi
xor eax, 0xd7c8198d
add eax, esi
mov esi, eax
and esi, ecx
add eax, ecx
add esi, esi
sub eax, esi
add eax, 0x41bf3397
mov ecx, eax
and ecx, 1
xor eax, 1
lea eax, [eax + ecx*2]
mov byte [esp + edi + 8], al
inc edi
add edx, 2
cmp edi, 4
jne 0x43c680
mov eax, dword [esp + 8]
mov dword [esp + 0x20], eax
mov dword [esp], 0x54555657
mov ecx, 0x48578125
mov ebp, 0x90af024a
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
movzx edi, byte [esp + ecx - 0x48578125]
mov eax, ebp
and eax, 0x102f0006
mov ebx, ecx
xor ebx, 0x93ff443
add ebx, eax
mov eax, ebx
and eax, edi
lea esi, [ebx + edi]
not esi
lea esi, [esi + eax*2]
and esi, ebx
mov edx, esi
and edx, 2
mov eax, esi
or esi, 2
imul esi, edx
xor edx, 2
and eax, 0x51ff757d
imul eax, edx
sub esi, ebx
mov ebx, 0x1419eff
sub ebx, esi
sub ebx, eax
add eax, esi
add eax, 0xfebe6200
and ebx, edi
not edi
and edi, eax
sub ebx, edi
add bl, 0xc0
mov byte [esp + ecx - 0x48578125], bl
inc ecx
add ebp, 2
cmp ecx, 0x48578129
jne 0x43c6e0
mov ebx, dword [esp]
mov eax, dword [0x447604]
test eax, eax
je 0x43c7b6
xor ecx, ecx
mov esi, dword [0x447608]
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
cmp dword [esi + ecx*8], 0x299a4ecd
je 0x43c780
inc ecx
cmp eax, ecx
jne 0x43c770
jmp 0x43c7b6
mov ecx, dword [esi + ecx*8 + 4]
cmp ecx, ebx
je 0x43c7b6
lea eax, [esp + 0x10]
lea edx, [esp + 0x18]
push eax
push dword [esp + 0x10]
mov eax, dword [esp + 0xc]
push eax
push dword [esp + 0x2c]
push edx
push dword [esp + 0x4c]
push 0x18
push ecx
push dword [0x44760c]
call fcn.00439030
add esp, 0x24
mov ebx, eax
test ebx, ebx
js 0x43c849
mov ecx, dword [esp + 0x40]
test ecx, ecx
je 0x43c7cf
mov eax, dword [esp + 4]
mov eax, dword [eax + 4]
mov dword [ecx], eax
cmp dword [esp + 0x48], 0
je 0x43c849
cmp dword [esp + 0x44], 0
je 0x43c83c
mov eax, dword [esp + 0x48]
mov eax, dword [eax]
mov ecx, dword [esp + 4]
mov ecx, dword [ecx + 8]
cmp eax, ecx
jb 0x43c7f0
mov eax, ecx
mov edx, dword [esp + 4]
lea ebp, [edx + 0xc]
mov ecx, eax
shr ecx, 2
mov esi, dword [esp + 0x44]
mov edi, esi
xchg esi, ebp
rep movsd dword es:[edi], dword [esi]
xchg esi, ebp
mov ecx, eax
and ecx, 0xfffffffc
add esi, ecx
lea ebp, [edx + ecx]
add ebp, 0xc
mov edx, eax
and edx, 3
mov ecx, edx
shr ecx, 1
mov dword [esp + 0xc], ebp
mov edi, esi
xchg esi, ebp
rep movsw word es:[edi], word [esi]
xchg esi, ebp
test al, 1
je 0x43c83c
mov eax, dword [esp + 0xc]
movzx eax, byte [eax + edx - 1]
mov byte [esi + edx - 1], al
mov eax, dword [esp + 4]
mov eax, dword [eax + 8]
mov ecx, dword [esp + 0x48]
mov dword [ecx], eax
push dword [esp + 4]
call fcn.004375e0
add esp, 4
mov eax, ebx
add esp, 0x24
pop esi
pop edi
pop ebx
pop ebp
ret