Function at 0x404f8c
Capabilities:
Connect socket
Resolve dns

Disassembly:
push ebp
mov ebp, esp
push ebx
push edi
push esi
and esp, 0xfffffff8
mov eax, 0x13c48
call fcn.00401589
mov eax, dword [edx]
mov edi, edx
movzx ebx, word [edx + 0x20]
mov dword [esp + 0x1c], ecx
lea ecx, [esp + 0x68]
mov esi, dword [ebp + 4]
mov dword [esp], eax
mov eax, dword [edx + 4]
mov dword [esp + 0x14], eax
mov eax, dword [edx + 0x18]
mov edx, dword [edx + 0x1c]
mov dword [ecx + 4], edx
mov dword [ecx], eax
and dword [ecx + 0xc], 0
and dword [ecx + 8], 0
sub esp, 4
push 0x20
pop edx
push 2
call fcn.004109a3
pop ecx
pop edx
test eax, eax
je 0x405040
movsd xmm0, qword [esp + 0x68]
movsd xmm1, qword [esp + 0x70]
mov dword [esp + 4], esi
mov esi, eax
lea ecx, [esp + 0x50]
movsd qword [eax + 8], xmm1
movsd qword [eax], xmm0
and dword [eax + 0x18], 0
and dword [eax + 0x1c], 0
mov edx, dword [edi + 0x18]
push dword [esp + 0x14]
push dword [esp + 4]
push dword [edi + 0x1c]
call fcn.0040e5b0
add esp, 0xc
lea eax, [esp + 0x50]
movzx eax, word [eax + 8]
test ax, ax
mov word [esp], ax
je 0x405052
mov ecx, esi
call fcn.00410a81
movzx edi, word [esp]
jmp 0x405114
lea ecx, [esp + 0x68]
call fcn.0041097b
mov di, 2
jmp 0x405114
mov eax, dword [esp + 0x50]
and dword [esp + 0x2c], 0
and dword [esp + 0x28], 0
mov dword [esp + 0x14], edi
mov cx, 0x64
xor edi, edi
mov dword [esp + 8], esi
mov dword [esp], eax
mov eax, dword [esp + 0x54]
mov dword [esp + 0xc], eax
mov eax, ebx
cmp ax, 0x64
jb 0x40508b
xor edx, edx
add edi, 2
div cx
jmp 0x40507b
cmp ax, 0xa
lea esi, [esp + 0x40]
lea eax, [esp + 0x28]
sbb edi, 0
mov ecx, esi
mov dword [esi], eax
add edi, 2
mov edx, edi
call fcn.00410aa1
xor edx, edx
lea eax, [esp + 0x28]
lea ecx, [esp + 0x40]
inc edx
mov dword [esi], eax
call fcn.00410aa1
lea eax, [esp + 0x28]
mov di, 2
cmp dword [eax + 4], 0
jne 0x4050ec
mov eax, dword [esp + 0x14]
lea esi, [esp + 0x78]
mov ecx, esi
mov edx, dword [eax + 0x18]
push dword [esp + 0x28]
push dword [eax + 0x1c]
call fcn.004047e9
pop eax
pop ecx
movzx edi, word [esi + 8]
test di, di
je 0x405124
mov eax, dword [esp + 0x14]
mov esi, dword [esp + 0xc]
mov edx, dword [esp]
mov ecx, dword [eax + 0x18]
mov eax, dword [eax + 0x1c]
inc esi
push dword [esp + 4]
push 0
push esi
call dword [eax + 8]
add esp, 0xc
mov ecx, dword [esp + 8]
call fcn.00410a81
mov eax, dword [esp + 0x1c]
mov word [eax + 8], di
lea esp, [ebp - 0xc]
pop esi
pop edi
pop ebx
pop ebp
ret
mov eax, dword [esp + 0x78]
mov ecx, dword [esp + 0x7c]
lea edi, [esp + 0x40]
mov dword [esp + 0x4c], edi
mov dword [esp + 0x40], eax
mov dword [esp + 0x44], ecx
and dword [esp + 0x48], 0
push 0xf
pop esi
mov cx, 0x64
cmp bx, 0x64
jb 0x40516c
mov eax, ebx
xor edx, edx
div cx
movzx edx, dx
mov ebx, eax
movzx edx, word [edx + edx + str.00010203040506070809101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899]
mov word [esp + esi + 0x28], dx
add esi, 0xfffffffe
jmp 0x405148
cmp bx, 9
ja 0x40517c
add bl, 0x30
mov byte [esp + esi + 0x29], bl
inc esi
jmp 0x40518c
movzx eax, bx
movzx eax, word [eax + eax + str.00010203040506070809101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899]
mov word [esp + esi + 0x28], ax
lea ecx, [esp + esi + 0x28]
push 0x11
pop edx
lea eax, [esp + 0x4c]
sub edx, esi
push eax
call fcn.004106cb
pop ecx
test ax, ax
jne 0x4051c4
lea ecx, [esp + 0x84]
mov edx, 0x42bc08
mov dword [ecx], edi
push 1
call fcn.0040f94a
pop ecx
test ax, ax
je 0x4052ab
lea edi, [esp + 0x24]
xor ebx, ebx
and dword [edi], 0
push edi
push 0x42bb08
push dword [esp + 0x18]
push dword [esp + 0xc]
call sub.WS2_32.dll_getaddrinfo
cmp ax, 0x276d
jne 0x405244
test bl, 1
jne 0x40547d
call fcn.00404ba0
mov bl, 1
test ax, ax
je 0x4051cd
mov edi, dword [esp + 0x14]
mov ebx, dword [esp + 4]
mov esi, eax
mov edx, dword [esp + 0x10]
mov ecx, dword [edi + 0x18]
mov eax, dword [edi + 0x1c]
push ebx
push 0
push dword [esp + 0x20]
call dword [eax + 8]
add esp, 0xc
mov ecx, dword [edi + 0x18]
mov eax, dword [edi + 0x1c]
mov edi, dword [esp + 0xc]
mov edx, dword [esp]
inc edi
push ebx
push 0
push edi
call dword [eax + 8]
add esp, 0xc
mov ecx, dword [esp + 8]
call fcn.00410a81
mov edi, esi
jmp 0x405114
movzx eax, ax
cmp eax, 0x2afb
je 0x4052c0
mov esi, dword [esp + 0x14]
mov ebx, dword [esp + 0x18]
cmp eax, 8
je 0x40543f
cmp eax, 0x273f
je 0x405309
cmp eax, 0x277d
je 0x40534b
cmp eax, 0x2af9
je 0x40538d
cmp eax, 0x2afa
je 0x4053cf
test eax, eax
jne 0x405411
xor esi, esi
mov edi, dword [edi]
test edi, edi
je 0x405425
cmp dword [edi + 0x18], 1
sbb esi, 0xffffffff
add edi, 0x1c
jmp 0x405295
mov eax, dword [esp + 0x40]
mov ecx, dword [esp + 0x48]
mov dword [esp + 0x10], eax
mov dword [esp + 0x18], ecx
jmp 0x4051c4
mov esi, dword [esp + 0x14]
mov edi, dword [esp + 4]
mov edx, dword [esp + 0x10]
mov ecx, dword [esi + 0x18]
mov eax, dword [esi + 0x1c]
push edi
push 0
push dword [esp + 0x20]
call dword [eax + 8]
add esp, 0xc
mov ecx, dword [esi + 0x18]
mov eax, dword [esi + 0x1c]
mov esi, dword [esp + 0xc]
mov edx, dword [esp]
inc esi
push edi
push 0
push esi
call dword [eax + 8]
add esp, 0xc
mov ecx, dword [esp + 8]
call fcn.00410a81
mov di, 0x35
jmp 0x405114
mov edi, dword [esp + 4]
mov ecx, dword [esi + 0x18]
mov eax, dword [esi + 0x1c]
mov edx, dword [esp + 0x10]
push edi
push 0
push ebx
call dword [eax + 8]
add esp, 0xc
mov ecx, dword [esi + 0x18]
mov eax, dword [esi + 0x1c]
mov esi, dword [esp + 0xc]
mov edx, dword [esp]
inc esi
push edi
push 0
push esi
call dword [eax + 8]
add esp, 0xc
mov ecx, dword [esp + 8]
call fcn.00410a81
mov di, 0x26
jmp 0x405114
mov edi, dword [esp + 4]
mov ecx, dword [esi + 0x18]
mov eax, dword [esi + 0x1c]
mov edx, dword [esp + 0x10]
push edi
push 0
push ebx
call dword [eax + 8]
add esp, 0xc
mov ecx, dword [esi + 0x18]
mov eax, dword [esi + 0x1c]
mov esi, dword [esp + 0xc]
mov edx, dword [esp]
inc esi
push edi
push 0
push esi
call dword [eax + 8]
add esp, 0xc
mov ecx, dword [esp + 8]
call fcn.00410a81
mov di, 0x37
jmp 0x405114
mov ecx, dword [esi + 0x18]
mov edi, dword [esp + 4]
mov eax, dword [esi + 0x1c]
mov edx, dword [esp + 0x10]
push edi
push 0
push ebx
call dword [eax + 8]
add esp, 0xc
mov ecx, dword [esi + 0x18]
mov eax, dword [esi + 0x1c]
mov esi, dword [esp + 0xc]
mov edx, dword [esp]
inc esi
push edi
push 0
push esi
call dword [eax + 8]
add esp, 0xc
mov ecx, dword [esp + 8]
call fcn.00410a81
mov di, 0x36
jmp 0x405114
mov edi, dword [esp + 4]
mov ecx, dword [esi + 0x18]
mov eax, dword [esi + 0x1c]
mov edx, dword [esp + 0x10]
push edi
push 0
push ebx
call dword [eax + 8]
add esp, 0xc
mov ecx, dword [esi + 0x18]
mov eax, dword [esi + 0x1c]
mov esi, dword [esp + 0xc]
mov edx, dword [esp]
inc esi
push edi
push 0
push esi
call dword [eax + 8]
add esp, 0xc
mov ecx, dword [esp + 8]
call fcn.00410a81
mov di, 0x34
jmp 0x405114
mov ecx, dword [esi + 0x18]
mov eax, dword [esi + 0x1c]
mov edx, dword [esp + 0x10]
mov edi, dword [esp + 4]
push edi
push 0
push ebx
jmp 0x405496
push 0x1c
pop ecx
mov eax, esi
mul ecx
jno 0x4054c6
push dword [esp + 0x24]
call sub.WS2_32.dll_freeaddrinfo
mov esi, dword [esp + 0x14]
mov edi, dword [esp + 4]
mov ecx, dword [esi + 0x18]
mov eax, dword [esi + 0x1c]
mov edx, dword [esp + 0x10]
push edi
push 0
push ebx
call dword [eax + 8]
add esp, 0xc
mov ecx, dword [esi + 0x18]
mov eax, dword [esi + 0x1c]
mov esi, dword [esp + 0xc]
mov edx, dword [esp]
inc esi
push edi
push 0
push esi
call dword [eax + 8]
add esp, 0xc
mov ecx, dword [esp + 8]
call fcn.00410a81
jmp 0x405049
mov esi, dword [esp + 0x14]
mov edi, dword [esp + 4]
mov edx, dword [esp + 0x10]
mov ecx, dword [esi + 0x18]
mov eax, dword [esi + 0x1c]
push edi
push 0
push dword [esp + 0x20]
call dword [eax + 8]
add esp, 0xc
mov ecx, dword [esi + 0x18]
mov eax, dword [esi + 0x1c]
mov esi, dword [esp + 0xc]
mov edx, dword [esp]
inc esi
push edi
push 0
push esi
call dword [eax + 8]
add esp, 0xc
mov ecx, dword [esp + 8]
call fcn.00410a81
mov di, 0xe
jmp 0x405114
test eax, eax
je 0x4054e5
sub esp, 4
mov ecx, dword [esp + 0xc]
mov edx, eax
push 2
call fcn.004109a3
pop ecx
pop edx
test eax, eax
jne 0x4054e8
jmp 0x405432
push 0xfffffffffffffffc
pop eax
mov ecx, dword [esp + 8]
xor edi, edi
lea ebx, [esp + 0x24]
mov dword [ecx + 0x10], eax
mov dword [ecx + 0x14], esi
mov esi, ecx
mov ebx, dword [ebx]
test ebx, ebx
je 0x4055e2
mov ecx, dword [ebx + 0x18]
test ecx, ecx
je 0x4055da
imul eax, edi, 0x1c
add eax, dword [esi + 0x10]
cmp word [ecx], 2
je 0x405533
mov edx, dword [ecx + 0x18]
mov dword [esp + 0x5a8], edx
movsd xmm0, qword [ecx + 0x10]
movsd qword [esp + 0x5a0], xmm0
movsd xmm0, qword [ecx]
movsd xmm1, qword [ecx + 8]
mov edx, dword [esp + 0x5a8]
movsd qword [esp + 0x598], xmm1
movsd qword [esp + 0x590], xmm0
mov dword [eax + 0x18], edx
movsd xmm0, qword [esp + 0x5a0]
movsd qword [eax + 0x10], xmm0
movsd xmm0, qword [esp + 0x590]
movsd xmm1, qword [esp + 0x598]
movsd qword [eax + 8], xmm1
movsd qword [eax], xmm0
mov eax, dword [ebx + 0x14]
test eax, eax
je 0x4055d9
cmp dword [esi + 0x18], 0
jne 0x4055d9
mov dword [esp + 0x20], edi
xor edi, edi
dec edi
cmp byte [eax + edi + 1], 0
lea edi, [edi + 1]
jne 0x405595
lea ecx, [esp + 0x5c]
mov edx, esi
push edi
push eax
mov eax, 0x42b574
push eax
call fcn.00404a3b
add esp, 0xc
mov edi, esi
movzx esi, word [esp + 0x64]
test si, si
jne 0x4057be
mov eax, dword [esp + 0x5c]
mov ecx, dword [esp + 0x60]
mov esi, edi
mov dword [edi + 0x18], eax
mov dword [edi + 0x1c], ecx
mov edi, dword [esp + 0x20]
inc edi
add ebx, 0x1c
jmp 0x4054fa
push dword [esp + 0x24]
call sub.WS2_32.dll_freeaddrinfo
mov ebx, dword [esp + 0x14]
mov edi, dword [esp + 4]
mov edx, dword [esp + 0x10]
mov eax, dword [ebx + 0x1c]
mov ecx, dword [ebx + 0x18]
push edi
push 0
push dword [esp + 0x20]
call dword [eax + 8]
add esp, 0xc
mov ecx, dword [ebx + 0x18]
mov eax, dword [ebx + 0x1c]
mov ebx, dword [esp + 0xc]
mov edx, dword [esp]
inc ebx
push edi
push 0
push ebx
call dword [eax + 8]
add esp, 0xc
mov eax, dword [esi + 0x14]
test eax, eax
je 0x4057ae
mov edx, dword [esi + 0x10]
xor ecx, ecx
mov dword [esp + 0x10], edx
cmp ecx, eax
je 0x405822
mov esi, eax
imul eax, ecx, 0x1c
mov dword [esp + 4], ecx
xor ebx, ebx
movzx ecx, word [edx + eax + 0x1a]
movzx edi, word [edx + eax]
mov word [esp + 0xa0], cx
mov word [esp + 0xc], di
movsd xmm0, qword [edx + eax + 0x12]
movsd qword [esp + 0x98], xmm0
movsd xmm0, qword [edx + eax + 0xa]
movsd qword [esp + 0x90], xmm0
movsd xmm0, qword [edx + eax + 2]
movzx eax, di
mov dword [esp], eax
movsd qword [esp + 0x88], xmm0
push 0
push 0
push 0
push 6
push 1
push dword [esp + 0x14]
call sub.WS2_32.dll_WSASocketW
cmp eax, 0xffffffff
jne 0x4056d5
call sub.WS2_32.dll_WSAGetLastError
cmp ax, 0x276d
jne 0x405786
test bl, 1
jne 0x4057b5
call fcn.00404ba0
mov bl, 1
test ax, ax
je 0x405692
mov edi, eax
jmp 0x40576c
mov edi, eax
movzx edx, word [esp + 0xc]
movzx eax, word [esp + 0xa0]
movsd xmm0, qword [esp + 0x98]
movsd xmm2, qword [esp + 0x88]
movsd xmm1, qword [esp + 0x90]
lea ecx, [esp + 0x592]
mov word [esp + 0x590], dx
mov word [ecx + 0x18], ax
movsd qword [ecx + 0x10], xmm0
movsd qword [ecx + 8], xmm1
movsd qword [ecx], xmm2
cmp dx, 2
push 0x1c
pop eax
push 0x10
pop ecx
cmove eax, ecx
push eax
lea eax, [esp + 0x594]
push eax
push edi
call sub.WS2_32.dll_connect
test eax, eax
je 0x405834
call sub.WS2_32.dll_WSAGetLastError
add eax, 0xffffd8c1
mov bx, 0xe
cmp ax, 0x12
ja 0x405763
movzx eax, ax
movzx ebx, word [eax + eax + 0x42bdc6]
mov ecx, edi
call fcn.00410abc
mov edi, ebx
mov ecx, dword [esp + 4]
mov edx, dword [esp + 0x10]
mov eax, esi
inc ecx
cmp di, 0x42
je 0x405636
jmp 0x40510b
movzx eax, ax
cmp eax, 0x2728
je 0x405807
cmp eax, 0x273b
je 0x405810
cmp eax, 0x273f
je 0x405819
cmp eax, 0x2747
jne 0x4057b5
mov di, 0x15
jmp 0x40510b
mov ecx, esi
jmp 0x4053c1
mov di, 0xe
jmp 0x40510b
push dword [esp + 0x24]
call sub.WS2_32.dll_freeaddrinfo
mov ebx, dword [esp + 0x14]
mov edx, dword [esp + 0x10]
mov ecx, dword [ebx + 0x18]
mov eax, dword [ebx + 0x1c]
push dword [esp + 4]
push 0
push dword [esp + 0x20]
call dword [eax + 8]
add esp, 0xc
mov ecx, dword [ebx + 0x18]
mov eax, dword [ebx + 0x1c]
mov ebx, dword [esp + 0xc]
mov edx, dword [esp]
inc ebx
push dword [esp + 4]
push 0
push ebx
call dword [eax + 8]
add esp, 0xc
mov ecx, edi
jmp 0x405238
mov di, 0x12
jmp 0x40510b
mov di, 0x28
jmp 0x40510b
mov di, 0x26
jmp 0x40510b
mov ecx, dword [esp + 8]
call fcn.00410a81
mov di, 0x42
jmp 0x405114
mov ecx, dword [esp + 8]
call fcn.00410a81
mov eax, dword [esp + 0x14]
lea esi, [esp + 0xad8]
mov ecx, dword [eax + 8]
mov eax, dword [eax + 0xc]
mov dword [esi + 0x13f8], edi
mov dword [esp + 0x18], ecx
mov dword [esp + 0x10], eax
mov eax, 0xd58
lea ecx, [esp + 0x590]
lea ebx, [ecx + eax]
push eax
push 0
push ecx
call fcn.00403060
add esp, 0xc
mov dword [esi - 4], 0x3030301
push 0xbe8
push 0
push ebx
call fcn.00403060
add esp, 0xc
mov dword [esi + 0x810], 0x42def4
mov dword [esi + 0x1244], 0x42ec94
and dword [esi + 0x1070], 0
push 0x5a
push 0x42d74c
push esi
call fcn.0040307b
add esp, 0xc
mov eax, 0x42d708
mov byte [esi + 0x60], 0x2d
mov dword [esi + 0x808], 0x4243f8
mov dword [esi + 0x7c0], 0x424260
mov dword [esi + 0x7bc], eax
mov dword [esi + 0x7c4], 0x413978
movsd xmm0, qword [esi + 0x7c0]
movsd qword [esi + 0x13e8], xmm0
mov dword [esi + 0x13f0], eax
push 0xffffffffffffffe8
pop eax
mov ecx, dword [eax + 0x42d7c0]
mov dword [esp + eax + 0x1228], ecx
mov dword [esp + eax + 0x1cd8], ecx
add eax, 4
jne 0x4058ff
lea esi, [esp + 0x590]
mov ecx, esi
mov dword [esi + 0xc98], ebx
mov dword [esi + 0xcb4], 0x418896
mov dword [esi + 0xcb8], 0x41915f
mov dword [esi + 0xcbc], 0x419595
call fcn.004187dc
pushfd
pop eax
mov ecx, eax
xor eax, 0x200000
push eax
popfd
pushfd
pop eax
mov edx, 0
cmp ecx, eax
je 0x405965
mov edx, 1
test edx, edx
mov dword [esi + 0xcfc], 0x42d7c0
mov dword [esi + 0xd00], 0x42d7d0
mov dword [esp + 0xc], edx
je 0x405a12
xor eax, eax
cpuid
test eax, eax
je 0x4059a9
xor eax, eax
inc eax
cpuid
not ecx
test ecx, 0x2080000
jne 0x4059a9
mov dword [esp + 0x125c], 0x42d834
jmp 0x4059b4
mov dword [esp + 0x125c], 0x42d928
xor eax, eax
cpuid
test eax, eax
mov dword [esp + 0x127c], 0x42d7e0
mov dword [esp + 0x1280], 0x42d7f0
je 0x4059ee
xor eax, eax
inc eax
cpuid
not ecx
test ecx, 0x2080000
jne 0x4059ee
mov dword [esp + 0x1258], 0x42d900
jmp 0x4059f9
mov dword [esp + 0x1258], 0x42d948
xor eax, eax
cpuid
test eax, eax
je 0x405a3e
xor eax, eax
inc eax
cpuid
mov eax, 0x42051f
test cl, 2
je 0x405a3e
jmp 0x405a43
mov dword [esp + 0x125c], 0x42d928
mov dword [esp + 0x127c], 0x42d7e0
mov dword [esp + 0x1280], 0x42d7f0
mov dword [esp + 0x1258], 0x42d948
mov eax, 0x420e35
cmp dword [esp + 0xc], 0
mov dword [esp + 0x1268], eax
mov dword [esp + 0x1274], 0x42d6e8
mov dword [esp + 0x1278], 0x42d6f8
mov dword [esp + 0x1260], 0x42d854
mov dword [esp + 0x1264], 0x42d914
mov dword [esp + 0x1284], 0x42d800
mov dword [esp + 0x1288], 0x42d810
je 0x405aab
xor eax, eax
cpuid
test eax, eax
je 0x405aab
xor eax, eax
inc eax
cpuid
mov eax, 0x41a2d8
bt edx, 0x1a
jb 0x405ab0
mov eax, 0x41ce59
lea ecx, [esp + 0x1ee8]
mov dword [ecx - 0xc7c], eax
mov dword [ecx - 0xc78], 0x41d9d3
movzx esi, byte [ecx - 0x13b0]
lea eax, [esi + esi]
push eax
lea eax, [esp + 0xadc]
push eax
push ecx
call fcn.0040307b
add esp, 0xc
lea eax, [esi - 6]
mov dword [esp + 8], esi
cmp eax, 1
ja 0x405d3e
mov eax, dword [0x42b598]
mov ecx, dword [fcn.00404905]
mov dword [esp + 4], eax
mov dword [esp], ecx
mov eax, dword [esp + 8]
mov ecx, dword [esp + 4]
lea esi, [esp + 0x88]
mov edx, esi
mov ebx, eax
add bl, 0xfb
push 4
call dword [esp + 4]
add esp, 4
movzx ebx, bl
mov eax, ebx
mul dword [esi]
cmp eax, ebx
jae 0x405b85
mov ecx, eax
mov eax, dword [esp + 8]
mov edi, ebx
mov bl, 5
sub bl, al
add al, 0xfa
mov byte [esp + 0x20], bl
movzx ebx, byte [esp + 0x20]
cmp byte [esp + 0x20], al
jbe 0x405b5e
sub ebx, edi
mov eax, edi
cmp ebx, edi
jb 0x405b5e
movzx eax, bl
mov ebx, edi
div bl
movzx ebx, ah
lea esi, [esp + 0x88]
cmp ecx, ebx
jae 0x405b85
mov ecx, dword [esp + 4]
mov edx, esi
push 4
call dword [esp + 4]
add esp, 4
mov eax, edi
mul dword [esp + 0x88]
mov ecx, eax
jmp 0x405b65
add dl, 6
mov byte [esp + 0xb38], dl
push 0x18
pop ecx
lea edi, [esp + 0xad8]
lea esi, [esp + 0x1ee8]
xor ebx, ebx
rep movsd dword es:[edi], dword [esi]
xor edi, edi
xor esi, esi
cmp ebx, 5
je 0x405bde
mov ecx, dword [esp + 4]
lea edx, [esp + 0x88]
push 1
call dword [esp + 4]
add esp, 4
movzx eax, byte [esp + 0x88]
and eax, 1
add esi, eax
neg eax
push 4
pop edx
mov ecx, ebx
inc ebx
shl edx, cl
and edx, eax
or edi, edx
jmp 0x405ba8
lea edx, [esp + 0x1f48]
lea ebx, [esp + 0x590]
lea eax, [esp + 0x5f9d]
mov dword [edx - 0xca4], esi
mov dword [edx - 0xca8], edi
mov ecx, ebx
push 0x4055
push eax
push 0x4145
call fcn.00418904
add esp, 0xc
mov esi, dword [esp + 0x10]
push esi
push dword [esp + 0x1c]
lea eax, [esp + 0x90]
push eax
call fcn.0040307b
add esp, 0xc
xor eax, eax
mov ecx, ebx
xor edx, edx
mov byte [esp + esi + 0x88], al
push 0
push 0
push 0
call fcn.00418904
add esp, 0xc
movzx eax, word [ebx + 0x544]
mov word [ebx + 0x38], ax
xor eax, eax
mov byte [ebx + 0x70a], al
mov esi, dword [ebx + 0x53c]
test esi, esi
jne 0x405ce4
mov esi, dword [esp + 0x121c]
test esi, esi
jne 0x405c8a
mov esi, dword [esp + 0x1220]
test esi, esi
jne 0x405c8a
mov esi, dword [esp + 0x1214]
test esi, esi
je 0x4061d7
lea eax, [esp + 0xa44]
mov dword [eax], 0x42d95c
lea eax, [esp + 0xa48]
mov ebx, dword [esi + 4]
shr ebx, 8
and ebx, 0x7f
push ebx
push 0
push eax
call fcn.00403060
add esp, 0xc
lea edi, [esp + 0xa88]
push ebx
xor ebx, ebx
inc ebx
push ebx
push edi
call fcn.00403060
add esp, 0xc
mov dword [edi + 0x40], esi
push 0
push 0
lea eax, [esp + 0xa4c]
push eax
call fcn.0041f8eb
add esp, 0xc
mov esi, ebx
mov dword [edi + 0x44], ebx
cmp dword [esp + 0xad0], 0
jne 0x405dc5
cmp dword [esp + 0xc], 0
je 0x405dba
xor eax, eax
cpuid
test eax, eax
je 0x405dba
xor eax, eax
inc eax
cpuid
bt ecx, 0x1e
jae 0x405dba
lea eax, [esp + 0xa44]
push eax
call fcn.0041fdb9
pop ecx
test eax, eax
je 0x405db3
mov dword [esp + 0xacc], 2
push 2
pop esi
jmp 0x405dba
mov eax, dword [esp + 8]
mov edi, dword [fcn.00404905]
mov ecx, dword [0x42b598]
xor esi, esi
lea edx, [eax - 7]
mov dword [esp], edi
lea edi, [esp + 0x88]
mov dword [esp + 4], ecx
mov ebx, edx
sub ebx, 1
jb 0x405b05
mov eax, dword [0x42b598]
inc edx
mov ecx, edi
mov dword [esp + 0x88], eax
mov eax, dword [fcn.00404905]
mov dword [esp + 0x8c], eax
call fcn.00410acb
add eax, esi
movzx ecx, word [esp + esi*2 + 0x1ef4]
movzx edx, word [esp + eax*2 + 0x1ef4]
mov word [esp + esi*2 + 0x1ef4], dx
mov word [esp + eax*2 + 0x1ef4], cx
inc esi
mov edx, ebx
jmp 0x405d63
mov esi, dword [esp + 0xacc]
mov dword [esp + 0xad0], 1
cmp esi, 1
jg 0x405df0
cmp byte [esp + 0x5c0], 0
je 0x405ec7
mov byte [esp + 0x5c0], 0
mov dword [esp + 0x590], 8
jmp 0x405ec7
lea eax, [esp + 0x88]
mov byte [esp + 0xd57], 0
push eax
call sub.msvcrt.dll_strlen
pop ecx
inc eax
cmp eax, 0x101
jb 0x405e34
cmp byte [esp + 0x5c0], 0
je 0x405ec7
mov byte [esp + 0x5c0], 0
mov dword [esp + 0x590], 1
jmp 0x405ec7
lea esi, [esp + 0xb39]
push eax
lea eax, [esp + 0x8c]
push eax
push esi
call fcn.0040307b
add esp, 0xc
and dword [esi - 0x58d], 0
and dword [esi - 0x591], 0
mov dword [esi - 0x589], 5
cmp byte [esi - 0x579], 1
jne 0x405e76
mov byte [esp + 0x5c0], 3
lea edi, [esp + 0x590]
mov ecx, edi
call fcn.004189c3
lea eax, [esp + 0xd80]
lea ecx, [esp + 0xe04]
xor edx, edx
mov dword [eax - 0xc], eax
mov dword [eax - 8], ecx
and dword [ecx - 4], 0
mov dword [eax - 4], 0x42c96b
xor eax, eax
mov dword [ecx + 0x290], 0x4160dd
mov byte [edi + 0x32], al
mov byte [ecx - 0x3c4], al
mov byte [ecx + 0x295], al
mov ecx, edi
call fcn.00418b5b
lea ecx, [esp + 0x590]
lea eax, [esp + 0xa0e8]
mov dword [esp + 0x1ed4], ecx
mov dword [esp + 0x1ed8], 0x410b2f
mov dword [esp + 0x1edc], ecx
mov dword [esp + 0x1ee0], 0x410b73
mov dword [esp + 0x1ee4], ecx
push 0x9b58
push ecx
push eax
call fcn.0040307b
add esp, 0xc
mov eax, dword [ebp + 8]
mov ebx, dword [eax]
mov edi, dword [eax + 4]
lea eax, [esp + 0xba2c]
mov eax, dword [eax]
mov dword [esp], eax
test edi, edi
je 0x405fa1
lea ecx, [esp + 0xba2c]
push 8
pop edx
call fcn.0041986b
test eax, eax
js 0x4060d9
mov eax, dword [esp]
xor esi, esi
test byte [eax + 0x4b0], 1
mov eax, 0
je 0x405f7a
mov eax, dword [esp]
mov cl, byte [eax + 0x30]
xor eax, eax
and cl, 0xfe
cmp cl, 2
jne 0x405f78
mov edx, dword [esp]
mov ecx, dword [edx + 0x24]
mov esi, dword [edx + 0x28]
sub esi, ecx
je 0x405f7a
mov eax, dword [esp]
add ecx, dword [eax + 8]
mov eax, ecx
jmp 0x405f7a
xor esi, esi
cmp esi, edi
cmovae esi, edi
push esi
push ebx
push eax
call fcn.0040307b
add esp, 0xc
mov ecx, dword [esp]
mov edx, esi
call fcn.00418a70
add ebx, esi
sub edi, esi
test esi, esi
jns 0x405f23
jmp 0x4060d9
mov eax, dword [esp]
cmp byte [eax + 0x30], 0
je 0x405fbe
mov eax, dword [esp]
test byte [eax + 0x4b0], 1
je 0x405fbe
mov ecx, dword [esp]
call fcn.00418a97
push 0x18
pop edx
lea ecx, [esp + 0xba2c]
call fcn.0041986b
test eax, eax
js 0x4060d9
mov eax, dword [ebp + 8]
and dword [eax + 4], 0
lea eax, [esp + 0x188]
push 0x408
push 0
push eax
call fcn.00403060
add esp, 0xc
mov edi, dword [esp]
xor ebx, ebx
xor eax, eax
cmp eax, 0x400
je 0x406079
add ebx, eax
mov ecx, 0x400
mov esi, ebx
sub esi, ecx
cmovb esi, ebx
cmovae ebx, eax
sub ebx, ecx
je 0x40611b
lea ecx, [esp + 0xba2c]
push 0x10
pop edx
call fcn.0041986b
test eax, eax
js 0x4060f4
lea eax, [esp + 0x190]
mov ecx, edi
lea edx, [esp + 0x28]
neg ebx
add esi, eax
call fcn.00418aea
mov ecx, dword [esp + 0x28]
cmp ecx, ebx
cmovb ebx, ecx
push ebx
push eax
push esi
call fcn.0040307b
add esp, 0xc
mov ecx, edi
mov edx, ebx
call fcn.00418b24
test ebx, ebx
js 0x4060f4
je 0x40611b
add dword [esp + 0x18c], ebx
lea ecx, [esp + 0x188]
call fcn.00410c44
mov esi, edx
mov edx, dword [ebp + 8]
lea ecx, [esp + 0x88]
push esi
push eax
call fcn.00404c5c
pop eax
pop ecx
movzx ebx, word [esp + 0x8c]
test bx, bx
jne 0x406102
mov ecx, dword [esp + 0x88]
mov ebx, dword [esp + 0x188]
mov eax, dword [esp + 0x18c]
add ebx, ecx
sub eax, ecx
and ebx, 0x3ff
mov dword [esp + 0x188], ebx
mov dword [esp + 0x18c], eax
jmp 0x405ffa
lea ecx, [esp + 0xa0e8]
call fcn.00410bb1
mov eax, dword [esp + 0x1c]
mov word [eax + 8], 5
jmp 0x40511c
cmp dword [esp + 0xa0e8], 0
mov bx, 5
je 0x40611b
lea ecx, [esp + 0xa0e8]
call fcn.00410bb1
mov eax, dword [esp + 0x1c]
mov word [eax + 8], bx
jmp 0x40511c
lea esi, [esp + 0x188]
lea edi, [esp + 0x590]
mov eax, dword [esi + 4]
test eax, eax
je 0x406183
mov ecx, esi
call fcn.00410c44
mov ebx, edx
mov edx, dword [ebp + 8]
mov ecx, edi
push ebx
push eax
call fcn.00404c5c
pop eax
pop ecx
movzx ebx, word [esp + 0x594]
test bx, bx
jne 0x406102
mov ecx, dword [esp + 0x590]
mov edx, dword [esp + 0x188]
mov eax, dword [esp + 0x18c]
add edx, ecx
sub eax, ecx
and edx, 0x3ff
mov dword [esp + 0x188], edx
mov dword [esp + 0x18c], eax
jmp 0x40612c
mov eax, dword [ebp + 8]
mov edi, dword [eax + 4]
cmp edi, 4
jae 0x4061b1
lea ecx, [esp + 0xa0e8]
call fcn.00410bb1
mov eax, dword [esp + 0x1c]
and dword [eax + 4], 0
and dword [eax], 0
mov dword [eax + 8], 5
jmp 0x40511c
mov ebx, dword [eax]
add edi, 0xfffffffc
xor esi, esi
cmp esi, edi
ja 0x40618e
lea ecx, [ebx + esi]
push 4
pop edx
push 4
push str._r_n_r_n
call fcn.004062f4
pop ecx
pop edx
test al, 1
jne 0x4061fd
inc esi
jmp 0x4061b8
cmp byte [esp + 0x5c0], 0
je 0x405ec7
mov byte [esp + 0x5c0], 0
mov dword [esp + 0x590], 2
jmp 0x405ec7
mov eax, dword [esp + 0x14]
mov ecx, dword [esp + 0x1c]
sub edi, esi
lea ebx, [ebx + esi + 4]
mov edx, dword [eax + 0x18]
push edi
push ebx
push dword [eax + 0x1c]
call fcn.00404a3b
add esp, 0xc
lea ecx, [esp + 0xa0e8]
call fcn.00410bb1
jmp 0x40511c