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

Disassembly:
mov eax, 0x5c
call fcn.10228380
mov eax, dword [0x1033b254]
xor eax, esp
mov dword [esp + 0x58], eax
push ebx
push ebp
push esi
mov esi, dword [esp + 0x6c]
xor ebx, ebx
push edi
mov edi, dword [esp + 0x74]
xor ebp, ebp
push esi
mov dword [esp + 0x2c], 0
call fcn.100a0c90
push esi
mov dword [esp + 0x1c], eax
call fcn.1009da70
mov esi, dword [edi + 4]
add esp, 8
mov dword [esp + 0x1c], eax
cmp dword [esi + 0x10], ebx
jne 0x100a1700
call sym.libcrypto_3.dll_ERR_new
push str.ossl_cms_RecipientInfo_pwri_crypt
push 0x146
push str.cryptocmscms_pwri.c
call sym.libcrypto_3.dll_ERR_set_debug
push ebp
push 0xb2
jmp 0x100a1b7d
mov edi, dword [esi + 8]
test edi, edi
je 0x100a1b5d
push dword [edi]
call sym.libcrypto_3.dll_OBJ_obj2nid
add esp, 4
cmp eax, 0x37d
jne 0x100a1b5d
push dword [edi + 4]
call sym.libcrypto_3.dll_X509_ALGOR_it
push eax
call sym.libcrypto_3.dll_ASN1_TYPE_unpack_sequence
add esp, 8
mov dword [esp + 0x2c], eax
test eax, eax
jne 0x100a175e
call sym.libcrypto_3.dll_ERR_new
push str.ossl_cms_RecipientInfo_pwri_crypt
push 0x154
push str.cryptocmscms_pwri.c
call sym.libcrypto_3.dll_ERR_set_debug
push 0
push 0xb0
jmp 0x100a1b7d
push 0
push dword [eax]
lea eax, [esp + 0x3c]
push 0x32
push eax
call sym.libcrypto_3.dll_OBJ_obj2txt
mov edi, dword [esp + 0x24]
push edi
call fcn.100a0c80
add esp, 0x14
push eax
lea eax, [esp + 0x38]
push eax
push edi
call fcn.100a0c70
add esp, 4
push eax
call sym.libcrypto_3.dll_EVP_CIPHER_fetch
add esp, 0xc
mov dword [esp + 0x24], eax
test eax, eax
jne 0x100a17c0
call sym.libcrypto_3.dll_ERR_new
push str.ossl_cms_RecipientInfo_pwri_crypt
push 0x15d
push str.cryptocmscms_pwri.c
call sym.libcrypto_3.dll_ERR_set_debug
push 0
push 0x94
jmp 0x100a1b05
call sym.libcrypto_3.dll_EVP_CIPHER_CTX_new
mov ebx, eax
test ebx, ebx
jne 0x100a17f0
call sym.libcrypto_3.dll_ERR_new
push str.ossl_cms_RecipientInfo_pwri_crypt
push 0x163
push str.cryptocmscms_pwri.c
call sym.libcrypto_3.dll_ERR_set_debug
push 0
push 0x80006
jmp 0x100a1b05
mov edi, dword [esp + 0x78]
push edi
push 0
push 0
push 0
push dword [esp + 0x34]
push ebx
call sym.libcrypto_3.dll_EVP_CipherInit_ex
add esp, 0x18
test eax, eax
je 0x100a1b0f
push 0
push ebx
call sym.libcrypto_3.dll_EVP_CIPHER_CTX_set_padding
mov eax, dword [esp + 0x34]
push dword [eax + 4]
push ebx
call sym.libcrypto_3.dll_EVP_CIPHER_asn1_to_param
add esp, 0x10
test eax, eax
jg 0x100a184e
call sym.libcrypto_3.dll_ERR_new
push str.ossl_cms_RecipientInfo_pwri_crypt
push 0x16b
push str.cryptocmscms_pwri.c
call sym.libcrypto_3.dll_ERR_set_debug
push 0
push 0x66
jmp 0x100a1b05
mov eax, dword [esi + 4]
push edi
push ebx
push dword [eax + 4]
push dword [esi + 0x14]
push dword [esi + 0x10]
push dword [eax]
call sym.libcrypto_3.dll_EVP_PBE_CipherInit
add esp, 0x18
test eax, eax
jns 0x100a187e
call sym.libcrypto_3.dll_ERR_new
push str.ossl_cms_RecipientInfo_pwri_crypt
push 0x176
jmp 0x100a17da
test edi, edi
je 0x100a1934
mov edi, dword [esp + 0x1c]
push ebx
mov eax, dword [edi + 0x14]
mov dword [esp + 0x14], eax
call sym.libcrypto_3.dll_EVP_CIPHER_CTX_get_block_size
mov ecx, eax
add esp, 4
mov dword [esp + 0x1c], ecx
test ecx, ecx
je 0x100a1b0f
mov eax, dword [esp + 0x10]
xor edx, edx
add eax, 3
add eax, ecx
div ecx
mov ecx, eax
mov eax, dword [esp + 0x1c]
imul ecx, eax
add eax, eax
cmp ecx, eax
jb 0x100a1b0f
cmp dword [esp + 0x10], 0xff
ja 0x100a1b0f
push 0x181
push str.cryptocmscms_pwri.c
push ecx
mov dword [esp + 0x1c], ecx
call sym.libcrypto_3.dll_CRYPTO_malloc
mov ebp, eax
add esp, 0xc
test ebp, ebp
je 0x100a1b0f
push dword [esp + 0x14]
lea eax, [esp + 0x14]
push ebx
push dword [edi + 0x14]
push dword [edi + 0x10]
push eax
push ebp
call fcn.100a1570
add esp, 0x18
test eax, eax
je 0x100a1b0f
mov eax, dword [esi + 0xc]
mov dword [esp + 0x28], 1
mov dword [eax + 8], ebp
mov ecx, dword [esi + 0xc]
mov eax, dword [esp + 0x10]
mov dword [ecx], eax
jmp 0x100a1b0f
mov eax, dword [esi + 0xc]
push 0x18b
push str.cryptocmscms_pwri.c
push dword [eax]
call sym.libcrypto_3.dll_CRYPTO_malloc
mov ebp, eax
add esp, 0xc
test ebp, ebp
je 0x100a1b0f
mov eax, dword [esi + 0xc]
push ebx
mov edi, dword [eax]
mov eax, dword [eax + 8]
mov dword [esp + 0x1c], eax
call sym.libcrypto_3.dll_EVP_CIPHER_CTX_get_block_size
mov ecx, eax
mov dword [esp + 0x24], 0
add esp, 4
mov dword [esp + 0x14], ecx
test ecx, ecx
je 0x100a1ae5
lea eax, [ecx + ecx]
mov dword [esp + 0x30], eax
cmp edi, eax
jb 0x100a1ae5
xor edx, edx
mov eax, edi
div ecx
test edx, edx
jne 0x100a1ae5
push 0xdb
push str.cryptocmscms_pwri.c
push edi
call sym.libcrypto_3.dll_CRYPTO_malloc
mov esi, eax
add esp, 0xc
test esi, esi
je 0x100a1ae5
mov ecx, dword [esp + 0x30]
mov eax, dword [esp + 0x18]
sub eax, ecx
add eax, edi
push ecx
push eax
lea eax, [esp + 0x18]
push eax
mov eax, esi
sub eax, ecx
add eax, edi
push eax
push ebx
call sym.libcrypto_3.dll_EVP_DecryptUpdate
add esp, 0x14
test eax, eax
je 0x100a1a92
mov ecx, dword [esp + 0x14]
mov eax, esi
push ecx
sub eax, ecx
add eax, edi
push eax
lea eax, [esp + 0x18]
push eax
push esi
push ebx
call sym.libcrypto_3.dll_EVP_DecryptUpdate
add esp, 0x14
test eax, eax
je 0x100a1a92
mov eax, edi
sub eax, dword [esp + 0x14]
push eax
push dword [esp + 0x1c]
lea eax, [esp + 0x18]
push eax
push esi
push ebx
call sym.libcrypto_3.dll_EVP_DecryptUpdate
add esp, 0x14
test eax, eax
je 0x100a1a92
push 0
push 0
push 0
push 0
push ebx
call sym.libcrypto_3.dll_EVP_DecryptInit_ex
add esp, 0x14
test eax, eax
je 0x100a1a92
push edi
push esi
lea eax, [esp + 0x18]
push eax
push esi
push ebx
call sym.libcrypto_3.dll_EVP_DecryptUpdate
add esp, 0x14
test eax, eax
je 0x100a1a92
movzx eax, byte [esi + 5]
lea edx, [esi + 4]
xor al, byte [esi + 2]
mov cl, byte [esi + 6]
xor cl, byte [esi + 3]
and cl, al
movzx eax, byte [esi + 1]
xor al, byte [edx]
and cl, al
cmp cl, 0xff
jne 0x100a1a92
movzx ecx, byte [esi]
mov dword [esp + 0x18], ecx
lea eax, [ecx - 4]
cmp edi, eax
jb 0x100a1a92
push ecx
push edx
push ebp
call fcn.10229b60
add esp, 0xc
mov dword [esp + 0x20], 1
jmp 0x100a1a9a
mov eax, dword [esp + 0x10]
mov dword [esp + 0x18], eax
push 0xfc
push str.cryptocmscms_pwri.c
push edi
push esi
call sym.libcrypto_3.dll_CRYPTO_clear_free
add esp, 0x10
cmp dword [esp + 0x20], 0
je 0x100a1ae5
mov esi, dword [esp + 0x1c]
push 0x195
push str.cryptocmscms_pwri.c
push dword [esi + 0x14]
push dword [esi + 0x10]
call sym.libcrypto_3.dll_CRYPTO_clear_free
mov eax, dword [esp + 0x28]
add esp, 0x10
mov dword [esi + 0x10], ebp
mov dword [esi + 0x14], eax
mov dword [esp + 0x28], 1
jmp 0x100a1b0f
call sym.libcrypto_3.dll_ERR_new
push str.ossl_cms_RecipientInfo_pwri_crypt
push 0x191
push str.cryptocmscms_pwri.c
call sym.libcrypto_3.dll_ERR_set_debug
push 0
push 0xb4
push 0x2e
call sym.libcrypto_3.dll_ERR_set_error
add esp, 0x18
push dword [esp + 0x24]
call sym.libcrypto_3.dll_EVP_CIPHER_free
push ebx
call sym.libcrypto_3.dll_EVP_CIPHER_CTX_free
mov esi, dword [esp + 0x30]
add esp, 8
test esi, esi
jne 0x100a1b3c
push 0x1a2
push str.cryptocmscms_pwri.c
push ebp
call sym.libcrypto_3.dll_CRYPTO_free
add esp, 0xc
push dword [esp + 0x2c]
call sym.libcrypto_3.dll_X509_ALGOR_free
add esp, 4
mov eax, esi
pop edi
pop esi
pop ebp
pop ebx
mov ecx, dword [esp + 0x58]
xor ecx, esp
call fcn.1022836f
add esp, 0x5c
ret
call sym.libcrypto_3.dll_ERR_new
push str.ossl_cms_RecipientInfo_pwri_crypt
push 0x14c
push str.cryptocmscms_pwri.c
call sym.libcrypto_3.dll_ERR_set_debug
push 0
push 0xb3
push 0x2e
call sym.libcrypto_3.dll_ERR_set_error
mov ecx, dword [esp + 0x80]
add esp, 0x18
xor eax, eax
pop edi
pop esi
pop ebp
pop ebx
xor ecx, esp
call fcn.1022836f
add esp, 0x5c
ret