Function at 0x43c1a0
Capabilities:
Encode data using xor

Disassembly:
push ebp
push ebx
push edi
push esi
sub esp, 0x28
mov eax, dword [esp + 0x3c]
mov esi, dword [esp + 0x40]
mov ecx, dword [esp + 0x44]
add ecx, esi
sub ecx, dword [esp + 0x4c]
mov dword [eax + 8], 0
mov dword [eax + 4], 0
mov dword [eax], 0
mov dword [esp + 0x20], ecx
cmp ecx, esi
jbe 0x43c589
mov edi, dword [esp + 0x50]
mov dword [esp], 0
mov dword [esp + 4], 0
mov dword [esp + 8], 0
jmp 0x43c213
mov eax, ecx
xor eax, 1
and ecx, 0xfffffffe
add ecx, ecx
sub ecx, eax
add esi, ecx
mov eax, dword [esp + 0x3c]
inc esi
cmp esi, dword [esp + 0x20]
jae 0x43c589
test edi, edi
je 0x43c2d1
movzx eax, byte [edi]
mov byte [esp + 0xc], al
mov byte [esp + 0x18], 0x4d
lea eax, [esp + 0x19]
mov word [eax + 4], 0
mov dword [eax], 0
mov eax, 0x38fed13d
mov ebx, 0x47012ec2
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
movzx edi, byte [esp + eax - 0x38fed125]
mov edx, eax
and edx, edi
mov ecx, edx
and ecx, 0x7d
mov ebp, edx
and ebp, 2
or edx, 2
imul edx, ebp
xor ebp, 2
imul ebp, ecx
add edx, ebp
mov ecx, edx
xor ecx, eax
and edx, ebx
add edx, edx
not edx
add ecx, edi
mov ebp, 0x1cfa1630
sub ebp, ecx
sub ebp, edx
add ecx, edx
add ecx, 0xe305e9cf
mov edi, ecx
and edi, 1
mov edx, ebp
not edx
and ebp, 0xbb
and ecx, 0x44
or ecx, ebp
and edx, 1
or edx, ecx
xor edx, 0xba
add edx, edi
mov byte [esp + eax - 0x38fed125], dl
inc eax
dec ebx
cmp eax, 0x38fed144
jne 0x43c250
movzx eax, byte [esp + 0xc]
cmp al, byte [esp + 0x18]
mov edi, dword [esp + 0x50]
je 0x43c2e0
movzx eax, byte [esi]
mov ecx, dword [esp + 0x48]
cmp al, byte [ecx]
jne 0x43c204
cmp dword [esp + 0x4c], 2
jb 0x43c390
mov ecx, 1
mov dword [esp + 0x24], esi
jmp 0x43c318
movzx eax, byte [esi + ecx]
mov edx, dword [esp + 0x48]
cmp al, byte [edx + ecx]
jne 0x43c1f6
inc ecx
cmp ecx, dword [esp + 0x4c]
je 0x43c390
test edi, edi
je 0x43c300
movzx edx, byte [edi + ecx]
mov byte [esp + 0x10], 0xf7
lea eax, [esp + 0x11]
mov byte [eax + 2], 0
mov word [eax], 0
mov ebx, 0x1f45f4cc
nop
nop
nop
nop
nop
nop
nop
nop
nop
movzx eax, byte [esp + ebx - 0x1f45f4bc]
xor eax, ebx
mov edi, eax
and edi, 1
mov ebp, edi
neg ebp
mov esi, eax
and esi, 2
or edi, 2
imul edi, esi
xor esi, 2
and esi, ebp
xor eax, 3
add eax, esi
add eax, edi
inc al
mov byte [esp + ebx - 0x1f45f4bc], al
inc ebx
cmp ebx, 0x1f45f4d0
jne 0x43c340
cmp dl, byte [esp + 0x10]
mov esi, dword [esp + 0x24]
mov edi, dword [esp + 0x50]
jne 0x43c300
jmp 0x43c311
mov ecx, dword [esp]
mov ebp, ecx
mov edx, dword [esp + 4]
sub ebp, edx
cmp ecx, dword [esp + 8]
je 0x43c3aa
mov eax, dword [esp + 0x3c]
jmp 0x43c571
mov ecx, ebp
sar ecx, 2
lea eax, [ecx + 1]
mov ebx, ecx
shr ebx, 1
add ebx, ecx
cmp ebx, eax
ja 0x43c3be
mov ebx, eax
lea eax, [ebx*4]
push eax
call fcn.004083b0
add esp, 4
mov edx, eax
mov eax, dword [esp + 4]
test eax, eax
je 0x43c555
mov dword [esp + 8], ebx
cmp edx, eax
mov eax, dword [esp]
mov ebx, edx
mov dword [esp + 0xc], edx
jbe 0x43c439
cmp eax, ebx
jbe 0x43c439
test ebp, ebp
je 0x43c53d
mov eax, ebp
and eax, 0xfffffffe
mov ecx, ebp
not ecx
and ecx, 1
sub eax, ecx
mov ecx, dword [esp + 4]
add ecx, eax
add eax, dword [esp + 0xc]
mov edi, ebp
and edi, 7
je 0x43c4ce
neg edi
xor edx, edx
movzx ebx, byte [ecx + edx]
mov byte [eax + edx], bl
dec edx
cmp edi, edx
jne 0x43c420
mov edi, esi
add ecx, edx
add eax, edx
add edx, ebp
jmp 0x43c4d2
mov ecx, ebp
shr ecx, 2
mov edx, dword [esp + 4]
mov eax, edx
mov edi, ebx
xchg esi, eax
rep movsd dword es:[edi], dword [esi]
xchg esi, eax
mov eax, ebp
not eax
or eax, 0xfffffffc
add eax, ebp
lea edi, [ebx + eax]
inc edi
lea ebx, [edx + eax]
inc ebx
mov eax, ebp
and eax, 3
mov ecx, eax
shr ecx, 1
mov edx, esi
mov esi, ebx
mov dword [esp], edi
xchg esi, esi
rep movsw word es:[edi], word [esi]
xchg esi, esi
mov esi, edx
mov ecx, eax
xor ecx, 0xfffffffe
or eax, 1
and eax, ecx
je 0x43c53d
mov ecx, ebp
and ecx, 2
mov edi, eax
not edi
movzx edx, byte [ebx + ecx]
mov dword [esp + 0x14], ebx
mov ebx, dword [esp]
mov byte [ebx + ecx], dl
mov ebx, dword [esp + 0x14]
lea edx, [eax + eax]
add edi, edx
je 0x43c53d
add edi, edi
movzx edx, byte [ebx + ecx + 1]
mov ebx, dword [esp]
mov byte [ebx + ecx + 1], dl
mov edx, dword [esp + 0x14]
cmp edi, eax
je 0x43c53d
movzx eax, byte [edx + ecx + 2]
mov edx, dword [esp]
mov byte [edx + ecx + 2], al
jmp 0x43c53d
mov edi, esi
mov edx, ebp
mov esi, dword [esp + 4]
sub esi, dword [esp]
cmp esi, 0xfffffff8
mov esi, edi
ja 0x43c53d
neg edx
xor edi, edi
nop
nop
nop
nop
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 0x43c4f0
push dword [esp + 4]
call fcn.004083c0
add esp, 4
mov edi, dword [esp + 0x50]
mov ebx, dword [esp + 8]
mov edx, dword [esp + 0xc]
mov eax, dword [esp + 0x3c]
mov dword [eax], edx
lea ecx, [edx + ebx*4]
mov ebx, edx
add ebx, ebp
mov dword [esp + 8], ecx
mov dword [eax + 8], ecx
mov ecx, edx
mov dword [esp + 4], edx
mov ecx, ebx
mov dword [edx + ebp], esi
add ecx, 4
mov dword [esp], ecx
mov dword [eax + 4], ecx
mov ecx, dword [esp + 0x4c]
add esi, ecx
dec esi
jmp 0x43c208
add esp, 0x28
pop esi
pop edi
pop ebx
pop ebp
ret