Function at 0x43c780
Capabilities:
Encode data using xor

Disassembly:
push ebp
push ebx
push edi
push esi
sub esp, 0x20
mov eax, dword [esp + 0x34]
mov esi, dword [esp + 0x38]
mov ecx, dword [esp + 0x3c]
add ecx, esi
sub ecx, dword [esp + 0x44]
mov dword [eax + 8], 0
mov dword [eax + 4], 0
mov dword [eax], 0
mov dword [esp + 0x1c], ecx
cmp ecx, esi
jbe 0x43cad0
mov ebp, dword [esp + 0x48]
xor edx, edx
mov dword [esp + 4], 0
mov dword [esp], 0
jmp 0x43c7df
mov eax, dword [esp + 0x34]
inc esi
cmp esi, dword [esp + 0x1c]
jae 0x43cad0
test ebp, ebp
mov dword [esp + 8], edx
je 0x43c83d
movzx ecx, byte [ebp]
mov byte [esp + 0xc], 0xbd
mov dword [esp + 0xd], 0
mov eax, 0xd5
mov edx, 0x2a
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
movzx edi, byte [esp + eax - 0xc9]
mov ebx, edx
xor ebx, eax
and ebx, edi
xor ebx, eax
add bl, 0xd7
mov byte [esp + eax - 0xc9], bl
inc eax
dec edx
cmp eax, 0xda
jne 0x43c810
cmp cl, byte [esp + 0xc]
mov edx, dword [esp + 8]
je 0x43c848
movzx eax, byte [esi]
mov ecx, dword [esp + 0x40]
cmp al, byte [ecx]
jne 0x43c7d0
cmp dword [esp + 0x44], 2
jb 0x43c8e0
mov ecx, 1
jmp 0x43c878
movzx eax, byte [esi + ecx]
mov edx, dword [esp + 0x40]
cmp al, byte [edx + ecx]
jne 0x43ca06
inc ecx
cmp ecx, dword [esp + 0x44]
je 0x43c8e0
test ebp, ebp
je 0x43c860
movzx edx, byte [ebp + ecx]
mov byte [esp + 0xc], 0xb
mov dword [esp + 0xd], 0
mov ebp, 0x91
mov eax, 0x832cde6e
nop
nop
nop
nop
nop
nop
nop
nop
movzx edi, byte [esp + eax + 0x7cd3219e]
mov ebx, ebp
xor ebx, eax
and ebx, edi
xor ebx, eax
mov edi, ebx
xor edi, 0xd8
and ebx, 0x58
lea ebx, [edi + ebx*2]
add bl, 2
mov byte [esp + eax + 0x7cd3219e], bl
dec ebp
inc eax
cmp ebp, 0x8c
jne 0x43c8a0
cmp dl, byte [esp + 0xc]
mov ebp, dword [esp + 0x48]
jne 0x43c860
jmp 0x43c871
mov edx, dword [esp + 8]
mov eax, edx
not eax
mov ebx, dword [esp + 4]
and eax, ebx
mov ebp, ebx
not ebp
and ebp, edx
sub ebp, eax
cmp edx, dword [esp]
je 0x43c904
mov eax, dword [esp + 0x34]
jmp 0x43cab7
mov eax, ebp
sar eax, 2
inc eax
sub edx, ebx
mov dword [esp], edx
mov ecx, edx
sar ecx, 2
mov edi, ecx
shr edi, 1
add edi, ecx
cmp edi, eax
ja 0x43c920
mov edi, eax
lea eax, [edi*4]
push eax
call fcn.004082b0
add esp, 4
mov ebx, eax
mov eax, dword [esp + 4]
test eax, eax
je 0x43ca9e
cmp ebx, eax
mov eax, dword [esp + 8]
mov dword [esp + 0x18], edi
mov dword [esp + 0x14], ebx
jbe 0x43ca16
cmp eax, ebx
jbe 0x43ca16
mov ebx, dword [esp]
test ebx, ebx
je 0x43ca8a
mov eax, dword [esp + 0x14]
add eax, ebx
dec eax
mov ecx, dword [esp + 4]
add ecx, ebx
dec ecx
mov edi, ebx
and edi, 7
je 0x43c995
neg edi
xor edx, edx
nop
nop
movzx ebx, byte [ecx + edx]
mov byte [eax + edx], bl
dec edx
cmp edi, edx
jne 0x43c980
add ecx, edx
add eax, edx
mov ebx, dword [esp]
add ebx, edx
mov edx, dword [esp + 4]
sub edx, dword [esp + 8]
cmp edx, 0xfffffff8
ja 0x43ca8a
neg ebx
xor edx, edx
nop
nop
nop
nop
nop
nop
mov edi, ebx
movzx ebx, byte [ecx + edx]
mov byte [eax + edx], bl
movzx ebx, byte [ecx + edx - 1]
mov byte [eax + edx - 1], bl
movzx ebx, byte [ecx + edx - 2]
mov byte [eax + edx - 2], bl
movzx ebx, byte [ecx + edx - 3]
mov byte [eax + edx - 3], bl
movzx ebx, byte [ecx + edx - 4]
mov byte [eax + edx - 4], bl
movzx ebx, byte [ecx + edx - 5]
mov byte [eax + edx - 5], bl
movzx ebx, byte [ecx + edx - 6]
mov byte [eax + edx - 6], bl
movzx ebx, byte [ecx + edx - 7]
mov byte [eax + edx - 7], bl
mov ebx, edi
add edx, 0xfffffff8
cmp edi, edx
jne 0x43c9b0
jmp 0x43ca8a
add esi, ecx
dec esi
mov eax, dword [esp + 0x34]
mov edx, dword [esp + 8]
jmp 0x43c7d4
mov ecx, dword [esp]
shr ecx, 2
mov edx, dword [esp + 4]
mov edi, ebx
xchg esi, edx
rep movsd dword es:[edi], dword [esi]
xchg esi, edx
mov ecx, dword [esp]
mov edx, ecx
and edx, 0xfffffffc
lea eax, [ebx + edx]
mov dword [esp + 8], eax
add edx, dword [esp + 4]
mov eax, ecx
and eax, 3
mov ecx, eax
shr ecx, 1
mov ebx, edx
mov edi, dword [esp + 8]
xchg esi, ebx
rep movsw word es:[edi], word [esi]
xchg esi, ebx
mov edi, dword [esp + 8]
mov ebx, dword [esp]
mov ecx, eax
xor ecx, 0xfffffffe
or eax, 1
and eax, ecx
je 0x43ca8a
and ebx, 2
movzx ecx, byte [edx + ebx]
mov byte [edi + ebx], cl
cmp eax, 1
je 0x43ca8a
movzx ecx, byte [edx + ebx + 1]
mov byte [edi + ebx + 1], cl
cmp eax, 2
je 0x43ca8a
movzx eax, byte [edx + ebx + 2]
mov byte [edi + ebx + 2], al
push dword [esp + 4]
call fcn.004082c0
add esp, 4
mov ebx, dword [esp + 0x14]
mov edi, dword [esp + 0x18]
mov eax, dword [esp + 0x34]
mov dword [eax], ebx
lea ecx, [ebx + edi*4]
mov edx, ebx
add edx, ebp
mov dword [esp], ecx
mov dword [eax + 8], ecx
mov ecx, ebx
mov dword [esp + 4], ebx
mov dword [ebx + ebp], esi
add edx, 4
mov dword [eax + 4], edx
mov ecx, dword [esp + 0x44]
add esi, ecx
dec esi
mov ebp, dword [esp + 0x48]
jmp 0x43c7d4
add esp, 0x20
pop esi
pop edi
pop ebx
pop ebp
ret