Function at 0x433a50
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
sub esp, 0x10
mov edx, dword [ebp + 0x14]
xor eax, eax
push esi
push edi
xor edi, edi
mov dword [ebp - 0xc], eax
mov dword [ebp - 8], edi
test edx, edx
je 0x433a6b
mov byte [edx], al
mov esi, dword [ebp + 8]
test esi, esi
je 0x433d2e
mov esi, dword [esi + 0x7c]
test esi, esi
je 0x433d2e
cmp dword [esi], eax
jne 0x433a90
pop edi
mov eax, 0xffffff9c
pop esi
mov esp, ebp
pop ebp
ret
mov ecx, dword [ebp + 0x10]
test ecx, ecx
jne 0x433a9f
pop edi
xor eax, eax
pop esi
mov esp, ebp
pop ebp
ret
mov eax, dword [ebp + 0xc]
mov dword [esi + 0x10], eax
mov eax, ecx
mov dword [esi + 0x14], ecx
cmp dword [esi + 0x5c], edi
jne 0x433ab9
test edx, edx
je 0x433ab9
mov byte [edx], 1
mov eax, dword [esi + 0x14]
mov edx, dword [esi + 0x5c]
cmp ecx, edx
jbe 0x433ac5
mov dword [esi + 0x14], edx
mov eax, edx
push ebx
test eax, eax
je 0x433d25
lea edx, [esi + 4]
mov ecx, edx
cmp dword [esi + 8], 0
mov dword [ebp - 4], ecx
jne 0x433bf2
mov eax, dword [esi + 0x58]
mov ecx, edx
mov dword [ebp - 4], ecx
test eax, eax
je 0x433bf2
mov ecx, dword [esi + 0x60]
mov ebx, 0x4000
mov edx, dword [esi + 0x68]
cmp eax, ebx
cmovb ebx, eax
add edx, dword [esi + 0x3c]
cmp byte [ecx], 0
je 0x433b27
cmp byte [ecx + 1], 0
je 0x433cf8
mov eax, dword [ecx + 0xc]
push 0
push 0
add eax, edx
push eax
push dword [ecx + 4]
call dword [0x5a015c]
jmp 0x433b2a
mov dword [ecx + 0x1c], edx
push dword [esi + 0x60]
push 1
push ebx
push dword [esi]
call fcn.00433250
add esp, 0x10
cmp eax, 1
jne 0x433cf8
mov ecx, dword [esi]
add dword [esi + 0x3c], ebx
sub dword [esi + 0x58], ebx
cmp byte [esi + 0x6c], 0
mov dword [ebp - 0x10], ecx
mov dword [esi + 4], ecx
lea ecx, [esi + 4]
mov dword [esi + 8], ebx
mov dword [ebp - 4], ecx
je 0x433bf2
mov dword [ebp + 8], 0
lea ecx, [esi + 4]
mov dword [ebp - 4], ecx
test ebx, ebx
je 0x433bf2
mov ecx, dword [ebp - 0x10]
nop dword [eax + eax]
mov edi, dword [esi + 0x78]
mov eax, edi
and eax, 0xfffd
or eax, 2
mov edx, eax
xor edx, 1
imul edx, eax
mov eax, dword [ebp + 8]
shr edx, 8
xor dl, byte [ecx + eax]
mov ecx, dword [esi + 0x70]
movsx eax, dl
xor eax, ecx
shr ecx, 8
movzx eax, al
xor ecx, dword [eax*4 + 0x5a28c8]
movzx eax, cl
add eax, dword [esi + 0x74]
imul eax, eax, 0x8088405
mov dword [esi + 0x70], ecx
mov ecx, dword [ebp - 0x10]
inc eax
mov dword [esi + 0x74], eax
shr eax, 0x18
xor eax, edi
shr edi, 8
movzx eax, al
xor edi, dword [eax*4 + 0x5a28c8]
mov eax, dword [ebp + 8]
mov dword [esi + 0x78], edi
mov byte [ecx + eax], dl
inc eax
mov dword [ebp + 8], eax
cmp eax, ebx
jb 0x433b80
lea ecx, [esi + 4]
mov dword [ebp - 4], ecx
mov ebx, dword [esi + 0x7c]
mov edx, dword [esi + 8]
cmp ebx, edx
mov edi, edx
cmovbe edi, ebx
test edi, edi
je 0x433c2e
mov eax, dword [ecx]
sub edx, edi
mov cl, byte [eax + edi - 1]
add eax, edi
mov byte [ebp + 0xb], cl
sub ebx, edi
mov ecx, dword [ebp - 4]
mov dword [esi + 8], edx
mov dword [esi + 0x7c], ebx
mov dword [ecx], eax
jne 0x433c2e
mov al, byte [ebp + 0xb]
cmp al, byte [esi + 0x80]
jne 0x433d02
cmp dword [esi + 0x64], 0
jne 0x433c9c
mov ebx, dword [esi + 0x14]
cmp ebx, edx
cmovae ebx, edx
xor edx, edx
test ebx, ebx
je 0x433c55
mov eax, dword [ecx]
mov ecx, dword [esi + 0x10]
mov al, byte [edx + eax]
mov byte [edx + ecx], al
inc edx
mov ecx, dword [ebp - 4]
cmp edx, ebx
jb 0x433c42
mov edi, dword [esi + 0x10]
push ebx
push edi
push dword [esi + 0x50]
call fcn.004332c0
mov ecx, dword [ebp - 4]
add esp, 0xc
sub dword [esi + 0x5c], ebx
sub dword [esi + 8], ebx
sub dword [esi + 0x14], ebx
add dword [ecx], ebx
add dword [esi + 0x18], ebx
mov dword [esi + 0x50], eax
lea eax, [edi + ebx]
mov edi, dword [ebp - 8]
add edi, ebx
mov dword [esi + 0x10], eax
cmp dword [esi + 0x5c], 0
mov dword [ebp - 8], edi
jne 0x433c97
mov eax, dword [ebp + 0x14]
test eax, eax
je 0x433c97
mov byte [eax], 1
mov ebx, dword [ebp - 0xc]
jmp 0x433cea
mov edi, dword [esi + 0x18]
mov ebx, dword [esi + 0x10]
push 2
push ecx
call fcn.00431250
mov dword [ebp - 0xc], eax
mov eax, dword [esi + 0x18]
sub eax, edi
push eax
push ebx
push dword [esi + 0x50]
mov dword [ebp + 8], eax
call fcn.004332c0
mov ecx, dword [esi + 0x5c]
add esp, 0x14
mov edi, dword [ebp - 8]
sub ecx, dword [ebp + 8]
add edi, dword [ebp + 8]
mov ebx, dword [ebp - 0xc]
mov dword [esi + 0x50], eax
mov dword [esi + 0x5c], ecx
mov dword [ebp - 8], edi
cmp ebx, 1
je 0x433d1b
test ecx, ecx
je 0x433d1b
mov ecx, dword [ebp - 4]
test ebx, ebx
jne 0x433d12
cmp dword [esi + 0x14], 0
jbe 0x433d0e
lea edx, [esi + 4]
jmp 0x433ad3
pop ebx
pop edi
or eax, 0xffffffff
pop esi
mov esp, ebp
pop ebp
ret
pop ebx
pop edi
mov eax, 0xffffff96
pop esi
mov esp, ebp
pop ebp
ret
test ebx, ebx
je 0x433d25
mov eax, ebx
pop ebx
pop edi
pop esi
mov esp, ebp
pop ebp
ret
mov edx, dword [ebp + 0x14]
test edx, edx
je 0x433d25
mov byte [edx], 1
pop ebx
mov eax, edi
pop edi
pop esi
mov esp, ebp
pop ebp
ret
pop edi
mov eax, 0xffffff9a
pop esi
mov esp, ebp
pop ebp
ret