Function at 0x45b230
Capabilities:
Enumerate pe sections

Disassembly:
sub esp, 0x14
push edi
mov edi, dword [esp + 0x1c]
mov eax, dword [edi + 0x68]
test al, 1
jne 0x45b27f
push str.Missing_IHDR_before_pCAL
push edi
call fcn.00458260
add esp, 8
push ebx
mov ebx, dword [esp + 0x28]
push esi
lea edx, [ebx + 1]
push edx
push edi
call fcn.00457ec0
mov esi, eax
add esp, 8
mov dword [esp + 0x10], esi
test esi, esi
jne 0x45b2d0
push str.No_memory_for_pCAL_purpose.
push edi
call fcn.00458320
add esp, 8
pop esi
pop ebx
pop edi
add esp, 0x14
ret
test al, 4
je 0x45b2a1
push str.Invalid_pCAL_after_IDAT
push edi
call fcn.00458320
mov eax, dword [esp + 0x2c]
push eax
push edi
call fcn.004595a0
add esp, 0x10
pop edi
add esp, 0x14
ret
mov eax, dword [esp + 0x20]
test eax, eax
je 0x45b24d
test dword [eax + 8], 0x400
je 0x45b24d
push str.Duplicate_pCAL_chunk
push edi
call fcn.00458320
mov ecx, dword [esp + 0x2c]
push ecx
push edi
call fcn.004595a0
add esp, 0x10
pop edi
add esp, 0x14
ret
push ebx
push esi
push edi
call fcn.00455f80
push ebx
push esi
push edi
call fcn.00451d60
push 0
push edi
call fcn.004595a0
add esp, 0x20
test eax, eax
je 0x45b300
push esi
push edi
call fcn.00457e90
add esp, 8
pop esi
pop ebx
pop edi
add esp, 0x14
ret
lea ecx, [esi + ebx]
mov byte [ecx], 0
cmp byte [esi], 0
mov dword [esp + 0x1c], ecx
mov eax, esi
je 0x45b317
inc eax
cmp byte [eax], 0
jne 0x45b311
lea edx, [eax + 0xc]
cmp ecx, edx
ja 0x45b33a
push 0x4c0b50
push edi
call fcn.00458320
push esi
push edi
call fcn.00457e90
add esp, 0x10
pop esi
pop ebx
pop edi
add esp, 0x14
ret
movzx ecx, byte [eax + 2]
movzx edx, byte [eax + 3]
movzx ebx, byte [eax + 5]
push ebp
movzx ebp, byte [eax + 1]
shl ebp, 8
add ebp, ecx
movzx ecx, byte [eax + 4]
shl ebp, 8
add ebp, edx
movzx edx, byte [eax + 6]
shl ebx, 8
add ebx, edx
movzx edx, byte [eax + 8]
shl ebp, 8
add ebp, ecx
movzx ecx, byte [eax + 7]
shl ebx, 8
add ebx, ecx
mov cl, byte [eax + 9]
shl ebx, 8
add ebx, edx
mov dl, byte [eax + 0xa]
add eax, 0xb
mov byte [esp + 0x13], cl
mov byte [esp + 0x28], dl
mov dword [esp + 0x18], eax
test cl, cl
jne 0x45b399
cmp dl, 2
jne 0x45b3bb
jmp 0x45b3f3
cmp cl, 1
jne 0x45b3a5
cmp dl, 3
jne 0x45b3bb
jmp 0x45b3f3
cmp cl, 2
jne 0x45b3b1
cmp dl, 3
jne 0x45b3bb
jmp 0x45b3f3
cmp cl, 3
jne 0x45b3d8
cmp dl, 4
je 0x45b3f3
push str.Invalid_pCAL_parameters_for_equation_type
push edi
call fcn.00458320
push esi
push edi
call fcn.00457e90
add esp, 0x10
pop ebp
pop esi
pop ebx
pop edi
add esp, 0x14
ret
cmp cl, 4
jb 0x45b3f3
push 0x4c0b90
push edi
call fcn.00458320
mov eax, dword [esp + 0x20]
mov dl, byte [esp + 0x30]
add esp, 8
cmp byte [eax], 0
mov esi, eax
je 0x45b406
lea ebx, [ebx]
inc esi
cmp byte [esi], 0
jne 0x45b400
movzx eax, dl
mov dword [esp + 0x28], eax
add eax, eax
add eax, eax
push eax
push edi
call fcn.00457ec0
add esp, 8
mov dword [esp + 0x1c], eax
test eax, eax
jne 0x45b444
mov ecx, dword [esp + 0x14]
push ecx
push edi
call fcn.00457e90
push str.No_memory_for_pCAL_params.
push edi
call fcn.00458320
add esp, 0x10
pop ebp
pop esi
pop ebx
pop edi
add esp, 0x14
ret
xor edx, edx
cmp dword [esp + 0x28], edx
jle 0x45b4a1
lea esp, [esp]
mov ecx, dword [esp + 0x20]
inc esi
mov dword [eax + edx*4], esi
cmp esi, ecx
ja 0x45b46a
lea esp, [esp]
cmp byte [esi], 0
je 0x45b496
inc esi
cmp esi, ecx
jbe 0x45b460
push str.Invalid_pCAL_data
push edi
call fcn.00458320
mov edx, dword [esp + 0x1c]
push edx
push edi
call fcn.00457e90
mov eax, dword [esp + 0x2c]
push eax
push edi
call fcn.00457e90
add esp, 0x18
pop ebp
pop esi
pop ebx
pop edi
add esp, 0x14
ret
cmp esi, ecx
ja 0x45b46a
inc edx
cmp edx, dword [esp + 0x28]
jl 0x45b450
mov ecx, dword [esp + 0x18]
mov edx, dword [esp + 0x28]
mov esi, dword [esp + 0x14]
push eax
movzx eax, byte [esp + 0x17]
push ecx
mov ecx, dword [esp + 0x34]
push edx
push eax
push ebx
push ebp
push esi
push ecx
push edi
call fcn.00455230
push esi
push edi
call fcn.00457e90
mov edx, dword [esp + 0x48]
push edx
push edi
call fcn.00457e90
add esp, 0x34
pop ebp
pop esi
pop ebx
pop edi
add esp, 0x14
ret