Function at 0x43ca50
Capabilities:
Encode data using xor

Disassembly:
push ebp
mov ebp, esp
push ebx
push edi
push esi
and esp, 0xfffffff8
sub esp, 0x40
mov esi, dword [ebp + 0x14]
mov eax, dword [ebp + 0xc]
mov ecx, 0xfffffffe
nop
nop
nop
nop
nop
nop
nop
nop
nop
cmp word [eax + ecx + 2], 0
lea ecx, [ecx + 2]
jne 0x43ca70
sar ecx, 1
mov edx, ecx
and edx, 0xfffd
mov edi, ecx
and edi, 2
or ecx, 2
imul ecx, edi
xor edi, 2
imul edi, edx
lea edx, [edi + ecx]
mov word [esp + 0x30], dx
add ecx, edi
add ecx, 2
mov word [esp + 0x32], cx
mov dword [esp + 0x34], eax
mov dword [esp + 0x10], 0x42414047
mov dword [esp + 0x14], 0
mov word [esp + 0x18], 0
mov dword [esp + 4], 0
mov eax, dword [esp + 4]
cmp eax, 9
ja 0x43cb3c
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
mov ecx, dword [esp + 4]
mov eax, dword [esp + 4]
movzx edx, byte [esp + eax + 0x10]
lea edi, [ecx - 0x705ff7b5]
lea eax, [ecx + edx]
add eax, 0x8fa0084b
and edi, edx
mov ebx, 0x705ff7b4
sub ebx, ecx
or ebx, edx
add ebx, ecx
lea ecx, [edi + ebx]
add ecx, 0x8fa0084c
mov edx, ecx
xor edx, eax
not ecx
and ecx, eax
add ecx, ecx
sub ecx, edx
mov dword [esp + 0xc], ecx
mov eax, dword [esp + 0xc]
add al, 0xf3
mov ecx, dword [esp + 4]
mov byte [esp + ecx + 0x10], al
inc dword [esp + 4]
mov eax, dword [esp + 4]
cmp eax, 0xa
jb 0x43cae0
mov ebx, dword [esp + 0x10]
mov eax, dword [0x447858]
test eax, eax
je 0x43cb9e
xor ecx, ecx
mov edx, dword [0x44785c]
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
cmp dword [edx + ecx*8], 0x1201837f
je 0x43cb70
inc ecx
cmp eax, ecx
jne 0x43cb60
jmp 0x43cb9e
mov eax, dword [edx + ecx*8 + 4]
cmp eax, ebx
je 0x43cb9e
lea ecx, [esp + 0x2c]
lea edx, [esp + 0x30]
push ecx
push 0
push 0
push 2
push edx
push dword [ebp + 8]
push 6
push dword [0x447860]
push eax
call fcn.00438dd0
add esp, 0x24
mov ebx, eax
mov dword [esp + 0x10], 0xe3222d0b
mov dword [esp + 0x14], 0
mov byte [esp + 0x18], 0
mov dword [esp + 4], 0
mov eax, dword [esp + 4]
cmp eax, 8
ja 0x43cc0c
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
mov eax, dword [esp + 4]
mov ecx, dword [esp + 4]
movzx ecx, byte [esp + ecx + 0x10]
lea edx, [eax + 0x26]
add eax, ecx
and edx, ecx
add edx, edx
sub eax, edx
add eax, 0x68c9f426
mov dword [esp + 0xc], eax
mov eax, dword [esp + 0xc]
add al, 0xf6
mov ecx, dword [esp + 4]
mov byte [esp + ecx + 0x10], al
inc dword [esp + 4]
mov eax, dword [esp + 4]
cmp eax, 9
jb 0x43cbd0
cmp ebx, dword [esp + 0x10]
jne 0x43ce32
push dword [esp + 0x2c]
call fcn.004372e0
add esp, 4
mov dword [esp + 8], eax
mov eax, dword [esp + 0x2c]
mov dword [esp + 0x28], eax
mov dword [esp + 0x10], 0x42414047
mov dword [esp + 0x14], 0
mov word [esp + 0x18], 0
mov dword [esp + 4], 0
mov ecx, dword [esp + 4]
cmp ecx, 9
ja 0x43ccbb
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
mov edx, dword [esp + 4]
mov ecx, dword [esp + 4]
movzx edi, byte [esp + ecx + 0x10]
lea ebx, [edx - 0x705ff7b5]
lea ecx, [edx + edi]
add ecx, 0x8fa0084b
and ebx, edi
mov eax, 0x705ff7b4
sub eax, edx
or eax, edi
add eax, edx
add eax, ebx
add eax, 0x8fa0084c
mov edx, eax
xor edx, ecx
not eax
and eax, ecx
add eax, eax
sub eax, edx
mov dword [esp + 0xc], eax
mov eax, dword [esp + 0xc]
add al, 0xf3
mov ecx, dword [esp + 4]
mov byte [esp + ecx + 0x10], al
inc dword [esp + 4]
mov eax, dword [esp + 4]
cmp eax, 0xa
jb 0x43cc60
mov ebx, dword [esp + 0x10]
mov ecx, dword [0x447858]
test ecx, ecx
je 0x43ccf2
xor edx, edx
mov edi, dword [0x44785c]
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
cmp dword [edi + edx*8], 0x1201837f
je 0x43ce3c
inc edx
cmp ecx, edx
jne 0x43cce0
mov edi, dword [esp + 8]
test ebx, ebx
js 0x43ce29
mov ecx, dword [ebp + 0x10]
test ecx, ecx
je 0x43cd0a
mov eax, dword [edi + 4]
mov dword [ecx], eax
cmp dword [ebp + 0x18], 0
je 0x43ce29
mov dword [esp + 0x28], ebx
test esi, esi
je 0x43ce1d
mov eax, dword [ebp + 0x18]
mov edx, dword [eax]
mov eax, dword [edi + 8]
cmp edx, eax
jb 0x43cd2e
mov edx, eax
lea eax, [edi + 0xc]
mov ecx, edx
shr ecx, 2
mov edi, esi
xchg esi, eax
rep movsd dword es:[edi], dword [esi]
xchg esi, eax
mov eax, edx
and eax, 0xfffffffc
add esi, eax
mov ecx, dword [esp + 8]
add eax, ecx
add eax, 0xc
mov dword [esp + 0x38], edx
mov ecx, edx
and ecx, 3
mov ebx, ecx
not ebx
or ebx, 1
add ebx, ecx
shr ecx, 1
mov dword [esp + 0x24], eax
mov edi, esi
mov edx, dword [esp + 0x24]
xchg esi, edx
rep movsw word es:[edi], word [esi]
xchg esi, edx
mov edi, dword [esp + 8]
mov ecx, ebx
inc ecx
je 0x43ce1d
mov edx, dword [esp + 0x38]
and edx, 2
add eax, edx
add esi, edx
mov edi, ecx
and edi, 7
je 0x43cdb6
mov dword [esp + 0x24], ebx
xor edx, edx
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
movzx ebx, byte [eax + edx]
mov byte [esi + edx], bl
inc edx
cmp edi, edx
jne 0x43cda0
add eax, edx
add esi, edx
sub ecx, edx
mov ebx, dword [esp + 0x24]
cmp ebx, 7
mov edi, dword [esp + 8]
jb 0x43ce1d
xor edx, edx
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
movzx ebx, byte [eax + edx]
mov byte [esi + edx], bl
movzx ebx, byte [eax + edx + 1]
mov byte [esi + edx + 1], bl
movzx ebx, byte [eax + edx + 2]
mov byte [esi + edx + 2], bl
movzx ebx, byte [eax + edx + 3]
mov byte [esi + edx + 3], bl
movzx ebx, byte [eax + edx + 4]
mov byte [esi + edx + 4], bl
movzx ebx, byte [eax + edx + 5]
mov byte [esi + edx + 5], bl
movzx ebx, byte [eax + edx + 6]
mov byte [esi + edx + 6], bl
movzx ebx, byte [eax + edx + 7]
mov byte [esi + edx + 7], bl
add edx, 8
cmp ecx, edx
jne 0x43cdd0
mov eax, dword [edi + 8]
mov ecx, dword [ebp + 0x18]
mov dword [ecx], eax
mov ebx, dword [esp + 0x28]
push edi
call fcn.00437380
add esp, 4
mov eax, ebx
lea esp, [ebp - 0xc]
pop esi
pop edi
pop ebx
pop ebp
ret
mov ecx, dword [edi + edx*8 + 4]
cmp ecx, ebx
mov edi, dword [esp + 8]
je 0x43ccf6
lea eax, [esp + 0x2c]
lea edx, [esp + 0x30]
push eax
push dword [esp + 0x2c]
push edi
push 2
push edx
push dword [ebp + 8]
push 6
push dword [0x447860]
push ecx
call fcn.00438dd0
add esp, 0x24
mov ebx, eax
jmp 0x43ccf6