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

Disassembly:
push ebp
mov ebp, esp
and esp, 0xfffffff8
sub esp, 0x78
push esi
mov esi, dword [ebx]
sub esi, dword [ebx + 8]
push edi
sub esi, dword [ebx + 0x10]
lea eax, [esp + 0x10]
push eax
lea edi, [esp + 0x74]
mov dword [esp + 0x14], 0
call fcn.00402dc0
mov ecx, dword [eax]
mov edx, dword [eax + 4]
mov esi, dword [ebx + 0x14]
mov dword [esp + 0x34], ecx
mov ecx, dword [eax + 8]
mov dword [esp + 0x38], edx
mov edx, dword [eax + 0xc]
mov eax, dword [ebx + 0x10]
mov dword [esp + 0x3c], ecx
mov ecx, dword [ebx + 8]
add esi, ecx
add esi, eax
add esi, dword [ebx + 0xc]
mov dword [esp + 0x40], edx
add esi, esi
sub esi, ecx
sub esi, eax
add esi, dword [ebx]
lea edx, [esp + 0x14]
add esp, 4
push edx
lea edi, [esp + 0x64]
call fcn.00402dc0
mov ecx, dword [eax]
mov edx, dword [eax + 4]
mov esi, dword [ebx + 0x14]
mov dword [esp + 0x24], ecx
mov ecx, dword [eax + 8]
mov dword [esp + 0x28], edx
mov edx, dword [eax + 0xc]
mov eax, dword [ebx + 0x10]
mov dword [esp + 0x2c], ecx
mov ecx, dword [ebx + 8]
add esi, ecx
add esi, eax
add esi, dword [ebx + 0xc]
mov dword [esp + 0x30], edx
add esi, esi
sub esi, ecx
sub esi, eax
add esi, dword [ebx]
lea edx, [esp + 0x14]
add esp, 4
push edx
lea edi, [esp + 0x64]
call fcn.00402dc0
mov ecx, dword [eax]
mov edx, dword [eax + 4]
mov esi, dword [ebx + 0x14]
mov dword [esp + 0x54], ecx
mov ecx, dword [eax + 8]
mov dword [esp + 0x58], edx
mov edx, dword [eax + 0xc]
mov eax, dword [ebx + 0x10]
mov dword [esp + 0x5c], ecx
mov ecx, dword [ebx + 8]
add esi, ecx
add esi, eax
add esi, dword [ebx + 0xc]
mov dword [esp + 0x60], edx
add esi, esi
sub esi, ecx
sub esi, eax
add esi, dword [ebx]
lea edx, [esp + 0x14]
add esp, 4
push edx
lea edi, [esp + 0x44]
call fcn.00402dc0
mov ecx, dword [eax]
add esp, 4
mov edx, dword [eax + 4]
mov dword [esp + 0x64], edx
mov edx, dword [eax + 0xc]
mov dword [esp + 0x60], ecx
mov ecx, dword [eax + 8]
mov dword [esp + 0x6c], edx
xor edx, edx
mov eax, ebx
mov dword [esp + 0x68], ecx
call fcn.00403f40
test eax, eax
jl 0x4060d6
cmp eax, dword [esp + 0x20]
jg 0x4060d6
cmp dword [esp + 0x2c], edx
je 0x4060d6
mov dword [esp + 0x28], edx
mov dword [esp + 0x24], eax
jmp 0x4060fd
push 0x10
call fcn.00408960
add esp, 4
test eax, eax
je 0x4060fd
push 0x35b
push str..crypto.c
push str.Assertion_failed_at__s:_d
push 0x10
call fcn.00408640
add esp, 0x10
mov edi, 1
cmp dword [0x5426d0], edi
jb 0x406125
push edi
call fcn.00408960
add esp, 4
test eax, eax
je 0x406125
push str.Entering_OpenVPN_crypto_self_test_mode.
push edi
call fcn.00408640
add esp, 8
mov eax, dword [ebx]
sub eax, dword [ebx + 8]
mov dword [esp + 0x14], edi
sub eax, dword [ebx + 0x10]
cmp eax, edi
jl 0x40646f
lea ecx, [esp + 0x18]
push ecx
call fcn.004347d0
add esp, 4
test eax, eax
jne 0x4061c2
mov eax, dword [esp + 0x18]
mov edi, dword [0x5424f0]
mov esi, dword [0x5424f4]
cdq
push edx
push eax
call fcn.004343e0
mov eax, dword [0x5424f4]
mov ecx, dword [esp + 0x24]
add esp, 8
cmp eax, esi
jg 0x40619d
jl 0x40617c
cmp dword [0x5424f0], edi
ja 0x40619d
cmp dword [0x5424f0], edi
jne 0x4061ab
cmp eax, esi
jne 0x4061ab
mov eax, ecx
cdq
cmp edx, dword [0x542504]
jl 0x4061ab
jg 0x40619d
cmp eax, dword [0x542500]
jbe 0x4061ab
mov eax, ecx
cdq
mov dword [0x542500], eax
mov dword [0x542504], edx
mov edx, dword [0x5424f0]
mov eax, dword [0x542500]
mov edi, dword [esp + 0x14]
mov dword [esp + 0x18], edx
mov dword [esp + 0x1c], eax
cmp dword [0x5426d0], 1
jb 0x4061e9
push 1
call fcn.00408960
add esp, 4
test eax, eax
je 0x4061e9
push edi
push str.TESTING_ENCRYPT_DECRYPT_of_packet_length_d
push 1
call fcn.00408640
add esp, 0xc
mov esi, dword [esp + 0x30]
test esi, esi
jl 0x406203
mov eax, dword [esp + 0x3c]
test eax, eax
je 0x406203
mov dword [esp + 0x34], 0
jmp 0x40622e
push 0x10
call fcn.00408960
add esp, 4
test eax, eax
je 0x40622a
push 0x367
push str..crypto.c
push str.Assertion_failed_at__s:_d
push 0x10
call fcn.00408640
add esp, 0x10
mov eax, dword [esp + 0x3c]
cmp edi, esi
jle 0x40625d
push 0x10
call fcn.00408960
add esp, 4
test eax, eax
je 0x406259
push 0x368
push str..crypto.c
push str.Assertion_failed_at__s:_d
push 0x10
call fcn.00408640
add esp, 0x10
mov eax, dword [esp + 0x3c]
test eax, eax
je 0x406269
test edi, edi
jl 0x406269
mov ecx, edi
jmp 0x40626b
xor ecx, ecx
test eax, eax
je 0x40627b
test edi, edi
jl 0x40627b
mov edx, dword [esp + 0x34]
add eax, edx
jmp 0x40627d
xor eax, eax
push ecx
push eax
call fcn.00469840
add esp, 8
test eax, eax
jne 0x4062b2
push 0x10
call fcn.00408960
add esp, 4
test eax, eax
je 0x4062b2
push 0x36a
push str..crypto.c
push str.Assertion_failed_at__s:_d
push 0x10
call fcn.00408640
add esp, 0x10
cmp dword [esp + 0x3c], 0
mov eax, dword [esp + 0x20]
mov ecx, dword [esp + 0x24]
mov edx, dword [esp + 0x28]
mov dword [esp + 0x40], eax
mov eax, dword [esp + 0x2c]
mov dword [esp + 0x44], ecx
mov dword [esp + 0x48], edx
mov dword [esp + 0x4c], eax
je 0x4062e1
test edi, edi
jl 0x4062e1
mov esi, edi
jmp 0x4062e3
xor esi, esi
mov eax, dword [esp + 0x3c]
test eax, eax
je 0x4062f8
test edi, edi
jl 0x4062f8
mov ecx, dword [esp + 0x34]
lea edx, [ecx + eax]
jmp 0x4062fa
xor edx, edx
test eax, eax
je 0x406306
test edi, edi
jl 0x406306
mov ecx, edi
jmp 0x406308
xor ecx, ecx
cmp dword [esp + 0x2c], 0
je 0x406331
mov eax, dword [esp + 0x28]
test eax, eax
jl 0x406331
cmp ecx, 0xf4240
jae 0x406331
mov edi, dword [esp + 0x24]
add edi, eax
add edi, ecx
cmp edi, dword [esp + 0x20]
jle 0x406335
mov edi, dword [esp + 0x14]
xor eax, eax
jmp 0x40634f
mov edi, dword [esp + 0x2c]
mov eax, dword [esp + 0x24]
add eax, edi
mov edi, dword [esp + 0x28]
add eax, edi
add edi, ecx
mov dword [esp + 0x48], edi
mov edi, dword [esp + 0x14]
push esi
push edx
push eax
call sub.MSVCR80.dll_memcpy
mov edx, dword [esp + 0x60]
mov esi, dword [ebp + 8]
push ecx
mov ecx, dword [esp + 0x60]
mov eax, esp
mov dword [eax], ecx
mov ecx, dword [esp + 0x68]
mov dword [eax + 4], edx
mov edx, dword [esp + 0x6c]
mov dword [eax + 8], ecx
mov dword [eax + 0xc], edx
push ebx
mov edx, esi
lea ecx, [esp + 0x54]
call fcn.00403f70
mov ecx, dword [esp + 0x74]
mov edx, dword [esp + 0x78]
add esp, 4
mov eax, esp
mov dword [eax], ecx
mov ecx, dword [esp + 0x78]
mov dword [eax + 4], edx
mov edx, dword [esp + 0x7c]
mov dword [eax + 8], ecx
mov dword [eax + 0xc], edx
push ebx
mov ecx, esi
lea edx, [esp + 0x54]
call fcn.004046f0
add esp, 0x14
cmp dword [esp + 0x48], edi
je 0x4063dc
push 0x10
call fcn.00408960
add esp, 4
test eax, eax
je 0x4063dc
mov eax, dword [esp + 0x48]
push eax
push edi
push str.SELF_TEST_FAILED__src.len_d_buf.len_d
push 0x10
call fcn.00408640
add esp, 0x10
xor esi, esi
test edi, edi
jle 0x406458
mov edx, dword [esp + 0x4c]
mov eax, dword [esp + 0x3c]
test eax, eax
je 0x4063fa
test edi, edi
jl 0x4063fa
mov ecx, dword [esp + 0x34]
add eax, ecx
jmp 0x4063fc
xor eax, eax
test edx, edx
mov al, byte [eax + esi]
mov byte [esp + 0xf], al
je 0x406416
cmp dword [esp + 0x48], 0
jl 0x406416
mov ecx, dword [esp + 0x44]
add ecx, edx
jmp 0x406418
xor ecx, ecx
mov cl, byte [ecx + esi]
cmp al, cl
mov byte [esp + 0xe], cl
je 0x406451
push 0x10
call fcn.00408960
add esp, 4
test eax, eax
je 0x40644d
movzx edx, byte [esp + 0xe]
movzx eax, byte [esp + 0xf]
push edx
push eax
push esi
push str.SELF_TEST_FAILED__pos_d_in_d_out_d
push 0x10
call fcn.00408640
add esp, 0x14
mov edx, dword [esp + 0x4c]
add esi, 1
cmp esi, edi
jl 0x4063e6
mov ecx, dword [ebx]
sub ecx, dword [ebx + 8]
add edi, 1
sub ecx, dword [ebx + 0x10]
mov dword [esp + 0x14], edi
cmp edi, ecx
jle 0x406139
cmp dword [0x5426d0], 1
jb 0x406495
push 1
call fcn.00408960
add esp, 4
test eax, eax
je 0x406495
push str.OpenVPN_crypto_self_test_mode_SUCCEEDED.
push 1
call fcn.00408640
add esp, 8
mov eax, dword [esp + 0x10]
test eax, eax
je 0x4064b1
mov edi, dword [sym.imp.MSVCR80.dll_free]
mov esi, dword [eax]
push eax
call edi
add esp, 4
test esi, esi
mov eax, esi
jne 0x4064a3
pop edi
pop esi
mov esp, ebp
pop ebp
ret