Function at 0x46fa20
Capabilities:
Enumerate pe sections

Disassembly:
sub esp, 0x14
push edi
mov edi, dword [esp + 0x1c]
mov eax, dword [edi + 0x68]
test al, 1
jne 0x46fa6f
push str.Missing_IHDR_before_pCAL
push edi
call fcn.0046c7b0
add esp, 8
push ebx
mov ebx, dword [esp + 0x28]
push esi
lea edx, [ebx + 1]
push edx
push edi
call fcn.0046cbe0
mov esi, eax
add esp, 8
test esi, esi
mov dword [esp + 0x10], esi
jne 0x46fabf
push str.No_memory_for_pCAL_purpose.
push edi
call fcn.0046c870
add esp, 8
pop esi
pop ebx
pop edi
add esp, 0x14
ret
test al, 4
je 0x46fa91
push str.Invalid_pCAL_after_IDAT
push edi
call fcn.0046c870
mov eax, dword [esp + 0x2c]
push eax
push edi
call fcn.0046de10
add esp, 0x10
pop edi
add esp, 0x14
ret
mov eax, dword [esp + 0x20]
test eax, eax
je 0x46fa3d
mov ecx, dword [eax + 8]
test ch, 4
je 0x46fa3d
push str.Duplicate_pCAL_chunk
push edi
call fcn.0046c870
mov ecx, dword [esp + 0x2c]
push ecx
push edi
call fcn.0046de10
add esp, 0x10
pop edi
add esp, 0x14
ret
push ebx
push esi
push edi
call fcn.0046c3c0
push ebx
push esi
push edi
call fcn.00466570
push 0
push edi
call fcn.0046de10
add esp, 0x20
test eax, eax
je 0x46faef
push esi
push edi
call fcn.0046cbb0
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 0x46fb08
mov dl, byte [eax + 1]
inc eax
test dl, dl
jne 0x46fb00
lea edx, [eax + 0xc]
cmp ecx, edx
ja 0x46fb2b
push str.Invalid_pCAL_data
push edi
call fcn.0046c870
push esi
push edi
call fcn.0046cbb0
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
test cl, cl
mov byte [esp + 0x13], cl
mov byte [esp + 0x28], dl
mov dword [esp + 0x18], eax
jne 0x46fb8a
cmp dl, 2
jne 0x46fbac
jmp 0x46fbe4
cmp cl, 1
jne 0x46fb96
cmp dl, 3
jne 0x46fbac
jmp 0x46fbe4
cmp cl, 2
jne 0x46fba2
cmp dl, 3
jne 0x46fbac
jmp 0x46fbe4
cmp cl, 3
jne 0x46fbc9
cmp dl, 4
je 0x46fbe4
push str.Invalid_pCAL_parameters_for_equation_type
push edi
call fcn.0046c870
push esi
push edi
call fcn.0046cbb0
add esp, 0x10
pop ebp
pop esi
pop ebx
pop edi
add esp, 0x14
ret
cmp cl, 4
jb 0x46fbe4
push str.Unrecognized_equation_type_for_pCAL_chunk
push edi
call fcn.0046c870
mov dl, byte [esp + 0x30]
mov eax, dword [esp + 0x20]
add esp, 8
cmp byte [eax], 0
mov esi, eax
je 0x46fbf8
jmp 0x46fbf0
mov al, byte [esi + 1]
inc esi
test al, al
jne 0x46fbf0
movzx eax, dl
mov dword [esp + 0x28], eax
shl eax, 2
push eax
push edi
call fcn.0046cbe0
add esp, 8
test eax, eax
mov dword [esp + 0x1c], eax
jne 0x46fc35
mov ecx, dword [esp + 0x14]
push ecx
push edi
call fcn.0046cbb0
push str.No_memory_for_pCAL_params.
push edi
call fcn.0046c870
add esp, 0x10
pop ebp
pop esi
pop ebx
pop edi
add esp, 0x14
ret
mov ecx, dword [esp + 0x28]
xor edx, edx
test ecx, ecx
jle 0x46fc93
nop
mov ecx, dword [esp + 0x20]
inc esi
cmp esi, ecx
mov dword [eax + edx*4], esi
ja 0x46fc5a
lea esp, [esp]
cmp byte [esi], 0
je 0x46fc86
inc esi
cmp esi, ecx
jbe 0x46fc50
push str.Invalid_pCAL_data
push edi
call fcn.0046c870
mov edx, dword [esp + 0x1c]
push edx
push edi
call fcn.0046cbb0
mov eax, dword [esp + 0x2c]
push eax
push edi
call fcn.0046cbb0
add esp, 0x18
pop ebp
pop esi
pop ebx
pop edi
add esp, 0x14
ret
cmp esi, ecx
ja 0x46fc5a
mov ecx, dword [esp + 0x28]
inc edx
cmp edx, ecx
jl 0x46fc40
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.00471110
push esi
push edi
call fcn.0046cbb0
mov edx, dword [esp + 0x48]
push edx
push edi
call fcn.0046cbb0
add esp, 0x34
pop ebp
pop esi
pop ebx
pop edi
add esp, 0x14
ret