Function at 0x43ce24
Capabilities:
Encode data using xor

Disassembly:
mov edi, edi
push ebp
mov ebp, esp
sub esp, 0x50
mov eax, dword [0x442084]
xor eax, ebp
mov dword [ebp - 4], eax
push ebx
mov ebx, dword [ebp + 8]
test ebx, ebx
push esi
push edi
je 0x43d220
mov eax, dword [ebx + 0x2b]
lea edx, [ebx + 0x18]
mov ecx, ebx
sub ecx, edx
and eax, 0x7f
add ecx, 0x30
mov dword [ebp - 0x18], eax
shl dword [ebp - 0x18], 4
mov dword [ebp - 0x4c], ecx
mov dword [ebp - 0x34], edx
mov ecx, ebx
mov dword [ebp - 0x30], 2
jmp 0x43ce6f
mov ecx, dword [ebp - 0x20]
mov eax, ecx
push 4
pop edx
add ecx, edx
mov esi, ecx
add ecx, edx
mov edi, ecx
add ecx, edx
mov dword [ebp - 0x1c], ecx
add ecx, edx
movzx edx, byte [eax]
mov dword [ebp - 0x20], ecx
xor ecx, ecx
mov ch, byte [edi + 2]
mov cl, byte [esi + 1]
shl ecx, 8
or ecx, edx
mov edx, dword [ebp - 0x1c]
movzx edx, byte [edx + 3]
shl ecx, 8
or ecx, edx
mov dword [ebp - 0x38], ecx
xor ecx, ecx
mov ch, byte [esi + 2]
mov edx, dword [ebp - 0x1c]
movzx edx, byte [edx]
mov cl, byte [eax + 1]
shl ecx, 8
or ecx, edx
movzx edx, byte [edi + 3]
shl ecx, 8
or ecx, edx
mov edx, dword [ebp - 0x1c]
mov dword [ebp - 0x3c], ecx
xor ecx, ecx
mov ch, byte [eax + 2]
mov cl, byte [edx + 1]
movzx edx, byte [edi]
shl ecx, 8
or ecx, edx
movzx edx, byte [esi + 3]
shl ecx, 8
or ecx, edx
xor edx, edx
mov dword [ebp - 0x28], ecx
mov ecx, dword [ebp - 0x1c]
mov dh, byte [ecx + 2]
movzx ecx, byte [esi]
mov dl, byte [edi + 1]
shl edx, 8
or edx, ecx
movzx ecx, byte [eax + 3]
shl edx, 8
or edx, ecx
mov ecx, dword [ebp - 0x18]
xor edx, dword [ecx + 0x4076e8]
mov dword [eax], edx
mov eax, dword [ecx + 0x4076ec]
xor eax, dword [ebp - 0x38]
mov dword [esi], eax
mov eax, dword [ecx + 0x4076f0]
xor eax, dword [ebp - 0x3c]
mov dword [edi], eax
mov eax, dword [ecx + 0x4076f4]
xor eax, dword [ebp - 0x28]
dec dword [ebp - 0x30]
mov ecx, dword [ebp - 0x1c]
mov dword [ecx], eax
jne 0x43ce6c
mov edx, dword [ebx + 0xc]
mov ecx, dword [ebx + 0x10]
mov edi, dword [ebx + 8]
mov eax, dword [ebx + 4]
imul eax, edi
imul edi, edx
mov esi, edx
imul esi, ecx
or eax, esi
mov esi, dword [ebx + 4]
imul esi, ecx
or edi, esi
mov esi, dword [ebx + 4]
imul esi, edx
mov edx, dword [ebx + 8]
imul edx, ecx
or esi, edx
and eax, 0x7f
and edi, 0x7f
and esi, 0x7f
cmp edi, eax
mov dword [ebp - 0x48], eax
mov dword [ebp - 0x44], edi
mov dword [ebp - 0x40], esi
jne 0x43cf87
inc edi
and edi, 0x7f
cmp edi, eax
mov dword [ebp - 0x44], edi
je 0x43cf7c
xor ecx, ecx
cmp esi, edi
sete cl
xor edx, edx
cmp esi, eax
sete dl
or ecx, edx
je 0x43cfb2
inc esi
and esi, 0x7f
xor ecx, ecx
cmp esi, edi
sete cl
xor edx, edx
cmp esi, eax
sete dl
or ecx, edx
jne 0x43cf99
mov dword [ebp - 0x40], esi
mov eax, dword [ebx + 4]
shl esi, 4
add esi, 0x4076e8
sub esp, 0x10
mov edi, esp
movsd dword es:[edi], dword [esi]
mov dword [ebp - 0x14], eax
mov eax, dword [ebx + 8]
movsd dword es:[edi], dword [esi]
mov dword [ebp - 0x10], eax
mov eax, dword [ebx + 0xc]
movsd dword es:[edi], dword [esi]
mov dword [ebp - 0xc], eax
mov eax, dword [ebx + 0x10]
mov dword [ebp - 8], eax
movsd dword es:[edi], dword [esi]
call fcn.0043cc96
sub esp, 0x10
mov edi, esp
lea esi, [ebp - 0x14]
movsd dword es:[edi], dword [esi]
movsd dword es:[edi], dword [esi]
movsd dword es:[edi], dword [esi]
movsd dword es:[edi], dword [esi]
mov dword [ebp - 0x20], eax
call fcn.0043cc96
mov esi, dword [ebp - 0x44]
mov ecx, dword [ebp - 0x20]
shl esi, 4
add esi, 0x4076e8
sub esp, 0x10
mov edi, esp
movsd dword es:[edi], dword [esi]
movsd dword es:[edi], dword [esi]
shl eax, 8
or ecx, eax
movsd dword es:[edi], dword [esi]
shl ecx, 8
movsd dword es:[edi], dword [esi]
mov dword [ebp - 0x20], ecx
call fcn.0043cc96
mov esi, dword [ebp - 0x48]
mov ecx, dword [ebp - 0x20]
shl esi, 4
add esi, 0x4076e8
sub esp, 0x10
mov edi, esp
movsd dword es:[edi], dword [esi]
movsd dword es:[edi], dword [esi]
or ecx, eax
movsd dword es:[edi], dword [esi]
shl ecx, 8
movsd dword es:[edi], dword [esi]
mov dword [ebp - 0x20], ecx
call fcn.0043cc96
mov ecx, dword [ebp - 0x20]
or ecx, eax
cmp ecx, dword [ebx + 0x14]
jne 0x43d1fa
lea eax, [ebp - 0x40]
mov dword [ebp - 0x30], eax
mov dword [ebp - 0x20], 3
mov eax, dword [ebp - 0x30]
mov ebx, dword [eax]
and dword [ebp - 0x18], 0
mov ecx, dword [ebp - 0x4c]
mov edi, dword [ebp - 0x34]
shl ebx, 4
mov esi, dword [ebx + 0x4076ec]
and esi, 0xf
mov dword [ebp - 0x1c], ecx
mov dword [ebp - 0x50], ebx
jbe 0x43d095
sub ecx, esi
add ecx, edi
push esi
push ecx
lea eax, [ebp - 0x14]
push eax
call sub.msvcrt.dll_memcpy
mov ecx, dword [ebp - 0x4c]
add esp, 0xc
mov eax, ecx
sub eax, esi
je 0x43d0c3
lea eax, [ecx + edi - 1]
mov dword [ebp - 0x2c], eax
mov eax, ecx
sub eax, esi
lea edx, [eax + edi - 1]
mov dword [ebp - 0x28], eax
mov eax, dword [ebp - 0x2c]
mov dword [ebp - 0x24], edx
mov edx, dword [ebp - 0x24]
mov dl, byte [edx]
dec dword [ebp - 0x24]
mov byte [eax], dl
dec eax
dec dword [ebp - 0x28]
jne 0x43d0b3
test esi, esi
jbe 0x43d0e1
lea edx, [ebp - 0x14]
sub edx, edi
lea eax, [esi + edi - 1]
mov dword [ebp - 0x2c], edx
jmp 0x43d0d8
mov edx, dword [ebp - 0x2c]
mov dl, byte [edx + eax]
mov byte [eax], dl
dec eax
dec esi
jne 0x43d0d5
cmp ecx, 0x10
jb 0x43d1c3
shr ecx, 4
mov ebx, edi
mov dword [ebp - 0x2c], ecx
jmp 0x43d0f7
mov ebx, dword [ebp - 0x24]
mov eax, ebx
push 4
pop edx
add dword [ebp - 0x18], edx
add dword [ebp - 0x18], edx
add dword [ebp - 0x18], edx
add dword [ebp - 0x18], edx
add ebx, edx
mov ecx, ebx
add ebx, edx
mov esi, ebx
add ebx, edx
mov dword [ebp - 0x24], ebx
add dword [ebp - 0x24], edx
xor edx, edx
mov dh, byte [esi + 2]
mov edi, ebx
movzx ebx, byte [eax]
sub dword [ebp - 0x1c], 0x10
mov dl, byte [ecx + 1]
shl edx, 8
or edx, ebx
movzx ebx, byte [edi + 3]
shl edx, 8
or edx, ebx
mov dword [ebp - 0x38], edx
xor edx, edx
mov dh, byte [ecx + 2]
movzx ebx, byte [edi]
mov dl, byte [eax + 1]
shl edx, 8
or edx, ebx
movzx ebx, byte [esi + 3]
shl edx, 8
or edx, ebx
movzx ebx, byte [esi]
mov dword [ebp - 0x3c], edx
xor edx, edx
mov dh, byte [eax + 2]
mov dl, byte [edi + 1]
shl edx, 8
or edx, ebx
movzx ebx, byte [ecx + 3]
shl edx, 8
or edx, ebx
movzx ebx, byte [ecx]
mov dword [ebp - 0x28], edx
xor edx, edx
mov dh, byte [edi + 2]
mov dl, byte [esi + 1]
shl edx, 8
or edx, ebx
movzx ebx, byte [eax + 3]
shl edx, 8
or edx, ebx
mov ebx, dword [ebp - 0x50]
xor edx, dword [ebx + 0x4076e8]
mov dword [eax], edx
mov eax, dword [ebx + 0x4076ec]
xor eax, dword [ebp - 0x38]
mov dword [ecx], eax
mov eax, dword [ebx + 0x4076f0]
xor eax, dword [ebp - 0x3c]
mov dword [esi], eax
mov eax, dword [ebx + 0x4076f4]
xor eax, dword [ebp - 0x28]
dec dword [ebp - 0x2c]
mov dword [edi], eax
jne 0x43d0f4
mov edi, dword [ebp - 0x34]
xor esi, esi
cmp dword [ebp - 0x1c], esi
jbe 0x43d1eb
mov eax, dword [ebp - 0x18]
add edi, eax
mov eax, dword [ebx + 0x4076e8]
dec dword [ebp - 0x1c]
mov ecx, esi
shr eax, cl
add esi, 8
and esi, 0x1f
xor byte [edi], al
inc edi
cmp dword [ebp - 0x1c], 0
ja 0x43d1cf
sub dword [ebp - 0x30], 4
dec dword [ebp - 0x20]
jne 0x43d05d
jmp 0x43d220
xor eax, eax
mov dword [ebx + 4], eax
mov dword [ebx + 8], eax
mov dword [ebx + 0xc], eax
mov dword [ebx + 0x10], eax
mov dword [ebx + 0x14], eax
sub ebx, dword [ebp - 0x34]
add ebx, 0x30
je 0x43d220
push ebx
push eax
push dword [ebp - 0x34]
call sub.msvcrt.dll_memset
add esp, 0xc
mov ecx, dword [ebp - 4]
pop edi
pop esi
xor ecx, ebp
pop ebx
call fcn.00411b9d
leave
ret 4