Function at 0x4c1efc
Capabilities:
Encode data using xor
Generate random numbers using the delphi lcg
Hash data with crc32
Resolve function by parsing pe exports

Disassembly:
push ebp
mov ebp, esp
push ebx
push edi
push esi
and esp, 0xfffffff0
sub esp, 0xb0
movzx eax, byte [edx]
mov edi, edx
mov esi, ecx
call 0x4c1f17
pop ebx
test eax, eax
je 0x4c1fd3
cmp eax, 1
jne 0x4c1fed
mov ebx, dword [ebp + 0xc]
lea edx, [edi + 8]
mov ecx, esi
push ebx
mov esi, dword [ebp + 8]
push esi
call fcn.004c1d8d
add esp, 8
test ebx, ebx
je 0x4c2334
mov edx, dword [edi + 0x20]
mov ecx, dword [edi + 0x18]
mov dword [esp], edi
mov edi, dword [edi + 0x1c]
mov dword [esp + 0x14], ebx
mov ebx, edx
mov dword [esp + 8], esi
or ebx, 3
mov eax, ebx
and eax, 0xfffffffe
imul eax, ebx
mov ebx, ecx
xor ah, byte [esi]
shr ebx, 8
xor cl, ah
movzx esi, cl
mov ecx, ebx
mov ebx, 0xff
xor ecx, dword [esi*4 + 0x52e69c]
mov esi, ecx
and esi, ebx
mov ebx, edx
add esi, edi
shr ebx, 8
imul edi, esi, 0x8088405
inc edi
mov esi, edi
shr esi, 0x18
mov dword [esp + 4], esi
mov esi, 0xff
and edx, esi
mov esi, edx
mov edx, ebx
mov ebx, dword [esp + 0x14]
xor esi, dword [esp + 4]
xor edx, dword [esi*4 + 0x52e69c]
mov esi, dword [esp + 8]
dec ebx
mov byte [esi], ah
lea esi, [esi + 1]
jne 0x4c1f52
mov eax, dword [esp]
mov dword [eax + 0x20], edx
mov dword [eax + 0x18], ecx
mov dword [eax + 0x1c], edi
jmp 0x4c2334
add edi, 8
mov ecx, esi
mov edx, edi
push dword [ebp + 0xc]
push dword [ebp + 8]
call fcn.004c1d8d
add esp, 8
jmp 0x4c2334
mov eax, dword [edi + 0x20]
mov ecx, dword [edi + 0x24]
mov edx, eax
or edx, ecx
je 0x4c2032
mov edx, dword [ebp + 0xc]
cmp eax, edx
sbb ecx, 0
cmovae eax, edx
cmp eax, edx
ja 0x4c2348
lea edx, [edi + 8]
lea ecx, [esp + 0x18]
mov dword [esp + 0x3c], edx
push eax
push dword [ebp + 8]
call fcn.004c1d8d
add esp, 8
lea eax, [esp + 0x18]
cmp byte [eax], 4
jne 0x4c2041
mov eax, dword [esp + 0x1c]
jmp 0x4c2052
mov dword [esi + 4], 0
mov byte [esi], 4
jmp 0x4c2334
mov ecx, dword [esp + 0x18]
mov eax, dword [esp + 0x1c]
cmp cl, 4
jne 0x4c21fb
sub dword [edi + 0x20], eax
mov edx, dword [ebp + 0xc]
mov dword [esp + 0x14], ebx
mov dword [esp + 0x10], esi
sbb dword [edi + 0x24], 0
cmp eax, edx
ja 0x4c2354
mov cl, byte [edi + 0xc8]
mov edx, 0x40
lea esi, [edi + 0x88]
mov dword [esp + 8], eax
mov dword [esp + 4], esi
movzx ebx, cl
mov byte [esp], cl
mov ecx, eax
sub edx, ebx
sub ecx, edx
mov dword [esp + 0xc], ecx
jae 0x4c20b0
lea ecx, [esi + ebx]
push eax
mov esi, dword [ebp + 8]
push esi
push ecx
call fcn.004e4a90
mov ecx, dword [esp + 0x14]
add esp, 0xc
add ebx, ecx
jmp 0x4c212d
cmp byte [esp], 0
mov ecx, dword [ebp + 8]
mov dword [esp], ecx
je 0x4c20ee
mov esi, dword [esp + 4]
lea eax, [ecx + edx]
mov dword [esp], eax
add ebx, esi
push edx
push ecx
push ebx
call fcn.004e4a90
add esp, 0xc
add dword [edi + 0x28], 1
lea ecx, [edi + 0x30]
mov edx, esi
adc dword [edi + 0x2c], 0
push 1
call fcn.0049705f
add esp, 4
mov eax, dword [esp + 0xc]
mov edx, dword [esp]
mov esi, eax
mov ebx, eax
and esi, 0xffffffc0
and ebx, 0x3f
add esi, edx
cmp eax, 0x40
jb 0x4c2118
shr eax, 6
lea ecx, [edi + 0x30]
add dword [edi + 0x28], eax
adc dword [edi + 0x2c], 0
push eax
call fcn.0049705f
add esp, 4
push ebx
push esi
push dword [esp + 0xc]
call fcn.004e4a90
add esp, 0xc
mov ecx, dword [esp + 8]
mov esi, dword [ebp + 8]
mov byte [edi + 0xc8], bl
mov eax, dword [edi + 0x1c]
push ecx
push esi
push dword [edi + 0x18]
mov esi, ecx
call dword [eax + 0xc]
add esp, 0xc
mov eax, dword [edi + 0x20]
or eax, dword [edi + 0x24]
je 0x4c215a
mov eax, dword [esp + 0x10]
mov dword [eax + 4], esi
mov byte [eax], 4
jmp 0x4c2334
cmp byte [edi + 0xd0], 0
jne 0x4c2360
mov esi, dword [esp + 0x3c]
lea eax, [edi + 0x28]
mov dword [esp], edi
mov byte [edi + 0xd0], 1
lea edi, [esp + 0x40]
mov ebx, 0xa
mov dword [esp + 0xc], eax
xor eax, eax
mov word [edi + 8], 0
mov dword [edi + 4], eax
mov dword [edi], eax
lea ecx, [esp + 0x18]
mov edx, esi
push ebx
push edi
call fcn.004c1d8d
add esp, 8
movzx eax, byte [esp + 0x18]
cmp eax, 4
jne 0x4c21c8
mov ecx, dword [esp + 0x1c]
test ecx, ecx
je 0x4c230c
mov eax, ebx
sub eax, ecx
jb 0x4c233c
add edi, ecx
mov ebx, eax
jmp 0x4c21f5
mov eax, dword [eax*4 + 0x4c238c]
add eax, dword [esp + 0x14]
jmp eax
test ebx, ebx
jne 0x4c2192
jmp 0x4c2215
mov dword [esi], ecx
mov dword [esi + 4], eax
jmp 0x4c2334
mov esi, dword [esp + 4]
xor eax, eax
lea ecx, [esp + 0x50]
xorps xmm0, xmm0
lea edi, [esp + 0x90]
mov dword [ecx + 0x10], eax
movaps xmmword [ecx], xmm0
mov ecx, dword [esp + 0xc]
mov dword [edi + 0x10], eax
movaps xmmword [edi], xmm0
mov edx, esi
push edi
call fcn.004c29b8
add esp, 4
mov ebx, dword [esp]
lea ecx, [esp + 0x18]
movsd xmm2, qword [edi]
mov edx, esi
movsd xmm1, qword [ebx + 0x58]
mov eax, dword [ebx + 0x60]
movsd xmm0, qword [ebx + 0x50]
movsd qword [ecx + 0x10], xmm1
movsd xmm1, qword [ebx + 0x48]
mov dword [ecx + 0x18], eax
movsd qword [ecx + 8], xmm0
mov eax, dword [edi + 0x10]
movsd qword [esi], xmm2
movsd qword [ecx], xmm1
movsd xmm1, qword [edi + 8]
mov dword [esi + 0x10], eax
movsd qword [esi + 8], xmm1
lea esi, [esp + 0x50]
mov byte [ebx + 0xc8], 0x14
push esi
call fcn.004c29b8
add esp, 4
mov eax, dword [ebx + 0x80]
lea edx, [esp + 0x40]
mov dword [ebx + 0x40], eax
movsd xmm0, qword [ebx + 0x78]
movsd qword [ebx + 0x38], xmm0
movsd xmm0, qword [ebx + 0x70]
movsd qword [ebx + 0x30], xmm0
movaps xmm0, xmmword [esi]
mov eax, dword [ebx + 0x68]
mov ecx, dword [ebx + 0x6c]
mov dword [ebx + 0x28], eax
mov eax, dword [esi + 0x10]
mov dword [ebx + 0x2c], ecx
lea ecx, [esp + 0x70]
mov byte [ebx + 0xc8], 0
movaps xmmword [ecx], xmm0
mov dword [ecx + 0x10], eax
call fcn.0040388d
test al, al
je 0x4c2303
mov ecx, dword [esp + 0x10]
mov edx, 0x15
push 0x5b
push str.Invalid_authentication_code__this_could_be_due_to_an_invalid_password_or_errors_in_the_dataTried_to_use_an_already_finalized_HMAC._This_is_a_bug_
call fcn.00409821
jmp 0x4c1fe5
mov esi, dword [esp + 8]
jmp 0x4c214b
xor edx, edx
mov eax, 2
mov ecx, 0x52ddd4
jmp 0x4c2326
mov esi, dword [esp + 0x10]
movzx eax, al
or eax, edx
mov dword [esi + 4], ecx
mov dword [esi], eax
lea esp, [ebp - 0xc]
pop esi
pop edi
pop ebx
pop ebp
ret
mov edx, ebx
push 0x52dde0
call fcn.004e8910
mov ecx, eax
push 0x52e388
call fcn.004e89d0
mov ecx, eax
push 0x52e398
call fcn.004e89d0
lea ecx, [esp + 0x18]
mov edx, 0x52e444
xor eax, eax
mov dword [ecx], 0x52e43c
mov dword [ecx + 4], 1
mov dword [ecx + 0x10], eax
mov dword [ecx + 8], str.C:Usersigame.cargo_registry_srcindex.crates.io_6f17d22bba15001fzip_0.6.6_src_aes.rs0
mov dword [ecx + 0xc], eax
call fcn.004e88e0
nop
out dx, al
add al, byte [eax]
add dl, cl
add al, byte [eax]
add byte [esi - 0x41fffffe], bh
add al, byte [eax]
add byte [esi - 0x7d], dl
push esi
invalid
jns 0x4c23a4
add byte [ecx - 0xef8b32], cl
adc bh, bh
push 0