Function at 0x43c380
Capabilities:
Encode data using xor

Disassembly:
push ebp
push ebx
push edi
push esi
sub esp, 0x2c
mov eax, dword [esp + 0x40]
mov edi, dword [esp + 0x44]
mov ecx, dword [esp + 0x48]
add ecx, edi
sub ecx, dword [esp + 0x50]
mov dword [eax + 8], 0
mov dword [eax + 4], 0
mov dword [eax], 0
mov dword [esp + 0x28], ecx
cmp ecx, edi
jbe 0x43c7cc
mov esi, dword [esp + 0x54]
mov ecx, dword [esp + 0x50]
mov eax, ecx
not eax
and eax, 1
and ecx, 0xfffffffe
sub ecx, eax
mov dword [esp + 0x24], ecx
mov dword [esp + 0xc], 0
xor eax, eax
mov dword [esp + 0x14], 0
jmp 0x43c41e
push ecx
push edx
push eax
call fcn.00408610
add esp, 0xc
mov edx, dword [esp + 4]
mov ebx, dword [esp + 8]
mov dword [edx + ebx], edi
add ebp, 4
mov eax, dword [esp + 0x40]
mov dword [eax + 4], ebp
add edi, dword [esp + 0x24]
mov dword [esp + 0xc], ebp
mov esi, dword [esp + 0x54]
inc edi
mov eax, edx
cmp edi, dword [esp + 0x28]
jae 0x43c7cc
mov dword [esp], eax
test esi, esi
je 0x43c45c
movzx eax, byte [esi]
mov byte [esp + 0x18], 0xdb
lea ecx, [esp + 0x19]
mov byte [ecx + 2], 0
mov word [ecx], 0
xor ecx, ecx
nop
nop
nop
nop
mov edx, ecx
add dl, 0x46
xor dl, byte [esp + ecx + 0x18]
add dl, 0xa2
mov byte [esp + ecx + 0x18], dl
inc ecx
cmp ecx, 4
jne 0x43c440
cmp al, byte [esp + 0x18]
je 0x43c46b
movzx eax, byte [edi]
mov ecx, dword [esp + 0x4c]
cmp al, byte [ecx]
jne 0x43c5a0
cmp dword [esp + 0x50], 2
jb 0x43c560
mov eax, 1
mov dword [esp + 0x10], edi
jmp 0x43c4b6
movzx ecx, byte [edi + eax]
mov edx, dword [esp + 0x4c]
cmp cl, byte [edx + eax]
jne 0x43c6af
mov ecx, eax
xor ecx, 1
and eax, 1
lea eax, [ecx + eax*2]
cmp eax, dword [esp + 0x50]
jae 0x43c560
test esi, esi
je 0x43c490
movzx ecx, byte [esi + eax]
mov byte [esp + 0x1c], 0x45
mov dword [esp + 0x1d], 0
mov edx, 0x7e2761
mov esi, 0x3281d89e
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
movzx ebp, byte [esp + edx - 0x7e2745]
mov edi, esi
and edi, 0xb
mov ebx, edx
and ebx, 0x6c2004
or ebx, edi
xor ebx, ebp
mov edi, ebx
xor edi, 0x82010
xor ebx, 0x8d12076b
or edi, 0xf3f7dce5
lea ebp, [ebx + edi]
add edi, ebx
add edi, 0x3c893b1b
and ebx, 0x1a
add ebx, ebp
add ebx, 0x3c893b1b
and edi, 1
or ebx, 1
add ebx, edi
mov byte [esp + edx - 0x7e2745], bl
inc edx
dec esi
cmp edx, 0x7e2766
jne 0x43c4e0
cmp cl, byte [esp + 0x1c]
mov edi, dword [esp + 0x10]
mov esi, dword [esp + 0x54]
jne 0x43c490
jmp 0x43c4a1
mov ecx, dword [esp]
mov eax, ecx
mov edx, dword [esp + 0xc]
xor eax, edx
mov esi, ecx
not esi
and esi, edx
add esi, esi
sub esi, eax
mov eax, edx
cmp edx, dword [esp + 0x14]
je 0x43c5a8
mov ebx, eax
sub ebx, ecx
mov edx, ecx
mov ebp, eax
cmp ebx, esi
jae 0x43c3f8
jmp 0x43c74d
mov edx, dword [esp]
jmp 0x43c411
mov ebx, eax
mov eax, esi
sar eax, 2
inc eax
sub ebx, ecx
mov ecx, ebx
sar ecx, 2
mov edx, ecx
shr edx, 1
add edx, ecx
cmp edx, eax
ja 0x43c5c3
mov edx, eax
mov dword [esp + 0x14], edx
lea eax, [edx*4]
push eax
call fcn.00408590
add esp, 4
mov edx, eax
mov ecx, dword [esp]
test ecx, ecx
mov dword [esp + 4], eax
je 0x43c71b
mov dword [esp + 0x10], edi
cmp edx, ecx
mov dword [esp + 8], ebx
jbe 0x43c6ba
cmp dword [esp + 0xc], edx
jbe 0x43c6ba
test ebx, ebx
je 0x43c701
mov eax, dword [esp + 4]
mov edx, dword [esp + 8]
add eax, edx
dec eax
mov ecx, dword [esp]
add ecx, edx
dec ecx
mov edi, edx
and edi, 7
je 0x43c644
neg edi
xor edx, edx
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
movzx ebx, byte [ecx + edx]
mov byte [eax + edx], bl
dec edx
cmp edi, edx
jne 0x43c630
add ecx, edx
add eax, edx
add edx, dword [esp + 8]
mov edi, dword [esp]
sub edi, dword [esp + 0xc]
cmp edi, 0xfffffff8
ja 0x43c701
neg edx
xor edi, edi
nop
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 0x43c660
jmp 0x43c701
add edi, eax
dec edi
mov edx, dword [esp]
jmp 0x43c411
mov ecx, ebx
shr ecx, 2
mov ebp, ebx
mov ebx, dword [esp]
mov eax, ebx
mov edi, edx
xchg esi, eax
rep movsd dword es:[edi], dword [esi]
xchg esi, eax
mov eax, edx
mov edi, ebp
mov edx, ebp
and edx, 0xfffffffc
lea ebp, [eax + edx]
add edx, ebx
mov ecx, edi
mov eax, edi
shr ecx, 1
and ecx, 1
mov ebx, edx
mov edi, ebp
xchg esi, ebx
rep movsw word es:[edi], word [esi]
xchg esi, ebx
test al, 1
je 0x43c701
mov ecx, dword [esp + 8]
and ecx, 2
movzx edx, byte [edx + ecx]
mov byte [ebp + ecx], dl
mov edi, dword [esp]
push edi
call fcn.004085a0
mov ecx, edi
add esp, 4
mov edi, dword [esp + 0x10]
mov edx, dword [esp + 4]
mov ebx, dword [esp + 8]
mov eax, dword [esp + 0x40]
mov dword [eax], edx
lea ebp, [edx + esi]
mov dword [eax + 4], ebp
mov edx, dword [esp + 4]
mov eax, dword [esp + 0x14]
lea edx, [edx + eax*4]
mov dword [esp + 0x14], edx
mov eax, dword [esp + 0x40]
mov dword [eax + 8], edx
mov edx, dword [esp + 4]
mov eax, dword [esp + 0xc]
cmp ebx, esi
jae 0x43c3f8
add ecx, esi
sub ecx, eax
mov eax, edx
add edx, ebx
mov dword [esp + 4], eax
mov dword [esp + 8], ebx
add eax, ebx
add eax, 4
cmp ecx, 4
jg 0x43c3e5
mov dword [esp], ecx
mov ecx, dword [esp]
shr ecx, 2
mov esi, edx
mov dword [esp + 0x10], edi
mov edi, eax
xchg esi, esi
rep movsd dword es:[edi], dword [esi]
xchg esi, esi
mov esi, dword [esp]
and esi, 0xfffffffc
add eax, esi
add esi, edx
mov ecx, dword [esp]
shr ecx, 1
and ecx, 1
mov edx, esi
mov edi, eax
xchg esi, edx
rep movsw word es:[edi], word [esi]
xchg esi, edx
mov ecx, dword [esp]
mov edi, dword [esp + 0x10]
test cl, 1
mov edx, dword [esp + 4]
mov ebx, dword [esp + 8]
je 0x43c3f8
and ecx, 2
mov edx, ecx
movzx ecx, byte [esi + ecx]
mov byte [eax + edx], cl
mov edx, dword [esp + 4]
jmp 0x43c3f8
mov eax, dword [esp + 0x40]
add esp, 0x2c
pop esi
pop edi
pop ebx
pop ebp
ret