Function at 0x582f89
Capabilities:
Enumerate pe sections

Disassembly:
push ebp
mov ebp, esp
push edi
push esi
push ebx
sub esp, 0x4c
mov edi, eax
mov dword [ebp - 0x1c], edx
mov dword [ebp - 0x20], ecx
mov ebx, dword [ebp + 8]
mov al, byte [eax]
cmp al, 0x1c
ja 0x582fc1
test al, al
je case.0x582fba.13
lea edx, [eax - 1]
cmp dl, 0x1b
ja case.0x582fba.13
movzx edx, dl
jmp dword [edx*4 + 0x606718]
cmp al, 0xd0
je 0x583f4b
jmp case.0x582fba.13
mov edx, str.IPMP_OpaqueData
cmp al, 8
jne 0x582fdc
mov edx, str.IPMP_RightsData
mov dword [esp], ebx
mov ecx, dword [ebp - 0x20]
mov eax, dword [ebp - 0x1c]
call fcn.00563a99
mov eax, dword [ebp - 0x20]
lea esi, [eax + 1]
test ebx, ebx
je 0x582ffc
mov eax, dword [ebp - 0x1c]
call fcn.004b79ea
mov edx, str.opaqueData
cmp byte [edi], 8
jne 0x58300b
mov edx, str.rightsInfo
mov eax, dword [edi + 4]
mov dword [esp + 4], ebx
mov dword [esp], esi
mov ecx, dword [ebp - 0x1c]
call fcn.00564513
mov edx, str.IPMP_OpaqueData
cmp byte [edi], 8
jne 0x58427b
mov edx, str.IPMP_RightsData
jmp 0x58427b
mov dword [esp], ebx
mov ecx, dword [ebp - 0x20]
mov edx, str.IPMP_KeyData
mov eax, dword [ebp - 0x1c]
call fcn.00563a99
mov eax, dword [ebp - 0x20]
lea esi, [eax + 1]
mov ecx, dword [edi + 8]
and ecx, 1
mov dword [esp + 4], ebx
mov dword [esp], esi
mov edx, str.hasStartDTS
mov eax, dword [ebp - 0x1c]
call fcn.004b7fea
mov ecx, dword [edi + 8]
shr ecx, 1
and ecx, 1
mov dword [esp + 4], ebx
mov dword [esp], esi
mov edx, str.hasStartPacketID
mov eax, dword [ebp - 0x1c]
call fcn.004b7fea
mov ecx, dword [edi + 8]
shr ecx, 2
and ecx, 1
mov dword [esp + 4], ebx
mov dword [esp], esi
mov edx, str.hasEndDTS
mov eax, dword [ebp - 0x1c]
call fcn.004b7fea
mov ecx, dword [edi + 8]
shr ecx, 3
and ecx, 1
mov dword [esp + 4], ebx
mov dword [esp], esi
mov edx, str.hasEndPacketID
mov eax, dword [ebp - 0x1c]
call fcn.004b7fea
test byte [edi + 8], 1
je 0x583117
mov eax, dword [edi + 0x10]
mov dword [ebp - 0x24], eax
mov eax, dword [edi + 0x14]
mov dword [ebp - 0x28], eax
test eax, eax
jne 0x5830da
cmp dword [ebp - 0x24], 0
je 0x583117
mov dword [esp], ebx
mov ecx, esi
mov edx, str.startDTS
mov eax, dword [ebp - 0x1c]
call fcn.004b777d
mov eax, dword [ebp - 0x24]
mov dword [esp + 8], eax
mov eax, dword [ebp - 0x28]
mov dword [esp + 0xc], eax
mov dword [esp + 4], 0x60608f
mov eax, dword [ebp - 0x1c]
mov dword [esp], eax
call fcn.005adc24
mov edx, ebx
mov eax, dword [ebp - 0x1c]
call fcn.005929f7
test byte [edi + 8], 2
je 0x583134
mov ecx, dword [edi + 0x18]
mov dword [esp + 4], ebx
mov dword [esp], esi
mov edx, str.startPacketID
mov eax, dword [ebp - 0x1c]
call fcn.004b77dc
test byte [edi + 8], 4
je 0x58318d
mov eax, dword [edi + 0x20]
mov dword [ebp - 0x24], eax
mov eax, dword [edi + 0x24]
mov dword [ebp - 0x28], eax
test eax, eax
jne 0x583150
cmp dword [ebp - 0x24], 0
je 0x58318d
mov dword [esp], ebx
mov ecx, esi
mov edx, str.expireDTS
mov eax, dword [ebp - 0x1c]
call fcn.004b777d
mov eax, dword [ebp - 0x24]
mov dword [esp + 8], eax
mov eax, dword [ebp - 0x28]
mov dword [esp + 0xc], eax
mov dword [esp + 4], 0x60608f
mov eax, dword [ebp - 0x1c]
mov dword [esp], eax
call fcn.005adc24
mov edx, ebx
mov eax, dword [ebp - 0x1c]
call fcn.005929f7
test byte [edi + 8], 8
je 0x5831aa
mov ecx, dword [edi + 0x28]
mov dword [esp + 4], ebx
mov dword [esp], esi
mov edx, str.expirePacketID
mov eax, dword [ebp - 0x1c]
call fcn.004b77dc
test ebx, ebx
je 0x5831b6
mov eax, dword [ebp - 0x1c]
call fcn.004b79ea
mov eax, dword [edi + 4]
mov dword [esp + 4], ebx
mov dword [esp], esi
mov ecx, dword [ebp - 0x1c]
mov edx, str.keyBody
call fcn.00564513
mov eax, dword [edi + 0x2c]
mov dword [esp + 4], ebx
mov dword [esp], esi
mov ecx, dword [ebp - 0x1c]
mov edx, str.OpaqueData
call fcn.00564513
mov dword [ebp + 8], ebx
mov ecx, dword [ebp - 0x20]
mov edx, str.IPMP_KeyData
jmp 0x5845d1
mov dword [esp], ebx
mov ecx, dword [ebp - 0x20]
mov edx, str.IPMP_SecureContainer
mov eax, dword [ebp - 0x1c]
call fcn.00563a99
mov eax, dword [ebp - 0x20]
lea esi, [eax + 1]
mov ecx, dword [edi + 4]
mov dword [esp + 4], ebx
mov dword [esp], esi
mov edx, str.isMACEncrypted
mov eax, dword [ebp - 0x1c]
call fcn.004b7fea
test ebx, ebx
je 0x583230
mov eax, dword [ebp - 0x1c]
call fcn.004b79ea
mov eax, dword [edi + 8]
test eax, eax
je 0x58324b
mov dword [esp + 4], ebx
mov dword [esp], esi
mov ecx, dword [ebp - 0x1c]
mov edx, str.encryptedData
call fcn.00564513
mov eax, dword [edi + 0xc]
test eax, eax
je 0x58325f
mov dword [esp], ebx
mov ecx, esi
mov edx, dword [ebp - 0x1c]
call fcn.00582f89
mov eax, dword [edi + 0x10]
test eax, eax
je 0x58327a
mov dword [esp + 4], ebx
mov dword [esp], esi
mov ecx, dword [ebp - 0x1c]
mov edx, 0x606101
call fcn.00564513
mov dword [ebp + 8], ebx
mov ecx, dword [ebp - 0x20]
mov edx, str.IPMP_SecureContainer
jmp 0x5845d1
mov dword [esp], ebx
mov ecx, dword [ebp - 0x20]
mov edx, str.IPMP_InitAuthentication
mov eax, dword [ebp - 0x1c]
call fcn.00563a99
mov eax, dword [ebp - 0x20]
lea esi, [eax + 1]
mov ecx, dword [edi + 4]
mov dword [esp + 4], ebx
mov dword [esp], esi
mov edx, str.Context
mov eax, dword [ebp - 0x1c]
call fcn.004b77dc
movzx ecx, byte [edi + 8]
mov dword [esp + 4], ebx
mov dword [esp], esi
mov edx, str.AuthType
mov eax, dword [ebp - 0x1c]
call fcn.004b77dc
test ebx, ebx
je 0x5832de
mov eax, dword [ebp - 0x1c]
call fcn.004b79ea
mov dword [ebp + 8], ebx
mov ecx, dword [ebp - 0x20]
mov edx, str.IPMP_InitAuthentication
jmp 0x5845d1
mov dword [esp], ebx
mov ecx, dword [ebp - 0x20]
mov edx, str.IPMP_TrustSecurityMetadata
mov eax, dword [ebp - 0x1c]
call fcn.00563a99
mov eax, dword [ebp - 0x20]
inc eax
mov dword [ebp - 0x38], eax
test ebx, ebx
je 0x583314
mov eax, dword [ebp - 0x1c]
call fcn.004b79ea
mov dword [esp], ebx
mov ecx, dword [ebp - 0x38]
mov edx, str.trustedTools
mov eax, dword [ebp - 0x1c]
call fcn.005639ef
mov eax, dword [ebp - 0x20]
add eax, 2
mov dword [ebp - 0x3c], eax
xor eax, eax
mov dword [ebp - 0x2c], eax
mov eax, dword [edi + 4]
test eax, eax
je 0x5834da
mov esi, dword [ebp - 0x2c]
cmp esi, dword [eax + 4]
jae 0x5834da
mov edx, dword [ebp - 0x2c]
call fcn.00425c8e
mov dword [ebp - 0x30], eax
mov dword [esp], ebx
mov ecx, dword [ebp - 0x3c]
mov edx, str.IPMP_TrustedTool
mov eax, dword [ebp - 0x1c]
call fcn.00563a99
mov eax, dword [ebp - 0x20]
add eax, 3
mov dword [ebp - 0x24], eax
mov eax, dword [ebp - 0x30]
lea ecx, [eax + 3]
mov dword [esp + 4], ebx
mov eax, dword [ebp - 0x24]
mov dword [esp], eax
mov edx, str.toolID
mov eax, dword [ebp - 0x1c]
call fcn.004b78c1
mov eax, dword [ebp - 0x30]
lea ecx, [eax + 0x13]
mov dword [esp + 4], ebx
mov eax, dword [ebp - 0x24]
mov dword [esp], eax
mov edx, str.AuditDate
mov eax, dword [ebp - 0x1c]
call fcn.005643a5
test ebx, ebx
je 0x5833b9
mov eax, dword [ebp - 0x1c]
call fcn.004b79ea
mov dword [esp], ebx
mov ecx, dword [ebp - 0x24]
mov edx, str.trustSpecifications
mov eax, dword [ebp - 0x1c]
call fcn.005639ef
mov eax, dword [ebp - 0x20]
add eax, 4
mov dword [ebp - 0x40], eax
xor eax, eax
mov dword [ebp - 0x34], eax
mov eax, dword [ebp - 0x30]
mov eax, dword [eax + 0x18]
test eax, eax
je 0x5834ac
mov esi, dword [ebp - 0x34]
cmp esi, dword [eax + 4]
jae 0x5834ac
mov edx, dword [ebp - 0x34]
call fcn.00425c8e
mov dword [ebp - 0x28], eax
mov dword [esp], ebx
mov ecx, dword [ebp - 0x40]
mov edx, str.IPMP_TrustSpecification
mov eax, dword [ebp - 0x1c]
call fcn.00563a99
mov eax, dword [ebp - 0x20]
lea esi, [eax + 5]
mov eax, dword [ebp - 0x28]
lea ecx, [eax + 3]
mov dword [esp + 4], ebx
mov dword [esp], esi
mov edx, str.startDate
mov eax, dword [ebp - 0x1c]
call fcn.005643a5
mov eax, dword [ebp - 0x28]
movzx ecx, byte [eax + 8]
mov dword [esp + 4], ebx
mov dword [esp], esi
mov edx, str.attackerProfile
mov eax, dword [ebp - 0x1c]
call fcn.004b77dc
mov eax, dword [ebp - 0x28]
mov ecx, dword [eax + 0xc]
mov dword [esp + 4], ebx
mov dword [esp], esi
mov edx, str.trustedDuration
mov eax, dword [ebp - 0x1c]
call fcn.004b77dc
test ebx, ebx
je 0x583473
mov eax, dword [ebp - 0x1c]
call fcn.004b79ea
mov eax, dword [ebp - 0x28]
mov eax, dword [eax + 0x10]
test eax, eax
je 0x583491
mov dword [esp + 4], ebx
mov dword [esp], esi
mov ecx, dword [ebp - 0x1c]
mov edx, str.CCTrustMetadata
call fcn.00564513
mov dword [esp], ebx
mov ecx, dword [ebp - 0x40]
mov edx, str.IPMP_TrustSpecification
mov eax, dword [ebp - 0x1c]
call fcn.00563af2
inc dword [ebp - 0x34]
jmp 0x5833da
mov dword [esp], ebx
mov ecx, dword [ebp - 0x24]
mov edx, str.trustSpecifications
mov eax, dword [ebp - 0x1c]
call fcn.00563a3e
mov dword [esp], ebx
mov ecx, dword [ebp - 0x3c]
mov edx, str.IPMP_TrustedTool
mov eax, dword [ebp - 0x1c]
call fcn.00563af2
inc dword [ebp - 0x2c]
jmp 0x583335
mov dword [esp], ebx
mov ecx, dword [ebp - 0x38]
mov edx, str.trustedTools
mov eax, dword [ebp - 0x1c]
call fcn.00563a3e
mov dword [ebp + 8], ebx
mov ecx, dword [ebp - 0x20]
mov edx, str.IPMP_TrustSecurityMetadata
jmp 0x5845d1
mov dword [esp], ebx
mov ecx, dword [ebp - 0x20]
mov edx, str.IPMP_MutualAuthentication
mov eax, dword [ebp - 0x1c]
call fcn.00563a99
mov eax, dword [ebp - 0x20]
inc eax
mov dword [ebp - 0x24], eax
mov ecx, dword [edi + 4]
mov dword [esp + 4], ebx
mov dword [esp], eax
mov edx, str.failedNegotiation
mov eax, dword [ebp - 0x1c]
call fcn.004b7fea
mov eax, dword [edi + 0x18]
test eax, eax
je 0x583555
cmp dword [eax + 4], 0
je 0x583555
mov ecx, dword [edi + 0x14]
mov dword [esp + 4], ebx
mov eax, dword [ebp - 0x24]
mov dword [esp], eax
mov edx, str.certType
mov eax, dword [ebp - 0x1c]
call fcn.004b77dc
test ebx, ebx
je 0x583561
mov eax, dword [ebp - 0x1c]
call fcn.004b79ea
mov dword [esp], ebx
mov ecx, dword [ebp - 0x24]
mov edx, str.candidateAlgorithms
mov eax, dword [ebp - 0x1c]
call fcn.005639ef
mov eax, dword [edi + 8]
xor esi, esi
test eax, eax
je 0x583580
mov esi, dword [eax + 4]
mov eax, dword [ebp - 0x20]
add eax, 2
mov dword [ebp - 0x2c], eax
xor eax, eax
mov dword [ebp - 0x28], eax
cmp dword [ebp - 0x28], esi
je 0x5835b1
mov eax, dword [edi + 8]
mov edx, dword [ebp - 0x28]
call fcn.00425c8e
mov dword [esp], ebx
mov ecx, dword [ebp - 0x2c]
mov edx, dword [ebp - 0x1c]
call fcn.005645ac
inc dword [ebp - 0x28]
jmp 0x58358e
mov dword [esp], ebx
mov ecx, dword [ebp - 0x24]
mov edx, str.candidateAlgorithms
mov eax, dword [ebp - 0x1c]
call fcn.00563a3e
mov dword [esp], ebx
mov ecx, dword [ebp - 0x24]
mov edx, str.agreedAlgorithms
mov eax, dword [ebp - 0x1c]
call fcn.005639ef
mov eax, dword [edi + 0xc]
test eax, eax
je 0x583608
mov eax, dword [eax + 4]
mov dword [ebp - 0x28], eax
xor esi, esi
mov eax, dword [ebp - 0x28]
cmp esi, eax
je 0x583608
mov eax, dword [edi + 0xc]
mov edx, esi
call fcn.00425c8e
mov dword [esp], ebx
mov ecx, dword [ebp - 0x2c]
mov edx, dword [ebp - 0x1c]
call fcn.005645ac
inc esi
jmp 0x5835e6
mov dword [esp], ebx
mov ecx, dword [ebp - 0x24]
mov edx, str.agreedAlgorithms
mov eax, dword [ebp - 0x1c]
call fcn.00563a3e
mov eax, dword [edi + 0x10]
test eax, eax
je 0x583639
mov dword [esp + 4], ebx
mov esi, dword [ebp - 0x24]
mov dword [esp], esi
mov ecx, dword [ebp - 0x1c]
mov edx, str.AuthenticationData
call fcn.00564513
mov eax, dword [edi + 0x18]
test eax, eax
je 0x58364a
mov eax, dword [eax + 4]
mov dword [ebp - 0x2c], eax
test eax, eax
jne 0x583665
mov esi, dword [edi + 0x20]
mov eax, dword [edi + 0x1c]
test esi, esi
jne 0x583730
test eax, eax
jne 0x583734
jmp 0x5837dd
mov dword [esp], ebx
mov ecx, dword [ebp - 0x24]
mov edx, str.certificates
mov eax, dword [ebp - 0x1c]
call fcn.005639ef
xor ecx, ecx
mov dword [ebp - 0x28], ecx
mov eax, dword [edi + 0x18]
mov edx, dword [ebp - 0x28]
call fcn.00425c8e
mov esi, eax
inc dword [ebp - 0x28]
test ebx, ebx
je 0x5836ad
mov dword [esp + 4], 1
mov eax, dword [ebp - 0x24]
mov dword [esp], eax
mov ecx, dword [ebp - 0x1c]
xor edx, edx
mov eax, esi
call fcn.00564513
jmp 0x58370f
xor eax, eax
mov dword [esp], eax
mov ecx, dword [ebp - 0x24]
mov edx, 0x605c84
mov eax, dword [ebp - 0x1c]
call fcn.004b777d
mov ecx, dword [esi + 4]
xor edx, edx
mov dword [esp + 8], edx
mov eax, dword [ebp - 0x24]
mov dword [esp + 4], eax
mov eax, dword [esi]
mov dword [esp], eax
xor edx, edx
mov eax, dword [ebp - 0x1c]
call fcn.00564406
mov esi, dword [ebp - 0x2c]
cmp dword [ebp - 0x28], esi
jae 0x5836fc
mov eax, dword [ebp - 0x1c]
mov dword [esp + 4], eax
mov dword [esp], 0x2c
call sub.api_ms_win_crt_stdio_l1_1_0.dll_fputc
mov eax, dword [ebp - 0x1c]
mov dword [esp + 4], eax
mov dword [esp], 0xa
call sub.api_ms_win_crt_stdio_l1_1_0.dll_fputc
mov esi, dword [ebp - 0x28]
cmp dword [ebp - 0x2c], esi
jne 0x58367d
mov dword [esp], ebx
mov ecx, dword [ebp - 0x24]
mov edx, str.certificates
mov eax, dword [ebp - 0x1c]
call fcn.00563a3e
jmp 0x58375d
test eax, eax
je 0x583744
mov dword [esp], ebx
mov ecx, dword [ebp - 0x24]
mov edx, dword [ebp - 0x1c]
call fcn.005645ac
jmp 0x58375d
mov dword [esp + 4], ebx
mov eax, dword [ebp - 0x24]
mov dword [esp], eax
mov ecx, dword [ebp - 0x1c]
mov edx, str.opaque
mov eax, esi
call fcn.00564513
test ebx, ebx
jne 0x583778
xor eax, eax
mov dword [esp], eax
mov ecx, dword [ebp - 0x24]
mov edx, str.trustData
mov eax, dword [ebp - 0x1c]
call fcn.004b777d
jmp 0x583797
mov dword [esp], 1
mov ecx, dword [ebp - 0x24]
mov edx, str.trustData
mov eax, dword [ebp - 0x1c]
call fcn.00563a99
mov eax, dword [ebp - 0x1c]
call fcn.004b79ea
mov eax, dword [edi + 0x24]
mov dword [esp], ebx
mov ecx, dword [ebp - 0x24]
mov edx, dword [ebp - 0x1c]
call fcn.00582f89
test ebx, ebx
je 0x5837c3
mov dword [esp], 1
mov ecx, dword [ebp - 0x24]
mov edx, str.trustData
mov eax, dword [ebp - 0x1c]
call fcn.00563af2
mov eax, dword [edi + 0x28]
mov dword [esp + 4], ebx
mov edi, dword [ebp - 0x24]
mov dword [esp], edi
mov ecx, dword [ebp - 0x1c]
mov edx, str.authCodes
call fcn.00564513
mov dword [ebp + 8], ebx
mov ecx, dword [ebp - 0x20]
mov edx, str.IPMP_MutualAuthentication
jmp 0x5845d1
mov dword [esp], ebx
mov ecx, dword [ebp - 0x20]
mov edx, str.IPMP_GetToolsResponse
mov eax, dword [ebp - 0x1c]
call fcn.00563a99
mov eax, dword [ebp - 0x20]
lea esi, [eax + 1]
test ebx, ebx
je 0x583812
mov eax, dword [ebp - 0x1c]
call fcn.004b79ea
xor eax, eax
mov dword [esp + 8], eax
mov dword [esp + 4], ebx
mov dword [esp], str.IPMP_Tools
mov ecx, esi
mov edx, dword [ebp - 0x1c]
mov eax, dword [edi]
call fcn.00591372
mov dword [ebp + 8], ebx
mov ecx, dword [ebp - 0x20]
mov edx, str.IPMP_GetToolsResponse
jmp 0x5845d1
mov dword [esp], ebx
mov ecx, dword [ebp - 0x20]
mov edx, str.IPMP_ParametricDescription
mov eax, dword [ebp - 0x1c]
call fcn.00563a99
mov eax, dword [ebp - 0x20]
inc eax
mov dword [ebp - 0x24], eax
movzx ecx, byte [edi + 8]
mov dword [esp + 4], ebx
mov dword [esp], eax
mov edx, str.majorVersion
mov eax, dword [ebp - 0x1c]
call fcn.004b77dc
movzx ecx, byte [edi + 9]
mov dword [esp + 4], ebx
mov eax, dword [ebp - 0x24]
mov dword [esp], eax
mov edx, str.minorVersion
mov eax, dword [ebp - 0x1c]
call fcn.004b77dc
test ebx, ebx
je 0x583898
mov eax, dword [ebp - 0x1c]
call fcn.004b79ea
mov eax, dword [edi + 4]
mov dword [esp + 4], ebx
mov esi, dword [ebp - 0x24]
mov dword [esp], esi
mov ecx, dword [ebp - 0x1c]
mov edx, str.descriptionComment
call fcn.00564513
mov dword [esp], ebx
mov ecx, dword [ebp - 0x24]
mov edx, str.descriptions
mov eax, dword [ebp - 0x1c]
call fcn.005639ef
mov eax, dword [ebp - 0x20]
add eax, 2
mov dword [ebp - 0x30], eax
xor eax, eax
mov dword [ebp - 0x2c], eax
mov eax, dword [edi + 0xc]
test eax, eax
je 0x5839b7
mov esi, dword [ebp - 0x2c]
cmp esi, dword [eax + 4]
jae 0x5839b7
mov edx, dword [ebp - 0x2c]
call fcn.00425c8e
mov dword [ebp - 0x28], eax
mov dword [esp], ebx
mov ecx, dword [ebp - 0x30]
mov edx, str.IPMP_ParametricDescriptionItem
mov eax, dword [ebp - 0x1c]
call fcn.00563a99
mov eax, dword [ebp - 0x20]
lea esi, [eax + 3]
test ebx, ebx
je 0x58391a
mov eax, dword [ebp - 0x1c]
call fcn.004b79ea
mov eax, dword [ebp - 0x28]
mov eax, dword [eax + 4]
mov dword [esp + 4], ebx
mov dword [esp], esi
mov ecx, dword [ebp - 0x1c]
mov edx, str.class
call fcn.00564513
mov eax, dword [ebp - 0x28]
mov eax, dword [eax + 8]
mov dword [esp + 4], ebx
mov dword [esp], esi
mov ecx, dword [ebp - 0x1c]
mov edx, str.subClass
call fcn.00564513
mov eax, dword [ebp - 0x28]
mov eax, dword [eax + 0xc]
mov dword [esp + 4], ebx
mov dword [esp], esi
mov ecx, dword [ebp - 0x1c]
mov edx, str.typeData
call fcn.00564513
mov eax, dword [ebp - 0x28]
mov eax, dword [eax + 0x10]
mov dword [esp + 4], ebx
mov dword [esp], esi
mov ecx, dword [ebp - 0x1c]
mov edx, 0x606320
call fcn.00564513
mov eax, dword [ebp - 0x28]
mov eax, dword [eax + 0x14]
mov dword [esp + 4], ebx
mov dword [esp], esi
mov ecx, dword [ebp - 0x1c]
mov edx, str.addedData
call fcn.00564513
mov dword [esp], ebx
mov ecx, dword [ebp - 0x30]
mov edx, str.IPMP_ParametricDescriptionItem
mov eax, dword [ebp - 0x1c]
call fcn.00563af2
inc dword [ebp - 0x2c]
jmp 0x5838d3
mov dword [esp], ebx
mov ecx, dword [ebp - 0x24]
mov edx, str.descriptions
mov eax, dword [ebp - 0x1c]
call fcn.00563a3e
mov dword [ebp + 8], ebx
mov ecx, dword [ebp - 0x20]
mov edx, str.IPMP_ParametricDescription
jmp 0x5845d1
mov dword [esp], ebx
mov ecx, dword [ebp - 0x20]
mov edx, str.IPMP_ToolParamCapabilitiesQuery
mov eax, dword [ebp - 0x1c]
call fcn.00563a99
mov eax, dword [ebp - 0x20]
lea esi, [eax + 1]
test ebx, ebx
jne 0x583a0d
xor eax, eax
mov dword [esp], eax
mov ecx, esi
mov edx, 0x60634f
mov eax, dword [ebp - 0x1c]
call fcn.004b777d
jmp 0x583a33
mov eax, dword [ebp - 0x1c]
call fcn.004b79ea
mov dword [esp], 1
mov ecx, esi
mov edx, 0x60634f
mov eax, dword [ebp - 0x1c]
call fcn.00563a99
mov eax, dword [ebp - 0x1c]
call fcn.004b79ea
mov eax, dword [edi + 4]
mov dword [esp], ebx
mov ecx, esi
mov edx, dword [ebp - 0x1c]
call fcn.00582f89
test ebx, ebx
je 0x583a5d
mov dword [esp], 1
mov ecx, esi
mov edx, 0x60634f
mov eax, dword [ebp - 0x1c]
call fcn.00563af2
mov dword [ebp + 8], ebx
mov ecx, dword [ebp - 0x20]
mov edx, str.IPMP_ToolParamCapabilitiesQuery
jmp 0x5845d1
mov dword [esp], ebx
mov ecx, dword [ebp - 0x20]
mov edx, str.IPMP_ToolParamCapabilitiesResponse
mov eax, dword [ebp - 0x1c]
call fcn.00563a99
mov ecx, dword [edi + 4]
mov dword [esp + 4], ebx
mov eax, dword [ebp - 0x20]
inc eax
mov dword [esp], eax
mov edx, str.capabilitiesSupported
mov eax, dword [ebp - 0x1c]
call fcn.004b7fea
test ebx, ebx
je 0x583aa7
mov eax, dword [ebp - 0x1c]
call fcn.004b79ea
mov dword [ebp + 8], ebx
mov ecx, dword [ebp - 0x20]
mov edx, str.IPMP_ToolParamCapabilitiesResponse
jmp 0x5845d1
mov dword [esp], ebx
mov ecx, dword [ebp - 0x20]
mov edx, str.IPMP_GetToolContext
mov eax, dword [ebp - 0x1c]
call fcn.00563a99
mov eax, dword [ebp - 0x20]
lea esi, [eax + 1]
movzx ecx, byte [edi + 3]
mov dword [esp + 4], ebx
mov dword [esp], esi
mov edx, str.scope
mov eax, dword [ebp - 0x1c]
call fcn.004b77dc
movzx ecx, word [edi + 4]
mov dword [esp + 4], ebx
mov dword [esp], esi
mov edx, 0x6063ae
mov eax, dword [ebp - 0x1c]
call fcn.004b77dc
test ebx, ebx
je 0x583b0c
mov eax, dword [ebp - 0x1c]
call fcn.004b79ea
mov dword [ebp + 8], ebx
mov ecx, dword [ebp - 0x20]
mov edx, str.IPMP_GetToolContext
jmp 0x5845d1
mov dword [esp], ebx
mov ecx, dword [ebp - 0x20]
mov edx, str.IPMP_GetToolContextResponse
mov eax, dword [ebp - 0x1c]
call fcn.00563a99
mov eax, dword [ebp - 0x20]
lea esi, [eax + 1]
movzx ecx, word [edi + 4]
mov dword [esp + 4], ebx
mov dword [esp], esi
mov edx, str.OD_ID
mov eax, dword [ebp - 0x1c]
call fcn.004b77dc
movzx ecx, word [edi + 6]
mov dword [esp + 4], ebx
mov dword [esp], esi
mov edx, str.ESD_ID
mov eax, dword [ebp - 0x1c]
call fcn.004b77dc
mov ecx, dword [edi + 8]
mov dword [esp + 4], ebx
mov dword [esp], esi
mov edx, str.IPMP_ToolContextID
mov eax, dword [ebp - 0x1c]
call fcn.004b77dc
test ebx, ebx
je 0x583b88
mov eax, dword [ebp - 0x1c]
call fcn.004b79ea
mov dword [ebp + 8], ebx
mov ecx, dword [ebp - 0x20]
mov edx, str.IPMP_GetToolContextResponse
jmp 0x5845d1
mov dword [esp], ebx
mov ecx, dword [ebp - 0x20]
mov edx, str.IPMP_ConnectTool
mov eax, dword [ebp - 0x1c]
call fcn.00563a99
mov eax, dword [ebp - 0x20]
lea esi, [eax + 1]
test ebx, ebx
jne 0x583bcb
xor ecx, ecx
mov dword [esp], ecx
mov ecx, esi
mov edx, str.toolDescriptor
mov eax, dword [ebp - 0x1c]
call fcn.004b777d
jmp 0x583bf1
mov eax, dword [ebp - 0x1c]
call fcn.004b79ea
mov dword [esp], 1
mov ecx, esi
mov edx, str.toolDescriptor
mov eax, dword [ebp - 0x1c]
call fcn.00563a99
mov eax, dword [ebp - 0x1c]
call fcn.004b79ea
mov eax, dword [edi + 4]
mov dword [esp], ebx
mov ecx, esi
mov edx, dword [ebp - 0x1c]
call fcn.00592cda
test ebx, ebx
je 0x583c1b
mov dword [esp], 1
mov ecx, esi
mov edx, str.toolDescriptor
mov eax, dword [ebp - 0x1c]
call fcn.00563af2
mov dword [ebp + 8], ebx
mov ecx, dword [ebp - 0x20]
mov edx, str.IPMP_ConnectTool
jmp 0x5845d1
mov dword [esp], ebx
mov ecx, dword [ebp - 0x20]
mov edx, str.IPMP_DisconnectTool
mov eax, dword [ebp - 0x1c]
call fcn.00563a99
mov ecx, dword [edi + 4]
mov dword [esp + 4], ebx
mov eax, dword [ebp - 0x20]
inc eax
mov dword [esp], eax
mov edx, str.IPMP_ToolContextID
mov eax, dword [ebp - 0x1c]
call fcn.004b77dc
test ebx, ebx
je 0x583c65
mov eax, dword [ebp - 0x1c]
call fcn.004b79ea
mov dword [ebp + 8], ebx
mov ecx, dword [ebp - 0x20]
mov edx, str.IPMP_DisconnectTool
jmp 0x5845d1
mov dword [esp], ebx
mov ecx, dword [ebp - 0x20]
mov edx, str.IPMP_AddToolNotificationListener
mov eax, dword [ebp - 0x1c]
call fcn.00563a99
mov eax, dword [ebp - 0x20]
lea esi, [eax + 1]
movzx ecx, byte [edi + 3]
mov dword [esp + 4], ebx
mov dword [esp], esi
mov edx, str.scope
mov eax, dword [ebp - 0x1c]
call fcn.004b77dc
mov dword [esp], ebx
mov ecx, esi
mov edx, str.eventType
mov eax, dword [ebp - 0x1c]
call fcn.004b777d
test ebx, ebx
jne 0x583ccf
mov eax, dword [ebp - 0x1c]
mov dword [esp + 4], eax
mov dword [esp], 0x22
call sub.api_ms_win_crt_stdio_l1_1_0.dll_fputc
xor esi, esi
movzx eax, byte [edi + 4]
cmp esi, eax
jae 0x583d41
mov eax, dword [edi + esi*4 + 8]
inc esi
mov dword [esp + 8], eax
test ebx, ebx
je 0x583d11
mov dword [esp + 4], str._d
mov eax, dword [ebp - 0x1c]
mov dword [esp], eax
call fcn.005adc24
movzx eax, byte [edi + 4]
cmp esi, eax
jae 0x583cd1
mov eax, dword [ebp - 0x1c]
mov dword [esp + 4], eax
mov dword [esp], 0x20
jmp 0x583d3a
mov dword [esp + 4], 0x606462
mov eax, dword [ebp - 0x1c]
mov dword [esp], eax
call fcn.005adc24
movzx eax, byte [edi + 4]
cmp esi, eax
jae 0x583cd1
mov eax, dword [ebp - 0x1c]
mov dword [esp + 4], eax
mov dword [esp], 0x2c
call sub.api_ms_win_crt_stdio_l1_1_0.dll_fputc
jmp 0x583cd1
test ebx, ebx
jne 0x583d58
mov eax, dword [ebp - 0x1c]
mov dword [esp + 4], eax
mov dword [esp], 0x22
call sub.api_ms_win_crt_stdio_l1_1_0.dll_fputc
mov edx, ebx
mov eax, dword [ebp - 0x1c]
call fcn.005929f7
test ebx, ebx
je 0x583d6e
mov eax, dword [ebp - 0x1c]
call fcn.004b79ea
mov dword [ebp + 8], ebx
mov ecx, dword [ebp - 0x20]
mov edx, str.IPMP_AddToolNotificationListener
jmp 0x5845d1
mov dword [esp], ebx
mov ecx, dword [ebp - 0x20]
mov edx, str.IPMP_RemoveToolNotificationListener
mov eax, dword [ebp - 0x1c]
call fcn.00563a99
mov eax, dword [ebp - 0x20]
lea ecx, [eax + 1]
mov dword [esp], ebx
mov edx, str.eventType
mov eax, dword [ebp - 0x1c]
call fcn.004b777d
test ebx, ebx
jne 0x583dbe
mov eax, dword [ebp - 0x1c]
mov dword [esp + 4], eax
mov dword [esp], 0x22
call sub.api_ms_win_crt_stdio_l1_1_0.dll_fputc
xor esi, esi
movzx eax, byte [edi + 3]
cmp esi, eax
jae 0x583e30
mov eax, dword [edi + esi*4 + 4]
inc esi
mov dword [esp + 8], eax
test ebx, ebx
je 0x583e00
mov dword [esp + 4], str._d
mov eax, dword [ebp - 0x1c]
mov dword [esp], eax
call fcn.005adc24
movzx eax, byte [edi + 3]
cmp esi, eax
jae 0x583dc0
mov eax, dword [ebp - 0x1c]
mov dword [esp + 4], eax
mov dword [esp], 0x20
jmp 0x583e29
mov dword [esp + 4], 0x606462
mov eax, dword [ebp - 0x1c]
mov dword [esp], eax
call fcn.005adc24
movzx eax, byte [edi + 3]
cmp esi, eax
jae 0x583dc0
mov eax, dword [ebp - 0x1c]
mov dword [esp + 4], eax
mov dword [esp], 0x2c
call sub.api_ms_win_crt_stdio_l1_1_0.dll_fputc
jmp 0x583dc0
test ebx, ebx
jne 0x583e47
mov eax, dword [ebp - 0x1c]
mov dword [esp + 4], eax
mov dword [esp], 0x22
call sub.api_ms_win_crt_stdio_l1_1_0.dll_fputc
mov edx, ebx
mov eax, dword [ebp - 0x1c]
call fcn.005929f7
test ebx, ebx
je 0x583e5d
mov eax, dword [ebp - 0x1c]
call fcn.004b79ea
mov dword [ebp + 8], ebx
mov ecx, dword [ebp - 0x20]
mov edx, str.IPMP_RemoveToolNotificationListener
jmp 0x5845d1
mov dword [esp], ebx
mov ecx, dword [ebp - 0x20]
mov edx, str.IPMP_NotifyToolEvent
mov eax, dword [ebp - 0x1c]
call fcn.00563a99
mov eax, dword [ebp - 0x20]
lea esi, [eax + 1]
movzx ecx, word [edi + 4]
mov dword [esp + 4], ebx
mov dword [esp], esi
mov edx, str.OD_ID
mov eax, dword [ebp - 0x1c]
call fcn.004b77dc
movzx ecx, word [edi + 6]
mov dword [esp + 4], ebx
mov dword [esp], esi
mov edx, str.ESD_ID
mov eax, dword [ebp - 0x1c]
call fcn.004b77dc
mov ecx, dword [edi + 0xc]
mov dword [esp + 4], ebx
mov dword [esp], esi
mov edx, str.IPMP_ToolContextID
mov eax, dword [ebp - 0x1c]
call fcn.004b77dc
movzx ecx, byte [edi + 8]
mov dword [esp + 4], ebx
mov dword [esp], esi
mov edx, str.eventType
mov eax, dword [ebp - 0x1c]
call fcn.004b77dc
test ebx, ebx
je 0x583ef1
mov eax, dword [ebp - 0x1c]
call fcn.004b79ea
mov dword [ebp + 8], ebx
mov ecx, dword [ebp - 0x20]
mov edx, str.IPMP_NotifyToolEvent
jmp 0x5845d1
mov dword [esp], ebx
mov ecx, dword [ebp - 0x20]
mov edx, str.IPMP_CanProcess
mov eax, dword [ebp - 0x1c]
call fcn.00563a99
mov ecx, dword [edi + 4]
mov dword [esp + 4], ebx
mov eax, dword [ebp - 0x20]
inc eax
mov dword [esp], eax
mov edx, str.canProcess
mov eax, dword [ebp - 0x1c]
call fcn.004b7fea
test ebx, ebx
je 0x583f3b
mov eax, dword [ebp - 0x1c]
call fcn.004b79ea
mov dword [ebp + 8], ebx
mov ecx, dword [ebp - 0x20]
mov edx, str.IPMP_CanProcess
jmp 0x5845d1
mov dword [esp], ebx
mov ecx, dword [ebp - 0x20]
mov edx, str.ISMACryp_Data
mov eax, dword [ebp - 0x1c]
call fcn.00563a99
mov eax, dword [ebp - 0x20]
lea esi, [eax + 1]
movzx ecx, byte [edi + 3]
mov dword [esp + 4], ebx
mov dword [esp], esi
mov edx, str.crypto_suite
mov eax, dword [ebp - 0x1c]
call fcn.004b77dc
movzx ecx, byte [edi + 4]
mov dword [esp + 4], ebx
mov dword [esp], esi
mov edx, str.IV_length
mov eax, dword [ebp - 0x1c]
call fcn.004b77dc
mov ecx, dword [edi + 8]
mov dword [esp + 4], ebx
mov dword [esp], esi
mov edx, str.selective_encryption
mov eax, dword [ebp - 0x1c]
call fcn.004b7fea
movzx ecx, byte [edi + 0xc]
mov dword [esp + 4], ebx
mov dword [esp], esi
mov edx, str.key_indicator_length
mov eax, dword [ebp - 0x1c]
call fcn.004b77dc
test ebx, ebx
je 0x583fcf
mov eax, dword [ebp - 0x1c]
call fcn.004b79ea
mov dword [ebp + 8], ebx
mov ecx, dword [ebp - 0x20]
mov edx, str.ISMACryp_Data
jmp 0x5845d1
mov dword [esp], ebx
mov ecx, dword [ebp - 0x20]
mov edx, str.IPMP_ToolAPI_Config
mov eax, dword [ebp - 0x1c]
call fcn.00563a99
mov eax, dword [ebp - 0x20]
lea esi, [eax + 1]
mov ecx, dword [edi + 4]
mov dword [esp + 4], ebx
mov dword [esp], esi
mov edx, str.Instantiation_API_ID
mov eax, dword [ebp - 0x1c]
call fcn.004b77dc
mov ecx, dword [edi + 8]
mov dword [esp + 4], ebx
mov dword [esp], esi
mov edx, str.Messaging_API_ID
mov eax, dword [ebp - 0x1c]
call fcn.004b77dc
test ebx, ebx
je 0x584032
mov eax, dword [ebp - 0x1c]
call fcn.004b79ea
mov eax, dword [edi + 0xc]
mov dword [esp + 4], ebx
mov dword [esp], esi
mov ecx, dword [ebp - 0x1c]
mov edx, str.opaqueData
call fcn.00564513
mov dword [ebp + 8], ebx
mov ecx, dword [ebp - 0x20]
mov edx, str.IPMP_ToolAPI_Config
jmp 0x5845d1
mov edx, str.IPMP_VideoWatermarkingInit
cmp al, 2
jne 0x584067
mov edx, str.IPMP_AudioWatermarkingInit
mov dword [esp], ebx
mov ecx, dword [ebp - 0x20]
mov eax, dword [ebp - 0x1c]
call fcn.00563a99
mov eax, dword [ebp - 0x20]
lea esi, [eax + 1]
movzx ecx, byte [edi + 3]
mov dword [esp + 4], ebx
mov dword [esp], esi
mov edx, str.inputFormat
mov eax, dword [ebp - 0x1c]
call fcn.004b77dc
movzx ecx, byte [edi + 4]
mov dword [esp + 4], ebx
mov dword [esp], esi
mov edx, str.requiredOp
mov eax, dword [ebp - 0x1c]
call fcn.004b77dc
cmp byte [edi + 3], 1
jne 0x584143
cmp byte [edi], 2
jne 0x5840fb
movzx ecx, byte [edi + 5]
mov dword [esp + 4], ebx
mov dword [esp], esi
mov edx, str.nChannels
mov eax, dword [ebp - 0x1c]
call fcn.004b77dc
movzx ecx, byte [edi + 6]
mov dword [esp + 4], ebx
mov dword [esp], esi
mov edx, str.bitPerSample
mov eax, dword [ebp - 0x1c]
call fcn.004b77dc
mov ecx, dword [edi + 8]
mov dword [esp + 4], ebx
mov dword [esp], esi
mov edx, 0x606570
jmp 0x58413b
movzx ecx, word [edi + 0xc]
mov dword [esp + 4], ebx
mov dword [esp], esi
mov edx, str.frame_horizontal_size
mov eax, dword [ebp - 0x1c]
call fcn.004b77dc
movzx ecx, word [edi + 0xe]
mov dword [esp + 4], ebx
mov dword [esp], esi
mov edx, str.frame_vertical_size
mov eax, dword [ebp - 0x1c]
call fcn.004b77dc
movzx ecx, byte [edi + 0x10]
mov dword [esp + 4], ebx
mov dword [esp], esi
mov edx, str.chroma_format
mov eax, dword [ebp - 0x1c]
call fcn.004b77dc
mov al, byte [edi + 4]
cmp al, 2
je 0x584158
ja 0x584152
test al, al
jne 0x584178
jmp 0x584158
cmp al, 3
je 0x584178
jmp 0x584190
mov ecx, dword [edi + 0x18]
mov dword [esp + 8], ebx
mov dword [esp + 4], esi
mov eax, dword [edi + 0x14]
mov dword [esp], eax
mov edx, str.wmPayload
mov eax, dword [ebp - 0x1c]
call fcn.00564406
jmp 0x584190
movzx ecx, word [edi + 0x1c]
mov dword [esp + 4], ebx
mov dword [esp], esi
mov edx, str.wmRecipientId
mov eax, dword [ebp - 0x1c]
call fcn.004b77dc
mov ecx, dword [edi + 0x24]
test ecx, ecx
je 0x5841b2
mov dword [esp + 8], ebx
mov dword [esp + 4], esi
mov eax, dword [edi + 0x20]
mov dword [esp], eax
mov edx, str.opaqueData
mov eax, dword [ebp - 0x1c]
call fcn.00564406
test ebx, ebx
je 0x5841be
mov eax, dword [ebp - 0x1c]
call fcn.004b79ea
mov edx, str.IPMP_VideoWatermarkingInit
cmp byte [edi], 2
jne 0x58427b
mov edx, str.IPMP_AudioWatermarkingInit
jmp 0x58427b
mov edx, str.IPMP_SendVideoWatermark
cmp al, 6
jne 0x5841e4
mov edx, str.IPMP_SendAudioWatermark
mov dword [esp], ebx
mov ecx, dword [ebp - 0x20]
mov eax, dword [ebp - 0x1c]
call fcn.00563a99
mov eax, dword [ebp - 0x20]
lea esi, [eax + 1]
movzx ecx, byte [edi + 3]
mov dword [esp + 4], ebx
mov dword [esp], esi
mov edx, str.wmStatus
mov eax, dword [ebp - 0x1c]
call fcn.004b77dc
movzx ecx, byte [edi + 4]
mov dword [esp + 4], ebx
mov dword [esp], esi
mov edx, str.compression_status
mov eax, dword [ebp - 0x1c]
call fcn.004b77dc
test ebx, ebx
je 0x584234
mov eax, dword [ebp - 0x1c]
call fcn.004b79ea
cmp byte [edi + 3], 0
jne 0x584251
mov eax, dword [edi + 8]
mov dword [esp + 4], ebx
mov dword [esp], esi
mov ecx, dword [ebp - 0x1c]
mov edx, 0x6065e6
call fcn.00564513
mov eax, dword [edi + 0xc]
test eax, eax
je 0x58426c
mov dword [esp + 4], ebx
mov dword [esp], esi
mov ecx, dword [ebp - 0x1c]
mov edx, str.opaqueData
call fcn.00564513
mov edx, str.IPMP_SendVideoWatermark
cmp byte [edi], 6
jne 0x58427b
mov edx, str.IPMP_SendAudioWatermark
mov dword [ebp + 8], ebx
mov ecx, dword [ebp - 0x20]
jmp 0x5845d1
mov dword [esp], ebx
mov ecx, dword [ebp - 0x20]
mov edx, str.IPMP_SelectiveDecryptionInit
mov eax, dword [ebp - 0x1c]
call fcn.00563a99
mov eax, dword [ebp - 0x20]
inc eax
mov dword [ebp - 0x24], eax
movzx ecx, byte [edi + 3]
mov dword [esp + 4], ebx
mov dword [esp], eax
mov edx, str.mediaTypeExtension
mov eax, dword [ebp - 0x1c]
call fcn.004b77dc
movzx ecx, byte [edi + 4]
mov dword [esp + 4], ebx
mov eax, dword [ebp - 0x24]
mov dword [esp], eax
mov edx, str.mediaTypeIndication
mov eax, dword [ebp - 0x1c]
call fcn.004b77dc
movzx ecx, byte [edi + 5]
mov dword [esp + 4], ebx
mov eax, dword [ebp - 0x24]
mov dword [esp], eax
mov edx, str.profileLevelIndication
mov eax, dword [ebp - 0x1c]
call fcn.004b77dc
movzx ecx, byte [edi + 6]
mov dword [esp + 4], ebx
mov eax, dword [ebp - 0x24]
mov dword [esp], eax
mov edx, str.compliance
mov eax, dword [ebp - 0x1c]
call fcn.004b77dc
mov ecx, dword [edi + 0x14]
test ecx, ecx
je 0x58432f
mov dword [esp + 8], ebx
mov eax, dword [ebp - 0x24]
mov dword [esp + 4], eax
movzx eax, word [edi + 0x10]
mov dword [esp], eax
mov edx, str.RLE_Data
mov eax, dword [ebp - 0x1c]
call fcn.005642e0
test ebx, ebx
je 0x58433b
mov eax, dword [ebp - 0x1c]
call fcn.004b79ea
mov eax, dword [edi + 8]
test eax, eax
je 0x584486
mov eax, dword [eax + 4]
mov dword [ebp - 0x34], eax
test eax, eax
je 0x584486
mov dword [esp], ebx
mov ecx, dword [ebp - 0x24]
mov edx, str.SelectiveBuffers
mov eax, dword [ebp - 0x1c]
call fcn.005639ef
mov eax, dword [ebp - 0x20]
add eax, 2
mov dword [ebp - 0x30], eax
xor edx, edx
mov dword [ebp - 0x2c], edx
mov eax, dword [edi + 8]
mov edx, dword [ebp - 0x2c]
call fcn.00425c8e
mov esi, eax
mov dword [esp], ebx
mov ecx, dword [ebp - 0x30]
mov edx, str.IPMP_SelectiveBuffer
mov eax, dword [ebp - 0x1c]
call fcn.00563a99
mov eax, dword [ebp - 0x20]
add eax, 3
mov dword [ebp - 0x28], eax
lea ecx, [esi + 3]
mov dword [esp + 4], ebx
mov dword [esp], eax
mov edx, str.cipher_Id
mov eax, dword [ebp - 0x1c]
call fcn.004b78c1
movzx ecx, byte [esi + 0x13]
mov dword [esp + 4], ebx
mov eax, dword [ebp - 0x28]
mov dword [esp], eax
mov edx, str.syncBoundary
mov eax, dword [ebp - 0x1c]
call fcn.004b77dc
cmp dword [esi + 0x1c], 0
jne 0x584427
movzx ecx, byte [esi + 0x14]
mov dword [esp + 4], ebx
mov eax, dword [ebp - 0x28]
mov dword [esp], eax
mov edx, 0x605a77
mov eax, dword [ebp - 0x1c]
call fcn.004b77dc
movzx ecx, word [esi + 0x16]
mov dword [esp + 4], ebx
mov eax, dword [ebp - 0x28]
mov dword [esp], eax
mov edx, str.blockSize
mov eax, dword [ebp - 0x1c]
call fcn.004b77dc
movzx ecx, word [esi + 0x18]
mov dword [esp + 4], ebx
mov eax, dword [ebp - 0x28]
mov dword [esp], eax
mov edx, str.keySize
mov eax, dword [ebp - 0x1c]
call fcn.004b77dc
test ebx, ebx
je 0x584433
mov eax, dword [ebp - 0x1c]
call fcn.004b79ea
mov eax, dword [esi + 0x1c]
test eax, eax
je 0x584451
mov dword [esp + 4], ebx
mov esi, dword [ebp - 0x28]
mov dword [esp], esi
mov ecx, dword [ebp - 0x1c]
mov edx, str.StreamCipher
call fcn.00564513
mov dword [esp], ebx
mov ecx, dword [ebp - 0x30]
mov edx, str.IPMP_SelectiveBuffer
mov eax, dword [ebp - 0x1c]
call fcn.00563af2
inc dword [ebp - 0x2c]
mov esi, dword [ebp - 0x34]
cmp dword [ebp - 0x2c], esi
jne 0x584375
mov dword [esp], ebx
mov ecx, dword [ebp - 0x24]
mov edx, str.SelectiveBuffers
mov eax, dword [ebp - 0x1c]
call fcn.00563a3e
mov eax, dword [edi + 0xc]
test eax, eax
je 0x5845c6
mov eax, dword [eax + 4]
mov dword [ebp - 0x34], eax
cmp dword [edi + 0x14], 0
jne 0x5845c6
test eax, eax
je 0x5845c6
mov dword [esp], ebx
mov ecx, dword [ebp - 0x24]
mov edx, str.SelectiveFields
mov eax, dword [ebp - 0x1c]
call fcn.005639ef
mov eax, dword [ebp - 0x20]
add eax, 2
mov dword [ebp - 0x30], eax
xor eax, eax
mov dword [ebp - 0x2c], eax
mov eax, dword [edi + 0xc]
mov edx, dword [ebp - 0x2c]
call fcn.00425c8e
mov esi, eax
mov dword [esp], ebx
mov ecx, dword [ebp - 0x30]
mov edx, str.IPMP_SelectiveField
mov eax, dword [ebp - 0x1c]
call fcn.00563a99
mov eax, dword [ebp - 0x20]
add eax, 3
mov dword [ebp - 0x28], eax
movzx ecx, byte [esi + 3]
mov dword [esp + 4], ebx
mov dword [esp], eax
mov edx, str.field_Id
mov eax, dword [ebp - 0x1c]
call fcn.004b77dc
movzx ecx, byte [esi + 4]
mov dword [esp + 4], ebx
mov eax, dword [ebp - 0x28]
mov dword [esp], eax
mov edx, str.field_Scope
mov eax, dword [ebp - 0x1c]
call fcn.004b77dc
movzx ecx, byte [esi + 5]
mov dword [esp + 4], ebx
mov eax, dword [ebp - 0x28]
mov dword [esp], eax
mov edx, 0x6066f2
mov eax, dword [ebp - 0x1c]
call fcn.004b77dc
mov ecx, dword [esi + 8]
test ecx, ecx
je 0x584567
mov dword [esp + 8], ebx
mov eax, dword [ebp - 0x28]
mov dword [esp + 4], eax
movzx eax, word [esi + 6]
mov dword [esp], eax
mov edx, str.mappingTable
mov eax, dword [ebp - 0x1c]
call fcn.005642e0
test ebx, ebx
je 0x584573
mov eax, dword [ebp - 0x1c]
call fcn.004b79ea
mov eax, dword [esi + 0xc]
test eax, eax
je 0x584591
mov dword [esp + 4], ebx
mov esi, dword [ebp - 0x28]
mov dword [esp], esi
mov ecx, dword [ebp - 0x1c]
mov edx, str.shuffleSpecificInfo
call fcn.00564513
mov dword [esp], ebx
mov ecx, dword [ebp - 0x30]
mov edx, str.IPMP_SelectiveField
mov eax, dword [ebp - 0x1c]
call fcn.00563af2
inc dword [ebp - 0x2c]
mov esi, dword [ebp - 0x34]
cmp dword [ebp - 0x2c], esi
jb 0x5844ca
mov dword [esp], ebx
mov ecx, dword [ebp - 0x24]
mov edx, str.SelectiveFields
mov eax, dword [ebp - 0x1c]
call fcn.00563a3e
mov dword [ebp + 8], ebx
mov ecx, dword [ebp - 0x20]
mov edx, str.IPMP_SelectiveDecryptionInit
mov eax, dword [ebp - 0x1c]
add esp, 0x4c
pop ebx
pop esi
pop edi
pop ebp
jmp fcn.00563af2
add esp, 0x4c
pop ebx
pop esi
pop edi
pop ebp
ret