Function at 0x433588
Capabilities:
Compute adler32 checksum
Get number of processors

Disassembly:
ret 0x29f7
push ebp
mov ebp, esp
push ebx
push edi
push esi
sub esp, 0xc
mov edi, dword [ebp + 0x10]
mov ebx, dword [ebp + 0xc]
mov eax, dword [ebp + 8]
cmp edi, 0x40
jb 0x4335b9
test ebx, ebx
je 0x4335b9
mov ecx, dword [0x588f44]
test ecx, ecx
je 0x4335b9
add esp, 0xc
pop esi
pop edi
pop ebx
pop ebp
jmp 0x405190
mov esi, eax
movzx ecx, ax
shr esi, 0x10
cmp edi, 1
jne 0x4335f6
movzx eax, byte [ebx]
mov edi, 0xfff0
lea edx, [ecx + eax]
lea eax, [ecx + eax - 0xfff1]
cmp edx, edi
cmovbe eax, edx
add esi, eax
mov ecx, esi
shl ecx, 0x10
cmp esi, edi
lea esi, [ecx + 0xf0000]
cmovbe esi, ecx
or esi, eax
jmp 0x43385b
test ebx, ebx
je 0x43363b
cmp edi, 0x10
jae 0x433650
test edi, edi
je 0x43360e
movzx eax, byte [ebx]
inc ebx
add ecx, eax
add esi, ecx
dec edi
jne 0x433603
lea edi, [ecx - 0xfff1]
cmp ecx, 0xfff0
mov edx, 0x80078071
mov eax, esi
cmovbe edi, ecx
mul edx
shr edx, 0xf
imul eax, edx, 0xfff1
sub esi, eax
shl esi, 0x10
or esi, edi
jmp 0x43385b
xor esi, esi
inc esi
test edi, edi
jne 0x43385b
call fcn.0045ffe4
jmp 0x43385b
cmp edi, 0x15b0
jb 0x43377b
add edi, 0xffffea50
mov eax, 0xffffea50
movzx edx, byte [ebx + eax + 0x15b0]
add edx, ecx
movzx ecx, byte [ebx + eax + 0x15b1]
add esi, edx
add ecx, edx
movzx edx, byte [ebx + eax + 0x15b2]
add esi, ecx
add edx, ecx
movzx ecx, byte [ebx + eax + 0x15b3]
add esi, edx
add ecx, edx
movzx edx, byte [ebx + eax + 0x15b4]
add esi, ecx
add edx, ecx
movzx ecx, byte [ebx + eax + 0x15b5]
add esi, edx
add ecx, edx
movzx edx, byte [ebx + eax + 0x15b6]
add esi, ecx
add edx, ecx
movzx ecx, byte [ebx + eax + 0x15b7]
add esi, edx
add ecx, edx
movzx edx, byte [ebx + eax + 0x15b8]
add esi, ecx
add edx, ecx
movzx ecx, byte [ebx + eax + 0x15b9]
add esi, edx
add ecx, edx
movzx edx, byte [ebx + eax + 0x15ba]
add esi, ecx
add edx, ecx
movzx ecx, byte [ebx + eax + 0x15bb]
add esi, edx
add ecx, edx
movzx edx, byte [ebx + eax + 0x15bc]
add esi, ecx
add edx, ecx
movzx ecx, byte [ebx + eax + 0x15bd]
add esi, edx
add ecx, edx
movzx edx, byte [ebx + eax + 0x15be]
add esi, ecx
add edx, ecx
movzx ecx, byte [ebx + eax + 0x15bf]
add esi, edx
add ecx, edx
add esi, ecx
add eax, 0x10
jne 0x433667
mov eax, ecx
mov edx, 0x80078071
add ebx, 0x15b0
mul edx
shr edx, 0xf
imul eax, edx, 0xfff1
mov edx, 0x80078071
sub ecx, eax
mov eax, esi
mul edx
shr edx, 0xf
imul eax, edx, 0xfff1
sub esi, eax
cmp edi, 0x15af
ja 0x43365c
test edi, edi
je 0x433856
cmp edi, 0x10
jb 0x433828
lea eax, [edi - 0x10]
mov dword [ebp - 0x18], eax
and eax, 0xfffffff0
mov dword [ebp - 0x14], eax
lea eax, [eax + 0x10]
mov dword [ebp - 0x10], eax
mov eax, ebx
movzx edx, byte [eax]
add edi, 0xfffffff0
add edx, ecx
movzx ecx, byte [eax + 1]
add esi, edx
add ecx, edx
movzx edx, byte [eax + 2]
add esi, ecx
add edx, ecx
movzx ecx, byte [eax + 3]
add esi, edx
add ecx, edx
movzx edx, byte [eax + 4]
add esi, ecx
add edx, ecx
movzx ecx, byte [eax + 5]
add esi, edx
add ecx, edx
movzx edx, byte [eax + 6]
add esi, ecx
add edx, ecx
movzx ecx, byte [eax + 7]
add esi, edx
add ecx, edx
movzx edx, byte [eax + 8]
add esi, ecx
add edx, ecx
movzx ecx, byte [eax + 9]
add esi, edx
add ecx, edx
movzx edx, byte [eax + 0xa]
add esi, ecx
add edx, ecx
movzx ecx, byte [eax + 0xb]
add esi, edx
add ecx, edx
movzx edx, byte [eax + 0xc]
add esi, ecx
add edx, ecx
movzx ecx, byte [eax + 0xd]
add esi, edx
add ecx, edx
movzx edx, byte [eax + 0xe]
add esi, ecx
add edx, ecx
movzx ecx, byte [eax + 0xf]
add eax, 0x10
add esi, edx
add ecx, edx
add esi, ecx
cmp edi, 0xf
ja 0x43378f
mov edi, dword [ebp - 0x18]
sub edi, dword [ebp - 0x14]
je 0x433833
add ebx, dword [ebp - 0x10]
movzx eax, byte [ebx]
inc ebx
add ecx, eax
add esi, ecx
dec edi
jne 0x433828
mov edi, 0x80078071
mov eax, ecx
mul edi
shr edx, 0xf
imul eax, edx, 0xfff1
sub ecx, eax
mov eax, esi
mul edi
shr edx, 0xf
imul eax, edx, 0xfff1
sub esi, eax
shl esi, 0x10
or esi, ecx
mov eax, esi
add esp, 0xc
pop esi
pop edi
pop ebx
pop ebp
ret