Function at 0x44ad80
Capabilities:
Encrypt data using des via winapi
Encrypt or decrypt via wincrypt
Hash data via wincrypt
Hash data with md5
Initialize hashing via wincrypt

Disassembly:
push ebp
mov ebp, esp
sub esp, 0x4f4
mov eax, dword [0x595c60]
xor eax, ebp
mov dword [ebp - 4], eax
mov eax, dword [ebp + 0x18]
mov ecx, dword [ebp + 8]
mov dword [ebp - 0x49c], eax
mov eax, dword [ebp + 0xc]
push ebx
cdq
push esi
push edi
mov edi, dword [ebp + 0x10]
mov esi, eax
xor eax, eax
cmp edi, eax
mov dword [ebp - 0x48c], edi
mov ebx, edx
mov dword [ebp - 0x4e8], eax
mov dword [ebp - 0x4b8], eax
mov dword [ebp - 0x4d8], eax
mov dword [ebp - 0x4c8], eax
je 0x44c4a5
test ecx, ecx
je 0x44c4a5
cmp dword [ebp + 0x14], 0xc
jb 0x44c4a5
lea edx, [ebp - 0x488]
push edx
mov dword [ebp - 0x488], eax
lea eax, [ebp - 0x47c]
push eax
push ebx
push esi
push ecx
call fcn.004730d0
add esp, 0x14
test edx, edx
jg 0x44ae44
jl 0x44ae11
cmp eax, 1
jae 0x44ae44
mov ecx, dword [ebp - 0x488]
push ecx
call fcn.00470f20
push eax
push str.Error_getting_ASN.1_element:__s_n
push 1
call fcn.004774c0
mov eax, dword [ebp - 0x4d8]
add esp, 0x10
pop edi
pop esi
pop ebx
mov ecx, dword [ebp - 4]
xor ecx, ebp
call fcn.00506c7d
mov esp, ebp
pop ebp
ret
mov ecx, dword [ebp - 0x47c]
cmp ecx, 0x10
jne 0x44ae58
cmp dword [ebp - 0x478], 0
je 0x44ae7f
push ecx
push str.Expecting_sequence_to_start_key__got__d_n
push 1
call fcn.004774c0
mov eax, dword [ebp - 0x4d8]
add esp, 0xc
pop edi
pop esi
pop ebx
mov ecx, dword [ebp - 4]
xor ecx, ebp
call fcn.00506c7d
mov esp, ebp
pop ebp
ret
sub esi, eax
sbb ebx, edx
test esi, esi
jne 0x44ae8b
test ebx, ebx
je 0x44aeb1
push str.Garbage_after_key_n
push 1
call fcn.004774c0
mov eax, dword [ebp - 0x4d8]
add esp, 8
pop edi
pop esi
pop ebx
mov ecx, dword [ebp - 4]
xor ecx, ebp
call fcn.00506c7d
mov esp, ebp
pop ebp
ret
mov ebx, dword [ebp - 0x470]
mov esi, dword [ebp - 0x474]
mov edi, dword [ebp - 0x46c]
lea edx, [ebp - 0x4ec]
push edx
lea eax, [ebp - 0x47c]
push eax
push ebx
push esi
push edi
mov dword [ebp - 0x4ec], 0
call fcn.004730d0
add esp, 0x14
test edx, edx
jg 0x44aefc
jl 0x44aef1
cmp eax, 1
jae 0x44aefc
mov ecx, dword [ebp - 0x4ec]
jmp 0x44ae17
add edi, eax
sub esi, eax
sbb ebx, edx
mov edx, dword [ebp - 0x47c]
cmp edx, 0x10
mov dword [ebp - 0x488], edi
mov dword [ebp - 0x484], esi
mov dword [ebp - 0x480], ebx
jne 0x44b726
cmp dword [ebp - 0x478], 0
jne 0x44b726
mov ecx, dword [ebp - 0x470]
mov ebx, dword [ebp - 0x474]
mov eax, dword [ebp - 0x46c]
lea edx, [ebp - 0x490]
push edx
lea edx, [ebp - 0x47c]
push edx
push ecx
push ebx
push eax
mov dword [ebp - 0x4bc], eax
mov esi, ecx
mov dword [ebp - 0x490], 0
call fcn.004730d0
add esp, 0x14
test edx, edx
jg 0x44af84
jl 0x44af78
cmp eax, 1
jae 0x44af84
mov eax, dword [ebp - 0x490]
push eax
jmp 0x44ae18
mov ecx, dword [ebp - 0x47c]
sub ebx, eax
sbb esi, edx
cmp ecx, 6
mov dword [ebp - 0x4a0], esi
jne 0x44afa2
cmp dword [ebp - 0x478], 0
je 0x44afc9
push ecx
push str.Expecting_OID_for_encryption_alg__but_got__d_n
push 1
call fcn.004774c0
mov eax, dword [ebp - 0x4d8]
add esp, 0xc
pop edi
pop esi
pop ebx
mov ecx, dword [ebp - 4]
xor ecx, ebp
call fcn.00506c7d
mov esp, ebp
pop ebp
ret
lea edi, [ebp - 0x464]
mov esi, str.1.2.840.113549.1.5.3
mov ecx, 0x15
xor edx, edx
repe cmpsb byte [esi], byte es:[edi]
je 0x44afe4
sbb edx, edx
sbb edx, 0xffffffff
test edx, edx
je 0x44b000
mov ecx, dword [ebp - 0x424]
push ecx
lea edx, [ebp - 0x464]
push edx
push str.Unsupported_key_encryption_algorithm:__s___s__n
jmp 0x44ae23
mov esi, dword [ebp - 0x4a0]
lea ecx, [ebp - 0x498]
push ecx
mov ecx, dword [ebp - 0x4bc]
lea edx, [ebp - 0x47c]
push edx
push esi
add eax, ecx
push ebx
push eax
mov dword [ebp - 0x498], 0
call fcn.004730d0
add esp, 0x14
test edx, edx
jg 0x44b048
jl 0x44b03c
cmp eax, 1
jae 0x44b048
mov edx, dword [ebp - 0x498]
push edx
jmp 0x44ae18
mov ecx, dword [ebp - 0x47c]
cmp ecx, 0x10
jne 0x44b05c
cmp dword [ebp - 0x478], 0
je 0x44b083
push ecx
push str.Expecting_sequence_encryption_params__but_got__d_n
push 1
call fcn.004774c0
mov eax, dword [ebp - 0x4d8]
add esp, 0xc
pop edi
pop esi
pop ebx
mov ecx, dword [ebp - 4]
xor ecx, ebp
call fcn.00506c7d
mov esp, ebp
pop ebp
ret
sub ebx, eax
sbb esi, edx
test ebx, ebx
jne 0x44b08f
test esi, esi
je 0x44b0b5
push str.Garbage_after_key_sequence_n
push 1
call fcn.004774c0
mov eax, dword [ebp - 0x4d8]
add esp, 8
pop edi
pop esi
pop ebx
mov ecx, dword [ebp - 4]
xor ecx, ebp
call fcn.00506c7d
mov esp, ebp
pop ebp
ret
mov edi, dword [ebp - 0x470]
mov esi, dword [ebp - 0x474]
mov eax, dword [ebp - 0x46c]
lea ecx, [ebp - 0x498]
push ecx
lea edx, [ebp - 0x47c]
push edx
push edi
push esi
push eax
mov ebx, eax
mov dword [ebp - 0x498], 0
call fcn.004730d0
add esp, 0x14
test edx, edx
jg 0x44b103
jl 0x44b0f7
cmp eax, 1
jae 0x44b103
mov eax, dword [ebp - 0x498]
push eax
jmp 0x44ae18
mov ecx, dword [ebp - 0x47c]
sub esi, eax
sbb edi, edx
cmp ecx, 4
jne 0x44b11b
cmp dword [ebp - 0x478], 0
je 0x44b142
push ecx
push str.Expecting_octet_str_for_salt__got__d_n
push 1
call fcn.004774c0
mov eax, dword [ebp - 0x4d8]
add esp, 0xc
pop edi
pop esi
pop ebx
mov ecx, dword [ebp - 4]
xor ecx, ebp
call fcn.00506c7d
mov esp, ebp
pop ebp
ret
mov ecx, dword [ebp - 0x474]
cmp ecx, 8
jne 0x44b156
cmp dword [ebp - 0x470], 0
je 0x44b17d
push ecx
push str.Salt_must_be_8_bytes__got__d_n
push 1
call fcn.004774c0
mov eax, dword [ebp - 0x4d8]
add esp, 0xc
pop edi
pop esi
pop ebx
mov ecx, dword [ebp - 4]
xor ecx, ebp
call fcn.00506c7d
mov esp, ebp
pop ebp
ret
mov ecx, dword [ebp - 0x46c]
mov edx, dword [ecx]
mov dword [ebp - 0xc], edx
mov ecx, dword [ecx + 4]
lea edx, [ebp - 0x490]
push edx
mov dword [ebp - 8], ecx
lea ecx, [ebp - 0x47c]
push ecx
push edi
add eax, ebx
push esi
push eax
mov dword [ebp - 0x490], 0
call fcn.004730d0
add esp, 0x14
test edx, edx
jg 0x44b1ca
jl 0x44b1be
cmp eax, 1
jae 0x44b1ca
mov edx, dword [ebp - 0x490]
push edx
jmp 0x44ae18
sub esi, eax
sbb edi, edx
xor ebx, ebx
cmp esi, ebx
jne 0x44b1d8
cmp edi, ebx
je 0x44b1fe
push str.Garbage_after_key_alg_sequence_n
push 1
call fcn.004774c0
mov eax, dword [ebp - 0x4d8]
add esp, 8
pop edi
pop esi
pop ebx
mov ecx, dword [ebp - 4]
xor ecx, ebp
call fcn.00506c7d
mov esp, ebp
pop ebp
ret
mov eax, dword [ebp - 0x47c]
cmp eax, 2
jne 0x44b211
cmp dword [ebp - 0x478], ebx
je 0x44b238
push eax
push str.Expecting_integer_for_iteration_count__got__d_n
push 1
call fcn.004774c0
mov eax, dword [ebp - 0x4d8]
add esp, 0xc
pop edi
pop esi
pop ebx
mov ecx, dword [ebp - 4]
xor ecx, ebp
call fcn.00506c7d
mov esp, ebp
pop ebp
ret
mov eax, dword [ebp - 0x474]
cmp eax, 2
jne 0x44b24b
cmp dword [ebp - 0x470], ebx
je 0x44b272
push eax
push str.Iteration_cound_must_be_2_bytes__got__d_n
push 1
call fcn.004774c0
mov eax, dword [ebp - 0x4d8]
add esp, 0xc
pop edi
pop esi
pop ebx
mov ecx, dword [ebp - 4]
xor ecx, ebp
call fcn.00506c7d
mov esp, ebp
pop ebp
ret
mov eax, dword [ebp - 0x464]
push eax
push str.Got_iteration_count_of__d_n
push 2
mov dword [ebp - 0x490], eax
call fcn.004774c0
mov edi, dword [ebp - 0x480]
mov esi, dword [ebp - 0x484]
mov edx, dword [ebp - 0x488]
lea eax, [ebp - 0x498]
push eax
lea ecx, [ebp - 0x47c]
push ecx
push edi
push esi
push edx
mov dword [ebp - 0x498], ebx
call fcn.004730d0
add esp, 0x20
cmp edx, ebx
jg 0x44b2cf
jl 0x44b0f7
cmp eax, 1
jb 0x44b0f7
mov ecx, dword [ebp - 0x47c]
cmp ecx, 4
jne 0x44b2e2
cmp dword [ebp - 0x478], ebx
je 0x44b309
push ecx
push str.Expecting_octet_str_for_key_data__got__d_n
push 1
call fcn.004774c0
mov eax, dword [ebp - 0x4d8]
add esp, 0xc
pop edi
pop esi
pop ebx
mov ecx, dword [ebp - 4]
xor ecx, ebp
call fcn.00506c7d
mov esp, ebp
pop ebp
ret
sub esi, eax
sbb edi, edx
cmp esi, ebx
jne 0x44b315
cmp edi, ebx
je 0x44b33b
push str.Garbage_after_encrypted_key_data_n
push 1
call fcn.004774c0
mov eax, dword [ebp - 0x4d8]
add esp, 8
pop edi
pop esi
pop ebx
mov ecx, dword [ebp - 4]
xor ecx, ebp
call fcn.00506c7d
mov esp, ebp
pop ebp
ret
mov eax, dword [ebp - 0x49c]
cmp eax, ebx
mov dword [ebp - 0x498], 0x10
mov dword [ebp - 0x4d0], ebx
jne 0x44b363
mov dword [ebp - 0x49c], 0x56a375
xor ebx, ebx
jmp 0x44b373
lea edx, [eax + 1]
mov cl, byte [eax]
add eax, 1
test cl, cl
jne 0x44b366
sub eax, edx
mov ebx, eax
xor edi, edi
cmp dword [ebp - 0x490], edi
jle 0x44b464
mov esi, dword [sym.imp.ADVAPI32.dll_CryptHashData]
test edi, edi
jle 0x44b3a2
mov ecx, dword [ebp - 0x4b4]
push ecx
call dword [sym.imp.ADVAPI32.dll_CryptDestroyHash]
mov dword [ebp - 0x4c8], 0
mov eax, dword [ebp + 0x1c]
lea edx, [ebp - 0x4b4]
push edx
push 0
push 0
push 0x8003
push eax
call dword [sym.imp.ADVAPI32.dll_CryptCreateHash]
cmp eax, 1
jne 0x44b49c
test edi, edi
mov dword [ebp - 0x4c8], eax
push 0
jne 0x44b414
mov ecx, dword [ebp - 0x49c]
mov edx, dword [ebp - 0x4b4]
push ebx
push ecx
push edx
call esi
cmp eax, 1
jne 0x44b4b0
mov ecx, dword [ebp - 0x4b4]
push edi
push 8
lea eax, [ebp - 0xc]
push eax
push ecx
call esi
cmp eax, 1
je 0x44b431
push str.Could_not_hash_salt_n
push 1
call fcn.004774c0
add esp, 8
jmp 0x44c485
mov edx, dword [ebp - 0x498]
mov ecx, dword [ebp - 0x4b4]
push edx
lea eax, [ebp - 0x1c]
push eax
push ecx
call esi
cmp eax, 1
jne 0x44b4c4
mov ecx, dword [ebp - 0x4b4]
push 0
lea edx, [ebp - 0x498]
push edx
lea eax, [ebp - 0x1c]
push eax
push 2
push ecx
call dword [sym.imp.ADVAPI32.dll_CryptGetHashParam]
cmp eax, 1
jne 0x44b4d8
add edi, eax
cmp edi, dword [ebp - 0x490]
jl 0x44b387
mov eax, dword [ebp - 0x4b4]
mov ecx, dword [ebp + 0x1c]
lea edx, [ebp - 0x4c4]
push edx
push 0
push eax
push 0x6601
push ecx
call dword [sym.imp.ADVAPI32.dll_CryptDeriveKey]
cmp eax, 1
je 0x44b4ec
push str.Could_not_derive_PBE_key_n
push 1
call fcn.004774c0
add esp, 8
jmp 0x44c47c
push str.Could_not_create_hash_n
push 1
call fcn.004774c0
add esp, 8
jmp 0x44c47c
push str.Could_not_hash_password_n
push 1
call fcn.004774c0
add esp, 8
jmp 0x44c485
push str.Could_not_hash_previous_hash_n
push 1
call fcn.004774c0
add esp, 8
jmp 0x44c485
push str.Could_not_get_hash_data_n
push 1
call fcn.004774c0
add esp, 8
jmp 0x44c485
mov eax, dword [ebp - 0x4c4]
mov esi, dword [sym.imp.ADVAPI32.dll_CryptSetKeyParam]
push 0
lea edx, [ebp - 0x4d0]
push edx
push 3
push eax
mov dword [ebp - 0x4d0], 1
call esi
cmp eax, 1
je 0x44b529
push str.Could_not_set_PKCS5_padding_key_parameter_n
push 1
call fcn.004774c0
add esp, 8
jmp 0x44c47c
mov edx, dword [ebp - 0x4c4]
push 0
lea ecx, [ebp - 0x14]
push ecx
push 1
push edx
call esi
cmp eax, 1
je 0x44b553
push str.Could_not_set_initial_vector_key_parameter_n
push 1
call fcn.004774c0
add esp, 8
jmp 0x44c47c
mov eax, dword [ebp - 0x474]
push eax
mov dword [ebp - 0x4b8], eax
call fcn.00507c0d
mov ebx, eax
add esp, 4
test ebx, ebx
mov dword [ebp - 0x4e8], ebx
jne 0x44b588
push str.Out_of_memory_allocating_cleartext_key_n
push 1
call fcn.004774c0
add esp, 8
jmp 0x44c47c
mov eax, dword [ebp - 0x4b8]
mov ecx, dword [ebp - 0x46c]
push eax
push ecx
push ebx
call fcn.0050b730
mov edx, dword [ebp - 0x4b8]
push edx
push str.Attempting_to_decrypt__d_bytes_n
push 1
call fcn.004774c0
mov ecx, dword [ebp - 0x4c4]
add esp, 0x18
lea eax, [ebp - 0x4b8]
push eax
push ebx
push 0
push 1
push 0
push ecx
call dword [sym.imp.ADVAPI32.dll_CryptDecrypt]
cmp eax, 1
je 0x44b60c
push 0x3ff
lea edx, [ebp - 0x41b]
push 0
push edx
mov byte [ebp - 0x41c], 0
call fcn.0050be90
add esp, 0xc
push 0x400
lea eax, [ebp - 0x41c]
push eax
call dword [sym.imp.KERNEL32.dll_GetLastError]
push eax
call fcn.00470ef0
jmp 0x44c479
mov ecx, dword [ebp - 0x4b8]
push ecx
push str.Decrypted__d_bytes_n
push 1
call fcn.004774c0
mov eax, dword [ebp - 0x4b8]
cdq
mov edi, edx
mov esi, eax
lea edx, [ebp - 0x490]
push edx
lea eax, [ebp - 0x47c]
push eax
push edi
push esi
push ebx
mov dword [ebp - 0x490], 0
call fcn.004730d0
add esp, 0x20
test edx, edx
jg 0x44b679
jl 0x44b658
cmp eax, 1
jae 0x44b679
mov ecx, dword [ebp - 0x490]
push ecx
call fcn.00470f20
push eax
push str.Error_getting_ASN.1_element:__s_n
push 1
call fcn.004774c0
add esp, 0x10
jmp 0x44c47c
mov ecx, dword [ebp - 0x47c]
cmp ecx, 0x10
jne 0x44b68d
cmp dword [ebp - 0x478], 0
je 0x44b698
push ecx
push str.Expecting_sequence_for_key__got__d_n
jmp 0x44c472
sub esi, eax
sbb edi, edx
test esi, esi
jne 0x44b6a4
test edi, edi
je 0x44b6b8
push str.Garbage_after_decrypted_key_sequence_n
push 1
call fcn.004774c0
add esp, 8
jmp 0x44c47c
mov ebx, dword [ebp - 0x470]
mov edi, dword [ebp - 0x474]
mov esi, dword [ebp - 0x46c]
lea edx, [ebp - 0x490]
push edx
lea eax, [ebp - 0x47c]
push eax
push ebx
push edi
push esi
mov dword [ebp - 0x490], 0
call fcn.004730d0
add esp, 0x14
test edx, edx
jg 0x44b700
jl 0x44b658
cmp eax, 1
jb 0x44b658
add esi, eax
sub edi, eax
mov dword [ebp - 0x484], edi
sbb ebx, edx
mov edx, dword [ebp - 0x47c]
mov dword [ebp - 0x488], esi
mov edi, esi
mov esi, dword [ebp - 0x484]
mov dword [ebp - 0x480], ebx
cmp edx, 2
jne 0x44c46c
cmp dword [ebp - 0x478], 0
jne 0x44c46c
mov edx, dword [ebp - 0x48c]
mov eax, dword [ebp - 0x464]
push 0
lea ecx, [ebp - 0x47c]
push ecx
push ebx
add edx, 0xc
push esi
push edi
mov dword [ebp - 0x49c], edx
mov dword [ebp - 0x4b0], eax
call fcn.004730d0
add esp, 0x14
test edx, edx
jb 0x44b792
ja 0x44b775
test eax, eax
jbe 0x44b792
cmp dword [ebp - 0x47c], 2
jne 0x44b792
cmp dword [ebp - 0x478], 0
jne 0x44b792
mov eax, dword [ebp - 0x4b0]
jmp 0x44bb0d
mov eax, dword [ebp - 0x4b0]
test eax, eax
je 0x44b7a7
push eax
push str.Unsupported_version_of_PKCS8:__d_n
jmp 0x44c472
lea edx, [ebp - 0x4b0]
push edx
lea eax, [ebp - 0x47c]
push eax
push ebx
push esi
push edi
mov dword [ebp - 0x4b0], 0
call fcn.004730d0
add esp, 0x14
test edx, edx
mov dword [ebp - 0x4ac], eax
jg 0x44b7e6
jl 0x44b7db
cmp eax, 1
jae 0x44b7e6
mov ecx, dword [ebp - 0x4b0]
jmp 0x44b65e
sub esi, eax
mov eax, dword [ebp - 0x47c]
sbb ebx, edx
cmp eax, 0x10
mov dword [ebp - 0x484], esi
mov dword [ebp - 0x480], ebx
jne 0x44b80a
cmp dword [ebp - 0x478], 0
je 0x44b815
push eax
push str.Expecting_sequence_for_key_info__got__d_n
jmp 0x44c472
mov ecx, dword [ebp - 0x470]
mov ebx, dword [ebp - 0x474]
mov eax, dword [ebp - 0x46c]
lea edx, [ebp - 0x4c0]
push edx
lea edx, [ebp - 0x47c]
push edx
push ecx
push ebx
push eax
mov dword [ebp - 0x4bc], eax
mov esi, ecx
mov dword [ebp - 0x4c0], 0
call fcn.004730d0
add esp, 0x14
test edx, edx
jg 0x44b869
jl 0x44b85d
cmp eax, 1
jae 0x44b869
mov eax, dword [ebp - 0x4c0]
push eax
jmp 0x44b65f
mov ecx, dword [ebp - 0x47c]
sub ebx, eax
sbb esi, edx
cmp ecx, 6
mov dword [ebp - 0x4a0], esi
jne 0x44b887
cmp dword [ebp - 0x478], 0
je 0x44b892
push ecx
push str.Expecting_OID_for_key_alg__got__d_n
jmp 0x44c472
lea edi, [ebp - 0x464]
mov esi, str.1.2.840.113549.1.1.1
mov ecx, 0x15
xor edx, edx
repe cmpsb byte [esi], byte es:[edi]
je 0x44b8ad
sbb edx, edx
sbb edx, 0xffffffff
test edx, edx
je 0x44b8d3
mov ecx, dword [ebp - 0x424]
push ecx
lea edx, [ebp - 0x464]
push edx
push str.Unsupported_key_alg_type:__d___s__n
push 1
call fcn.004774c0
add esp, 0x10
jmp 0x44c47c
mov esi, dword [ebp - 0x4a0]
lea ecx, [ebp - 0x494]
push ecx
mov ecx, dword [ebp - 0x4bc]
lea edx, [ebp - 0x47c]
push edx
push esi
add eax, ecx
push ebx
xor edi, edi
push eax
mov dword [ebp - 0x494], edi
call fcn.004730d0
add esp, 0x14
cmp edx, edi
jg 0x44b919
jl 0x44b90d
cmp eax, 1
jae 0x44b919
mov edx, dword [ebp - 0x494]
push edx
jmp 0x44b65f
mov ecx, dword [ebp - 0x47c]
cmp ecx, 5
jne 0x44b92c
cmp dword [ebp - 0x478], edi
je 0x44b937
push ecx
push str.Expecting_NULL_for_RSA_params__got__d_n
jmp 0x44c472
sub ebx, eax
sbb esi, edx
cmp ebx, edi
jne 0x44b943
cmp esi, edi
je 0x44b957
push str.Garbage_after_decrypted_key_alg_sequence_n
push 1
call fcn.004774c0
add esp, 8
jmp 0x44c47c
mov ebx, dword [ebp - 0x480]
mov esi, dword [ebp - 0x484]
mov edx, dword [ebp - 0x4ac]
lea eax, [ebp - 0x494]
push eax
mov eax, dword [ebp - 0x488]
lea ecx, [ebp - 0x47c]
push ecx
push ebx
add edx, eax
push esi
push edx
mov dword [ebp - 0x494], edi
call fcn.004730d0
add esp, 0x14
cmp edx, edi
jg 0x44b9a6
jl 0x44b99b
cmp eax, 1
jae 0x44b9a6
mov ecx, dword [ebp - 0x494]
jmp 0x44b65e
mov ecx, dword [ebp - 0x47c]
cmp ecx, 4
jne 0x44b9b9
cmp dword [ebp - 0x478], edi
je 0x44b9c4
push ecx
push str.Expecting_octet_str_for_key_data__got__d_n
jmp 0x44c472
sub esi, eax
sbb ebx, edx
cmp esi, edi
jne 0x44b9d0
cmp ebx, edi
je 0x44b9e4
push str.Garbage_after_key_data_n
push 1
call fcn.004774c0
add esp, 8
jmp 0x44c47c
mov ebx, dword [ebp - 0x470]
mov esi, dword [ebp - 0x474]
mov ecx, dword [ebp - 0x46c]
lea edx, [ebp - 0x494]
push edx
lea eax, [ebp - 0x47c]
push eax
push ebx
push esi
push ecx
mov dword [ebp - 0x494], edi
call fcn.004730d0
add esp, 0x14
cmp edx, edi
jg 0x44ba2c
jl 0x44ba20
cmp eax, 1
jae 0x44ba2c
mov edx, dword [ebp - 0x494]
push edx
jmp 0x44b65f
mov ecx, dword [ebp - 0x47c]
cmp ecx, 0x10
jne 0x44ba3f
cmp dword [ebp - 0x478], edi
je 0x44ba4a
push ecx
push str.Expecting_sequence_as_key_data__got__d_n
jmp 0x44c472
sub esi, eax
sbb ebx, edx
cmp esi, edi
jne 0x44ba56
cmp ebx, edi
je 0x44ba6a
push str.Garbage_after_key_data_sequence_n
push 1
call fcn.004774c0
add esp, 8
jmp 0x44c47c
mov edx, dword [ebp - 0x470]
mov ecx, dword [ebp - 0x474]
mov eax, dword [ebp - 0x46c]
lea edi, [ebp - 0x494]
push edi
lea edi, [ebp - 0x47c]
push edi
push edx
push ecx
push eax
mov esi, eax
mov ebx, ecx
mov dword [ebp - 0x480], edx
mov dword [ebp - 0x494], 0
call fcn.004730d0
add esp, 0x14
test edx, edx
jg 0x44bac0
jl 0x44bab4
cmp eax, 1
jae 0x44bac0
mov eax, dword [ebp - 0x494]
push eax
jmp 0x44b65f
add esi, eax
sub ebx, eax
mov eax, dword [ebp - 0x47c]
sbb dword [ebp - 0x480], edx
cmp eax, 2
mov dword [ebp - 0x488], esi
mov dword [ebp - 0x484], ebx
jne 0x44baea
cmp dword [ebp - 0x478], 0
je 0x44baf5
push eax
push str.Expecting_integer_for_RSA_version__got__d_n
jmp 0x44c472
mov eax, dword [ebp - 0x464]
mov edi, dword [ebp - 0x488]
mov esi, dword [ebp - 0x484]
mov ebx, dword [ebp - 0x480]
test eax, eax
je 0x44bb22
mov ecx, dword [ebp - 0x464]
push ecx
push str.Only_RSA_version_0_supported__got__d_n
jmp 0x44c472
mov edx, dword [ebp - 0x48c]
lea eax, [ebp - 0x4c0]
push eax
lea ecx, [ebp - 0x47c]
push ecx
push ebx
push esi
push edi
mov dword [edx], 0x32415352
mov dword [ebp - 0x4c0], 0
call fcn.004730d0
add esp, 0x14
test edx, edx
jg 0x44bb68
jl 0x44bb5c
cmp eax, 1
jae 0x44bb68
mov edx, dword [ebp - 0x4c0]
push edx
jmp 0x44b65f
add edi, eax
sub esi, eax
mov eax, dword [ebp - 0x47c]
sbb ebx, edx
cmp eax, 2
mov dword [ebp - 0x488], edi
mov dword [ebp - 0x484], esi
mov dword [ebp - 0x480], ebx
jne 0x44bb94
cmp dword [ebp - 0x478], 0
je 0x44bb9f
push eax
push str.Expecting_integer_for_modulus__got__d_n
jmp 0x44c472
cmp dword [ebp - 0x470], 0
mov ebx, dword [ebp - 0x474]
ja 0x44bbb6
cmp ebx, 0x7fffffff
jbe 0x44bbc1
push ebx
push str.Key_size_is_too_large:__d_n
jmp 0x44c472
mov esi, dword [ebp - 0x46c]
mov eax, ebx
and eax, 0x80000001
jns 0x44bbd5
dec eax
or eax, 0xfffffffe
inc eax
cmp eax, 1
jne 0x44bbf0
cmp byte [esi], 0
je 0x44bbea
push ebx
push str.First_byte_of_modulus_must_be_0_if_length_is_odd__len_d__n
jmp 0x44c472
add ebx, 0xffffffff
add esi, 1
mov edx, dword [ebp - 0x48c]
lea ecx, [ebx*8]
lea eax, [ebx + ebx*8]
mov dword [edx + 4], ecx
cdq
sub eax, edx
sar eax, 1
add eax, 0xc
cmp dword [ebp + 0x14], eax
mov dword [ebp - 0x4f4], eax
jge 0x44bc2a
push str.RSA_buffer_too_small_for_key_n
push 1
call fcn.004774c0
add esp, 8
jmp 0x44c47c
mov ecx, dword [ebp - 0x49c]
mov eax, ebx
cdq
mov edi, eax
mov eax, edx
test eax, eax
mov dword [ebp - 0x4a4], edi
mov dword [ebp - 0x4a0], eax
lea ecx, [ecx + ebx - 1]
jl 0x44bc6b
jg 0x44bc51
test edi, edi
jbe 0x44bc6b
mov dl, byte [esi]
add edi, 0xffffffff
adc eax, 0xffffffff
mov byte [ecx], dl
sub ecx, 1
add esi, 1
test eax, eax
jg 0x44bc51
jl 0x44bc6b
test edi, edi
ja 0x44bc51
mov edx, dword [ebp - 0x480]
mov edi, dword [ebp - 0x484]
mov esi, dword [ebp - 0x488]
lea eax, [ebp - 0x4b0]
push eax
lea ecx, [ebp - 0x47c]
push ecx
push edx
push edi
push esi
mov dword [ebp - 0x4b0], 0
call fcn.004730d0
add esp, 0x14
test edx, edx
jg 0x44bcb7
jl 0x44bcab
cmp eax, 1
jae 0x44bcb7
mov eax, dword [ebp - 0x4b0]
push eax
jmp 0x44b65f
add esi, eax
sub edi, eax
mov eax, dword [ebp - 0x47c]
sbb dword [ebp - 0x480], edx
cmp eax, 2
jne 0x44bcd5
cmp dword [ebp - 0x478], 0
je 0x44bd34
push eax
push str.Expecting_integer_for___got__d_n
push 1
call fcn.004774c0
add esp, 0xc
mov ecx, dword [ebp - 0x464]
mov edx, dword [ebp - 0x48c]
mov dword [edx + 8], ecx
mov edx, dword [ebp - 0x480]
lea eax, [ebp - 0x4e0]
push eax
lea ecx, [ebp - 0x47c]
push ecx
push edx
push edi
push esi
mov dword [ebp - 0x4e0], 0
call fcn.004730d0
add esp, 0x14
test edx, edx
jg 0x44bd53
jl 0x44bd28
cmp eax, 1
jae 0x44bd53
mov eax, dword [ebp - 0x4e0]
push eax
jmp 0x44b65f
cmp dword [ebp - 0x470], 0
mov eax, dword [ebp - 0x474]
ja 0x44bd48
cmp eax, 4
jbe 0x44bce5
push eax
push str.RSA_public_exponent_too_big:__d_n
jmp 0x44c472
add esi, eax
sub edi, eax
mov eax, dword [ebp - 0x47c]
sbb dword [ebp - 0x480], edx
cmp eax, 2
mov dword [ebp - 0x488], esi
mov dword [ebp - 0x484], edi
jne 0x44bd7d
cmp dword [ebp - 0x478], 0
je 0x44bd88
push eax
push str.Expecting_integer_for_private_exponent__got__d_n
jmp 0x44c472
mov ecx, dword [ebp - 0x474]
mov esi, dword [ebp - 0x46c]
lea eax, [ebx + 1]
cdq
cmp ecx, eax
mov eax, dword [ebp - 0x470]
jne 0x44be5e
cmp eax, edx
jne 0x44be5e
cmp byte [esi], 0
je 0x44bdc7
push str.First_byte_of_private_exponent_must_be_0_n
push 1
call fcn.004774c0
add esp, 8
jmp 0x44c47c
add esi, 1
mov ecx, dword [ebp - 0x4a0]
mov edi, dword [ebp - 0x4a4]
lea eax, [ebx*8]
sub eax, ebx
cdq
sub eax, edx
sar eax, 1
add eax, dword [ebp - 0x49c]
test ecx, ecx
lea eax, [eax + ebx - 1]
jl 0x44be12
jg 0x44bdf8
test edi, edi
jbe 0x44be12
mov dl, byte [esi]
add edi, 0xffffffff
adc ecx, 0xffffffff
mov byte [eax], dl
sub eax, 1
add esi, 1
test ecx, ecx
jg 0x44bdf8
jl 0x44be12
test edi, edi
ja 0x44bdf8
mov edx, dword [ebp - 0x480]
lea eax, [ebp - 0x4cc]
push eax
mov eax, dword [ebp - 0x484]
lea ecx, [ebp - 0x47c]
push ecx
mov ecx, dword [ebp - 0x488]
push edx
push eax
push ecx
mov dword [ebp - 0x4cc], 0
call fcn.004730d0
add esp, 0x14
test edx, edx
jg 0x44be88
jl 0x44be52
cmp eax, 1
jae 0x44be88
mov edx, dword [ebp - 0x4cc]
push edx
jmp 0x44b65f
cmp ecx, dword [ebp - 0x4a4]
jne 0x44be72
cmp eax, dword [ebp - 0x4a0]
je 0x44bdca
push ecx
push ebx
push str.Expected_private_exponent_length_of__d__got__d_n
push 1
call fcn.004774c0
add esp, 0x10
jmp 0x44c47c
add dword [ebp - 0x488], eax
sub dword [ebp - 0x484], eax
mov eax, dword [ebp - 0x47c]
sbb dword [ebp - 0x480], edx
cmp eax, 2
jne 0x44beae
cmp dword [ebp - 0x478], 0
je 0x44beb9
push eax
push str.Expecting_integer_for_prime_1__got__d_n
jmp 0x44c472
mov edi, dword [ebp - 0x474]
mov esi, dword [ebp - 0x46c]
mov eax, ebx
cdq
sub eax, edx
mov ecx, eax
sar ecx, 1
lea eax, [ecx + 1]
cdq
cmp edi, eax
mov dword [ebp - 0x48c], ecx
mov dword [ebp - 0x4a4], eax
mov dword [ebp - 0x4a0], edx
jne 0x44bfa9
cmp dword [ebp - 0x470], edx
jne 0x44bfa9
cmp byte [esi], 0
je 0x44bf11
push str.First_byte_of_prime_1_must_be_0_n
push 1
call fcn.004774c0
add esp, 8
jmp 0x44c47c
add esi, 1
mov ecx, dword [ebp - 0x48c]
mov eax, ecx
cdq
mov edi, eax
mov eax, edx
mov edx, dword [ebp - 0x49c]
add ecx, edx
test eax, eax
mov dword [ebp - 0x4ac], edi
mov dword [ebp - 0x4a8], eax
lea ecx, [ecx + ebx - 1]
jl 0x44bf5d
jg 0x44bf43
test edi, edi
jbe 0x44bf5d
mov dl, byte [esi]
add edi, 0xffffffff
adc eax, 0xffffffff
mov byte [ecx], dl
sub ecx, 1
add esi, 1
test eax, eax
jg 0x44bf43
jl 0x44bf5d
test edi, edi
ja 0x44bf43
mov edx, dword [ebp - 0x480]
lea eax, [ebp - 0x4d4]
push eax
mov eax, dword [ebp - 0x484]
lea ecx, [ebp - 0x47c]
push ecx
mov ecx, dword [ebp - 0x488]
push edx
push eax
push ecx
mov dword [ebp - 0x4d4], 0
call fcn.004730d0
add esp, 0x14
test edx, edx
jg 0x44bfd2
jl 0x44bf9d
cmp eax, 1
jae 0x44bfd2
mov edx, dword [ebp - 0x4d4]
push edx
jmp 0x44b65f
mov eax, ecx
cdq
cmp edi, eax
jne 0x44bfbc
cmp dword [ebp - 0x470], edx
je 0x44bf14
push edi
push ecx
push str.Expected_prime_1_length_of__d__got__d_n
push 1
call fcn.004774c0
add esp, 0x10
jmp 0x44c47c
add dword [ebp - 0x488], eax
sub dword [ebp - 0x484], eax
mov eax, dword [ebp - 0x47c]
sbb dword [ebp - 0x480], edx
cmp eax, 2
jne 0x44bff8
cmp dword [ebp - 0x478], 0
je 0x44c003
push eax
push str.Expecting_integer_for_prime_2__got__d_n
jmp 0x44c472
mov eax, dword [ebp - 0x474]
cmp eax, dword [ebp - 0x4a4]
mov esi, dword [ebp - 0x46c]
mov ecx, dword [ebp - 0x470]
jne 0x44c0e6
cmp ecx, dword [ebp - 0x4a0]
jne 0x44c0e6
cmp byte [esi], 0
je 0x44c046
push str.First_byte_of_prime_2_must_be_0_n
push 1
call fcn.004774c0
add esp, 8
jmp 0x44c47c
add esi, 1
mov ecx, dword [ebp - 0x4a8]
mov edi, dword [ebp - 0x4ac]
lea eax, [ebx + ebx*2]
mov dword [ebp - 0x4f0], eax
cdq
sub eax, edx
mov edx, dword [ebp - 0x49c]
sar eax, 1
add eax, dword [ebp - 0x48c]
test ecx, ecx
lea eax, [eax + edx - 1]
jl 0x44c09a
jg 0x44c080
test edi, edi
jbe 0x44c09a
lea ecx, [ecx]
mov dl, byte [esi]
add edi, 0xffffffff
adc ecx, 0xffffffff
mov byte [eax], dl
sub eax, 1
add esi, 1
test ecx, ecx
jg 0x44c080
jl 0x44c09a
test edi, edi
ja 0x44c080
mov edx, dword [ebp - 0x480]
lea eax, [ebp - 0x4dc]
push eax
mov eax, dword [ebp - 0x484]
lea ecx, [ebp - 0x47c]
push ecx
mov ecx, dword [ebp - 0x488]
push edx
push eax
push ecx
mov dword [ebp - 0x4dc], 0
call fcn.004730d0
add esp, 0x14
test edx, edx
jg 0x44c116
jl 0x44c0da
cmp eax, 1
jae 0x44c116
mov edx, dword [ebp - 0x4dc]
push edx
jmp 0x44b65f
cmp eax, dword [ebp - 0x4ac]
jne 0x44c0fa
cmp ecx, dword [ebp - 0x4a8]
je 0x44c049
push eax
mov eax, dword [ebp - 0x48c]
push eax
push str.Expected_prime_2_length_of__d__got__d_n
push 1
call fcn.004774c0
add esp, 0x10
jmp 0x44c47c
add dword [ebp - 0x488], eax
sub dword [ebp - 0x484], eax
mov eax, dword [ebp - 0x47c]
sbb dword [ebp - 0x480], edx
cmp eax, 2
jne 0x44c13c
cmp dword [ebp - 0x478], 0
je 0x44c147
push eax
push str.Expecting_integer_for_exponent_1__got__d_n
jmp 0x44c472
mov eax, dword [ebp - 0x474]
cmp eax, dword [ebp - 0x4a4]
mov esi, dword [ebp - 0x46c]
mov ecx, dword [ebp - 0x470]
jne 0x44c21c
cmp ecx, dword [ebp - 0x4a0]
jne 0x44c21c
cmp byte [esi], 0
je 0x44c18a
push str.First_byte_of_exponent_1_must_be_0_n
push 1
call fcn.004774c0
add esp, 8
jmp 0x44c47c
add esi, 1
mov ecx, dword [ebp - 0x48c]
mov eax, dword [ebp - 0x4a8]
test eax, eax
mov edi, dword [ebp - 0x4ac]
lea edx, [ecx + ebx*2]
mov ecx, dword [ebp - 0x49c]
lea ecx, [edx + ecx - 1]
jl 0x44c1d0
jg 0x44c1b6
test edi, edi
jbe 0x44c1d0
mov dl, byte [esi]
add edi, 0xffffffff
adc eax, 0xffffffff
mov byte [ecx], dl
sub ecx, 1
add esi, 1
test eax, eax
jg 0x44c1b6
jl 0x44c1d0
test edi, edi
ja 0x44c1b6
mov edx, dword [ebp - 0x480]
lea eax, [ebp - 0x4e4]
push eax
mov eax, dword [ebp - 0x484]
lea ecx, [ebp - 0x47c]
push ecx
mov ecx, dword [ebp - 0x488]
push edx
push eax
push ecx
mov dword [ebp - 0x4e4], 0
call fcn.004730d0
add esp, 0x14
test edx, edx
jg 0x44c24c
jl 0x44c210
cmp eax, 1
jae 0x44c24c
mov edx, dword [ebp - 0x4e4]
push edx
jmp 0x44b65f
cmp eax, dword [ebp - 0x4ac]
jne 0x44c230
cmp ecx, dword [ebp - 0x4a8]
je 0x44c18d
push eax
mov eax, dword [ebp - 0x48c]
push eax
push str.Expected_exponent_1_length_of__d__got__d_n
push 1
call fcn.004774c0
add esp, 0x10
jmp 0x44c47c
add dword [ebp - 0x488], eax
sub dword [ebp - 0x484], eax
mov eax, dword [ebp - 0x47c]
sbb dword [ebp - 0x480], edx
cmp eax, 2
jne 0x44c272
cmp dword [ebp - 0x478], 0
je 0x44c27d
push eax
push str.Expecting_integer_for_exponent_2__got__d_n
jmp 0x44c472
mov eax, dword [ebp - 0x474]
cmp eax, dword [ebp - 0x4a4]
mov esi, dword [ebp - 0x46c]
mov ecx, dword [ebp - 0x470]
jne 0x44c359
cmp ecx, dword [ebp - 0x4a0]
jne 0x44c359
cmp byte [esi], 0
je 0x44c2c0
push str.First_byte_of_exponent_2_must_be_0_n
push 1
call fcn.004774c0
add esp, 8
jmp 0x44c47c
add esi, 1
mov ecx, dword [ebp - 0x4a8]
mov edi, dword [ebp - 0x4ac]
lea eax, [ebx + ebx*4]
cdq
sub eax, edx
mov edx, dword [ebp - 0x49c]
sar eax, 1
add eax, dword [ebp - 0x48c]
test ecx, ecx
lea eax, [eax + edx - 1]
jl 0x44c30b
jg 0x44c2f1
test edi, edi
jbe 0x44c30b
mov dl, byte [esi]
add edi, 0xffffffff
adc ecx, 0xffffffff
mov byte [eax], dl
sub eax, 1
add esi, 1
test ecx, ecx
jg 0x44c2f1
jl 0x44c30b
test edi, edi
ja 0x44c2f1
mov edi, dword [ebp - 0x480]
mov esi, dword [ebp - 0x484]
mov edx, dword [ebp - 0x488]
lea eax, [ebp - 0x4bc]
push eax
lea ecx, [ebp - 0x47c]
push ecx
push edi
push esi
push edx
mov dword [ebp - 0x4bc], 0
call fcn.004730d0
mov ecx, edx
add esp, 0x14
test ecx, ecx
jg 0x44c389
jl 0x44c34d
cmp eax, 1
jae 0x44c389
mov eax, dword [ebp - 0x4bc]
push eax
jmp 0x44b65f
cmp eax, dword [ebp - 0x4ac]
jne 0x44c36d
cmp ecx, dword [ebp - 0x4a8]
je 0x44c2c3
push eax
mov eax, dword [ebp - 0x48c]
push eax
push str.Expected_exponent_2_length_of__d__got__d_n
push 1
call fcn.004774c0
add esp, 0x10
jmp 0x44c47c
mov edx, dword [ebp - 0x47c]
cmp edx, 2
jne 0x44c39d
cmp dword [ebp - 0x478], 0
je 0x44c3a8
push edx
push str.Expecting_integer_coefficient__got__d_n
jmp 0x44c472
sub esi, eax
sbb edi, ecx
test esi, esi
jne 0x44c3b4
test edi, edi
je 0x44c3c8
push str.Garbage_after_coefficient_n
push 1
call fcn.004774c0
add esp, 8
jmp 0x44c47c
mov eax, dword [ebp - 0x474]
cmp eax, dword [ebp - 0x4a4]
mov esi, dword [ebp - 0x46c]
mov ecx, dword [ebp - 0x470]
jne 0x44c4bc
cmp ecx, dword [ebp - 0x4a0]
jne 0x44c4bc
cmp byte [esi], 0
je 0x44c408
push str.First_byte_of_coefficient_must_be_0_n
push 1
call fcn.004774c0
add esp, 8
jmp 0x44c47c
add esi, 1
mov ebx, dword [ebp - 0x48c]
mov ecx, dword [ebp - 0x4f0]
mov eax, dword [ebp - 0x4a8]
mov edi, dword [ebp - 0x4ac]
add ecx, ebx
test eax, eax
mov ebx, dword [ebp - 0x49c]
lea ecx, [ecx + ebx - 1]
jl 0x44c460
jg 0x44c440
test edi, edi
jbe 0x44c460
lea esp, [esp]
mov dl, byte [esi]
add edi, 0xffffffff
adc eax, 0xffffffff
mov byte [ecx], dl
sub ecx, 1
add esi, 1
test eax, eax
jg 0x44c440
jl 0x44c45a
test edi, edi
ja 0x44c440
mov edx, dword [ebp - 0x47c]
mov eax, dword [ebp - 0x4f4]
mov dword [ebp - 0x4d8], eax
push edx
push str.Expecting_integer_at_start_of_key__got__d_n
push 1
call fcn.004774c0
add esp, 0xc
cmp dword [ebp - 0x4c8], 0
je 0x44c492
mov ecx, dword [ebp - 0x4b4]
push ecx
call dword [sym.imp.ADVAPI32.dll_CryptDestroyHash]
mov eax, dword [ebp - 0x4e8]
test eax, eax
je 0x44c4a5
push eax
call fcn.005074d4
add esp, 4
mov ecx, dword [ebp - 4]
mov eax, dword [ebp - 0x4d8]
pop edi
pop esi
xor ecx, ebp
pop ebx
call fcn.00506c7d
mov esp, ebp
pop ebp
ret
cmp eax, dword [ebp - 0x4ac]
jne 0x44c4d0
cmp ecx, dword [ebp - 0x4a8]
je 0x44c40b
mov ecx, dword [ebp - 0x48c]
push eax
push ecx
push str.Expected_coefficient_length_of__d__got__d_n
push 1
call fcn.004774c0
add esp, 0x10
jmp 0x44c47c