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

Disassembly:
push ebp
mov ebp, esp
and esp, 0xfffffff8
sub esp, 0x1c
push ebx
mov ebx, ecx
mov ecx, dword [ebp + 0xc]
push esi
push edi
mov edi, dword [ebp + 8]
mov eax, dword [ebx + 4]
mov dword [esp + 0x14], ebx
mov dword [esp + 0x18], ecx
cmp edi, eax
je 0x43b5b2
cmp eax, 0xffffffff
je 0x43b4f7
mov ebx, dword [ebx]
test ebx, ebx
je 0x43b4f3
mov esi, dword [ebx + 0x7c]
test esi, esi
je 0x43b4f3
mov eax, dword [esi]
test eax, eax
je 0x43b4c8
push eax
call fcn.0051c95e
add esp, 4
cmp dword [esi + 0x40], 0
mov dword [esi], 0
je 0x43b4dc
lea ecx, [esi + 4]
call fcn.004395d0
push esi
mov dword [esi + 0x40], 0
call fcn.0051c95e
add esp, 4
mov dword [ebx + 0x7c], 0
mov ebx, dword [esp + 0x14]
mov esi, dword [ebx]
mov dword [ebx + 4], 0xffffffff
cmp edi, dword [esi + 4]
jl 0x43b513
mov eax, 0x10000
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
ret 0x10
cmp edi, dword [esi + 0x10]
jge 0x43b549
test esi, esi
je 0x43b549
mov eax, dword [esi + 0x24]
lea edx, [esi + 0x28]
sub esp, 0x10
mov dword [esi + 0x14], eax
lea eax, [esi + 0x78]
mov dword [esi + 0x10], 0
mov ecx, esi
push 0
push 0
push eax
call fcn.0043a250
add esp, 0x1c
neg eax
sbb eax, eax
inc eax
mov dword [esi + 0x18], eax
mov esi, dword [ebx]
cmp dword [esi + 0x10], edi
jge 0x43b59e
test esi, esi
je 0x43b597
cmp dword [esi + 0x18], 0
je 0x43b597
mov edx, dword [esi + 0x10]
inc edx
cmp edx, dword [esi + 4]
je 0x43b597
mov ecx, dword [esi + 0x50]
sub esp, 0x10
mov eax, dword [esi + 0x48]
add ecx, 0x2e
add ecx, dword [esi + 0x4c]
add eax, ecx
mov dword [esi + 0x10], edx
add dword [esi + 0x14], eax
lea edx, [esi + 0x28]
push 0
lea eax, [esi + 0x78]
mov ecx, esi
push 0
push eax
call fcn.0043a250
add esp, 0x1c
neg eax
sbb eax, eax
inc eax
mov dword [esi + 0x18], eax
mov esi, dword [ebx]
cmp dword [esi + 0x10], edi
jl 0x43b550
mov edx, dword [ebx + 0x23c]
mov ecx, esi
call fcn.0043ab60
mov ecx, dword [esp + 0x18]
mov dword [ebx + 4], edi
mov esi, dword [ebx]
xor eax, eax
xor edx, edx
mov dword [esp + 0x10], eax
mov dword [esp + 0x20], edx
mov byte [esp + 0xf], al
test esi, esi
jne 0x43b5d5
mov dword [esp + 0x10], 0xffffff9a
jmp 0x43b89b
mov esi, dword [esi + 0x7c]
test esi, esi
jne 0x43b5e9
mov dword [esp + 0x10], 0xffffff9a
jmp 0x43b89b
cmp dword [esi], eax
jne 0x43b5fa
mov dword [esp + 0x10], 0xffffff9c
jmp 0x43b89b
mov eax, dword [ebp + 0x10]
test eax, eax
jne 0x43b60a
mov dword [esp + 0x10], eax
jmp 0x43b89b
mov dword [esi + 0x10], ecx
mov ecx, dword [esi + 0x5c]
mov dword [esi + 0x14], eax
cmp eax, ecx
jbe 0x43b61c
mov dword [esi + 0x14], ecx
mov eax, ecx
test eax, eax
je 0x43b88d
cmp dword [esi + 8], 0
jne 0x43b771
mov eax, dword [esi + 0x58]
test eax, eax
je 0x43b771
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 0x43b670
cmp byte [ecx + 1], 0
je 0x43b875
mov eax, dword [ecx + 0xc]
push 0
push 0
add eax, edx
push eax
push dword [ecx + 4]
call dword [sym.imp.KERNEL32.dll_SetFilePointer]
jmp 0x43b673
mov dword [ecx + 0x1c], edx
mov edi, dword [esi + 0x60]
mov ecx, ebx
mov dword [esp + 0x1c], ebx
cmp byte [edi], 0
je 0x43b6a2
push 0
lea eax, [esp + 0x28]
push eax
push ebx
push dword [esi]
push dword [edi + 4]
call dword [sym.imp.KERNEL32.dll_ReadFile]
test eax, eax
jne 0x43b69c
mov byte [edi + 8], 1
mov eax, dword [esp + 0x24]
jmp 0x43b6ce
mov edx, dword [edi + 0x1c]
lea eax, [edx + ebx]
cmp eax, dword [edi + 0x18]
jbe 0x43b6b6
mov ecx, dword [edi + 0x18]
sub ecx, edx
mov dword [esp + 0x1c], ecx
push ecx
mov ecx, dword [edi + 0x14]
add ecx, edx
push ecx
push dword [esi]
call fcn.0050bfe0
mov eax, dword [esp + 0x28]
add esp, 0xc
add dword [edi + 0x1c], eax
xor edx, edx
div ebx
cmp eax, 1
jne 0x43b875
add dword [esi + 0x3c], ebx
sub dword [esi + 0x58], ebx
cmp byte [esi + 0x6c], 0
mov eax, dword [esi]
mov dword [esp + 0x1c], eax
mov dword [esi + 4], eax
mov dword [esi + 8], ebx
je 0x43b771
xor ecx, ecx
mov dword [esp + 0x18], ecx
test ebx, ebx
je 0x43b771
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 [esp + 0x1c]
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 + 0x57e950]
movzx eax, cl
add eax, dword [esi + 0x74]
imul eax, eax, 0x8088405
mov dword [esi + 0x70], ecx
mov ecx, dword [esp + 0x18]
inc eax
mov dword [esi + 0x74], eax
shr eax, 0x18
xor eax, edi
shr edi, 8
movzx eax, al
xor edi, dword [eax*4 + 0x57e950]
mov eax, dword [esp + 0x1c]
mov dword [esi + 0x78], edi
mov byte [ecx + eax], dl
inc ecx
mov dword [esp + 0x18], ecx
cmp ecx, ebx
jb 0x43b701
mov edi, dword [esi + 0x7c]
mov ecx, dword [esi + 8]
cmp edi, ecx
mov edx, ecx
cmovbe edx, edi
test edx, edx
je 0x43b7a8
mov eax, dword [esi + 4]
sub ecx, edx
add eax, edx
mov bl, byte [eax - 1]
sub dword [esi + 0x5c], edx
sub edi, edx
mov dword [esi + 8], ecx
mov dword [esi + 4], eax
mov dword [esi + 0x7c], edi
jne 0x43b7a8
cmp bl, byte [esi + 0x80]
jne 0x43b87e
cmp dword [esi + 0x64], 0
jne 0x43b815
mov ebx, dword [esi + 0x14]
cmp ebx, ecx
cmovae ebx, ecx
xor edx, edx
test ebx, ebx
je 0x43b7d1
nop dword [eax]
mov eax, dword [esi + 4]
mov ecx, dword [esi + 0x10]
mov al, byte [edx + eax]
mov byte [edx + ecx], al
inc edx
cmp edx, ebx
jb 0x43b7c0
mov edi, dword [esi + 0x10]
mov edx, edi
mov ecx, dword [esi + 0x50]
push ebx
call fcn.00439370
mov edx, dword [esp + 0x24]
add esp, 4
sub dword [esi + 0x5c], ebx
add edx, ebx
sub dword [esi + 8], ebx
sub dword [esi + 0x14], ebx
add dword [esi + 4], ebx
add dword [esi + 0x18], ebx
cmp dword [esi + 0x5c], 0
mov ecx, dword [esp + 0x10]
mov dword [esi + 0x50], eax
lea eax, [edi + ebx]
mov dword [esi + 0x10], eax
mov dword [esp + 0x20], edx
jne 0x43b865
mov byte [esp + 0xf], 1
jmp 0x43b865
mov edi, dword [esi + 0x18]
lea ecx, [esi + 4]
mov ebx, dword [esi + 0x10]
call fcn.004398b0
mov ecx, dword [esi + 0x50]
mov edx, ebx
mov dword [esp + 0x10], eax
mov eax, dword [esi + 0x18]
sub eax, edi
push eax
mov dword [esp + 0x1c], eax
call fcn.00439370
mov edx, dword [esp + 0x24]
add esp, 4
mov ecx, dword [esp + 0x10]
mov dword [esi + 0x50], eax
mov eax, dword [esp + 0x18]
add edx, eax
sub dword [esi + 0x5c], eax
mov dword [esp + 0x20], edx
cmp ecx, 1
je 0x43b888
cmp dword [esi + 0x5c], 0
je 0x43b888
test ecx, ecx
jne 0x43b895
cmp dword [esi + 0x14], 0
ja 0x43b624
test ecx, ecx
je 0x43b88d
jmp 0x43b893
or eax, 0xffffffff
mov dword [esp + 0x10], eax
jmp 0x43b897
mov dword [esp + 0x10], 0xffffff96
jmp 0x43b897
mov byte [esp + 0xf], 1
mov ecx, edx
mov dword [esp + 0x10], ecx
test ecx, ecx
jg 0x43b8ed
mov ebx, dword [esp + 0x14]
mov edi, dword [ebx]
test edi, edi
je 0x43b8e2
mov esi, dword [edi + 0x7c]
test esi, esi
je 0x43b8e2
mov eax, dword [esi]
test eax, eax
je 0x43b8b7
push eax
call fcn.0051c95e
add esp, 4
cmp dword [esi + 0x40], 0
mov dword [esi], 0
je 0x43b8cb
lea ecx, [esi + 4]
call fcn.004395d0
push esi
mov dword [esi + 0x40], 0
call fcn.0051c95e
add esp, 4
mov dword [edi + 0x7c], 0
mov ecx, dword [esp + 0x10]
mov dword [ebx + 4], 0xffffffff
cmp byte [esp + 0xf], 0
je 0x43b8ff
xor eax, eax
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
ret 0x10
test ecx, ecx
jle 0x43b911
mov eax, 0x600
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
ret 0x10
pop edi
cmp ecx, 0xffffff96
mov eax, 0x5000000
mov edx, 0x1000
pop esi
cmove eax, edx
pop ebx
mov esp, ebp
pop ebp
ret 0x10