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

Disassembly:
push 0xffffffffffffffff
push 0x57ebb6
mov eax, dword fs:[0]
push eax
sub esp, 0x8b4
mov eax, dword [0x641030]
xor eax, esp
mov dword [esp + 0x8b0], eax
push ebx
push ebp
push esi
push edi
mov eax, dword [0x641030]
xor eax, esp
push eax
lea eax, [esp + 0x8c8]
mov dword fs:[0], eax
mov eax, dword [esp + 0x8e4]
mov edx, dword [esp + 0x8d8]
mov ebp, dword [esp + 0x8ec]
mov esi, dword [esp + 0x8dc]
mov ebx, dword [esp + 0x8e0]
mov edi, ecx
mov ecx, dword [esp + 0x8e8]
mov dword [esp + 0x44], ecx
mov ecx, dword [ecx + 4]
mov dword [eax], 0
cmp byte [edi + 0xc4], 0
mov dword [esp + 0x28], edx
mov dword [esp + 0x20], eax
mov dword [esp + 0x38], ebp
mov dword [esp + 0x3c], ecx
je 0x500dd1
test esi, esi
je 0x500dbf
lea ecx, [esp + 0x850]
call fcn.0042d110
push esi
push 0x590b7c
lea ecx, [esp + 0x858]
mov dword [esp + 0x8d8], 0
call fcn.0042f720
push 0x58d6a0
lea ecx, [esp + 0x854]
call fcn.0042cde0
test al, al
jne 0x500d88
push 0x58d6a0
lea ecx, [esp + 0x854]
call fcn.0042cd60
lea ecx, [esp + 0x850]
call fcn.0051b3b0
mov edx, dword [esp + 0x28]
push eax
push edx
push 0x5e464c
mov ecx, edi
call fcn.004fd580
lea ecx, [esp + 0x850]
mov dword [esp + 0x8d0], 0xffffffff
call fcn.0042d1d0
jmp 0x500dd1
push 0x58d6a0
push edx
push 0x5e464c
mov ecx, edi
call fcn.004fd580
call sub.KERNEL32.dll_GetTickCount
inc dword [edi + 0x468]
lea esi, [edi + 0x540]
mov ecx, esi
mov dword [edi + 0x45c], eax
mov dword [esp + 0x1c], ebx
call fcn.00446f40
cmp dword [edi + 0xad8], 0
je 0x500e82
cmp byte [edi + 0x4ec], 0
je 0x500e1d
push ebp
push esi
lea ecx, [edi + 0x4f0]
call fcn.005070d0
mov byte [edi + 0x4ec], 0
mov eax, dword [edi + 0x5e8]
mov byte [esp + 0x1c], 0
test eax, eax
je 0x500e38
dec eax
mov byte [esp + 0x1c], 1
mov dword [edi + 0x5e8], eax
mov eax, dword [esp + 0x1c]
push 0
push ebp
push esi
push eax
push ebx
lea ecx, [edi + 0x4f0]
call fcn.005071d0
mov ecx, ebx
call fcn.0051d090
cmp byte [esp + 0x1c], 0
mov ebx, eax
jne 0x500e7e
cmp ebx, 0x40
jbe 0x500e7e
mov ecx, esi
call fcn.0051d090
mov ecx, ebx
shr ecx, 3
add eax, ecx
cmp eax, ebx
jbe 0x500e7e
mov dword [edi + 0x5e8], 0x10
mov dword [esp + 0x1c], esi
mov eax, dword [edi + 0xb00]
mov ebx, 8
cmp eax, 1
je 0x500eb5
cmp eax, 2
je 0x500eb5
cmp eax, 0xc
je 0x500eb5
cmp eax, 9
je 0x500eb5
cmp eax, 0xa
je 0x500eb5
cmp eax, 0xb
je 0x500eb5
cmp eax, 3
je 0x500eb5
cmp eax, 4
jne 0x500eba
mov ebx, 0x10
mov ecx, dword [esp + 0x1c]
call fcn.0051d090
mov esi, dword [edi + 0xb00]
xor edx, edx
cmp esi, 0xd
setne dl
lea ecx, [eax + 5]
mov dword [esp + 0x34], eax
mov eax, ecx
dec edx
and edx, 4
sub eax, edx
add eax, 4
xor edx, edx
div ebx
mov eax, ebx
sub eax, edx
xor edx, edx
div ebx
add edx, 4
lea esi, [ecx + edx]
mov dword [esp + 0x14], edx
cmp esi, 0x10
jae 0x500f0f
cmp dword [edi + 0xb00], 0xd
je 0x500f0f
add edx, ebx
mov dword [esp + 0x14], edx
add esi, ebx
mov eax, dword [esp + 0x20]
lea edx, [esi - 4]
lea ebx, [edi + 0x578]
mov ecx, ebx
mov dword [esp + 0x24], edx
mov dword [eax], esi
call fcn.00446f40
mov eax, dword [edi + 0xb00]
cmp eax, 0xd
jne 0x501054
lea eax, [esi + 0x10]
push eax
mov ecx, ebx
mov dword [esp + 0x44], eax
call fcn.0044bb40
mov esi, eax
mov eax, dword [esp + 0x24]
mov ecx, eax
shr ecx, 0x18
mov byte [esi], cl
mov edx, eax
mov ecx, eax
shr ecx, 8
shr edx, 0x10
mov byte [esi + 2], cl
mov byte [esi + 1], dl
mov byte [esi + 3], al
mov eax, dword [edi + 0x664]
push eax
push 4
push esi
lea ebp, [edi + 0x187c]
push ebp
mov ecx, edi
mov dword [esp + 0x38], esi
call fcn.004fa000
mov ecx, 4
mov eax, esi
mov dword [esp + 0x20], ecx
mov dword [esp + 0x30], eax
cmp dword [ebp + 0x40], 0x40
jb 0x500fb0
push ebp
call fcn.004f9ae0
mov eax, dword [esp + 0x34]
mov ecx, dword [esp + 0x24]
add esp, 4
cmp dword [ebp + 0x40], 0x40
jae 0x500fd0
nop
test ecx, ecx
je 0x500fd4
mov edx, dword [ebp + 0x40]
mov dl, byte [edx + ebp + 0x44]
xor byte [eax], dl
inc dword [ebp + 0x40]
inc eax
dec ecx
cmp dword [ebp + 0x40], 0x40
mov dword [esp + 0x30], eax
mov dword [esp + 0x20], ecx
jb 0x500fb0
test ecx, ecx
jne 0x500f92
mov ecx, dword [esp + 0x34]
mov al, byte [esp + 0x14]
push ecx
mov ecx, dword [esp + 0x20]
mov byte [esi + 4], al
call fcn.00446f60
push eax
lea edx, [esi + 5]
push edx
call fcn.00554d40
mov eax, dword [esp + 0x40]
mov edx, dword [esp + 0x20]
lea ecx, [esi + eax + 5]
push ecx
push edx
call fcn.00467160
mov ecx, dword [esp + 0x3c]
mov eax, dword [esp + 0x38]
add esp, 0x14
lea esi, [edi + 0x1900]
add ecx, 4
call fcn.004f9fb0
mov eax, dword [esp + 0x38]
mov ecx, dword [edi + 0x664]
mov edx, dword [esp + 0x24]
push eax
mov eax, dword [esp + 0x2c]
push ecx
add edx, 4
push edx
push eax
mov ecx, ebp
call fcn.004fbdd0
mov ecx, dword [esp + 0x40]
push ecx
mov ecx, ebx
call fcn.00446f70
mov ebp, dword [esp + 0x38]
jmp 0x50118a
push ebx
test eax, eax
je 0x501157
mov edx, dword [esp + 0x28]
push edx
call fcn.0054c450
mov eax, dword [esp + 0x1c]
add esp, 8
push eax
mov ecx, ebx
call fcn.00447e40
mov ecx, dword [esp + 0x1c]
push ecx
mov ecx, ebx
call fcn.00449d90
mov edx, dword [esp + 0x14]
push ebx
push edx
call fcn.00467710
lea esi, [edi + 0x55c]
add esp, 8
mov ecx, esi
call fcn.00446f40
cmp dword [edi + 0xb1c], 0
jne 0x5010bc
mov eax, dword [ebp]
mov edx, dword [eax + 0x14]
push str.No_output_encryptor_
mov ecx, ebp
call edx
xor al, al
jmp 0x501395
push ebp
push esi
mov ecx, ebx
call fcn.0051d090
push eax
mov ecx, ebx
call fcn.00446f60
push eax
lea eax, [edi + 0xbb4]
push eax
lea ecx, [edi + 0x1198]
push ecx
mov ecx, dword [edi + 0xb1c]
call fcn.004da700
mov ecx, esi
call fcn.0051d090
mov ecx, ebx
mov esi, eax
call fcn.0051d090
cmp esi, eax
je 0x50118a
mov edx, dword [ebp]
mov eax, dword [edx + 0x14]
push str.Size_of_encrypted_data_changed_
mov ecx, ebp
call eax
mov ecx, ebx
call fcn.0051d090
push eax
push str.unencryptedPacketSize
mov ecx, ebp
call fcn.004373b0
lea ecx, [edi + 0x55c]
call fcn.0051d090
push eax
push str.encryptedPacketSize
mov ecx, ebp
call fcn.004373b0
push 0x58d6a0
push str.Failed_to_encrypt.
push str.TRAN
mov ecx, edi
call fcn.004fd580
xor al, al
jmp 0x501395
mov ecx, dword [esp + 0x28]
push ecx
call fcn.0054c450
mov edx, dword [esp + 0x1c]
add esp, 8
push edx
mov ecx, ebx
call fcn.00447e40
mov eax, dword [esp + 0x1c]
push eax
mov ecx, ebx
call fcn.00449d90
mov ecx, dword [esp + 0x14]
push ebx
push ecx
call fcn.00467710
add esp, 8
cmp dword [edi + 0xb00], 0xd
je 0x5012b8
lea ecx, [edi + 0x524]
call fcn.00446f40
xor esi, esi
cmp dword [edi + 0xae4], esi
je 0x501276
movzx edx, byte [edi + 0x667]
mov cl, byte [edi + 0x665]
mov al, byte [edi + 0x666]
mov byte [esp + 0x14], dl
movzx edx, byte [edi + 0x664]
mov byte [esp + 0x16], cl
lea ecx, [esp + 0x48]
mov byte [esp + 0x15], al
mov byte [esp + 0x17], dl
call fcn.00447910
lea eax, [esp + 0x14]
mov ecx, ebx
mov dword [esp + 0x8d0], 1
mov dword [esp + 0x84c], 3
mov dword [esp + 0x4c], esi
mov dword [esp + 0x44c], esi
mov dword [esp + 0x50], eax
mov dword [esp + 0x450], 4
call fcn.00446f60
mov ecx, ebx
mov dword [esp + 0x54], eax
call fcn.0051d090
mov ecx, dword [edi + 0x1a80]
mov dword [esp + 0x454], eax
push ebp
lea eax, [edi + 0x524]
push eax
lea esi, [edi + 0x1aa0]
push ecx
mov ecx, esi
call fcn.0051d090
push eax
mov ecx, esi
call fcn.00446f60
push eax
lea edx, [esp + 0x5c]
push edx
call fcn.00473230
add esp, 0x18
lea ecx, [esp + 0x48]
mov dword [esp + 0x8d0], 0xffffffff
call fcn.00447930
cmp dword [edi + 0xb00], 0
je 0x50128d
lea eax, [edi + 0x55c]
push eax
mov ecx, ebx
call fcn.00447dd0
lea esi, [edi + 0x524]
mov ecx, esi
call fcn.0051d090
test eax, eax
je 0x5012b8
cmp dword [edi + 0xae4], 6
jne 0x5012b0
push 8
mov ecx, esi
call fcn.004471a0
push esi
mov ecx, ebx
call fcn.00449d90
mov esi, dword [edi + 0x66c]
test esi, esi
je 0x5012cf
cmp esi, 0xbb8
jae 0x5012cf
mov esi, 0xbb8
mov eax, dword [esp + 0x3c]
test eax, eax
je 0x5012de
mov byte [eax + 0x94], 1
mov ecx, dword [esp + 0x44]
push ecx
push ebp
lea edx, [esp + 0x34]
push edx
push esi
push 0
mov ecx, ebx
mov dword [esp + 0x40], 0
call fcn.0051d090
push eax
push ebx
lea ecx, [edi + 0x46c]
call fcn.00508440
mov byte [esp + 0x1b], al
test al, al
jne 0x50135f
cmp dword [esp + 0x2c], 0
jbe 0x501350
mov ecx, ebx
call fcn.0051d090
push eax
push str.packetSize
mov ecx, ebp
call fcn.004373b0
mov eax, dword [esp + 0x2c]
push eax
push str.numBytesSent
mov ecx, ebp
call fcn.004373b0
push esi
push str.idleTimeoutMs
mov ecx, ebp
call fcn.004373b0
push str.Failed_to_send_entire_SSH_packet.
jmp 0x501355
push str.SSH_SendBytes_failed.
mov edx, dword [ebp]
mov eax, dword [edx + 0x14]
mov ecx, ebp
call eax
mov eax, dword [esp + 0x3c]
test eax, eax
je 0x50136e
mov byte [eax + 0x94], 0
inc dword [edi + 0x664]
cmp byte [esp + 0x1b], 0
jne 0x501391
push 0x58d6a0
push str.Failed_to_send.
push str.TRAN
mov ecx, edi
call fcn.004fd580
mov al, byte [esp + 0x1b]
mov ecx, dword [esp + 0x8c8]
mov dword fs:[0], ecx
pop ecx
pop edi
pop esi
pop ebp
pop ebx
mov ecx, dword [esp + 0x8b0]
xor ecx, esp
call fcn.005550b0
add esp, 0x8c0
ret 0x18