Function at 0x4101c0
Capabilities:
Check for time delay via gettickcount
Encrypt data using speck

Disassembly:
sub esp, 0x110
push ebx
push ebp
push esi
mov esi, dword [esp + 0x134]
mov eax, 0x7fff
mov dword [esp + 0x28], edx
mov dword [esp + 0x18], ecx
mov dword [esp + 0x44], eax
push edi
mov di, word [esp + 0x130]
movzx edx, di
cmp esi, 0xffc3d44f
je 0x41020a
cmp esi, 0xffc3d44e
je 0x41020a
mov byte [esp + 0x22], 0
cmp esi, 0xffc3d44d
jne 0x41020f
mov byte [esp + 0x22], 1
mov ecx, dword [0x4fba00]
mov ebp, dword [sym.imp.KERNEL32.dll_GetTickCount]
mov ebx, dword [esp + 0x12c]
test ecx, ecx
jne 0x410233
lea eax, [esp + 0x4c]
mov dword [esp + 0x14], eax
jmp 0x4102f2
mov eax, dword [0x4fba78]
imul esi, eax, 0xd4
inc eax
add esi, ecx
xor ecx, ecx
cmp eax, dword [0x4f90f8]
mov dword [esp + 0x14], esi
cmovge eax, ecx
mov dword [0x4fba78], eax
mov eax, dword [esp + 0x134]
mov byte [esi], bl
mov byte [esi + 6], al
call ebp
mov ecx, eax
mov dword [0x4fba74], eax
sub ecx, dword [0x4fe6f4]
mov dword [0x4fe6f4], eax
movd xmm0, ecx
cvtdq2pd xmm0, xmm0
shr ecx, 0x1f
addsd xmm0, qword [ecx*8 + 0x4f32c0]
cvtpd2ps xmm0, xmm0
divss xmm0, dword [0x4f31cc]
movss dword [esi + 8], xmm0
call dword [sym.imp.USER32.dll_GetForegroundWindow]
mov esi, eax
mov eax, dword [esp + 0x14]
lea ecx, [eax + 0xc]
test esi, esi
je 0x4102d5
cmp esi, dword [0x4fba70]
je 0x4102ce
push esi
push ecx
push 0x418
push dword [0x4fb9e8]
call dword [sym.imp.USER32.dll_PostMessageW]
mov eax, dword [esp + 0x14]
jmp 0x4102e2
xor edx, edx
mov word [ecx], dx
jmp 0x4102e2
mov dword [ecx], 0x2f004e
mov dword [ecx + 4], 0x41
mov dword [0x4fba70], esi
mov esi, dword [esp + 0x138]
movzx edx, di
cmp bl, 0xe7
jne 0x41034b
mov edx, dword [esp + 0x14]
mov ecx, dword [esp + 0x128]
push 0x7fff
push edx
push esi
push dword [esp + 0x140]
mov ax, word [ecx + 4]
push 0
mov word [edx + 2], ax
mov eax, 0x55
push 0xe7
push ecx
mov ecx, dword [esp + 0x38]
mov word [edx + 4], ax
push dword [esp + 0x140]
mov edx, dword [esp + 0x4c]
call fcn.00411cd0
add esp, 0x20
pop edi
pop esi
pop ebp
pop ebx
add esp, 0x110
ret
mov word [eax + 2], di
mov cl, 3
mov edi, dword [esp + 0x1c]
mov al, bl
add al, 0x64
mov esi, 0x20
cmp cl, al
sbb eax, eax
and eax, edx
mov edx, dword [0x4fe8a8]
movzx eax, ax
mov dword [esp + 0x24], eax
cmp edi, dword [0x4fba04]
jne 0x4103ab
mov cl, byte [esp + 0x13c]
and cl, 1
mov dword [esp + 0x34], ecx
jne 0x410430
mov al, byte [esp + 0x134]
movzx ecx, bl
xor al, 1
shl al, 7
mov byte [ecx + 0x4fc3e0], al
mov ecx, dword [esp + 0x34]
jmp 0x410430
mov ecx, dword [esp + 0x13c]
movzx edi, bl
shr ecx, 4
and ecx, 0xffffff01
mov dword [esp + 0x34], ecx
lea eax, [edi + edi*4]
cmp byte [edx + eax*4 + 8], 0
jne 0x41042c
test byte [esp + 0x13c], 0x10
jne 0x41042c
cmp bl, 0xa0
je 0x4103e0
cmp bl, 0xa1
jne 0x410404
cmp byte [esp + 0x134], 0
jne 0x410404
cmp bl, 0xa0
mov dword [esp + 0x3c], 0x10
mov eax, esi
cmove eax, dword [esp + 0x3c]
test byte [0x4fbaa3], al
jne 0x41042c
call ebp
mov ecx, dword [esp + 0x34]
mov edx, dword [0x4fe8a8]
mov dword [0x4fe864], eax
mov dword [0x4fe860], eax
mov al, byte [esp + 0x134]
xor al, 1
shl al, 7
mov byte [edi + 0x4fc3e0], al
mov edi, dword [esp + 0x1c]
cmp byte [esp + 0x22], 0
je 0x41043e
mov eax, 0x69
jmp 0x41044b
mov eax, 0x61
test cl, cl
cmovne esi, eax
movzx eax, si
cmp byte [0x4fba9f], 0
mov ecx, dword [esp + 0x14]
lea esi, [ecx + 4]
mov word [esi], ax
mov dword [esp + 0x40], esi
je 0x410496
cmp bl, 0x5b
je 0x41046c
cmp bl, 0x5c
jne 0x410496
mov eax, dword [esp + 0x134]
test al, al
jne 0x41049d
mov ebp, dword [esp + 0x138]
push 0
push closesocket
push 0x7fff
push ecx
push ebp
push 0
push ecx
mov ecx, edi
jmp 0x411b1e
mov eax, dword [esp + 0x134]
cmp byte [0x4fe89a], 0
mov esi, dword [sym.imp.USER32.dll_GetWindowThreadProcessId]
mov ebp, dword [sym.imp.USER32.dll_FindWindowW]
je 0x410550
cmp bl, 0x1b
jne 0x410550
test al, al
jne 0x410550
push 0
push str.32771
call ebp
test eax, eax
je 0x41054a
push 0
push eax
call esi
mov esi, eax
call dword [sym.imp.KERNEL32.dll_GetCurrentThreadId]
cmp esi, eax
jne 0x410544
push 0xffc3d44d
push 0
push 0
push 0
mov dl, bl
xor ecx, ecx
call fcn.0041c240
mov dl, byte [0x4fc3de]
mov ecx, 1
push 0xffc3d44d
shr dl, 3
push 0
and dl, 1
push 0
push 0
or dl, 0xa4
call fcn.0041c240
mov ebp, dword [esp + 0x158]
add esp, 0x20
push 0
push closesocket
push 0x7fff
push dword [esp + 0x20]
push ebp
push 0
push ecx
push 0x1b
mov ecx, edi
jmp 0x411b1f
mov esi, dword [sym.imp.USER32.dll_GetWindowThreadProcessId]
mov edx, dword [0x4fe8a8]
mov eax, dword [esp + 0x24]
movzx eax, ax
mov dword [esp + 0x34], eax
lea ecx, [eax + eax*4]
mov eax, dword [0x4fe8ac]
lea edi, [eax + ecx*4]
mov eax, dword [esp + 0x1c]
mov cl, byte [edi + 0x13]
mov byte [esp + 0x1b], cl
cmp eax, dword [0x4fba08]
jne 0x41057d
test cl, cl
jne 0x41058a
movzx eax, bl
lea eax, [eax + eax*4]
lea edi, [edx + eax*4]
mov eax, dword [esp + 0x1c]
cmp byte [esp + 0x22], 0
je 0x4105fe
mov ecx, dword [esp + 0x138]
mov eax, dword [esp + 0x134]
cmp ecx, 0xffc3d44e
jne 0x4105c5
test al, al
je 0x4105c5
cmp dword [0x4fc52c], edi
jne 0x4105c5
mov byte [edi + 0xd], 0
mov byte [edi + 0x10], 0
mov dword [0x4fc52c], 0
push 0x7fff
push dword [esp + 0x18]
push ecx
push eax
mov ecx, dword [esp + 0x2c]
push dword [esp + 0x34]
mov edx, dword [esp + 0x40]
push ebx
push dword [esp + 0x140]
push dword [esp + 0x140]
call fcn.00411cd0
add esp, 0x20
pop edi
pop esi
pop ebp
pop ebx
add esp, 0x110
ret
mov ecx, dword [esp + 0x134]
mov edx, 0x7fff
test cl, cl
jne 0x410615
mov byte [edi + 0x11], cl
mov word [edi + 4], dx
cmp eax, dword [0x4fba04]
jne 0x410694
test bl, bl
jne 0x410660
mov ebp, dword [esp + 0x138]
mov edx, dword [esp + 0x2c]
push 0x7fff
push dword [esp + 0x18]
push ebp
push ecx
push dword [esp + 0x34]
mov ecx, eax
push 0
push dword [esp + 0x140]
push dword [esp + 0x140]
call fcn.00411cd0
add esp, 0x20
pop edi
pop esi
pop ebp
pop ebx
add esp, 0x110
ret
cmp bl, 1
je 0x41066a
cmp bl, 2
jne 0x410694
cmp dword [0x4fb9b8], 0
jne 0x4106c2
push 0
push str.32768
call ebp
test eax, eax
je 0x41068d
push 0
push eax
call esi
cmp eax, dword [0x4fd2ec]
je 0x4106bb
mov ecx, dword [esp + 0x134]
mov eax, dword [0x4fc52c]
mov esi, dword [esp + 0x1c]
test eax, eax
je 0x4106fa
cmp eax, edi
je 0x4106fa
test cl, cl
jne 0x4106fa
cmp esi, dword [0x4fba08]
jne 0x4106e4
xor eax, eax
cmp byte [edi + 8], al
sete al
jmp 0x4106ed
mov ecx, dword [esp + 0x134]
mov ebp, dword [esp + 0x138]
mov al, cl
push 0x7fff
push dword [esp + 0x18]
xor al, 1
mov byte [edi + 0x10], 0
push ebp
mov byte [edi + 0xd], al
push ecx
jmp 0x4105d0
mov eax, dword [0x4fc52c]
movzx eax, byte [eax + 8]
test eax, eax
je 0x4106fa
mov eax, dword [0x4fc52c]
mov byte [eax + 0x12], 1
cmp byte [edi + 9], 0
jne 0x410726
cmp byte [edi + 0xa], 0
jne 0x410726
mov al, cl
xor al, 1
mov byte [edi + 0xd], al
mov ebp, dword [esp + 0x138]
push 0x7fff
push dword [esp + 0x18]
push ebp
push ecx
mov ecx, esi
jmp 0x4105d4
mov dword [esp + 0x38], 0
mov ebp, 0x7fff
mov dword [esp + 0x28], ebp
mov dword [esp + 0x30], ebp
test cl, cl
je 0x41076c
mov dh, byte [edi + 0x10]
mov al, byte [edi + 0xd]
mov byte [esp + 0x13], al
movzx eax, word [edi + 4]
mov byte [esp + 0x12], dh
mov edx, ebp
mov byte [edi + 0x10], 0
cmp ax, dx
je 0x41077c
mov ebp, eax
mov word [edi + 4], dx
mov dword [esp + 0x28], ebp
mov dword [esp + 0x30], ebp
jmp 0x41077c
mov al, byte [esp + 0x13]
mov byte [esp + 0x13], al
mov al, byte [esp + 0x13]
mov byte [esp + 0x12], al
mov al, cl
xor dl, dl
xor al, 1
mov byte [edi + 0xd], al
cmp esi, dword [0x4fba08]
jne 0x4107fb
cmp byte [edi + 8], dl
je 0x410817
mov eax, dword [0x4fe8a8]
cmp byte [eax + 0xcb5], dl
jne 0x4107af
cmp byte [eax + 0xcc9], dl
jne 0x4107af
xor cl, cl
jmp 0x4107b1
mov cl, 1
cmp byte [eax + 0xcdd], 0
mov byte [eax + 0x161], cl
jne 0x4107cd
cmp byte [eax + 0xcf1], 0
jne 0x4107cd
xor cl, cl
jmp 0x4107cf
mov cl, 1
cmp byte [eax + 0xc8d], 0
mov byte [eax + 0x175], cl
jne 0x4107f1
cmp byte [eax + 0xca1], 0
jne 0x4107f1
xor cl, cl
mov byte [eax + 0x14d], cl
jmp 0x410817
mov cl, 1
mov byte [eax + 0x14d], cl
jmp 0x410817
cmp dword [0x4fba08], 0
jne 0x410817
mov cl, 1
call fcn.0041eb60
mov byte [0x4fc3dd], al
mov dl, 1
mov byte [0x4fc3de], al
mov eax, dword [edi]
test eax, eax
je 0x410827
cmp dword [eax], 7
mov byte [esp + 0x22], 1
je 0x41082c
mov byte [esp + 0x22], 0
test dl, dl
jne 0x410837
mov cl, 1
call fcn.0041eb60
mov dl, byte [edi + 9]
mov ecx, dword [esp + 0x134]
test dl, dl
je 0x410acd
test cl, cl
jne 0x410acd
mov eax, dword [0x4fc52c]
test eax, eax
je 0x410867
cmp byte [edi + 0xa], cl
je 0x410867
cmp edi, eax
jne 0x410acd
cmp dl, 1
jne 0x410919
cmp byte [esp + 0x1b], 0
mov ecx, dword [esp + 0x34]
jne 0x41087e
movzx ecx, bl
xor edx, edx
movzx eax, cx
cmp byte [esp + 0x1b], dl
mov dword [esp + 0x44], ecx
cmovne edx, eax
movzx eax, cl
xor ecx, ecx
cmp byte [esp + 0x1b], cl
push 0
cmovne eax, ecx
mov cl, al
call fcn.0041ed80
mov ch, al
xor edx, edx
xor eax, eax
mov byte [esp + 0x27], ch
add esp, 4
mov dword [esp + 0x3c], edx
cmp ax, word [0x4fc55c]
jae 0x4109fd
mov cl, byte [0x4fba6c]
nop word [eax + eax]
cmp byte [esp + 0x1b], 0
mov eax, dword [0x4fc54c]
mov ebp, dword [eax + edx*4]
je 0x4108e5
movzx eax, word [ebp + 0xa]
jmp 0x4108e9
movzx eax, byte [ebp + 0x11]
cmp dword [esp + 0x44], eax
je 0x4108f8
test byte [ebp + 0xe], ch
je 0x4109e5
cmp word [ebp + 6], 0
je 0x410984
cmp byte [ebp + 0x19], 0
je 0x4109e5
test cl, cl
jne 0x4109e5
mov esi, dword [esp + 0x1c]
xor dl, dl
cmp edi, dword [0x4fc52c]
je 0x41092c
mov dword [0x4fc52c], edi
mov byte [edi + 0x12], dl
cmp byte [edi + 0xa], 0
je 0x410a4d
mov al, byte [edi + 8]
mov cl, byte [0x4fc3dd]
test al, al
je 0x410947
not al
and cl, al
test cl, cl
jne 0x410959
test dl, dl
jne 0x410959
test byte [edi + 0xc], 1
je 0x410a4d
cmp esi, dword [0x4fba08]
jne 0x410a04
cmp byte [esp + 0x1b], 0
je 0x410a04
mov eax, dword [0x4fe8a0]
movzx ecx, cl
shl ecx, 9
add ecx, dword [esp + 0x34]
jmp 0x410a14
mov esi, dword [ebp + 0x20]
mov eax, esi
test eax, eax
je 0x4109e5
nop dword [eax]
cmp byte [eax + 0x1c], 0
jne 0x4109a0
mov eax, dword [eax + 8]
test eax, eax
jne 0x410990
jmp 0x4109e5
cmp byte [esi + 0x1c], 0
je 0x4109d6
test cl, cl
je 0x4109b5
mov ecx, esi
call fcn.004a0e10
test al, al
je 0x4109d0
mov ecx, dword [esi + 4]
test ecx, ecx
je 0x410915
mov edx, dword [ebp + 0x1c]
call fcn.00414e10
test eax, eax
jne 0x410915
mov cl, byte [0x4fba6c]
mov esi, dword [esi + 8]
test esi, esi
jne 0x4109a0
mov edx, dword [esp + 0x3c]
mov ch, byte [esp + 0x23]
movzx eax, word [0x4fc55c]
inc edx
mov dword [esp + 0x3c], edx
cmp edx, eax
jl 0x4108d0
mov esi, dword [esp + 0x1c]
mov dl, 1
jmp 0x41092c
movzx ecx, cl
movzx eax, bl
shl ecx, 8
add ecx, eax
mov eax, dword [0x4fe89c]
movzx eax, word [eax + ecx*2]
movzx ebp, ax
mov dword [esp + 0x28], ebp
mov dword [esp + 0x30], ebp
test ax, ax
jns 0x410a2e
mov word [edi + 4], ax
jmp 0x410a5b
and eax, 0x7fff
cmp ax, word [0x4fc55c]
jae 0x410a51
mov ecx, eax
mov eax, dword [0x4fe8a4]
mov ax, word [eax + ecx*2]
mov word [edi + 4], ax
jmp 0x410a51
mov ebp, dword [esp + 0x28]
mov eax, 0x7fff
cmp bp, ax
jne 0x410ac6
test dl, dl
je 0x410a6f
mov eax, dword [esp + 0x40]
mov ecx, 0x23
or byte [edi + 0xc], 8
mov word [eax], cx
cmp byte [edi + 8], 0
jne 0x410aac
test byte [edi + 0xc], 1
jne 0x410aac
cmp byte [esp + 0x22], 0
jne 0x410aac
test dl, dl
jne 0x410aac
mov ebp, dword [esp + 0x138]
push 0
push closesocket
push 0x7fff
push dword [esp + 0x20]
mov byte [edi + 0x11], 1
push ebp
push 0
push ecx
mov ecx, esi
jmp 0x411b1e
mov ebp, dword [esp + 0x138]
push 0x7fff
push dword [esp + 0x18]
mov ecx, esi
push ebp
push 0
jmp 0x4105d4
mov ecx, dword [esp + 0x134]
cmp byte [edi + 0xa], 0
mov byte [esp + 0x23], 0
je 0x410b44
test cl, cl
je 0x410b44
mov ah, byte [esp + 0x12]
cmp dword [0x4fc52c], edi
jne 0x410af6
test ah, ah
je 0x410b44
mov dword [0x4fc52c], 0
cmp byte [edi + 0xb], 0
jne 0x410b3f
mov al, byte [edi + 0xc]
test al, 8
je 0x410b0c
xor dl, dl
and al, 0xf7
mov byte [edi + 0xc], al
jmp 0x410b0e
mov dl, 1
test ah, ah
je 0x41070d
test dl, dl
je 0x41070d
mov ebp, dword [esp + 0x138]
push 0
push closesocket
push 0x7fff
push dword [esp + 0x20]
push ebp
push ecx
push ecx
mov ecx, esi
jmp 0x411b1e
mov byte [esp + 0x23], 1
cmp byte [edi + 9], 0
je 0x410ccd
test cl, cl
je 0x410ccd
mov eax, dword [0x4fc52c]
xor ecx, ecx
cmp eax, edi
cmove eax, ecx
mov dword [0x4fc52c], eax
cmp byte [edi + 0xe], cl
je 0x410b86
push 0xffc3d44d
push ecx
push ecx
mov byte [edi + 0xe], cl
mov dl, 0x12
push ecx
mov ecx, 1
call fcn.0041c240
add esp, 0x10
cmp byte [edi + 0xf], 0
je 0x410baa
push 0xffc3d44d
push 0
push 0
push 0
mov dl, 0x10
mov byte [edi + 0xf], 0
mov ecx, 1
call fcn.0041c240
add esp, 0x10
mov edx, 0x7fff
cmp bp, dx
jne 0x410bdf
mov al, byte [edi + 0xc]
test al, 8
je 0x410bdf
and al, 0xf7
mov byte [edi + 0xc], al
mov ebp, dword [esp + 0x138]
push 0x7fff
push dword [esp + 0x18]
mov ecx, esi
push ebp
push dword [esp + 0x140]
jmp 0x4105d4
mov cl, byte [esp + 0x22]
mov al, byte [edi + 0x12]
test cl, cl
je 0x410c78
cmp al, 2
jne 0x410c4c
mov ebp, dword [esp + 0x24]
mov dl, bl
push 0xffc3d44e
push 0
push 0
push ebp
mov ecx, 1
call fcn.0041c240
push 0xffc3d44d
push 0
push 0
push ebp
mov dl, bl
mov ecx, 2
call fcn.0041c240
add esp, 0x20
mov ebp, dword [esp + 0x138]
push 0
push closesocket
push 0x7fff
push dword [esp + 0x20]
push ebp
push dword [esp + 0x148]
push ecx
mov ecx, esi
jmp 0x411b1e
cmp al, 1
je 0x410bc0
cmp byte [edi + 0xa], 0
jne 0x410cbc
cmp byte [edi + 8], 0
jne 0x410bc0
test byte [edi + 0xc], 1
jne 0x410bc0
test cl, cl
jne 0x410bc0
jmp 0x410c25
test al, al
je 0x410c54
cmp bp, dx
jne 0x410c54
cmp byte [edi + 8], 0
jne 0x410bc0
test byte [edi + 0xc], 1
mov ebp, dword [esp + 0x138]
jne 0x410bc7
push 0
push closesocket
push 0x7fff
push dword [esp + 0x20]
push ebp
push dword [esp + 0x148]
push ecx
mov ecx, esi
jmp 0x411b1e
cmp byte [esp + 0x13], 0
jne 0x410ccd
cmp byte [edi + 0xb], 0
je 0x410bc0
cmp dword [0x4fc52c], 0
mov edx, 0x7ffd
mov byte [esp + 0x12], 0
je 0x4110cc
mov ecx, dword [esp + 0x134]
test cl, cl
je 0x410cf9
cmp byte [edi + 0xb], 0
je 0x4110cc
mov eax, 0x7fff
cmp bp, ax
jne 0x4112d5
movzx ebp, word [edi + 6]
xor esi, esi
cmp bp, ax
je 0x410eb7
nop word [eax + eax]
mov eax, dword [0x4fc54c]
movzx ecx, bp
mov edx, dword [eax + ecx*4]
mov al, byte [edx + 0x11]
test al, al
jne 0x410d4a
cmp word [edx + 0xa], 0
je 0x410d9e
movzx eax, word [edx + 0xa]
lea ecx, [eax + eax*4]
mov eax, dword [0x4fe8ac]
lea eax, [eax + ecx*4]
jmp 0x410d59
mov ecx, dword [0x4fe8a8]
movzx eax, al
lea eax, [eax + eax*4]
lea eax, [ecx + eax*4]
cmp byte [eax + 0xd], 0
movzx ebp, word [edx + 0xc]
je 0x410d90
cmp byte [edx + 0x16], 0
je 0x410d81
cmp byte [esp + 0x134], 0
jne 0x410d9c
mov ax, word [edx + 4]
mov word [edi + 4], ax
test esi, esi
jne 0x410da6
jmp 0x410d90
cmp byte [esp + 0x134], 0
jne 0x410d90
test esi, esi
cmove esi, edx
mov eax, 0x7fff
cmp bp, ax
jne 0x410d20
jmp 0x410d9e
mov esi, edx
test esi, esi
je 0x410eab
movzx ecx, byte [esi + 0x11]
cmp ecx, 0x12
ja case.0x410db6.1
movzx eax, byte [ecx + 0x411b50]
jmp dword [eax*4 + 0x411b3c]
mov ecx, dword [0x4fe8a8]
mov eax, 0xc80
mov edx, 0xc94
cmp byte [ecx + 0xca1], 0
cmovne eax, edx
add eax, ecx
jmp 0x410e34
mov ecx, dword [0x4fe8a8]
mov eax, 0xca8
mov edx, 0xcbc
cmp byte [ecx + 0xcc9], 0
cmovne eax, edx
add eax, ecx
jmp 0x410e34
mov ecx, dword [0x4fe8a8]
mov eax, 0xcd0
mov edx, 0xce4
cmp byte [ecx + 0xcf1], 0
cmovne eax, edx
add eax, ecx
jmp 0x410e34
movzx eax, word [esi + 0xa]
lea ecx, [eax + eax*4]
mov eax, dword [0x4fe8ac]
lea eax, [eax + ecx*4]
jmp 0x410e34
lea eax, [ecx + ecx*4]
mov ecx, dword [0x4fe8a8]
lea eax, [ecx + eax*4]
mov dword [0x4fc52c], eax
movzx eax, word [esi + 6]
test ax, ax
je 0x410e48
mov dword [esp + 0x30], eax
jmp 0x410e9b
movzx eax, word [esi + 4]
lea ecx, [esp + 0x30]
mov ebp, dword [esp + 0x138]
mov dl, byte [esp + 0x134]
mov dword [esp + 0x30], eax
mov eax, dword [esp + 0x40]
push eax
lea eax, [esp + 0x16]
push eax
lea eax, [edi + 0xc]
push eax
push ebp
call fcn.004158f0
add esp, 0x10
mov dword [esp + 0x38], eax
test eax, eax
jne 0x410e97
push 0x7fff
push dword [esp + 0x18]
push ebp
push dword [esp + 0x140]
jmp 0x4105d0
mov eax, dword [esp + 0x30]
mov dword [esp + 0x28], eax
movzx ebp, ax
mov eax, dword [0x4fc52c]
mov byte [eax + 0x12], 2
mov ecx, dword [esp + 0x134]
mov edx, 0x7ffd
mov eax, 0x7ffe
cmp bp, ax
je 0x410eca
cmp bp, dx
jne 0x4110c8
test cl, cl
jne 0x410ed2
mov byte [edi + 0x10], 1
test byte [0x4fc3de], 0xc
jne 0x410ef9
push 0xffc3d44d
push 0
push 0
push 0
mov dl, 0x12
xor ecx, ecx
call fcn.0041c240
mov ecx, dword [esp + 0x144]
add esp, 0x10
cmp bl, 0xa2
je 0x410f03
cmp bl, 0xa3
jne 0x410f26
mov esi, dword [esp + 0x24]
test cl, cl
jne 0x410f2a
push 0xffc3d44d
push 0
push 0
push esi
mov dl, bl
mov ecx, 1
call fcn.0041c240
add esp, 0x10
jmp 0x410f2a
mov esi, dword [esp + 0x24]
mov eax, dword [0x4fc52c]
mov byte [eax + 0xe], 1
mov eax, 0x7ffd
cmp bp, ax
jne 0x410f6b
test byte [0x4fc3de], 0x30
jne 0x410f5d
push 0xffc3d44d
push 0
push 0
push 0
mov dl, 0x10
xor ecx, ecx
call fcn.0041c240
add esp, 0x10
mov eax, dword [0x4fc52c]
mov byte [eax + 0xf], 1
jmp 0x410fe8
mov eax, 0x7ffe
cmp bp, ax
jne 0x410fe8
cmp bl, 0xa0
je 0x410f7f
cmp bl, 0xa1
jne 0x410fa2
cmp byte [esp + 0x134], 0
jne 0x410fa2
push 0xffc3d44d
push 0
push 0
push esi
mov dl, bl
mov ecx, 1
call fcn.0041c240
add esp, 0x10
test byte [0x4fc3de], 0x10
je 0x410fc5
push 0xffc3d44d
push 0
push 0
push 0
mov dl, 0xa0
mov ecx, 1
call fcn.0041c240
add esp, 0x10
test byte [0x4fc3de], 0x20
je 0x410fe8
push 0xffc3d44d
push 0
push 0
push 0
mov dl, 0xa1
mov ecx, 1
call fcn.0041c240
add esp, 0x10
test byte [0x4fc3de], 1
je 0x41100b
push 0xffc3d44d
push 0
push 0
push 0
mov dl, 0xa2
mov ecx, 1
call fcn.0041c240
add esp, 0x10
test byte [0x4fc3de], 2
je 0x41102e
push 0xffc3d44d
push 0
push 0
push 0
mov dl, 0xa3
mov ecx, 1
call fcn.0041c240
add esp, 0x10
push 0xffc3d44d
push 0
push 0
push 0
mov dl, 9
mov ecx, 2
call fcn.0041c240
mov eax, 0x7ffd
add esp, 0x10
cmp bp, ax
jne 0x41108f
mov eax, dword [0x4fc52c]
cmp byte [eax + 0xf], 0
je 0x41108f
cmp bl, 0x60
jb 0x411067
cmp bl, 0x69
jbe 0x41106c
cmp bl, 0x6e
jne 0x41108f
push 0xffc3d44d
push 0
push 0
push 0
mov dl, 0x10
mov ecx, 1
call fcn.0041c240
mov eax, dword [0x4fc52c]
add esp, 0x10
mov byte [eax + 0xf], 0
mov eax, dword [esp + 0x40]
mov ecx, 0x68
mov word [eax], cx
mov eax, dword [esp + 0x134]
test al, al
jne 0x4110aa
mov byte [edi + 0x11], 1
mov ebp, dword [esp + 0x138]
push 0
push closesocket
push 0x7fff
push dword [esp + 0x20]
push ebp
push eax
jmp 0x411b19
mov ebp, dword [esp + 0x28]
mov edx, 0x7fff
cmp bp, dx
jne 0x41150b
mov al, byte [edi + 8]
mov dl, byte [0x4fc3dd]
test al, al
je 0x4110eb
not al
and dl, al
mov eax, dword [esp + 0x1c]
mov dh, byte [esp + 0x1b]
cmp eax, dword [0x4fba08]
jne 0x41111b
test dh, dh
je 0x41111b
mov eax, dword [0x4fe8a0]
movzx ecx, dl
shl ecx, 9
add ecx, dword [esp + 0x34]
movzx ecx, word [eax + ecx*2]
movzx eax, bl
mov dword [esp + 0x44], eax
jmp 0x411133
movzx eax, bl
movzx ecx, dl
shl ecx, 8
add ecx, eax
mov dword [esp + 0x44], eax
mov eax, dword [0x4fe89c]
movzx ecx, word [eax + ecx*2]
movzx eax, cx
mov ebx, 0x7fff
mov dword [esp + 0x3c], ecx
mov esi, eax
cmp word [esp + 0x3c], bx
mov ebp, eax
mov ebx, dword [esp + 0x12c]
movzx ecx, cx
mov dword [esp + 0x28], ecx
mov dword [esp + 0x30], ecx
mov ecx, eax
jne 0x4111d8
cmp byte [0x4fe89a], 0
je 0x4111d8
cmp bl, 9
je 0x4111d8
mov esi, dword [esp + 0x1c]
and dl, 0xf3
cmp esi, dword [0x4fba08]
jne 0x411190
test dh, dh
je 0x411190
mov eax, dword [0x4fe8a0]
movzx ecx, dl
shl ecx, 9
add ecx, dword [esp + 0x34]
jmp 0x41119f
mov eax, dword [0x4fe89c]
movzx ecx, dl
shl ecx, 8
add ecx, dword [esp + 0x44]
movzx eax, word [eax + ecx*2]
movzx ecx, ax
movzx edx, ax
and eax, 0x7fff
mov dword [esp + 0x28], ecx
mov dword [esp + 0x30], ecx
mov ecx, 0x7ff9
cmp ax, cx
jbe 0x411458
mov ecx, edx
mov esi, edx
mov ebp, edx
mov edx, 0x7fff
cmp ax, dx
jae 0x41144f
test cx, cx
movzx eax, bp
mov ecx, dword [esp + 0x134]
movzx edx, si
jns 0x41137e
mov eax, dword [esp + 0x28]
test cl, cl
jne 0x411443
mov word [edi + 4], ax
mov ebp, 0x7fff
mov ah, byte [0x4fc3dd]
mov al, ah
and al, 0xc0
movzx ecx, al
neg ecx
sbb ecx, ecx
and ecx, 8
mov edx, ecx
or edx, 1
test ah, 0xc
cmove edx, ecx
mov ecx, edx
or ecx, 4
test ah, 0x30
cmove ecx, edx
movzx edx, word [edi + 6]
mov esi, ecx
or esi, 2
test ah, 3
cmove esi, ecx
cmp dx, bp
je 0x4112a4
mov eax, dword [0x4fc54c]
movzx ecx, dx
mov ecx, dword [eax + ecx*4]
cmp byte [ecx + 0x15], 0
movzx edx, word [ecx + 0xc]
jne 0x41126b
movzx eax, byte [ecx + 0xf]
mov ebx, dword [esp + 0x12c]
not eax
test byte [0x4fc3dd], al
jne 0x41129f
cmp byte [ecx + 0x16], 0
jne 0x41129f
cmp byte [ecx + 0x11], 0
jne 0x41129f
cmp word [ecx + 0xa], 0
jne 0x41129f
cmp word [ecx + 6], 0
jne 0x41129f
mov eax, esi
not eax
test dword [ecx], eax
jne 0x41129f
movzx eax, byte [0x4fc3dd]
not eax
test byte [ecx + 0xe], al
je 0x411375
cmp dx, bp
jne 0x411241
mov eax, ebp
movzx ecx, ax
mov dword [esp + 0x28], ecx
mov dword [esp + 0x30], ecx
mov ecx, dword [esp + 0x134]
mov ebp, dword [esp + 0x138]
mov eax, dword [esp + 0x28]
mov edx, 0x7fff
cmp ax, dx
je 0x411479
mov ebp, dword [esp + 0x28]
mov al, byte [edi + 0xc]
lea esi, [edi + 0xc]
test al, 8
je 0x4112ec
test cl, cl
je 0x4112ec
and al, 0xf7
mov byte [esp + 0x12], 1
mov byte [esi], al
mov eax, ebp
mov ebp, dword [esp + 0x138]
and eax, 0x7fff
cmp ax, word [0x4fc55c]
jae 0x411588
cmp dword [esp + 0x38], 0
jne 0x411588
push dword [esp + 0x40]
lea eax, [esp + 0x16]
mov dl, cl
push eax
push esi
push ebp
lea ecx, [esp + 0x40]
call fcn.004158f0
add esp, 0x10
mov dword [esp + 0x38], eax
test eax, eax
jne 0x411582
mov eax, dword [esp + 0x40]
cmp word [eax], 0x69
je 0x410e81
mov eax, dword [esp + 0x134]
test al, al
je 0x411526
cmp byte [edi + 0x11], 0
je 0x411517
push 0
push closesocket
push 0x7fff
push dword [esp + 0x20]
push ebp
push eax
jmp 0x411b19
movzx eax, word [ecx + 4]
jmp 0x4112a6
mov ebp, 0x7fff
cmp dx, bp
je 0x41146d
and eax, ebp
test cl, cl
je 0x411422
cmp ax, word [0x4fc55c]
jae 0x41140f
mov esi, eax
mov eax, dword [0x4fe8a4]
cmp word [eax + esi*2], bp
je 0x41140f
cmp byte [esp + 0x23], 0
mov ebp, dword [esp + 0x138]
jne 0x4113f9
push dword [esp + 0x40]
lea eax, [esp + 0x16]
mov dl, cl
push eax
lea eax, [edi + 0xc]
push eax
push ebp
lea ecx, [esp + 0x40]
call fcn.004158f0
add esp, 0x10
mov dword [esp + 0x38], eax
test eax, eax
je 0x4113f2
mov ecx, dword [esp + 0x30]
mov dword [esp + 0x28], ecx
mov ecx, dword [esp + 0x134]
jmp 0x4112bf
mov ecx, dword [esp + 0x134]
mov eax, dword [0x4fe8a4]
movzx eax, word [eax + esi*2]
mov dword [esp + 0x28], eax
mov dword [esp + 0x30], eax
jmp 0x4112c3
cmp byte [esp + 0x23], 0
mov ebp, dword [esp + 0x138]
jne 0x411481
jmp 0x4112bf
cmp ax, word [0x4fc55c]
jae 0x4112b8
mov ecx, eax
mov eax, dword [0x4fe8a4]
mov ax, word [eax + ecx*2]
mov word [edi + 4], ax
jmp 0x4112b1
mov ebp, dword [esp + 0x138]
jmp 0x4112c3
mov ecx, dword [esp + 0x134]
jmp 0x411472
mov ecx, dword [esp + 0x134]
mov edx, 0x7fff
mov ebp, dword [esp + 0x138]
jmp 0x41147d
mov edx, 0x7fff
mov ebp, dword [esp + 0x138]
mov esi, dword [esp + 0x1c]
test cl, cl
je 0x4114bb
cmp byte [edi + 8], 0
jne 0x4114ab
test byte [edi + 0xc], 1
jne 0x4114ab
cmp byte [edi + 9], 0
je 0x4114ab
cmp byte [esp + 0x22], 0
jne 0x4114ab
push 0
push closesocket
push 0x7fff
jmp 0x411b13
push 0x7fff
push dword [esp + 0x18]
push ebp
push ecx
jmp 0x4105d0
cmp word [edi + 4], dx
lea ecx, [edi + 4]
je 0x410ab3
mov ebp, dword [esp + 0x138]
lea eax, [esp + 0x12]
push 0
push eax
lea eax, [edi + 0xc]
mov dl, 1
push eax
push ebp
call fcn.004158f0
add esp, 0x10
cmp byte [esp + 0x12], 0
jne 0x410ab3
push 0
push closesocket
push 0x7fff
push dword [esp + 0x20]
push ebp
push 0
push ecx
mov ecx, esi
jmp 0x411b1e
mov ecx, dword [esp + 0x134]
jmp 0x4112d5
push 0x7fff
push dword [esp + 0x18]
push ebp
jmp 0x4105cf
lea ecx, [edi + 4]
mov eax, 0x7fff
cmp word [ecx], ax
jne 0x411544
push 0x7fff
push dword [esp + 0x18]
push ebp
push 0
jmp 0x4105d0
push 0
lea eax, [esp + 0x16]
mov byte [esp + 0x16], 0
push eax
push esi
push ebp
mov dl, 1
call fcn.004158f0
add esp, 0x10
cmp byte [esp + 0x12], 0
jne 0x411533
and byte [esi], 0xf7
push 0
push closesocket
push 0x7fff
push dword [esp + 0x20]
mov byte [edi + 0x11], 1
push ebp
push 0
jmp 0x411b19
mov ecx, dword [esp + 0x30]
jmp 0x41158c
mov ecx, dword [esp + 0x28]
and ecx, 0x7fff
test byte [0x4fc3de], 0xcc
mov dword [esp + 0x28], ecx
je 0x41166d
cmp byte [esp + 0x12], 0
jne 0x41166d
cmp byte [0x4fe899], 0
jne 0x4115c7
mov eax, dword [esp + 0x1c]
cmp eax, dword [0x4fba04]
jne 0x41166d
test byte [0x4fc3de], 0xc0
mov dl, byte [0x4fc3dc]
je 0x411602
test dl, 0xc0
jne 0x4115f5
cmp cx, word [0x4fc55c]
jae 0x411602
mov eax, dword [0x4fc54c]
movzx ecx, cx
mov eax, dword [eax + ecx*4]
test byte [eax + 0xf], 0xc0
je 0x4115fe
mov byte [0x4fe898], 1
jmp 0x41166d
mov ecx, dword [esp + 0x28]
cmp byte [0x4fe898], 0
jne 0x41166d
mov al, byte [0x4fc3de]
test al, 0xc
je 0x41166d
test al, 3
jne 0x41166d
test dl, 0xc
jne 0x411637
cmp cx, word [0x4fc55c]
jae 0x41166d
mov eax, dword [0x4fc54c]
movzx ecx, cx
mov eax, dword [eax + ecx*4]
test byte [eax + 0xf], 0xc
je 0x41166d
cmp dword [0x4fba08], 0
je 0x411649
mov byte [0x4fe898], 1
jmp 0x41166d
movzx eax, word [0x4fa364]
mov ecx, 2
mov dl, byte [0x4fa342]
push 0xffc3d44d
push 0
push 0
push eax
call fcn.0041c240
add esp, 0x10
mov eax, dword [esp + 0x28]
movzx ecx, ax
lea eax, [ecx - 0x7ffa]
cmp eax, 4
ja case.default.0x411683
jmp dword [eax*4 + 0x411b64]
cmp byte [0x4fe89a], 0
je 0x410e81
xor al, al
test byte [0x4fc3de], 4
je 0x4116a9
mov edx, 0xa4
jmp 0x4116bb
test byte [0x4fc3de], 8
movzx edx, al
mov eax, 0xa5
cmovne edx, eax
cmp byte [0x4fe89a], 0
mov dword [esp + 0x3c], edx
je 0x411748
mov eax, 0x7ffb
cmp word [esp + 0x28], ax
je case.0x411683.32765
test dl, dl
movzx eax, dl
push 0xffc3d44d
mov ecx, 0x12
cmovne ecx, eax
push 0
push 0
mov dl, cl
mov ecx, 1
push 0
call fcn.0041c240
add esp, 0x10
cmp byte [edi + 8], 0
je 0x411737
cmp bl, 0x5b
je 0x411737
cmp bl, 0x5c
je 0x411737
cmp byte [esp + 0x134], 0
jne 0x411737
push 0xffc3d44d
push 0
push 0
push 0
mov dl, bl
mov ecx, 1
call fcn.0041c240
add esp, 0x10
mov byte [0x4fe89a], 0
mov edx, 0x7fff
jmp 0x4119ef
cmp bl, 0xa4
je 0x411757
mov byte [esp + 0x23], 0
cmp bl, 0xa5
jne 0x41175c
mov byte [esp + 0x23], 1
cmp bl, 0xa0
je 0x41176a
cmp bl, 0xa1
je 0x41176a
xor cl, cl
jmp 0x41176c
mov cl, 1
mov byte [esp + 0x1b], cl
cmp bl, 0xa2
je 0x41177f
mov byte [esp + 0x13], 0
cmp bl, 0xa3
jne 0x411784
mov byte [esp + 0x13], 1
xor dl, dl
test byte [0x4fc3de], 0x10
mov dword [esp + 0x38], edx
je 0x411797
mov dl, 0xa0
jmp 0x4117ba
test byte [0x4fc3de], 0x20
mov eax, dword [esp + 0x134]
je 0x4117ab
mov dl, 0xa1
jmp 0x4117c1
test al, al
jne 0x4117c5
test cl, cl
movzx edx, dl
movzx eax, bl
cmovne edx, eax
mov eax, dword [esp + 0x134]
mov dword [esp + 0x38], edx
xor cl, cl
test byte [0x4fc3de], 1
mov dword [esp + 0x34], ecx
je 0x4117db
mov byte [esp + 0x34], 0xa2
jmp 0x411801
test byte [0x4fc3de], 2
je 0x4117eb
mov byte [esp + 0x34], 0xa3
jmp 0x411801
test al, al
jne 0x411801
cmp byte [esp + 0x13], 0
movzx ecx, cl
movzx eax, bl
cmovne ecx, eax
mov dword [esp + 0x34], ecx
mov byte [esp + 0x13], 0
test dl, dl
je 0x411827
push 0xffc3d44d
push 0
push 0
push 0
mov ecx, 1
call fcn.0041c240
add esp, 0x10
mov byte [esp + 0x13], 1
mov eax, dword [esp + 0x34]
test al, al
je 0x411849
push 0xffc3d44d
push 0
push 0
push 0
mov dl, al
mov ecx, 1
call fcn.0041c240
add esp, 0x10
cmp byte [esp + 0x23], 0
je 0x41185e
cmp byte [esp + 0x134], 0
jne 0x411866
mov al, bl
jmp 0x411862
mov eax, dword [esp + 0x3c]
test al, al
jne 0x41187d
push 0xffc3d44d
push 0
push 0
push 0
mov dl, 0x12
xor ecx, ecx
call fcn.0041c240
add esp, 0x10
push 0xffc3d44d
push 0
push 0
push 0
mov dl, 9
mov ecx, 2
call fcn.0041c240
add esp, 0x10
cmp byte [esp + 0x13], 0
je 0x4118be
cmp byte [esp + 0x1b], 0
jne 0x4118be
mov dl, byte [esp + 0x38]
xor ecx, ecx
push 0xffc3d44d
push 0
push 0
push 0
call fcn.0041c240
add esp, 0x10
mov byte [0x4fe89a], 1
mov edx, 0x7fff
jmp 0x4119ef
cmp byte [0x4fe89a], 0
je 0x410e81
mov eax, dword [esp + 0x134]
test al, al
jne 0x41191c
cmp bl, 0xa2
je 0x4118fb
cmp bl, 0xa3
je 0x4118fb
cmp bl, 0xa0
je 0x4118fb
cmp bl, 0xa1
jne 0x41191c
push 0xffc3d44d
push 0
push 0
push 0
mov dl, bl
mov ecx, 1
call fcn.0041c240
mov eax, dword [esp + 0x144]
add esp, 0x10
test byte [0x4fc3de], 0xc
je 0x411933
test al, al
je 0x41194a
cmp bl, 0xa4
je 0x411933
cmp bl, 0xa5
jne 0x41194a
push 0xffc3d44d
push 0
push 0
push 0
mov dl, 0x12
xor ecx, ecx
call fcn.0041c240
add esp, 0x10
mov eax, 0x7ffd
cmp word [esp + 0x28], ax
jne 0x4119ab
test byte [0x4fc3de], 0x30
jne 0x4119ab
push 0xffc3d44d
push 0
push 0
push 0
mov dl, 0x10
xor ecx, ecx
call fcn.0041c240
push 0xffc3d44d
push 0
push 0
push 0
mov dl, 9
mov ecx, 2
call fcn.0041c240
push 0xffc3d44d
push 0
push 0
push 0
mov dl, 0x10
mov ecx, 1
call fcn.0041c240
add esp, 0x30
mov edx, 0x7fff
jmp 0x4119ef
push 0xffc3d44d
push 0
push 0
push 0
mov dl, 9
mov ecx, 2
call fcn.0041c240
add esp, 0x10
mov edx, 0x7fff
jmp 0x4119ef
mov edx, ecx
mov ecx, dword [esp + 0x38]
mov dword [esp + 0x48], edx
mov eax, dword [ecx + 4]
test eax, eax
je 0x4119ef
cmp byte [eax], 5
jb 0x4119ef
movzx eax, word [ecx + 0x14]
shl eax, 0x10
or edx, eax
mov dword [esp + 0x48], edx
mov eax, dword [esp + 0x40]
mov ecx, 0x68
mov word [eax], cx
mov ecx, dword [esp + 0x134]
test cl, cl
je 0x411aa9
cmp byte [esp + 0x22], 0
je 0x411a67
cmp byte [edi + 9], 0
je 0x411a67
mov esi, dword [esp + 0x24]
mov dl, bl
push 0xffc3d44e
push 0
push 0
push esi
mov ecx, 1
call fcn.0041c240
push 0xffc3d44d
push 0
push 0
push esi
mov dl, bl
mov ecx, 2
call fcn.0041c240
mov eax, dword [esp + 0x68]
add esp, 0x20
push 0
push closesocket
push eax
push dword [esp + 0x20]
push ebp
push dword [esp + 0x148]
jmp 0x411b19
cmp byte [edi + 8], 0
je 0x411a80
cmp byte [edi + 0x11], 0
je 0x411aca
push 0
push closesocket
push edx
jmp 0x411b13
cmp byte [esp + 0x12], 0
je 0x411b07
mov eax, dword [esp + 0x1c]
push edx
push dword [esp + 0x18]
push ebp
push ecx
push dword [esp + 0x34]
mov ecx, eax
push ebx
push dword [esp + 0x140]
jmp 0x41032d
mov eax, dword [0x4fc52c]
mov byte [edi + 0x10], 1
test eax, eax
je 0x411ac0
cmp byte [eax + 8], 0
je 0x411ac0
mov byte [eax + 0x12], 2
cmp byte [esp + 0x12], 0
je 0x411ad6
or byte [esi], 8
push edx
push dword [esp + 0x18]
push ebp
push ecx
jmp 0x4105d0
cmp bl, 0xa4
je 0x411ae0
cmp bl, 0xa5
jne 0x411b03
push 0xffc3d450
push 0
push 0
push dword [esp + 0x30]
mov dl, bl
mov ecx, 1
call fcn.0041c240
mov ecx, dword [esp + 0x144]
add esp, 0x10
mov byte [edi + 0x11], 1
mov eax, dword [esp + 0x48]
push 0
push closesocket
push eax
push dword [esp + 0x20]
push ebp
push ecx
push ecx
mov ecx, dword [esp + 0x38]
push ebx
mov edx, dword [esp + 0x148]
call fcn.00411b80
add esp, 0x20
pop edi
pop esi
pop ebp
pop ebx
add esp, 0x110
ret