Function at 0x5b1250
Capabilities:
Resolve function by parsing pe exports

Disassembly:
sub esp, 0x38
mov eax, dword [0x93e25c]
push ebx
push ebp
mov ebp, dword [esp + 0x44]
mov ebx, ecx
mov ecx, dword [ebp + 0x98]
mov dword [esp + 0x3c], eax
lea eax, [ebx + 1]
shl eax, 0xa
test ecx, 0x10000000
push esi
push edi
mov dword [esp + 0x4c], eax
je 0x5b128c
push eax
push str.block_size__4u:
call fcn.006d1d9e
add esp, 8
mov esi, dword [esp + 0x50]
mov eax, dword [esi]
mov ecx, dword [eax + 0x78]
mov edi, dword [ecx + ebx*8]
mov ebx, dword [ecx + ebx*8 + 4]
mov edx, dword [esi + 4]
mov ecx, dword [edx + 0x1c]
mov edx, dword [edx + 0x18]
xor eax, eax
push eax
mov eax, dword [esp + 0x50]
push eax
push ecx
push edx
call fcn.006cfc60
mov dword [esp + 0x10], eax
mov eax, edi
and eax, ebx
cmp eax, 0xffffffff
jne 0x5b1316
test dword [ebp + 0x98], 0x10000000
je 0x5b12f4
mov eax, edi
and eax, ebx
cmp eax, 0xffffffff
je 0x5b1505
lea ecx, [esp + 0x14]
push ecx
push ebx
push edi
call fcn.006313d0
push eax
push str._16s_n
call fcn.006d1d9e
add esp, 0x14
and edi, ebx
cmp edi, 0xffffffff
jne 0x5b14ef
pop edi
pop esi
pop ebp
xor eax, eax
pop ebx
mov ecx, dword [esp + 0x34]
call fcn.006cedd0
add esp, 0x38
ret
mov esi, dword [esp + 0x50]
mov eax, dword [esp + 0x10]
test eax, eax
jbe 0x5b12c1
push ebp
call fcn.00403adf
mov ecx, dword [eax]
add esp, 4
test ecx, ecx
jne 0x5b14ef
test dword [ebp + 0x98], 0x10000000
je 0x5b1357
lea ecx, [esp + 0x14]
push ecx
push ebx
push edi
call fcn.006313d0
push eax
push str._16s
call fcn.006d1d9e
add esp, 0x14
mov ecx, dword [esp + 0x4c]
mov edx, dword [esi + 4]
add ecx, edi
mov eax, 0
adc eax, ebx
cmp eax, dword [edx + 0x1c]
ja 0x5b1449
jb 0x5b137b
cmp ecx, dword [edx + 0x18]
ja 0x5b1449
mov eax, edi
and eax, 0x3ff
xor ecx, ecx
or eax, ecx
jne 0x5b149b
mov edx, dword [esi + 0x64]
mov eax, dword [esi]
mov ecx, dword [eax + 0x210]
push 1
push 0x400
push 0x400
push edx
mov edx, dword [eax + 0x1bc]
push 3
push ebx
push edi
push ecx
push edx
call fcn.005e4a00
mov esi, eax
add esp, 0x24
test esi, esi
je 0x5b14d4
movzx eax, byte [esi]
movzx ecx, byte [esi + 1]
movzx edx, byte [esi + 2]
shl eax, 8
add eax, ecx
movzx ecx, byte [esi + 3]
shl eax, 8
push 1
add eax, edx
push 0
shl eax, 8
add eax, ecx
push 0
push eax
call fcn.006cfc20
movzx ecx, byte [esi + 6]
mov ebx, edx
movzx edx, byte [esi + 4]
mov edi, eax
movzx eax, byte [esi + 5]
shl edx, 8
add edx, eax
movzx eax, byte [esi + 7]
mov esi, dword [ebp + 0x34]
shl edx, 8
add edx, ecx
shl edx, 8
add edx, eax
mov eax, dword [ebp + 0x30]
xor ecx, ecx
add edi, edx
mov edx, dword [esp + 0x4c]
adc ebx, ecx
mov ecx, dword [esp + 0x10]
dec ecx
add eax, edx
mov dword [ebp + 0x30], eax
mov eax, 0
adc esi, eax
mov eax, edi
and eax, ebx
cmp eax, 0xffffffff
mov dword [esp + 0x10], ecx
mov dword [ebp + 0x34], esi
jne 0x5b1312
jmp 0x5b12c1
mov edx, dword [esi + 4]
mov eax, dword [edx + 0x1c]
lea ecx, [esp + 0x2c]
push ecx
mov ecx, dword [edx + 0x18]
push eax
push ecx
call fcn.006313d0
mov edx, dword [esp + 0x58]
add esp, 0xc
push eax
push edx
lea eax, [esp + 0x1c]
push eax
push ebx
push edi
call fcn.006313d0
add esp, 0xc
push eax
push str.Invalid_key_block_position:__s__key_block_size:__u__file_length:__s
push ebp
call fcn.004012fd
add esp, 0x14
pop edi
pop esi
pop ebp
mov eax, 1
pop ebx
mov ecx, dword [esp + 0x34]
call fcn.006cedd0
add esp, 0x38
ret
push 0x400
lea ecx, [esp + 0x18]
push ecx
push ebx
push edi
call fcn.006313d0
add esp, 0xc
push eax
push str.Mis_aligned_key_block:__s__minimum_key_block_length:__u
push ebp
call fcn.004012fd
add esp, 0x10
pop edi
pop esi
pop ebp
mov eax, 1
pop ebx
mov ecx, dword [esp + 0x34]
call fcn.006cedd0
add esp, 0x38
ret
lea edx, [esp + 0x14]
push edx
push ebx
push edi
call fcn.006313d0
push eax
push str.key_cache_read_error_for_block:__s
push ebp
call fcn.004012fd
add esp, 0x18
pop edi
pop esi
pop ebp
mov eax, 1
pop ebx
mov ecx, dword [esp + 0x34]
call fcn.006cedd0
add esp, 0x38
ret
push 0x73a01c
call fcn.006d1e04
mov ecx, dword [esp + 0x48]
add esp, 4
pop edi
pop esi
pop ebp
xor eax, eax
pop ebx
call fcn.006cedd0
add esp, 0x38
ret