Function at 0x4176f0
Capabilities:
Terminate thread

Disassembly:
sub esp, 0x2ac
push ebx
push ebp
push esi
push edi
mov ebp, ecx
push 0
call dword [sym.imp.VMProtectSDK32.dll_VMProtectBeginVirtualization]
call dword [sym.imp.KERNEL32.dll_GetTickCount]
mov ebx, eax
lea eax, [esp + 0x21c]
push eax
mov ecx, ebp
and ebx, 0xff
call fcn.00418f80
mov esi, eax
test esi, esi
je 0x41774a
mov edi, dword [sym.imp.KERNEL32.dll_WaitForSingleObject]
push 0xc80
push esi
call edi
test eax, eax
je 0x41775a
push 1
push esi
call dword [sym.imp.KERNEL32.dll_TerminateThread]
push 0xbb8
push esi
call edi
pop edi
pop esi
pop ebp
mov eax, 0xa
pop ebx
add esp, 0x2ac
ret
lea ecx, [esp + 0x14]
push ecx
push esi
call dword [sym.imp.KERNEL32.dll_GetExitCodeThread]
test eax, eax
je 0x41774a
mov eax, dword [esp + 0x14]
test eax, eax
jne 0x41774a
lea edx, [esp + 0x21c]
push edx
call dword [sym.imp.MSVCRT.dll_wcslen]
mov ecx, eax
add esp, 4
xor eax, eax
mov dword [esp + 0x10], ecx
test ecx, ecx
jle 0x4177ad
lea ecx, [esp + 0x21c]
mov dl, byte [ecx]
add ecx, 2
mov byte [eax + ebp + 0x1ca4], dl
mov edx, dword [esp + 0x10]
inc eax
cmp eax, edx
jl 0x417796
mov ecx, edx
mov byte [ecx + ebp + 0x1ca4], 0
mov ecx, 0x80
xor eax, eax
lea edi, [esp + 0x1c]
rep stosd dword es:[edi], eax
or ecx, 0xffffffff
lea edi, [ebp + 0x15c8]
repne scasb al, byte es:[edi]
not ecx
sub edi, ecx
lea edx, [esp + 0x1c]
mov eax, ecx
mov esi, edi
shr ecx, 2
mov edi, edx
lea edx, [esp + 0x1c]
rep movsd dword es:[edi], dword [esi]
mov ecx, eax
xor eax, eax
and ecx, 3
rep movsb byte es:[edi], byte [esi]
lea edi, [ebp + 0x162c]
or ecx, 0xffffffff
repne scasb al, byte es:[edi]
not ecx
sub edi, ecx
mov esi, edi
mov edi, edx
mov edx, ecx
or ecx, 0xffffffff
repne scasb al, byte es:[edi]
mov ecx, edx
dec edi
shr ecx, 2
rep movsd dword es:[edi], dword [esi]
mov ecx, edx
lea edx, [esp + 0x1c]
and ecx, 3
rep movsb byte es:[edi], byte [esi]
lea edi, [ebp + 0x1690]
or ecx, 0xffffffff
repne scasb al, byte es:[edi]
not ecx
sub edi, ecx
mov esi, edi
mov edi, edx
mov edx, ecx
or ecx, 0xffffffff
repne scasb al, byte es:[edi]
mov ecx, edx
dec edi
shr ecx, 2
rep movsd dword es:[edi], dword [esi]
mov ecx, edx
xor edx, edx
and ecx, 3
rep movsb byte es:[edi], byte [esi]
lea edi, [esp + 0x1c]
or ecx, 0xffffffff
repne scasb al, byte es:[edi]
not ecx
dec ecx
test ecx, ecx
jle 0x417889
mov al, dl
mov ecx, edx
inc al
imul bl
and ecx, reloc.WS2_32.dll_closesocket
jns 0x41786a
dec ecx
or ecx, 0xfffffffc
inc ecx
add al, cl
mov cl, byte [esp + edx + 0x1c]
xor cl, al
lea edi, [esp + 0x1c]
mov byte [esp + edx + 0x1c], cl
or ecx, 0xffffffff
xor eax, eax
inc edx
repne scasb al, byte es:[edi]
not ecx
dec ecx
cmp edx, ecx
jl 0x417855
lea esi, [ebp + 0x2c50]
lea edi, [ebp + 0x29b0]
mov ecx, 0x320
xor eax, eax
push 0x20
lea edx, [esp + 0x20]
push esi
push edx
rep stosd dword es:[edi], eax
call fcn.004190a0
mov ecx, 0x80
xor eax, eax
lea edi, [esp + 0x28]
add esp, 0xc
rep stosd dword es:[edi], eax
mov eax, ebx
xor edx, edx
shl eax, 5
add eax, ebx
lea edi, [eax + eax*2]
cmp byte [esi + edx], 0
jne 0x4178e7
mov ecx, edx
mov dword [esp + 0x14], edi
and ecx, reloc.WS2_32.dll_closesocket
jns 0x4178e0
dec ecx
or ecx, 0xfffffffc
inc ecx
mov eax, edi
shr eax, cl
mov byte [esi + edx], al
inc edx
add edi, ebx
cmp edx, 0x20
jl 0x4178c7
mov edi, dword [esp + 0x10]
mov byte [ebp + 0x1ca4], 0x7b
lea eax, [edi - 2]
cmp eax, 2
jle 0x417986
mov esi, 0xffffe35c
lea ecx, [ebp + 0x1ca6]
sub esi, ebp
mov dl, byte [ecx]
mov eax, edx
and eax, 0xff
add eax, esi
add eax, ecx
and eax, 0x8000001f
jns 0x41792c
dec eax
or eax, 0xffffffe0
inc eax
mov al, byte [eax + ebp + 0x2c50]
xor al, dl
cmp al, 0x2d
mov byte [ecx], al
mov byte [esp + 0x18], al
je 0x41797b
cmp al, 0x61
jl 0x417947
cmp al, 0x7a
jle 0x41797b
cmp al, 0x41
jl 0x41794f
cmp al, 0x5a
jle 0x41797b
cmp al, 0x30
jl 0x417957
cmp al, 0x39
jle 0x41797b
mov edx, dword [esp + 0x18]
mov eax, ebx
and eax, 0xff
and edx, 0xff
xor eax, edx
mov edi, 0x19
cdq
idiv edi
mov edi, dword [esp + 0x10]
add dl, 0x41
mov byte [ecx], dl
inc ecx
lea eax, [edi - 2]
lea edx, [esi + ecx]
cmp edx, eax
jl 0x417913
lea edx, [ebp + 0x29b0]
mov byte [edi + ebp + 0x1ca3], 0x7d
mov ecx, 0x320
xor eax, eax
mov edi, edx
rep stosd dword es:[edi], eax
mov eax, dword [ebp + 0x3900]
mov esi, dword [ebp + 0x1ca4]
mov ecx, eax
xor ecx, esi
mov dword [edx], ecx
mov edx, dword [ebp + 0x1cac]
xor edx, eax
mov dword [ebp + 0x3010], edx
call dword [sym.imp.VMProtectSDK32.dll_VMProtectEnd]
pop edi
pop esi
pop ebp
xor eax, eax
pop ebx
add esp, 0x2ac
ret