Function at 0x49e990
Capabilities:
Check for time delay via gettickcount

Disassembly:
push ebp
mov ebp, esp
push 0xffffffffffffffff
push 0x741968
mov eax, dword fs:[0]
push eax
sub esp, 0x40
push ebx
push esi
push edi
mov eax, dword [0x899944]
xor eax, ebp
push eax
lea eax, [ebp - 0xc]
mov dword fs:[0], eax
mov dword [ebp - 0x10], ecx
xor ebx, ebx
mov dword [ecx + 0x380], ebx
push ecx
lea ecx, [ebp - 0x24]
call fcn.0046f6b0
mov esi, dword [ebp + 0xc]
mov ecx, esi
mov dword [ebp - 4], ebx
call fcn.004a71c0
mov eax, dword [esi + 4]
mov edi, dword [ebp + 8]
mov esi, dword [ebp + 0x10]
mov dword [ebp - 0x14], eax
mov byte [edi + 0x2f], bl
mov word [edi + 0x2c], bx
mov dword [edi + 0x34], ebx
mov dword [edi + 0x54], 0xffffffff
cmp byte [edi + 0x24], bl
je 0x49ea15
lea ecx, [edi + 0x38]
call fcn.004033b0
test eax, eax
je 0x49ea15
mov edx, dword [esi]
mov eax, dword [edx + 0x18]
push str.m_dbReturnPayload_is_non_empty.
mov ecx, esi
call eax
lea ecx, [edi + 0x38]
mov dword [ebp - 0x18], ecx
call fcn.0040fb90
cmp dword [edi + 4], ebx
jne 0x49ea2d
call sub.KERNEL32.dll_GetTickCount
mov dword [edi + 4], eax
lea ecx, [ebp - 0x4c]
call fcn.0040fe80
push 0x10108
lea ecx, [ebp - 0x4c]
mov byte [ebp - 4], 1
call fcn.00413a50
lea ecx, [ebp - 0x4c]
mov dword [edi + 0x34], 0
call fcn.0040fb90
or ebx, 0xffffffff
cmp dword [edi + 0x14], ebx
je 0x49ea88
cmp dword [edi + 0x10], 0
je 0x49ea88
cmp dword [edi + 4], 0
jne 0x49ea71
call sub.KERNEL32.dll_GetTickCount
mov dword [edi + 4], eax
call sub.KERNEL32.dll_GetTickCount
mov ecx, dword [edi + 4]
cmp eax, ecx
jbe 0x49ea88
sub eax, ecx
cmp eax, dword [edi + 0x10]
ja 0x49eda3
mov eax, dword [edi + 0xc]
mov ebx, dword [ebp + 0xc]
push esi
push ebx
test eax, eax
jne 0x49ea9e
push 5
push 1
lea ecx, [ebp - 0x4c]
push ecx
jmp 0x49eaa5
push eax
push 0
lea edx, [ebp - 0x4c]
push edx
mov ecx, dword [ebp - 0x10]
call fcn.00498e40
test al, al
je 0x49edc2
mov ecx, dword [ebp - 0x14]
test ecx, ecx
je 0x49eaca
push esi
call fcn.00487ac0
test al, al
jne 0x49eddc
lea ecx, [ebp - 0x4c]
call fcn.004033b0
test eax, eax
je 0x49ea46
inc dword [edi + 0x58]
lea ecx, [ebp - 0x4c]
call fcn.004033b0
test eax, eax
jne 0x49eaf3
mov ebx, 0xf423f
mov byte [ebp + 0xb], al
jmp 0x49eb3a
lea ecx, [ebp - 0x4c]
call fcn.0040fbb0
movzx ebx, byte [eax]
cmp ebx, 0x5e
je 0x49eb36
cmp ebx, 0x5d
je 0x49eb36
cmp ebx, 0x5f
je 0x49eb36
cmp ebx, 0x5b
je 0x49eb36
cmp ebx, 0x5c
je 0x49eb36
cmp ebx, 0x61
je 0x49eb36
cmp ebx, 0x60
je 0x49eb36
cmp ebx, 0x62
je 0x49eb36
cmp ebx, 0x63
je 0x49eb36
cmp ebx, 0x64
je 0x49eb36
mov byte [ebp + 0xb], 0
jmp 0x49eb3a
mov byte [ebp + 0xb], 1
mov ecx, dword [ebp - 0x10]
cmp byte [ecx + 0xc4], 0
je 0x49eb6b
cmp byte [ebp + 0xb], 0
jne 0x49eb6b
push 0x76785c
push ebx
call fcn.00496690
mov ecx, dword [ebp - 0x10]
add esp, 4
push eax
push str.TRAN_
call fcn.00494c70
mov ecx, dword [ebp - 0x10]
cmp byte [esi + 0xad], 0
je 0x49eba0
cmp byte [esi + 0xaf], 0
je 0x49eba0
mov eax, dword [esi]
add eax, 0x2c
push ebx
mov dword [ebp + 0x10], eax
call fcn.00496690
add esp, 4
push eax
mov eax, dword [ebp + 0x10]
mov edx, dword [eax]
push str.mType
mov ecx, esi
call edx
mov ecx, dword [ebp - 0x10]
cmp ebx, 0x14
jne 0x49ebe0
mov eax, dword [esi]
mov edx, dword [eax + 0x18]
push str.Received_KEXINIT_from_server...
mov ecx, esi
call edx
mov eax, dword [ebp + 0xc]
push esi
push eax
push edi
lea ecx, [ebp - 0x4c]
push ecx
mov ecx, dword [ebp - 0x10]
call fcn.0049d070
test al, al
jne 0x49ea46
mov eax, dword [esi]
mov edx, dword [eax + 0x14]
push str.rekeyStart_failed.
mov ecx, esi
call edx
jmp 0x49ed72
cmp ebx, 0x1f
jne 0x49ec1c
cmp byte [ecx + 0x385], 0
je 0x49ed4d
mov edx, dword [ebp + 0xc]
push esi
push edx
push edi
lea eax, [ebp - 0x4c]
push eax
call fcn.0049cef0
test al, al
jne 0x49ea46
mov eax, dword [esi]
mov edx, dword [eax + 0x14]
push str.rekeyKexDhGexGroup_failed.
mov ecx, esi
call edx
jmp 0x49ed72
cmp ebx, 0x21
je 0x49ed4d
cmp ebx, 0x15
jne 0x49ec89
push str.rekeyNewKeys
push esi
lea ecx, [ebp - 0x30]
call fcn.00474ef0
mov ebx, dword [ebp - 0x10]
push 0x76785c
push str.SSH_Key_Exchange_Success.
push str.TRAN
mov ecx, ebx
mov byte [ebp - 4], 2
call fcn.00494c70
mov edx, dword [esi]
mov eax, dword [edx + 0x18]
push str.SSH_Key_Exchange_Success.
mov ecx, esi
call eax
push esi
mov ecx, ebx
call fcn.00495b60
lea ecx, [ebp - 0x30]
mov byte [ebp - 4], 1
call fcn.00474f80
cmp byte [ebx + 0x384], 0
jne 0x49ea46
jmp 0x49eedf
mov edx, dword [ebp + 0xc]
push esi
push edx
push edi
lea eax, [ebp - 0x4c]
push eax
push ebx
call fcn.0049c870
test al, al
je 0x49ecb2
mov ecx, dword [ebp + 0xc]
call fcn.004a7160
test al, al
je 0x49ea46
jmp 0x49ed72
cmp ebx, 1
je 0x49edec
cmp byte [ebp + 0xb], 0
lea ecx, [ebp - 0x4c]
push ecx
je 0x49eed4
call fcn.004971b0
add esp, 4
mov dword [edi + 0x54], eax
cmp byte [esi + 0xad], 0
mov dword [ebp + 8], eax
je 0x49ecf6
cmp byte [edi + 0x24], 0
je 0x49ecf6
push eax
push str.channelNum
mov ecx, esi
call fcn.00474a80
mov eax, dword [ebp + 8]
cmp dword [edi + 0x28], 0
jne 0x49ee69
cmp byte [edi + 0x24], 0
je 0x49ed17
mov edx, dword [esi]
mov eax, dword [edx + 0x18]
push str.Handling_channel_specific_message_without_m_pHandler.
mov ecx, esi
call eax
mov eax, dword [ebp + 8]
mov ecx, dword [ebp + 0xc]
push esi
push ecx
mov ecx, dword [ebp - 0x10]
push edi
lea edx, [ebp - 0x4c]
push edx
push eax
push ebx
call fcn.0049dc80
test al, al
je 0x49eeca
mov eax, dword [edi + 0x14]
cmp eax, 0xffffffff
je 0x49eedf
cmp eax, dword [ebp + 8]
jne 0x49ea46
jmp 0x49eedf
mov eax, dword [ebp + 0xc]
push esi
push eax
push edi
lea edx, [ebp - 0x4c]
push edx
call fcn.0049ca80
test al, al
jne 0x49ea46
push str.rekeyKexDhReply_failed.
mov edx, dword [esi]
mov eax, dword [edx + 0x14]
mov ecx, esi
call eax
lea ecx, [ebp - 0x4c]
mov byte [ebp - 4], 0
call fcn.004105c0
mov dword [ebp - 4], 0xffffffff
lea ecx, [ebp - 0x24]
call fcn.0046f6e0
xor al, al
mov ecx, dword [ebp - 0xc]
mov dword fs:[0], ecx
pop ecx
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
ret 0xc
mov esi, dword [ebp + 0xc]
mov ecx, esi
call fcn.004a71c0
lea ecx, [ebp - 0x4c]
mov byte [esi + 0x10], 1
mov byte [ebp - 4], 0
call fcn.004105c0
mov dword [ebp - 4], ebx
jmp 0x49ed85
mov ecx, ebx
call fcn.004a7190
test al, al
jne 0x49ed72
push esi
push str.sshReadMessage
mov ecx, ebx
call fcn.004a7220
jmp 0x49ed72
mov eax, dword [esi]
mov edx, dword [eax + 0x14]
push str.Aborted_by_app.
mov ecx, esi
call edx
jmp 0x49ed72
mov byte [edi + 0x2f], 1
mov eax, dword [esi]
mov edx, dword [eax + 0x18]
push str.Received_DISCONNECT_message
mov ecx, esi
call edx
mov ebx, dword [ebp - 0x10]
push esi
lea edi, [ebx + 0x222b8]
push edi
lea eax, [ebx + 0x222b4]
push eax
lea ecx, [ebp - 0x4c]
push ecx
call fcn.00497850
add esp, 0x10
test al, al
je 0x49ee46
push edi
push str.DisconnectReason
mov ecx, esi
call fcn.00474890
push 0x76785c
mov ecx, edi
call fcn.00409d90
push eax
push str.TRAN_Reason:
mov ecx, ebx
call fcn.00494c70
mov edx, dword [ebp - 0x14]
mov eax, dword [ebx + 0x5a4]
push esi
push edx
push eax
lea ecx, [ebx + 0x3a4]
call fcn.0050f020
mov ecx, dword [ebp + 0xc]
mov byte [ecx + 0x13], 1
jmp 0x49ed72
mov edx, dword [ebp + 0xc]
push esi
push edx
push edi
lea ecx, [ebp - 0x4c]
push ecx
mov ecx, dword [ebp - 0x10]
push eax
push ebx
mov dword [edi + 0x34], ebx
call fcn.0049dc80
mov bl, al
test bl, bl
jne 0x49ee99
cmp byte [edi + 0x24], al
je 0x49ee99
mov edx, dword [esi]
mov eax, dword [edx + 0x14]
push str.returning_failed_status...
mov ecx, esi
call eax
lea ecx, [ebp - 0x4c]
mov byte [ebp - 4], 0
call fcn.004105c0
lea ecx, [ebp - 0x24]
mov dword [ebp - 4], 0xffffffff
call fcn.0046f6e0
mov al, bl
mov ecx, dword [ebp - 0xc]
mov dword fs:[0], ecx
pop ecx
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
ret 0xc
push str.Failed_to_process_channel_message.
jmp 0x49ed69
mov ecx, dword [ebp - 0x18]
mov dword [edi + 0x34], ebx
call fcn.00410920
lea ecx, [ebp - 0x4c]
mov byte [ebp - 4], 0
call fcn.004105c0
lea ecx, [ebp - 0x24]
mov dword [ebp - 4], 0xffffffff
call fcn.0046f6e0
mov al, 1
mov ecx, dword [ebp - 0xc]
mov dword fs:[0], ecx
pop ecx
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
ret 0xc